Repository navigation
fix(cli): finish meta deps sync and check on ports' own metadata - #497
Merged
Merged
Conversation
…ync finishes on port-native layouts (FR-023) Add an expectCheck arm to fixtures/dependency-conformance (current, drifted, unresolved) run in TypeScript, and the fixtures/shared-model-conformance publish corpus (exact artifact and manifest bytes plus the refusals), run in TypeScript with a serializer arm in Python. meta deps sync and check now prove the locked dependencies load together when the project's own metadata is in a build-tool directory or uses another port's vocabulary, instead of failing after writing. Record the Maven and NuGet packaged transports as a design note. Fix the stale CONFORMANCE.md cell.
… labelled Fall back only for ERR_UNKNOWN_TYPE/SUBTYPE and only in a project with a config; label resolve failures in deps check; cite the tracking issue, not a plan.
…e verified snapshot
…endencies.md; other docs already current.
dmealing
force-pushed
the
fm/mo-deps-p2-ts-prep
branch
from
October 28, 2026 12:54
3a1f3b0 to
509c2ac
Compare
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
meta deps syncandmeta deps checknow prove the dependency set loads through a newproveDependencySetLoadsincli/src/lib/dependency-load.ts. For a project whose own metadata this toolchain cannot read (Maven/C# layouts, or port-only vocabulary), the proof loads only the locked snapshots, prints that scope and points to the port's ownverify. Any other load failure still fails the command.sdkexports a newloadErrors()(frommemory.ts) that returns every load error, so the CLI can judge the full set instead of only the first thrown error.fixtures/dependency-conformance/gains check cases, andfixtures/shared-model-conformance/(new) pins publisher artifact and manifest output and its refusals. TypeScript runs them incodegen-tsandclitests, and Python runs its serializer arm. The docs and CHANGELOG are updated to match.Validation
Risk Assessment
✅ Low: The fix round closes the masked-load-errors defect: the fallback now needs every loader error to be own-file port-only vocabulary, and the added deps-sync test would fail on the old first-error-only code.
Testing
Baseline ts-fast/ts-unit ran green. Drove the CLI live in disposable /tmp projects: a port-only node plus a broken extends makes deps sync exit 1 and roll back, and a port-only-only project still syncs with the dependencies-only note. The cli package suite passes. The in-process regression test is not counted as live. Not reproduced against the pre-fix commit. The full upstream publish/consume flow is not live-validated. Worktree left clean.
Pipeline
Updates from git push no-mistakes
✅ **Intent** - passed
✅ No issues found.
✅ **Rebase** - passed
✅ No issues found.
✅ **Review** - fixed
The review warning (the fallback looked only at the first load error) was fixed, and the info item (a wrong "described below" pointer in the feature doc) was applied inline.
✅ **Test** - passed
✅ No issues found.
scripts/ci-local.sh --only ts-fast --only ts-unit --strict-toolchainsbun test packages/cli/test/deps-sync.test.ts (17 pass, includes the new port-only + broken extends regression test)bun test in server/typescript/packages/cli (1769 tests: 1766 pass, 3 skip, 0 fail)Live: bun bin/meta.ts deps check --cwd <disposable project> with no dependencies (exit 0)Live: bun bin/meta.ts deps sync --cwd <disposable project> with meta.portonly.json plus meta.invoice.json whose extends targets a missing node (exit 1, ERR_UNRESOLVED_SUPER reported, lock and snapshot rolled back, no deps.lock.json kept)Live: bun bin/meta.ts deps sync --cwd <disposable project> with only a port-only node (exit 0, loadScope dependencies-only with the port-only vocabulary note)server/typescript/packages/cli/src/lib/dependency-load.ts:18- dependency-load.ts header comment (lines 18-19) says the fallback fires only when EVERY load error is one of the two causes 'in the project's own files'. Code does not check file origin, and the masked-load-errors fix (user-chosen) changes the check to every error. Doc prose now says 'every load error'. Comment still names 'in the project's own files'. Fix: drop that clause, or add the file-origin check in code and keep it.docs/features/metadata-dependencies.md:471- docs/features/metadata-dependencies.md fallback paragraph now says the fallback needs every load error to be ERR_UNKNOWN_TYPE/ERR_UNKNOWN_SUBTYPE. This matches the intended masked-load-errors fix, which is not in the code yet at this commit (the code still checks only the first error). Doc is correct once the code fix lands; until then, doc and code disagree.🔧 **Lint** - 1 issue found → no changes applied ✅
🔧 No changes applied.
✅ Re-checked - no issues remain.
✅ **Push** - passed
✅ No issues found.
Gate runs: 1 no-mistakes run, with 3 fix rounds folded into it (review: masked load errors; lint: regenerated
examples/showcase/site-payload.json). CI is local (ci_mode: local), so no forge checks run.