docs(agent-context): align verify skill and Java docs to ADR-0015 validator removal#73
Merged
Merged
Conversation
…kill (invariant vs binding) Audit of the agent-context corpus (5 skill bodies + 16 reference fragments + README) for the issue #1 defect class — conflating a generic invariant with a project-specific binding, or guessing a binding — found it broadly clean: per-stack reference fragments correctly carry their own stack's binding without guessing a second one, LLM callers are explicitly bring-your-own, and the "schema/migrations are metadata-derived" framing is intact across all ports. One consistency fix: verify/SKILL.md asserted that on the JVM ports "a runtime startup validator catches generated-table drift at app boot" as a flat fact — but whether an adopter wires that validator is an opt-in project binding. migration.md already hedges the same capability ("can catch"); this aligns verify/SKILL.md to it: "can catch ... an optional complementary check (if your project wires one)". Regenerated the 4 cross-stack conformance fixtures (the skill body is installed for every stack). Conformance + byte-identity gates green. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LuZWKnWzYGVnESijL7uuky
dmealing
added a commit
that referenced
this pull request
Jun 25, 2026
Lockstep npm release of the @metaobjectsdev/* packages (13 publish candidates). Ships the agent-friendly meta CLI (--format/TOON output, deploy-all agent-context references, #71) plus the agent-context scaffold fixes (#1, #73): the injected AGENTS.md/CLAUDE.md now name the database schema + migrations as metadata-derived and no longer guess the migration binding. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LuZWKnWzYGVnESijL7uuky
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.
Intent
Audit the rest of the MetaObjects agent-context corpus (the metaobjects-* skill bodies + per-language reference fragments + README) for the same defect class fixed in issue #1: docs that conflate a generic invariant (true for every adopter) with a project-specific binding (which migration tool / framework / paths), or that guess a binding, leading an AI agent to hand-write a derivable artifact (e.g. a raw ALTER TABLE) and silently reintroduce drift. A delegated review found the corpus broadly clean: per-language reference fragments are installed CONDITIONALLY per the resolved stack, so their stack-specificity is correct by design and was deliberately NOT flagged; LLM callers are explicitly bring-your-own; the migration-is-metadata-derived framing is intact across all five ports. The single genuine consistency fix: verify/SKILL.md asserted the JVM runtime startup validator 'catches generated-table drift at app boot' as a flat fact, but wiring that validator is an opt-in adopter binding -- migration.md already hedges the same capability ('can catch'), so this aligns verify/SKILL.md to it ('can catch ... an optional complementary check (if your project wires one)'). The 4 cross-stack agent-context conformance fixtures were regenerated because the skill body is installed for every stack (verified: conformance + root/sdk byte-identity gates green). Deliberately did NOT add any config field, did NOT touch the per-language framework assumptions (correct stack bindings), and did NOT alter the ADR-0015 migration framing.
What Changed
agent-context/skills/metaobjects-verify/SKILL.mdfrom a flat "catches generated-table drift at app boot" fact to "can catch ... an optional complementary check (if your project wires one)", matching migration.md's existing phrasing — and regenerated the 4 cross-stack agent-context conformance fixtures since the skill body installs for every stack.docs/features/migrations-and-drift.md,docs/ports/java.md, andREADME.mdto stop asserting the removedMetaClassDBValidatorServicestartup validator as a hard guarantee, consistent with ADR-0015 Decision 2.Risk Assessment
✅ Low: Pure documentation wording change that softens one over-stated claim and propagates it byte-identically to the four conformance fixtures (verified matching), with no code, behavior, or contract impact.
Testing
Baseline
bun installthen ran the agent-context byte-identity conformance gate (4 pass) plus the drift/content-root/assemble gates (13 pass). Because the end-user surface is the skill markdown an AI agent reads, I rendered the assembled metaobjects-verify SKILL.md through the real assemble() pipeline for the ts/java/python stacks and captured the corrected--dbbullet — confirming the hedge ships identically to every stack, matches migration.md's existing wording, and leaves no un-hedged startup-validator assertion anywhere in the corpus. All checks green; worktree left clean.Evidence: Assembled metaobjects-verify --db bullet (rendered per stack — the text an AI agent receives)
===== STACK: ts-react-tanstack / java-react / python ===== ---db— schema drift. ... On the JVM ports a runtime startup validator can catch generated-table drift at app boot as an optional complementary check (if your project wires one), but the authoritative DB-vs-metadata gate is the Nodeverify --db.Pipeline
Updates from git push no-mistakes
✅ **intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - passed
✅ No issues found.
✅ **Test** - passed
✅ No issues found.
cd server/typescript/packages/sdk && bun test test/agent-context-conformance.test.ts— 4 pass (byte-identity of assembled skill vs the 4 regenerated fixtures across stacks)bun test test/agent-context/drift.test.ts test/agent-context/content-root.test.ts test/agent-context/assemble.test.ts— 13 passRendered the assembledmetaobjects-verify/SKILL.mdviaassemble()/makeStack()for ts-react-tanstack, java-react, and python stacks; confirmed the corrected hedged--dbbullet appears in all three (the text an AI agent actually consumes)grepaudit: confirmed migration.md uses the matching 'can catch ... complementary check' hedge and that no un-hedged 'catches generated-table drift at app boot' string remains in agent-context/ source or fixtures/agent-context-conformance/🔧 **Document** - 1 issue found → auto-fixed ✅
docs/features/migrations-and-drift.md:16- Pre-existing, out-of-scope: docs/features/migrations-and-drift.md (lines 16, 111, 116) — and README.md, server/java/README.md, docs/ports/java.md — still assert the JVM startup validator catches generated-table drift at app startup as a flat fact and attribute it toMetaClassDBValidatorService, which no longer exists in source (removed per ADR-0015 Decision 2). This is the same flat-fact/conflation defect class the audited change corrected in the agent-context corpus, but fixing it requires the broader ADR-0015 MetaClassDBValidatorService-removal correction the author deliberately scoped out, so it needs a human call rather than a silent edit.🔧 Fix: sync Java migration/drift docs to ADR-0015 validator removal
✅ Re-checked - no issues remain.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.