Repository navigation
fix(cli): run codegen and template gates on bare verify in every port - #475
Merged
Merged
Conversation
A bare verify now covers codegen drift, prompt templates and the requirement ledger in all five ports; --db/--deps/--replay stay opt-in. A gate with no configuration is skipped with a one-line note. Also corrects the mysql recipe (Python ships SQLite and MySQL drivers) and the api-contract in-list cap note (all five ports enforce it).
…rity # Conflicts: # CHANGELOG.md
…tring, cli.md (Python and Java rows), MetaDataVerifyMojo comment and one Python test comment. The mysql.md and api-contract.md corrections were already on the branch and checked against code: Python has SQLite and PyMySQL drivers, and the in-list cap of 100 exists in all five ports. Doc edits only; no behavior or test logic changed.
dmealing
added a commit
that referenced
this pull request
Oct 28, 2026
) #475 made a bare verify run the template gate as well as the codegen gate. Two tests still described the old behaviour: one asserted a single stderr line, the other ran a config project with no prompt templates. They now match docs/features/cli.md and the Unreleased CHANGELOG entry; the code was right.
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.
What Changed
verifynow runs the same default gate set in every port: codegen drift and prompt-template drift, plus the requirement ledger. Nodemeta verifyanddotnet meta verifygain the codegen gate;metaobjects verifyandmvn metaobjects:verifygain the template gate.--db,--depsand--replaystay opt-in, and naming a subverb still runs only the gates named.meta verifywithoutmetaobjects.config.ts, Python without a config or--prompts, C# without--outandcodegen/Generators.cs, and Maven withoutmeta.verify.templateRoot. A config file that exists but fails to load still exits 2. The Mavenmeta.verify.modeparameter no longer defaults tocodegen; unset runs both gates.docs/recipes/mysql.md(Python ships SQLite and MySQL drivers) anddocs/features/api-contract.md(thein-list cap of 100 applies in all five ports). Adds a CHANGELOG entry, with the behavior change noted for CI scripts that relied on the narrower bare default.Validation
Risk Assessment
✅ Low: Change matches intent and recorded decisions in all four ports: bare verify gate sets, skip notes, TS broken-config exit 2 and doc fixes all trace correctly. The remaining behaviour change, previously green CI going red, is documented in the CHANGELOG.
Testing
TS bare verify codegen gate driven live: stale output fails (exit 1), broken config fails (exit 2), missing config skips with note (exit 0). Transcripts in the evidence dir. cli package suite passes (1753 tests, 0 failures). Doc claims checked against source only, not a live scenario. Python bare verify ran live, but the codegen gate needs a YAML config, so its drift path was not exercised. C# bare verify was not driven live. Full server suite not run (exceeds the 5-minute scoped limit).
meta genthenmeta verifyexit 0verify --codegenexit 2Evidence: TS stale bare verify stdout
Evidence: TS stale bare verify stderr
Evidence: TS broken-config bare verify stderr
Evidence: TS no-config bare verify stderr
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.
meta genthenmeta verifyexit 0verify --codegenexit 2scripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchainsBuilt disposable TS project under the evidence dir;bun server/typescript/packages/cli/bin/meta.ts genthen bareverify(clean, exit 0)Stale model after gen, bareverifyexit 1, codegen gate reports 1 file differs (stdout + stderr captured in evidence)Brokenmetaobjects.config.ts, bareverifyexit 2 with load error;verify --codegenalso exit 2Nometaobjects.config.ts, bareverifyexit 0 with skip notebun testin server/typescript/packages/cli: 1753 tests, 1750 pass, 3 skip, 0 failDoc check (code reading only): docs/recipes/mysql.md Python SQLite/MySQL drivers present in server/python/src/metaobjects/runtime/drivers.py; in-list cap 100 confirmed in TS DEFAULT_MAX_IN_LIST, Python MAX_IN_LIST, Java MAX_IN_LIST, C# MaxInList, Kotlin generated MAX_IN_LISTPython:PYTHONPATH=server/python/src python3 -m metaobjects.cli verify metaobjectsin stale project, exit 2 with message that metaobjects.config.yaml is missing (not a silent skip)✅ **Document** - passed
✅ No issues found.
✅ **Lint** - passed
✅ No issues found.
✅ **Push** - passed
✅ No issues found.