fix(006): resolve chassis pins per package, not in lockstep#10
Merged
Conversation
The chassis packages moved from @enrahitu to @statecrafting and are now versioned independently (toolchain at 0.3.0 while hiqlite-native and kernel-native stay at 0.1.0). The original one-target-for-all model would have pinned the companions to the toolchain's version, one they never published, and the lockfile refresh would have failed. - Each discovered package resolves its own target: a seed against its [requires] range, a companion within a caret of its current pin, so an unnamed companion never crosses its own major silently. - --to overrides the primary seed only; every other package still auto-resolves, so --to can never force a companion onto a nonexistent version. The compat gate applies to the forced primary target. - Accept both npm view --json shapes (array, and the bare string some npm builds return for a single-version package) so companions resolve. - Spec 006 amended first (per-package model in §2, as-built and live check in §5), then the code; implementation flipped to complete. Live-checked against the real npm registry: toolchain 0.1.0 -> 0.3.0 with both companions held at 0.1.0, verify green; the mirror --to case refused as a migration.
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
The chassis packages moved from the retired
@enrahituscope to@statecraftingand are now versioned independently:@statecrafting/toolchainis published at 0.1.0/0.2.0/0.3.0 while@statecrafting/hiqlite-nativeand@statecrafting/kernel-nativeremain at 0.1.0. Spec 006's original model resolved one target and pinned it to every chassis package, which would have pinned the companions to a version they never published (and failed the lockfile refresh).This replaces that with per-package resolution:
[requires]) resolves the greatest published version its named range allows.--tooverrides the primary seed only; every other package auto-resolves. The compat gate applies to the forced primary target.npm view --jsonshapes (array, and the bare single-version string some npm builds return).Per the coherence guard, spec 006 was amended first (per-package model in §2; as-built record and live check in §5), then the code.
implementationflips tocomplete.Testing
cargo fmt --check,cargo clippy --all-targets -- -D warnings,cargo test(106 unit + 16 CLI, green).spec-spine compile | lint --fail-on-warn | index checkgreen.@statecrafting/*packages upgradedtoolchain0.1.0 -> 0.3.0 with both companions held at 0.1.0 (realnpm install --package-lock-onlyresolved all three), verify green, committed ontemplate-upgrade/0.1.0-0.3.0, exit 0; the mirror^0.1+--to 0.3.0case refused withincompatible_target, exit 1.Spec-Drift-Waiver: src/verbs/template.rs couples to spec 002's Cargo crate territory, which owns all of src/**, so any source edit drifts against 002 without an authoring edit to it. This change's design-owning spec is 006 (it establishes the
statecraft_cli::verbs::templatesymbol and was amended here); the 002 coupling is the standing mechanical crate-territory drift, not a design contradiction. A coupling waiver, not a coherence override.