Repository navigation
docs(163): normalize the contract to as-built; fix(166): pinned refs are hash or alias-vN - #173
Merged
Merged
Conversation
The contract merged still written as the pre-fix proposal. Flip it to describe the system as built, net -79 lines: status reduced to "Normative, implemented"; the Deviations and Open-questions sections deleted (the ADR and the red tests are the durable record; the two resolutions with standing content — canonical sort key order, the D3 profile guard — folded into the body in a sentence each); remaining future/conditional phrasing rewritten as description or past-tense history. The changes are recorded in the ADR's post-merge normalization note. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Four red tests for #166: a bare alias passed to pinned_expr_from_alias must be rejected with an error naming the two accepted forms (today it silently pins the build-time head); "<alias>-v<N>" must resolve against the alias history and denote that revision forever; an out-of-range version must say how many versions exist; and an alias literally named like a version reference must be rejected at creation and rename. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
pinned_expr_from_alias now accepts a content hash or an explicit "<alias>-v<N>" version reference (1-based into the alias history, the V1..Vn the UI shows) and rejects a bare alias with an error naming both accepted forms — a pin must denote the same entry forever, and a bare alias silently pinned whatever the head happened to be at build time. An out-of-range version reports how many versions exist. The collision closure from the issue: alias names matching '-v<N>' are rejected at creation and rename (aliases.validate_alias_name, enforced in set_alias/rename_alias and surfaced as error dicts by catalog_create/catalog_rename). The steer for the common intent — a parallel take on an existing concept — is the '-o<N>' (option) naming convention, suggested in the error itself. Guidance strings (catalog_run docs, the import-error hint, docs/mcp-server.md) updated to the two accepted forms; scope change recorded in the ADR's post-acceptance note. Closes #166. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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
Two follow-ups to the #163 merge:
Doc normalization. #167 merged with
docs/system-contract.mdstill framed as the pre-fix proposal ("as it will be", the Deviations-on-main list, the Open-questions section). This flips the doc to describe the system as built — by cutting, not adding (net −79 lines in the contract): status reduced to "Normative, implemented (PR #167)"; Deviations and Open-questions deleted (the ADR and the red tests are the durable record; the two resolutions with standing content are folded into the body in a sentence each); remaining conditional phrasing rewritten as description or past-tense history. Recorded in the ADR under "Post-merge doc normalization".#166.
pinned_expr_from_aliasnow accepts a content hash or an explicit"<alias>-v<N>"version reference and rejects a bare alias with an error naming both forms — a pin must denote the same entry forever, and a bare alias silently pinned the build-time head. An out-of-range version reports how many versions exist. Alias names matching-v<N>are rejected at creation and rename (the issue's collision closure), steering a parallel take on a concept to the-o<N>(option) naming convention instead. TDD: the four tests were seen failing on CI (4 failed, 690 passed) before the fix commit.Closes #166.
🤖 Generated with Claude Code