Repository navigation
Conversation
Done: fetched/synced the ticket worktree, installed frozen offline dependencies with scripts disabled, and inspected validation, docs, runtime tests, and verifier artifacts. No source changes made. Not done: 2020-12 body check, actionable provider rejection reason, superset-of-main compatibility rule, docs/tests, focused verification, probes, or CI. Ownership transferred to Board Session 144f856f before implementation.
…-safe-dialects-wip
…-safe-dialects-wip
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configuration
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Live Mobbin caveat and handoffOwner-reported Mobbin success was on dev main #747 deliberately refuses newly admitted old-draft root assertions such as Remaining live verification belongs to the Board/owner: retest Mobbin on a build containing #747 head Public evidence read in this Session via
All three pages expose parameter tables and schema-change excerpts (for example string/enum properties Board Session |
Merge-readiness review: blocked on frozen-session compatibilityUpdated this branch with Blocking finding: Verified against esbuild bundles of the real codec, overriding only An owner decision is needed on how existing frozen definitions remain replayable/attachable while new discovery refuses provider-unsafe schemas. Silently dropping or rewriting the frozen tools would not satisfy the compatibility contract. I have not guessed a recovery policy or bypassed the new guards. The existing owner-requested fresh-discovery/live Mobbin verification also remains outstanding. Targeted verification passed:
CI is running on |
|
Implemented the maintainer decision in 37b9321 (after merging origin/main a662494 via 92b4e7a): previously accepted frozen schemas remain accepted as-is on durable replay. Fresh discovery still applies the provider-unsafe legacy-dialect restrictions. The codec and whole-frozen-set validator now explicitly use replay acceptance: the unchanged JSON/bounds checks and own-dialect meta-validation shipped in #733, plus the pre-#733 Ajv2020 compatibility path. Replay skips only the new admission restrictions; it does not drop tools, rewrite schemas, or relax corruption checks. This also covers attach/surface validation callers of the frozen-set validator. Compared main’s acceptance logic systematically against each new restriction. The real-codec corpus covers all 17 projected root assertions, tuple items, older-draft unknown keywords that fail the new 2020-12 body check, all six legacy-provider keyword exclusions, and nested schema positions, across HTTP/HTTPS and fragment aliases of draft-07, 2019-09 and 2020-12. Accepted input/output schemas round-trip byte-identically in both birth tool-surface records and refresh deltas. Renderer CSP regressions additionally pin previously frozen tuples, root additionalProperties:false, and dependencies while asserting that identical fresh discovery remains rejected. Verification passed:
Still outstanding: owner/Board live Mobbin fresh-discovery verification on a build containing the current head, confirming all three tools survive discovery and owner-driven tool use in a fresh Session. No live Mobbin/provider calls were made; frozen-session replay does not establish fresh-discovery compatibility. |
|
CI follow-up on current head 37b9321: the single bounded 20-minute |
Summary
Follow-up to merged #733 (VC-621), fixing its new schema admission and baseline replay regressions without changing provider adapters or advertised/frozen schemas.
Ajv2020.validateSchemaacceptance path first, including empty$schemaand bundled 2020-12/meta/*URIs. Pin the superset-of-pre-fix(mcp): accept recognized JSON Schema dialects (VC-621) #733 acceptance property over a corpus and exercise durable and renderer event decoding.itemsarrays with a safe, actionableprefixItemsreason, never translate them.prefixItems: those drafts ignore it, and a 2020-12 interpretation can weaken the originalitemsconstraint. No speculative provider rewrite.$schema; output schemas are never model-declared and retain their own-dialect validation. Keep all bounds, no-fetch/no-register guarantees and lazy/CSP-safe module import. Renderer replay under CSP (VC-636) remains separate; correct the inaccurate test comment.Verification
All passed:
pnpm install --frozen-lockfile --offline --ignore-scriptscd packages/shared && vp test run src/mcp.test.ts src/session-event-codec.test.ts --coverage --coverage.include=src/mcp.ts --maxWorkers="$VOLLI_CONCURRENCY_HINT"— 302 tests, 100% statements/branches/functions/lines formcp.ts.cd packages/agent-runtime && vp test run src/pi/mcp-tools.test.ts src/pi/provider-compaction.test.ts --maxWorkers="$VOLLI_CONCURRENCY_HINT"— 73 tests.cd packages/agent-runtime && vp test run src/pi/mcp-tools.test.ts -t 'imports the browser-bundled' --maxWorkers="$VOLLI_CONCURRENCY_HINT"— CSP import check passed.cd packages/host-core && vp test run src/mcp --maxWorkers="$VOLLI_CONCURRENCY_HINT"— 254 tests, including discovery regression (also repeated discovery's 8 tests after the review fix).vp run --filter @volli/shared typecheck,vp run --filter @volli/agent-runtime typecheck,vp run --filter @volli/host-core typecheck— passed.vp check,git diff --check— passed, repeated aftergit fetch origin && volli worktree sync.probe.mjsagainst an esbuild bundle of currentmcp.ts, plus its raw stdio fixture through host-core's real opener/discovery path. Local artifacts in this worktree:.tmp/vc621/probe.out,discovery.out,discovery-runner.ts,extended-dialect-server.mjs.Probe results and limits
itemsprefixItemsitemsprefixItems/itemsinteraction$schema, 2020-12/meta/coreThe original fixture's
d07_plainalso has rootadditionalProperties: false. It is intentionally refused because Anthropic's projection drops that assertion. The extended local fixture proves plain draft-07 and 2019-09 without discarded root constraints remain usable. This follows the owner’s later no-silent-constraint-loss requirement; it is not a promise that every old-draft schema without tuples is provider-compatible.Pre-existing limitations for schemas accepted before #733 remain unchanged, including dropped root definitions/constraints in provider projections. The owner separately reported Mobbin sign-in and tool use working on dev main b460a63 containing #732/#733; this Session did not perform that retest. Exact raw Mobbin dialect/schemas/cause remain unconfirmed, and this corrective follow-up makes no claim that Mobbin uses tuples. No live Mobbin/provider calls, credential reads, or user tool/config selection changes by this Session. No merge; owner/orchestrator retains merge authority after verification and a green CI gate.
Independent review
8ee98afd: zero hard violations or actionable smells.07b4ec3f: found one concreteprefixItems/legacyitemssemantic-weakening blocker; fixed inf71dd0f3ewith a red-before/green-after regression for both old dialects.2508a6ef: blocker resolved, baseline/output behavior unchanged, no new concrete issues.