propose 0018: migration chain ambiguity#46
Merged
Conversation
§10.12.1 and §10.12.2 mandate "configuration-time errors" for two state-migration ambiguity cases (duplicate (from, to) pair at registration, multiple distinct shortest paths at resolution) but neither names the canonical category. Implementations and conformance harnesses can't share an identifier; cross-language drift is inevitable. Proposal 0018 names the category ``checkpoint_state_migration_chain_ambiguous`` and adds fixture 047 covering both ambiguity cases. Spec text changes to §10.10, §10.12.1, and §10.12.2 are described in the proposal body and land in the accept PR; fixture YAML + companion markdown are pre-staged so reviewers can see the conformance shape now. Stays Draft until proposal 0014's reference implementation in openarmature-python lands; then accept/0018 lands the spec text and tags v0.15.1.
f92e345 to
4169f32
Compare
There was a problem hiding this comment.
Pull request overview
Adds draft proposal 0018 and a pre-staged conformance fixture for naming and testing state migration chain ambiguity errors in pipeline utilities.
Changes:
- Defines proposed canonical category
checkpoint_state_migration_chain_ambiguous. - Adds fixture 047 covering duplicate migration pairs and ambiguous shortest migration paths.
- Documents expected fixture behavior and spec sections exercised.
Reviewed changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
proposals/0018-state-migration-chain-ambiguity.md |
Draft proposal for the new migration ambiguity error category and fixture. |
spec/pipeline-utilities/conformance/047-state-migration-chain-ambiguous.yaml |
New conformance fixture with two ambiguity cases. |
spec/pipeline-utilities/conformance/047-state-migration-chain-ambiguous.md |
Fixture documentation describing expected pass/fail behavior. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Three review threads resolved together per the review skill's one-commit-at-the-end rule. - Remove pre-staged fixture files. GOVERNANCE.md:106-111's proposal lifecycle scopes Draft PRs to ``proposals/`` only; ``conformance/`` (and ``spec.md``) updates land at acceptance. The fixture's intended shape stays described in the proposal's Detailed design section. - Introduce a new conformance harness primitive ``expected_chain_ambiguity_error: <category>`` that accepts the named category surfacing at either build time or during resume. ``expected_compile_error`` alone would have made spec-conformant load-time-detecting implementations fail conformance, since §10.12.2 explicitly accepts load-time detection. The new primitive preserves the spec's compile-time-SHOULD / load-time-acceptable carve-out. - Fix the §10.10 mutual-exclusion paragraph in the proposed spec text. Previous wording said "three other categories" but listed the new category itself (self-reference) and omitted ``checkpoint_record_invalid``. Corrected to list all four migration-related categories with a note on why chain-ambiguous cannot co-occur with the others on any given resume.
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
Names the canonical category
checkpoint_state_migration_chain_ambiguousfor the two state-migration ambiguity cases that §10.12.1 and §10.12.2 currently describe as "a configuration-time error" without naming, and adds fixture 047 covering both cases.Motivation
§10.12.1 (duplicate
(from_version, to_version)registration) and §10.12.2 (multiple distinct shortest paths at chain resolution) both mandate "the same category" — but no category name is given. Implementations have nothing concrete to surface; conformance harnesses have nothing concrete to assert. Cross-language drift is inevitable until the identifier is shared. Neither rule is currently fixture-covered.What this PR ships
proposals/0018-state-migration-chain-ambiguity.mddescribing the new category, the §10.10 / §10.12.1 / §10.12.2 spec-text edits, and the fixture additions.spec/pipeline-utilities/conformance/047-state-migration-chain-ambiguous.{yaml,md}with two cases (duplicate_pair_at_registration,ambiguous_shortest_paths_at_resolution).Spec text changes to
spec/pipeline-utilities/spec.mdare NOT in this PR. They land in the eventualaccept/0018-*PR alongside the status flip and thev0.15.1tag, per the standard proposal lifecycle.Sequencing
Stays Draft until proposal 0014's reference implementation in
openarmature-pythonlands. That implementation includes the ambiguous-shortest-path detection logic this fixture exercises, so the fixture passes day one of acceptance. Once 0014 is implemented, accept/0018 lands the spec text edits + the new category in §10.10 + tagsv0.15.1.Test plan