Repository navigation
fix(validate): database .await forms, MySQL alias, client: route, command-name collisions — 0.1.3 - #3
Merged
Merged
Conversation
…mand-name collisions — 0.1.3 Four defects measured by MCP-only agents on 2026-09-18 against the index for 2.31.13+op77.76: - open77_validate flagged `Open77.database.query.await`, `MySQL.query.await`, `MySQL.ready`, `MySQL.update`... as "not in the catalogue" (6 errors on a clean resource). A dotted call whose name minus a trailing `.await` is a catalogued native now resolves to that native, permission check included, and `MySQL.<x>` resolves as `Open77.database.<x>` on every index whose cards carry that namespace. The alias and the guide-only globals live in src/index/conventions.ts, each entry naming the guide section that documents it; the suite checks those sections still exist and say so. A card that documents no `.await` form gets a warning instead of a false error. - open77_api refused `client:<name>` while `server:<name>` worked; both pin the side now, and a prefix contradicting `runtime` says so. - open77_api answered "missing" for `server:exports` and `server:print`, two globals the server-exports guide uses that have no card yet; they render a card-shaped answer from the guides, and `open77_namespace _G` footnotes them. - open77_validate warns when a literal RegisterCommand name is already registered on the same side by another resource under the detected server (open77_workspace); off when no server is next to the session. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Four defects found by MCP-only agents on 2026-09-18, all reproducible with the
index/snapshot for 2.31.13+op77.76:open77_validatecontradicted the database cards.Open77.database.query.await(...),MySQL.query.await,MySQL.ready,MySQL.update... read as "not in the catalogue" — 6 errors on a clean resource. A dotted call whose name minus a trailing.awaitis a catalogued native now resolves to that native (permission check included), andMySQL.<x>resolves asOpen77.database.<x>on every index whose cards carry that namespace. The alias is a documented table insrc/index/conventions.ts(the index only carries it in prose: theOpen77.database.querycard andserver-api#database), each entry naming the guide section that documents it; a test checks those sections exist in the embedded index and still name both sides. A card that documents no.awaitform gets a warning rather than a false error. Messages keep the name as written (MySQL.nonsense (Open77.database.nonsense) is not in the catalogue…).open77_api client:<name>now works as the mirror ofserver:<name>(case-insensitive); a prefix contradictingruntimesays so instead of "does not exist".server:exports/server:printanswer a card-shaped text from the guides (server-exports#publish-a-service,server-api#logging), inlining the first section, until the base generator emits the cards — the table is dormant for any global that has a card (the clientexportsalready does).open77_namespace _Glists them as a footnote.open77_workspace),open77_validatewarns when a literalRegisterCommand("<name>")/Open77.runtime.registerCommand("<name>")reuses a name another resource under that server already registers on the same side (client and server registries are separate; shared scripts count for both). Warning, never an error. Limitation: names built at run time are invisible to the scan, and with no server next to the session the check is off.Version bumped to 0.1.3; README gets a "What's new" section (no CHANGELOG in the repo). Not published.
Test plan
npm run build,npm run lintnpm test: 16 pass, 1 skipped (runtimeLint, needsOPEN77_TEST_SERVER_DLL), 0 fail — the 5 new tests intests/validator-013.test.tscover: the conventions table against the embedded index; a resource usingMySQL.query.await/Open77.database.update.awaitvalidating clean withdatabase.accessand failing with the permission error without it (plus unknown members, undocumented.await, wrong side, and thesincecheck on op77.44);client:routes;server:exports/server:print; a fixture server dir with colliding command names🤖 Generated with Claude Code