Repository navigation
prefer-triad-project-shape 5.3: advance the openRepoShape pin to 1a9fc537, the commit that realizes 5.2 - #1260
Conversation
…c537, the commit that realizes 5.2 Realizes task 5.3, "openxFactory, the pin", of the ratified change openspec/changes/prefer-triad-project-shape: contracts/openreposhape-pin.yaml advances from e9c4827b (#700) to 1a9fc537bcce37301c85fc108fabd8a599b02000, opensoft/openRepoShape #164 squash-merged 2026-10-06T22:52:05Z, the commit that realizes 5.2 (the Triad advisory, the optional single-repository.yaml and the posture text). The pin cannot skip a commit, so the advance also carries the fifty-six openRepoShape commits before #164; all 57 PR numbers are named in the pin's commit note. Method = the #650/#700 precedent. Every sha256 recomputed from the real bytes (git blob at the commit, cross-checked against the working-tree bytes the verifier reads); none transcribed. 31 -> 37 digested, 45 -> 67 path-only, 76 -> 104 surface. 28 files are new since e9c4827b, none deleted or renamed; every member declared at e9c4827b is still present and still in its list; 21 of the 31 old digests moved, 10 did not. Each new file classified by the pin header's own rule. SIX digested: setup-project.py (the flow setup.sh now shims), shape-doctor.py (the shipped validator that prints the verdict), templates/family-root/scripts/siblings.py (shipped into every family holder beside the digested bootstrap.py and validate-family.py), and #164's contracts/single-repository-record.yaml (the staying-single record's schema), templates/single-repository/ single-repository.yaml (its template, like assembly-root/project.yaml) and scripts/shape_advisory.py (the library scaffold, adopt and the doctor say the advisory out of). TWENTY-TWO path-only: seven tests; the root's and the assembly-root and family-root templates' .gitattributes (the .gitignore / Makefile / validate.yml precedent: copied and pinned upstream, path-only here since 122d729b); the nine templates/workspace-root files (a skeleton the shape neither materializes nor pins); and docs/cli.md, scripts/render-cli-reference.py and docs/handbook.html (derived readings of the digested surface). The header prose moves with the lists (counts, the WHICH paragraph, the new-file paragraph, the commit note), the tests' hard-coded COMMIT, counts and abbreviated oid move with it, and docs/project-repo-schema.md gains a dated "> Amended 2026-10-06" currency note on the #650/#700 pattern; no doctrine requirement moves. $ python3 scripts/validate-openreposhape-pin.py --checkout <openRepoShape@1a9fc537> OK openreposhape-pin verified: opensoft/openRepoShape@1a9fc53 from checkout ..., 37 digest(s) recomputed, 67 member(s) present, 104 file(s) declared with none undeclared Unreleased: the pin is not a contracts/manifest.yaml entry and not a release-inventory member (measured-and-not-registered, #775/#1026), so no manifest row, CHANGELOG entry or cut is owed; the next cut records it. Lane: codeXfactory-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Sorry @brettheap, you've used your own review budget of 250,000 diff characters for the last 7 days. You can request another review in 17 hours and 53 minutes by commenting |
Reviewer's GuideThis PR advances the openRepoShape contract pin from e9c4827b to 1a9fc537, the squash merge realizing prefer-triad-project-shape task 5.2, and makes the pin complete for the upstream 104-file surface by recalculating normative digests and classifying path-only files. It synchronizes verifier tests, adds a documentation currency amendment, and records related task progress. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
…ged evidence Records the realization lane's own merged acts in tasks.md, on 5.1's pattern (PR #1254). Edits only the 5.2-5.5 lines; 5.6 stays unticked, and 5.7 is left exactly as #1255 merged it. - 5.2: opensoft/openRepoShape#164 -> 1a9fc537 (squash, 2026-10-06T22:52:05Z); tests, tests-macos, tests-windows and SonarCloud green; full suite 1159 -> 1200 passed, 33 skipped. - 5.3: this PR (#1260) -> 9af2207, the pin advance; openreposhape-pin-gate green on it (run 37550154276). - 5.4: opensoft/workBenches#139 -> 9fbe609c and #140 -> d86ba59b; post-merge main CI green; bootstrap suite 1042 PASS; workBenches#138 closed completed. - 5.5: the private brettheap/new-workstation, cited by merged sha and file name only: #52 -> e081c5ab, #53 -> cb411460; no CI there; the live ~/.agents files are byte-identical to cb411460. Each tick holds on main only through this pull request's merge, which waits on Brett Heap's merge word and its required checks. Lane: codeXfactory-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
|
LANDING — lane codeXfactory-5, session ed23f049-7e99-4601-8a6d-760b6aeb5f26@Eagle, 2026-10-07T00:41:13Z, PR #1260 into opensoft/openxFactory main. On Brett Heap's word: "merge the 5.3 pin PR when green". Lane: codeXfactory-5 |
|
LANDED — lane codeXfactory-5, session ed23f049-7e99-4601-8a6d-760b6aeb5f26@Eagle, 2026-10-07T00:41:26Z, PR #1260 into opensoft/openxFactory main → squash Merged on Brett Heap's word "merge the 5.3 pin PR when green", with every required check green at Lane: codeXfactory-5 |



Lane: codeXfactory-5
Governing change:
openspec/changes/prefer-triad-project-shape(ratified, #1249), task 5.3, "openxFactory, the pin".Held for Brett Heap's merge word; do not merge. It touches openspec/changes/, so it lands under a Rule 6 landing window.
Copilot review not requested (Brett Heap, 2026-10-06)
What and why
Task 5.3 advances
contracts/openreposhape-pin.yamlonto the openRepoShape commit that realizes 5.2. That commit is1a9fc537bcce37301c85fc108fabd8a599b02000: opensoft/openRepoShape#164, squash-merged 2026-10-06T22:52:05Z. It carries the Triad advisory, the optionalsingle-repository.yamland the posture text. The pin moves frome9c4827b(#700). It cannot skip a commit, so the advance also carries the 56 openRepoShape commits before #164. All 57 PR numbers are named in the pin's commit note, and that list was cross-checked againstgit log e9c4827b..1a9fc537.The method follows #650 and #700. Every sha256 was recomputed from the real bytes, using the git blob at
1a9fc537cross-checked against the working-tree bytes the verifier reads. None was transcribed.e9c4827b1a9fc537files:)pinned_by_commit_only:)Upstream span (
git diff --name-status e9c4827b 1a9fc537): 28 files added and 41 modified. Nothing was deleted or renamed. Every member declared ate9c4827bis still present and still in its list. 21 of the 31 earlier digests moved and 10 did not.Classification of the 28 new files, by the pin header's own rule
The rule: the standard's normative surface is digested. That covers policy and schema data, contract and manifest templates, the tools that create or update a root, shipped validators, shipped root scripts and their libraries, the
AGENTS-shape.mdpair,AGENTS.md,README.mdandLICENSE. Everything else is path-only: tests, CI, ignore and attributes files,CLAUDE.mdstubs, template READMEs and Makefiles, rendered per-rootAGENTS.md/CLAUDE.md, skeletons, and derived readings.Digested (6)
setup-project.py: the flow that creates a root.setup.shbecame a shim over it (openRepoShape Register DTN-018..023: the remaining neutrality-sweep candidates #60).shape-doctor.py: a shipped validator. It runs the others and prints the verdict (Fix D17 miss: empty projects surface in the project dropdown #96).templates/family-root/scripts/siblings.py: shipped into every family holder beside the already-digestedbootstrap.pyandvalidate-family.py.contracts/single-repository-record.yaml(The publisher declares no pin on itself: unbreak doxBench's model routes #164): the schema of the optional staying-single record, normative like the naming policy.templates/single-repository/single-repository.yaml(The publisher declares no pin on itself: unbreak doxBench's model routes #164): that record's template, a contract template liketemplates/assembly-root/project.yaml.scripts/shape_advisory.py(The publisher declares no pin on itself: unbreak doxBench's model routes #164): the library thatscaffold-project.py,adopt-project.pyandshape-doctor.pyimport the advisory from.Path-only (22)
tests/test_cli_reference.py,test_commit_trailers.py,test_park_resume_targets.py,test_setup_project_py.py,test_shape_doctor.py,test_windows_paths.pyandtest_shape_advisory.py..gitattributesat the root and in the assembly-root and family-root templates. This follows the.gitignore/Makefile/validate.ymlprecedent: those three are also copied and pinned upstream, yet have been path-only here since122d729b.templates/workspace-root/. It is a skeleton the shape neither materializes nor pins, and it is rendered per person.docs/cli.md,scripts/render-cli-reference.pyanddocs/handbook.html. These are derived readings of the digested surface: the first is generated from the tools'--help, and the last is the designed reading of the README.Obligations met beyond the pin file
tests/openreposhape_pin/test_pin_verifier.py: the hard-codedCOMMIT, the counts, the count-named test and the abbreviated-oid case move with the pin.docs/project-repo-schema.md: a dated> Amended 2026-10-06currency note, on the Bump the openRepoShape pin to 122d729b: 27 digested / 33 path-only / 60-file surface #650/Bump the openRepoShape pin to e9c4827b: 31 digested / 45 path-only / 76-file surface #700 pattern. No doctrine requirement moves.validate-release-tag-gate.pyreports "no release surface change".Ticks recorded (second commit on this PR,
tasks.mdonly)Each tick is modelled on 5.1's. Each holds on
mainonly through this PR's merge.1a9fc537…(squash). Checks green: tests, tests-macos, tests-windows, SonarCloud. Full suite went from 1159 to 1200 passed, 33 skipped.openreposhape-pingate run on it.9fbe609c…and A reload keeps your place #140 →d86ba59b…. Post-mergemainCI is green.test-openspeckit-bootstrap.shreports 1042 PASS. workBenches#138 is closed as completed.brettheap/new-workstation, cited by sha and file name only: Release contract-v1.29 wheel, intent, and worker contracts #52 →e081c5ab…and release: contract-v1.28 — the chat-turn request's active_document_path is nullable (G-1) #53 →cb411460…. That repository has no CI. The live~/.agentsfiles are byte-identical tocb411460.Validator results
Run in a scratch checkout named
openxFactory, with the submodules CI initializes, againstmain0992369a.validate-openreposhape-pin.py --checkout <openRepoShape@1a9fc537>git fetch --depth 1of1a9fc537from GitHub, then the gate's own two steps)1a9fc537…out of the pin--change prefer-triad-project-shape --strict--all --strictmain; the one is the acceptedadd-chain-attestationexceptionvalidate-code-surface.py,validate-target-release.py,validate-sequenced-after.py(+--ledger-diff: 232 rows),proposal-support.py verify prefer-triad-project-shapevalidate-release-tag-gate.py--single-repovs cleanmaintests/openreposhape_pin, every test file naming the pin, andtests/sequenced_after tests/code_surface tests/target_release tests/scope_globs tests/proposal-support1a9fc537Out of scope, noted
docs/project-repo-schema.md§ "Naming, and the four families" is stale. The pinned naming policy had five families ate9c4827band has six now; the sixth isworkspace(<user>-wip, openRepoShape #86). The section says the families are "governed as DATA in the pinned standard'scontracts/repository-naming.yaml, not by this prose", so no requirement moves with the pin. The heading is left for a separate follow-up.🤖 Generated with Claude Code
Summary by Sourcery
Advance the openRepoShape contract pin to the Triad project-shape implementation and synchronize its manifest, documentation, task tracking, and verification tests.
Enhancements:
Documentation:
Tests: