Repository navigation
prefer-triad-project-shape 5.7: the estate inventory, a recommendation only - #1255
Conversation
…n only Measure each of the 37 repositories in scripts/estate-repository-inventory.yaml on its own main through the GitHub API, reading every file at the head sha it records, and capture the result at openspec/changes/prefer-triad-project-shape/review/estate-inventory-2026-10-06.md. Classes: 3 Triads (MedxEHR, openDox, openXdox), 6 legs, 0 family holders, 0 workspace repositories, 28 single repositories. None records staying single and none went unmeasured. For the 28, a recommendation to the owner: migrate 12, record staying single 15, none made for the one external row. These are recommendations only. Nothing is converted or recorded on any repository's behalf, and the record states the Triad preference with its posture (confers nothing, reviewed identically) and says it is not a review input. Tick tasks.md 5.7 with the record as evidence, touching only 5.7's lines. Lane: codeXfactory-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…nded The branch was rebased, before any push, onto main a2dc658 (#1254, the 5.1 tick). The record's two base sentences now name that commit. The inventory blob is unchanged there (ce17309), and #1254 adds no root project.yaml, family.yaml or single-repository.yaml. No measured value moves. Lane: codeXfactory-5 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
@codex review |
|
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 22 hours and 24 minutes by commenting |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Reviewer's GuideThis PR records a read-only inventory of all 37 estate repositories at pinned main-branch commits, classifies their project shapes, and issues non-binding owner recommendations without changing any external repository; it also marks task 5.7 complete with the report as evidence. Entity relationship diagram for estate inventory recordserDiagram
ESTATE_REPOSITORY {
string repository
string main_head_sha
string project_shape
string evidence_path
}
OWNER_RECOMMENDATION {
string action
string reason
boolean binding
}
ESTATE_REPOSITORY ||--o| OWNER_RECOMMENDATION : receives
Flow diagram for the read-only estate inventoryflowchart TD
A[37 estate repositories] --> B[GitHub API GET at each main head SHA]
B --> C[Read project.yaml, family.yaml, single-repository.yaml, AGENTS.md]
C --> D[validate-repository-naming.py]
D --> E[Classify project shape]
E --> F[Recommendation to repository owner]
F --> G[No repository changes]
E --> H[Inventory report]
H --> I[Task 5.7 marked complete]
Flow diagram for project-shape recommendationsflowchart TD
A[Single repository] --> B{Product with code and specs?}
B -->|yes| C[migrate via adopt-project.py]
B -->|no| D[record staying single via single-repository.yaml]
A --> E{External repository?}
E -->|yes| F[No recommendation]
A --> G{Install or unclassified name?}
G -->|yes| D
C --> H[Owner decides]
D --> H
F --> H
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Take the nine items of the independent review of PR #1255 in one pass: 1. MAJOR. The record no longer reads or tallies single-repository.yaml. The ratified requirement makes the advisory its only reader. It is dropped from the reads, the 28 evidence cells, the counts, the re-run recipe and the 5.7 tick; one sentence says why, and discloses the discarded request. 2. Rows 18, 19, 20, 23 now state both facts: a product with code and specs, and the naming barrier. Note B says the barrier is the documented in-place posture, not a hard check in adopt-project.py. Row 22 has no spec corpus at its measured sha and keeps its "a tool" reason. 3. The external row cites the inventory's own definition and is called a stated departure from 5.7's text, in note D and in the tick. 4. The base sentence names #1252 and #1254; fc4fa0f is #1253's merge. 5. Rows 11 and 12 drop the "already elected" clause. 6. Private rows' reasons are described as naming no path from their tree. 7. Section 1 states the inventory's scope (brett-wip, MedxGlass). 8. The 5.7 tick names PR #1255. 9. The naming verdicts are identical at the pinned openRepoShape e9c4827b. Counts are unchanged: 3 Triads, 6 legs, 28 single; 12 migrate, 15 record staying single, 1 none made. 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-06T23:51:54Z, PR #1255 into opensoft/openxFactory main. On Brett Heap's word: "merge 1255". Lane: codeXfactory-5 |
|
LANDED — lane codeXfactory-5, session ed23f049-7e99-4601-8a6d-760b6aeb5f26@Eagle, 2026-10-06T23:52:07Z, PR #1255 into opensoft/openxFactory main → squash Merged on Brett Heap's word "merge 1255", with every required check green at Lane: codeXfactory-5 |
…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>



Lane: codeXfactory-5
Refs #1249 (prefer-triad-project-shape, task 5.7)
What this records
This PR realizes task 5.7 of the RATIFIED change
prefer-triad-project-shape: the estate inventory, a recommendation only.scripts/estate-repository-inventory.yamlwas read on its ownmainthrough the GitHub API. Every file was read at the head sha the record lists.openspec/changes/prefer-triad-project-shape/review/estate-inventory-2026-10-06.md(Status: record,Kind: report). It carries:mainhead sha, its class, the evidence path, and the recommendation with its reason;tasks.md5.7 is ticked, with the record as its evidence. The hunk touches only 5.7's lines. Sibling prefer-triad-project-shape 5.1: the doctrine and register description restate the Triad as preferred, confers nothing #1254 ticked 5.1 in the same file and has landed, and this branch sits on top of it.These are recommendations only. For each single repository the record gives its owner a recommendation, with a one-line reason:
adopt-project.py), orsingle-repository.yaml).They are not decisions. Nothing was converted, created or recorded on any repository's behalf, and every read was a GET. The record states the preference together with its posture: the Triad is preferred, it confers nothing, and a single repository is reviewed identically. It also says that it is not a review input.
Brett Heap's words, verbatim
These words authorize authoring and opening this pull request. None of them is a merge word for it.
Counts per class
MedxSoft/MedxEHR,opensoft/openDox,opensoft/openXdox)-specand-codelegs of those three)Fission-AI/OpenSpec,governance: external).design.mdD7. The same three repositories it named are the only Triads among the inventory's 37 rows.opensoft/brett-wipis not a row, and Triads such asMedxSoft/MedxGlassexist outside it.Judgment calls, stated in the record (§ 4)
-Installnames andxFactory-Installer. Eight repositories are recommended to record staying single, because the in-place postureadopt-project.pydocuments adopts a repository under its own name.installform into no role, andxFactory-Installermatches no family.--projectequals the source's name. The barrier is the documented posture, not a hard check.externalrow. No recommendation is addressed toFission-AI/OpenSpec, which the inventory defines as "NOT of this estate at all". This is a stated departure from 5.7's "for each single repository a recommendation".tasks.md§ 5.2 lands, because openRepoShapemain39d5c986does not yet carry thesingle-repository.yamlschema.single-repository.yamlis not read. The ratified requirement makes the advisory its only reader, so the record reports and counts nothing about it.Review round (head
e24ac4b7)An independent opus review of head
05d722aefound one MAJOR, two MINOR and six NIT items. All nine were taken in one pass (63521d48).mainwas then merged in at9171d14a(#1138); there was no rebase and no force push.single-repository.yaml..gitmodules, at each head. The record now discloses that, and says neither result is used or reported._checked_plan_inputsdoes not bind--projectto the source repository's name.xFactory-Installerhas no spec corpus at its measured sha (noopenspec/and nospecs/; one script and one test). It keeps its "a tool" reason, with the corrected barrier wording.externalrow. Note D and the 5.7 tick now cite the inventory's own definitions:pinnedis "openxFactory consumes it at a commit and digest and authors none of it", andexternalis "it is pinned and is NOT of this estate at all". Both call the withheld recommendation a stated departure from 5.7's text.fc4fa0ffis T070b: fold Copilot's four items into realize-doc-health-direction-arc before the ratify word (plan 038) #1253's own merge, whichgit log --first-parent fc4fa0ff..a2dc658dconfirms.opensoft/brett-wipis not a row, andMedxSoft/MedxGlass(main582ce57c) is a Triad outside the inventory. This body now says "the only Triads among the inventory's 37 rows".mainonly through that pull request's merge" wording.e9c4827band at39d5c986. That was re-run here independently.Validation
Both trees are checkouts named
openxFactorywith the three submodules CI initializes (openXwallet,openXdoxandopenDox, recursively):e24ac4b7, after the review round and a merge ofmain;main9171d14a.The results:
@fission-ai/openspec@1.12.0, content address verified):--change prefer-triad-project-shape --strict: 1 passed, 0 failed.--all --strict: 113 passed, 1 failed (114 items), exit 0 on both trees. The one failure is the acceptedadd-chain-attestationexception and is not new.main:validate-sequenced-after.py .;--ledger-diff: "per-change sweep ledger consistent with the corpus (232 rows)";proposal-support.py . verify prefer-triad-project-shape: "proposal support verification ok";validate-code-surface.py .;validate-target-release.py .;validate-former-id-arrival.py .;validate-release-tag-gate.py .;validate-estate-inventory.py ..scripts/doc-health.py --single-repo .):Status:in the record produced astatus-validityerror naming it. So the record is in scope, and with its realStatus: recordit is clean.-m "not postgres":c44c1610: 3872 passed, 2 skipped, 0 failed;05d722aeovera2dc658d: 3872 passed, 2 skipped, 0 failed;e24ac4b7over9171d14a: 3872 passed, 2 skipped, 0 failed.pytest-suite.This pull request touches
openspec/changes/, so lane-collision Rule 6's LANDING/LANDED window applies at landing.Copilot review not requested (Brett Heap, 2026-10-06).
Held for Brett Heap's merge word; do not merge.
🤖 Generated with Claude Code