Read Children of the Night: MCCP v1's marker (TNC 3.0.0), and stop typing INFO at GodWars-line games - #178
Conversation
…17.0) Children of the Night (176.9.151.147:7702) answers our DO COMPRESS2 by starting its stream behind MCCP v1's IAC SB COMPRESS WILL SE. TelnetNegotiationCore skipped that as an unknown subnegotiation, so the zlib behind it reached the page as text: the connect screen ended in a line of binary noise, INFO and VERSION "replies" were noise, and the MSSP report, sent inside the stream, never arrived. 2.17.0 inflates it (HarryCordewener/TelnetNegotiationCore#98) and reports the stream as version 1, so MCCP1 joins MCCP2/MCCP3 in both vocabularies that fold a versioned option into the capability: MuLikeness's MU*-only signals and CapabilityFields' aliases. The probe test drives a raw server sending the live game's bytes in its order, and fails on 2.14.0. The jump from 2.14.0 also takes in 2.15's MSDP rewrite and 2.16's MXP start marker; all five suites pass against it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…d itself
With its MSSP report readable, Children of the Night publishes a meaningful NAME, a PLAYERS count
and CODEBASE "Dystopia 1.4" -- everything MsspSelfDescription asks for, except that the engine
clause only counts engines LoginCommandReading knows, and it did not know Dystopia. So the probe
went on typing INFO at its name prompt, which took it as a character name ("Your sure that you want
INFO engraved on your tombstone (Y/N)?") and then took VERSION as the answer.
Dystopia is the Merc -> GodWars line's released codebase, a family word in the same sense Merc and
ROM already are. No game in the catalogue is titled with it. Re-probed live: neither command is sent.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Essentials Run ID: 📒 Files selected for processing (9)
Included review availability: 0 reviews are currently available. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour. WalkthroughThe update upgrades ChangesProtocol and classification updates
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~20 minutes Change: Bug fix Merge Risk: ⚪ Minimal · up to MCCP1 handling and login-command suppression are covered by regression tests and reported live probes; no current merge-blocking risk remains. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 35.71% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 14 functions across 8 files. (1 skipped: 1 unsupported.)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
Comment |
|
A second affected game: |
The 4.5 server (omen.genesismuds.com:2251) is the same codebase line as 5.0 and answers INFO at its name prompt the same way -- "Your sure that you want INFO engraved on your tombstone (Y/N)?" -- but its MSSP report declares CODEBASE "Mindcloud3", which the engine vocabulary did not know, so the gate still let both commands through. Mindcloud is the GodWars line's released codebase in the same sense Dystopia is; FamilyWord already allows a digit after the word. No catalogue game is titled with it. Re-probed live: neither command is sent to either server. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2.17.0 was never released: the fix (HarryCordewener/TelnetNegotiationCore#98) went out folded into 3.0.0, alongside .NET 11 support and OneOf replaced by C# 15 unions. 3.0.0 still ships a net10.0 build, and this branch builds against it on the .NET 10 SDK with no source change. Tested against 3.0.0's exact code packed locally as 3.0.0-local-v3: clean build on SDK 10.0.400, and all six suites pass -- Catalog 643, Crawl 570, Discovery 336, I3 13, Crawler 342, Web 1250, with MUI_REQUIRE_POSTGRES=1. Live probes of both Children of the Night servers read MCCP1, MSDP and MSSP and prove UTF-8. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Pins TelnetNegotiationCore 3.0.0, published to NuGet on 2026-09-11. CI passes against the published package on Ubuntu and Windows. The suite counts below were measured locally against the same code, packed as
3.0.0-local-v3before the release was out.What was wrong
Children of the Night 5.0 (
176.9.151.147:7702) showed its connect screen ending in a line of binary noise. Logged against the live server with a hand-written client: it offersCOMPRESS(85) andCOMPRESS2(86). When toldDONT 85/DO 86, which is what we send, it starts a valid zlib stream behind MCCP v1's markerIAC SB 85 WILL SE. If both are refused it doesn't compress at all. Children of the Night 4.5 (omen.genesismuds.com:2251), the same codebase line, does exactly the same.TelnetNegotiationCore had no trigger for option 85, so the marker went to the unsupported-subnegotiation skipper. That swallowed compressed bytes until some happened to spell
IAC SE, then passed the rest to us as text. Everything after the banner was lost to it, including each game's MSSP report, which is sent inside the stream. Both pages showed "MSSP offered, silent" for that reason.What changed
[stop costing a state-machine transition each. The jump also takes in 2.15 (MSDP rewrite), 2.16 (MXP start marker) and 3.0's C# 15 unions. 3.0.0 still ships anet10.0build, and this branch compiles against it on the .NET 10 SDK with no source change.MCCP1folds intomccpinMuLikenessandCapabilityFields.Aliases. It is an observed spelling now, which is the alias table's rule.dystopiaandmindcloudjoinLoginCommandReading's engine words. With MSSP readable, both reports name themselves and a count, and declareCODEBASE = Dystopia 1.4(5.0) andMindcloud3(4.5). ButMsspSelfDescriptiononly counts engines the reader knows, so the probe kept typingINFOat both name prompts. Both games took it as a character name ("…want INFO engraved on your tombstone (Y/N)?"), then tookVERSIONas the answer. This is theplaydecay.comcomplaint again. No game in the public dump is titled with either word.Verification
ProbeSessionTests.AStreamStartedWithTheV1MarkerIsInflateddrives a raw server sending the live game's bytes in its order. It fails on 2.14.0 ("Expected to contain MCCP1") and passes on the fix.MsspSelfDescriptionTests.AGodWarsLineGameThatNamedItselfIsNotAskedAgainfailed for each codebase before its word was added.MUI_REQUIRE_POSTGRES=1: Catalog 643, Crawl 570, Discovery 336, I3 13, Crawler 342, Web 1250.mui-probeagainst both servers:negotiated MCCP1, MSDP, MSSP,read as utf-8 (Proven), MSSPReceivedwithNAME = Children of the Night, andINFO/VERSIONnot sent.What a reader will see change
Both MSSP reports declare
PLAYERS = 0(5.0 also declaresUPTIME = 0), while I3whohas been counting 3–5 for 5.0. Until now the probe's own rows for these games were uncountable (hatched): an unreadableWHOtyped into a compressed stream. From here they land as a declared zero frommssp. I3 keeps writing its own series beside them (I3PresenceChoiceis deliberately not a rung onPresenceChoice's ladder), so the page will carry two labelled series that disagree. That is the game's own statement beside a count of its I3who, not anything this PR decides.🤖 Generated with Claude Code
Summary by CodeRabbit
Bug Fixes
MCCP1capability and normalizes it consistently with existing MCCP support.Documentation
Maintenance