Skip to content

propose 0018: migration chain ambiguity#46

Merged
chris-colinsky merged 2 commits into
mainfrom
feature/0018-migration-chain-ambiguity
May 16, 2026
Merged

propose 0018: migration chain ambiguity#46
chris-colinsky merged 2 commits into
mainfrom
feature/0018-migration-chain-ambiguity

Conversation

@chris-colinsky
Copy link
Copy Markdown
Member

@chris-colinsky chris-colinsky commented May 16, 2026

Summary

Names the canonical category checkpoint_state_migration_chain_ambiguous for 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

  • Draft proposal at proposals/0018-state-migration-chain-ambiguity.md describing the new category, the §10.10 / §10.12.1 / §10.12.2 spec-text edits, and the fixture additions.
  • Pre-staged fixture at 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.md are NOT in this PR. They land in the eventual accept/0018-* PR alongside the status flip and the v0.15.1 tag, per the standard proposal lifecycle.

Sequencing

Stays Draft until proposal 0014's reference implementation in openarmature-python lands. 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 + tags v0.15.1.

Test plan

  • Maintainer reviews the proposal text against §10.12.1 and §10.12.2.
  • Maintainer reviews the fixture's two cases match the cited spec rules.
  • After 0014's reference implementation lands, accept/0018 PR ships spec.md edits + version bump + CHANGELOG entry.
  • After accept, openarmature-python pulls the new fixture and verifies it passes.

§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.
@chris-colinsky chris-colinsky force-pushed the feature/0018-migration-chain-ambiguity branch from f92e345 to 4169f32 Compare May 16, 2026 05:20
@chris-colinsky chris-colinsky marked this pull request as ready for review May 16, 2026 05:33
Copilot AI review requested due to automatic review settings May 16, 2026 05:33
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Comment thread spec/pipeline-utilities/conformance/047-state-migration-chain-ambiguous.yaml Outdated
Comment thread spec/pipeline-utilities/conformance/047-state-migration-chain-ambiguous.yaml Outdated
Comment thread proposals/0018-state-migration-chain-ambiguity.md Outdated
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.
@chris-colinsky chris-colinsky merged commit 4ec5295 into main May 16, 2026
2 checks passed
@chris-colinsky chris-colinsky deleted the feature/0018-migration-chain-ambiguity branch May 16, 2026 06:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants