Repository navigation
Ratify realize-doc-health-direction-arc on Brett Heap's word (#656 6023375303) - #1261
Conversation
…23375303) Lane: openxfactory-4 The ratification record for the doc_health direction arc's own change (plan 038, T071), in the form of cd494e4 (#1151). No requirement, decision or task text moves: the change has no spec delta. - proposal.md, design.md, tasks.md: Status: ratified with one citation line each (Ratified: on the proposal, Ratified by: on the other two). proposal.md gains the qualifier above the filing paragraph and a Ratification record section; D1-D7 are read as recommended by tasks.md 1.2's own rule, in proposal.md and design.md section 11. - .openspec.yaml: approved_by and approved_on added after proposed_on. - tasks.md: 1.1 (the filing, #1247 -> 5145683 and #1253 -> fc4fa0f) and 1.2 are ticked; 1.2 keeps its as-filed wording and carries a marked note on the record's Status. - review/ratification-2026-10-06.md: the record (Status: ratified). - README.md: the Active changes bullet. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Reviewer's GuideThis PR ratifies the existing Sequence diagram for ratifying the doc-health direction arcsequenceDiagram
actor BrettHeap
participant Issue656
participant RatificationPR
participant OpenSpecChange
participant Plan038
BrettHeap->>Issue656: post ratify word
RatificationPR->>OpenSpecChange: record Status: ratified and approval citations
RatificationPR->>OpenSpecChange: add ratification record
RatificationPR->>OpenSpecChange: preserve fc4fa0ff baseline
RatificationPR->>Plan038: authorize T072
RatificationPR->>Plan038: authorize T074 after T072
RatificationPR->>Plan038: authorize T075 after T074
Note over RatificationPR,Plan038: No realization, archive, promotion, or release change
Flow diagram for ratification lifecycle and realization authorizationflowchart TD
A[Change landed at fc4fa0ff] --> B["Brett Heap posts Ratify it (Recommended)"]
B --> C[Record ratification and update lifecycle metadata]
C --> D[Status: ratified; D1-D7 stand as recommended]
D --> E[T072: opportunistic realization]
E --> F[T074: follow in plan order]
F --> G[T075: follow in plan order]
C --> H[Change remains ACTIVE]
H --> I[Archive only after realization is merged and green]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Copilot review overview
🟢 Approval recommended
The documentation consistently reflects the verified ruling and preserves the intended lifecycle and implementation boundaries.
Review effort: Balanced
Findings: None
What changed in this PR
Ratifies the doc-health direction arc without changing implementation scope.
Changes:
- Records Brett Heap’s ratification and approval provenance.
- Updates lifecycle statuses, task completion, and the README index.
- Adds the formal ratification report.
| File | Description |
|---|---|
README.md |
Marks the change ratified. |
proposal.md |
Adds ratification status and record. |
design.md |
Records D1–D7 as accepted. |
tasks.md |
Completes filing and ratification tasks. |
.openspec.yaml |
Adds approval provenance. |
review/ratification-2026-10-06.md |
Captures the ruling and authorization boundaries. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Lane: openxfactory-4 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…input-budget archive Lane: openxfactory-4 main moved through the archive of add-worker-input-budget (#1258), which touches README.md and the doc-health spec but not this change's directory. Section 4 names the new base and the commits since fc4fa0f; section 6 carries the re-measured numbers (113 -> 112 passed in the pinned gate, 20 -> 19 info in doc-health, 308 -> 307 subtests in the corpus directories). The doc-health report is again byte-identical to main alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Lane: openxfactory-4 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Lane: openxfactory-4 main moved through #1266 (correct-naming-families-count) and #1264 (amend-worker-input-budget-dispatch-wording), which touch README.md, the sweep ledger and two other changes, and not this change's directory. Section 4 names the new base and the commits since fc4fa0f; section 6 carries the re-measured numbers (pinned gate 114 passed of 115 items, ledger 234 rows, doc-health 20 info, corpus directories 311 subtests). The doc-health report is again byte-identical to main alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Lane: openxfactory-4 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…r-input-budget-dispatch-wording archive Lane: openxfactory-4 main moved through the archive of amend-worker-input-budget-dispatch-wording (#1269), which touches README.md, the doc-health spec and the sweep ledger and not this change's directory. Section 4 names the new base and the commits since fc4fa0f; section 6 carries the re-measured numbers (pinned gate 113 passed of 114 items, doc-health 19 info, corpus directories 310 subtests). The doc-health report is again byte-identical to main alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Lane: openxfactory-4 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ommits before it Lane: openxfactory-4 main moved through #1263, #1270, #1271 and #1267 (renew-resolved-council- protocol), which touch README.md, docs/, openspec/ and the sweep ledger and not this change's directory. Section 4 names the new base and the commits since fc4fa0f; section 6 carries the re-measured numbers (pinned gate 114 passed of 115 items, ledger 235 rows, corpus directories 312 subtests). The doc-health report is again byte-identical to main alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@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 57 minutes by commenting |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Lane: openxfactory-4 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…#1277 Lane: openxfactory-4 main moved through #1272, #1275 (the archive of correct-naming-families-count) and #1277 (a bot review-lane repin), which touch README.md, openspec/, the sweep ledger and the review-lane contracts and workflows, and not this change's directory. Section 4 names the new base and the commits since fc4fa0f; section 6 carries the re-measured numbers (pinned gate 113 passed of 114 items, ledger 235 rows). The doc-health report is again byte-identical to main alone. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
@codex review |
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
…0d6e5c, not 312 Lane: openxfactory-4 The last re-measure on main 40d6e5c ran the six corpus-reading test directories to completion: 866 passed, 311 subtests passed (the 312 was the figure at the previous base, before the archive of correct-naming-families-count moved a change out of the active set). Section 6 now carries the measured figure. No other line of the record moves. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Codex Review: Didn't find any major issues. Already looking forward to the next diff. Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
|
Lane: openxfactory-4 (openXfactory-4-openDox_extraction) READY at f9f7106 — holder, on Brett's word "land #1261 when green" (2026-10-09 ~01:03Z).
|
|
Lane: openxfactory-4 (openXfactory-4-openDox_extraction) LANDING — lane openxfactory-4, session faabad8b-8c31-4958-abd5-b35bdc9cd282@Eagle, 2026-10-09T01:13:29Z, PR #1261 into opensoft/openxFactory main |
…two early-wave words, and the holder's wave-1 and wave-2 rulings (plan 038) (#1279) Lane: openxfactory-4 (openXfactory-4-openDox_extraction) ## T002d: plan 038's fourth bookkeeping batch (plan 038) Bookkeeping: no `Arc:` line, and no `openspec/changes/` path. It encodes rulings already posted on #656 and a landing already merged, each cited by comment id or merge commit, with no new decision. It follows #1263 in form and redoes nothing #1263 did. Claim: #656 `6069520093`. `origin/main` is merged into the branch twice, `40d6e5c1` and then `564f565a`, never rebased. **Realizes / Falsifier:** none (bookkeeping). The gates are listed under "Gates" below. ### What changed (specs/038-opendox-document-tool-self-maintenance/) **A. Ticks.** Each merge commit was read through GraphQL (`pullRequest{mergeCommit{oid}}`) before it was written. The sweep covered every PR merged since #1263's landing (2026-10-08T18:12Z) in openDox-code, openXdox-code, openDox, openXdox, openDox-spec and openxFactory, plus xFactory and codexFactory, and was re-run at 2026-10-08T23:19Z: - **openDox-code:** T012 and T013, #90 → `6827cafc` (2026-10-08T21:08:43Z), in one PR as T012's "Lands with" requires. T012's Landed line records the accepted limits that #90's body states: - the holder's `6067853207`: Copilot 4223441552 with Codex P2 4223462534, Copilot 4223441643, and Codex P1 4223462529. Item 3 widens the fast-forward limit to both paths. - `6069024568` item 1: lane 3's R2-DELTA MINOR at `landing.py:836`. - beside those, `6026622117` item 1 and `6035797819`. - **Nothing else** merged in those repositories realizes a plan-038 task. The openxFactory merges since (#1267, #1270, #1271, #1272, #1275 and #1277) belong to other changes. - **The previous batch,** #1263 → `3a2ab303`, is this batch's "merged since" anchor in the revision paragraph, as #1263 treated #1257. It is not added to T002's Landed line. - **The task count** reads T012 and T013 done. **B. Brett's words on phase 5's early waves,** recorded under tasks.md "What can start": - wave 1 (T041, T042 and T043) is written now and lands after T027 (`6035546708`, *"Write now, land after T027 (Recommended)"*); - wave 2 (T044 and T046) is written early, stacked (`6067802993`, *"Write now, stacked (Recommended)"*), and lands in plan order. Every After line keeps its landing meaning. **C. The holder's wave-1 rulings (`6069024023`).** - **Item 1.** `contracts/health-finding.md` § The id rule names the engine categories, T041's nine plus `dispositions-refused` and `manifest-refused`. It states that a category is also the finding's `kind`, and gains the four mappings: - stdout over the cap is `pack-bound-hit`; - non-JSON or contract-breaking output is `pack-output-refused`; - one finding per (category, entry) per run, with the reasons in `evidence`; - each category's `pack_id`, as `6072086385` item 1 rules it (see "The review questions, ruled" below). It replaces the phrase "one `pack_id` per category", which named no value. T045's text records its refusal extension, extending `6065680005` item 3: it refuses a pack family that declares an engine kind, and a pack finding with an empty path. T041's note records the two added categories and points to the contract's list. - **Item 2, option (D).** `contracts/health-finding.md` (the re-raise bullet) and `data-model.md` § Baseline classes carry the re-raise's two forms, with no schema change: - `{disappeared_id}`, with the original's path; - the pathless form: `path ""`, `{category: <the original's kind>, entry: <its entry, or "">}`, and `disappeared_id` and the baseline run in `evidence`. T046's falsifier gains the pathless-original node (run 2 re-raises once, run 3 raises nothing). T041's note says that `disappearance_identity()` returns either form. - **Item 3.** `data-model.md` § Health run gains the `run_seq` row, and a note that `baseline_class` is NOT NULL, with no fourth value. The note is also on § Finding's own row. T046's text gains the per-corpus advisory transaction lock, and its falsifier gains the node that two overlapping runs serialize. T042's column list and Ruled line name `run_seq` (item 3 accepts it as T042's). **D. The holder's admissions (`6069024568`).** - **Item 2.** T015's Files gain `src/opendox/web/views/account-menu.js` (one word, `"submit"` in `WRITE_ACTIONS`) and `pyproject.toml` (one line, `:312`'s 42 → 43), each with the chain T015 → T016 → any later verb. T016's Files record that it follows T015 in both. plan.md gains a row for `account-menu.js`, and its `pyproject.toml` row gains that line's chain. - **Item 3.** T042's Files gain `tests_runtime/test_api_endpoints.py`, for one edit. **E. The holder's wave-2 rulings (`6069507373`).** - **T044 item 3.** `tasks.md:1163` now reads "the top-level directories named by the six role keys or their declared words", as FR-010 words it at `spec.md:819-821`. - **T046 item 8.** T046's After line gains T016: the `cli.py` and `default_profile.py` chains at `plan.md:456-457`, cited by row name because this PR moves plan.md's lines. Its text says that its `default_profile.py` and `cli.py` contributions, and the admitted `tests/test_default_profile.py` line, join its PR only after T016 lands, by a merge of `main`. That line joins T046's Files. - **T046 item 2.** T041's note gains the module-level, patchable `finding_id()`, the single hash path `make_finding` calls. Its interface is unchanged (lane 3, `6069516931`). - **T046 item 4.** T056's Files gain ONE `engine.py` line binding T046's pack hook. It is written after T046 lands, with nothing else in `engine.py` (lane 3's ACK, `6069516931`). T046's Files mark `engine.py` as "first: T046 → T056", and plan.md gains its row. - **`contracts/health-finding.md:43`.** `baseline_class` is NOT NULL in the store (`0003_`). The row also says that the finding schema's `finding-keys` rule lists it as optional, since no schema change is ruled. - **N-14 and OQ-H-15, one owner each.** - N-14 is T046's: suppression on an injected source of accepted ids, with T054 supplying the parser (T046 item 3). - OQ-H-15 is T044's: in the families, through `excluded=`, with no `doxbench_intake.py` edit (T044 item 8). - T054's text and its Decisions line drop both. - **`plan.md:437-438`.** "rebases" becomes "merges `main`". tasks.md's header and plan.md each carry a revision paragraph. ### The review questions, ruled (`6072086385`), encoded in `8b76a05d` - **Item 1 (Q1, Codex 4225201227): each engine category's `pack_id`, option (b),** as T041's `ENTRY_CATEGORIES` implements it and as dox-v1.2's schema text for `pack_id` reads. - The entry's id, for a finding against a VALID manifest entry's pack: `fetch-failed`, `digest-mismatch`, `declaration-refused`, `pack-crashed`, `pack-timed-out`, `pack-bound-hit` and `pack-output-refused`. - `opendox` for every other category: `no-sandbox`, `manifest-refused`, `dispositions-refused` and `entry-refused`. A refused entry rides only in `identity.entry`. - The rule is stated in `contracts/health-finding.md` § The id rule (replacing "one `pack_id` per category") and in its Rules section's install-level bullet. T041's note and Ruled line cite it. - **Item 2 (Q2, Copilot 4225214488), option (b): no plan change.** #99 already pins NOT NULL, the run order and the uniqueness. T042 adds a catalog assertion (GENERATED ALWAYS, CACHE 1) in its own tests. - **Item 3 (Q3, Copilot 4225214548), option (a).** T045's Falsifier gains one node for each refusal that `6069024023` item 1 extends from `6065680005` item 3: a family that declares an engine kind is refused, and a pack finding with an empty path is refused. T045's Ruled line cites item 3. - **Item 4 (the NUL seam)** is not in this batch, as the holder directs. It is left to the next batch. ### Ruled and Decisions - **Ruled (all on #656):** `6035546708`, `6067802993`, `6067853207`, `6069024023`, `6069024568`, `6069507373`, `6069516931` and `6072086385` (items 1 to 3). - **Cited beside them:** `5988818366`, `6064244857`, `6065680005`, `6026622117` and `6035797819`. - **Decisions:** none new. ### Readings, disclosed - **6035546708's placement.** It was recorded nowhere in the tree. Its own record line asks for "beside the release map (T005 item 12)", which is #1144's `openspec/changes/` path, outside this batch. It is recorded with `6067802993` under "What can start", where tasks.md words N-6 (a) as "start". The holder accepted this placement when the writer resumed. - **`plan.md:437-438`.** A literal swap would read "merges `main` onto the previous slice's landing", so "onto" also became "after". - **The single-writer rows.** `6069024568` item 2 and `6069507373` T046 item 4 set chains, and plan.md's table records them as #1263 did for its chains: - rows for `account-menu.js` and `health/engine.py`; - `pyproject.toml`'s `:312` chain, beside its T048 → T055 → T061 chain. - **The engine categories in the contract.** The ruling adds two categories to T041's nine, so the contract names all eleven. Item 1 accepts the nine as written, and its mappings name `pack-bound-hit` and `pack-output-refused`. - **The `baseline_class` NOT NULL note** is in `data-model.md` § Health run, as the ruling words it, and on § Finding's own row. - **Line drift.** Every cited line matched by content at the base `c8dde131`: - `tasks.md:1163` and `:1238-1240`; - `plan.md:437-438` and `:456-457`; - `data-model.md:260-262`; - `contracts/health-finding.md:43`, `:59-62` and `:64-69`. One exception: `6069024023` item 1 says T041's nine copy `data-model.md:330-334`. In this file, those lines are § Pack declaration, which lists no categories, so nothing is encoded from that cite. ### NOT encoded (the writers' own) - **`6069507373` T046 item 2's edge,** where two pathless originals of one (category, entry) yield ONE re-raise, and T044's other items: these are implementation rulings for those writers, not bookkeeping. - **plan.md:664's R2Q11 summary row,** which the ruling does not name. - **#90's readings 1 to 5 and 7** (inferred, not ruled). - **`6072086385` item 4,** the NUL seam: left to the next batch. - **T071's tick** (#1261 → `a020b34a`, landed at 01:13:36Z, after this PR's last push): left to the next batch, as the holder directs. ### Gates - **Validator.** `python3 scripts/validate-openspec-cli-pin.py --all` and `--all --strict` at `8b76a05d` both exit 0, with `Totals: 113 passed, 1 failed (114 items)`. The one failure is the accepted exception, `add-chain-attestation`'s disposition in the pin, as on main. - **CI at the head `8b76a05d`:** 14 of 14 checks are SUCCESS (rollup SUCCESS, read through GraphQL), including `pytest-suite`, `doc-health-py314`, `openspec-cli-pin`, `lane-line` and SonarCloud. - `pytest-suite` reports `selected=9838 passed=9832 skipped=6 failures=0 errors=0` (9208 tests passed, 6 skipped). - Its freshness verifier and its vector replay both passed. - **Local pytest at `8b76a05d`** (`-m "not postgres" -n 8`, with the three gitlinks initialized as CI does): `2 failed, 9205 passed, 7 skipped`. - Both failures are 30 s subprocess timeouts of `validate-hermes-runtime-contracts.py` in `tests/hermes_runtime_contracts/test_validator_cli.py`, on a shared host at a load average of about 85 on 32 cores. - Serially, the release-mode node also fails on main, as #1263 recorded. - The candidate-mode node passed serially at `897dce40` and on main `b4b9d903`, and timed out under that load at `8b76a05d`. - CI runs both green. - **doc-health** (`scripts/doc-health.py --single-repo .`), at `897dce40` against main `b4b9d903` in the same clone: identical reports, 31 critical, 26 error, 69 warning and 19 info, with 0 differences after SHA normalization. `doc-health-py314` is green at the head. - **Copilot.** - At `897dce40`: "Changes recommended", with two threads (4225214488 and 4225214548), ruled by the holder in `6072086385` items 2 and 3. - At `8b76a05d`: "Approval recommended", with 0 open findings. - **Codex.** - At `897dce40` it reviewed the head ("Reviewed commit: `897dce405c`") and opened one P2 thread (4225201227). The holder ruled it in `6072086385` item 1, and `8b76a05d` encodes the ruling. - At `8b76a05d`, the trigger posted at 01:02:53Z was answered at 01:02:56Z with "You have reached your Codex usage limits". There is no Codex review at the head yet. - **Threads:** all 3 are answered, citing `6072086385`, and resolved. ### NOT done - spec.md, every `openspec/changes/` path and #1144 are untouched. - No box is ticked in #1144, and no task is added. refs #656 🤖 Generated with [Claude Code](https://claude.com/claude-code) Lane: openxfactory-4 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>



Lane: openxfactory-4 (openXfactory-4-openDox_extraction)
Refs #656 (stays OPEN).
THE RATIFICATION RECORD for
realize-doc-health-direction-arc(plan 038's T071), the doc_health direction arc's own change. It landed as a draft through #1247 →51456835and #1253 →fc4fa0ff. No requirement, decision or task text moves: the change has no spec delta (skip_specs: true). It lands through the holder's lander in a Rule 6 window; this actor merges nothing.The word
RULED by Brett Heap, 2026-10-06 at about 18:59Z, by interactive multi-choice, verbatim "Ratify it (Recommended)", recorded at #656 comment
6023375303(created 2026-10-06T19:00:45Z).The option text he saw read "I post your word on #656 and land the ratification record (Status: ratified, Ratified by) under a Rule 6 window. T072 can start right away; T074 and T075 then follow in order."
The form followed
cd494e4c/ #1151, "Ratify add-neutral-product-standalone-operability on Brett Heap's word (#656 5815412869)", file for file and field for field. The holder's ruling at #6566023619783confirms the one choice that differs from the change's as-filed text (below).What is ratified, and what the word authorizes
mainatfc4fa0ff(T070b: fold Copilot's four items into realize-doc-health-direction-arc before the ratify word (plan 038) #1253, merged 2026-10-06T18:56:42Z). Its change-directory tree,02d362f6ebcaf49e18aa107f7ce2b3a409ca2275, is identical at T070b: fold Copilot's four items into realize-doc-health-direction-arc before the ratify word (plan 038) #1253's final heade4f3f1dband on currentmain, and the last commit onmainthat touches it isfc4fa0ff. Copilot's review ate4f3f1dbread "Approval recommended", Findings: None.tasks.md1.2 provides that the word rulesdesign.md§ 11's D1–D7 as recommended unless it says otherwise, and the word does not. The record says that this applies 1.2's own rule and does not claim Brett Heap was shown the seven one by one.What this PR changes
Six files. None of the changes is requirement or scenario text.
openspec/changes/realize-doc-health-direction-arc/proposal.mdStatus: ratified, with aRatified:citation.## Ratification recordsection.design.mdandtasks.mdStatus: ratified, with aRatified by:citation. This is the citation split File add-neutral-product-standalone-operability: open the BUILD arc, recording ten rulings #1144's record carried.design.md§ 11: the same read-at-ratification note.tasks.md1.1 (the filing, citing T070: file realize-doc-health-direction-arc, the doc_health direction arc's own change (plan 038) #1247 →51456835and T070b: fold Copilot's four items into realize-doc-health-direction-arc before the ratify word (plan 038) #1253 →fc4fa0ff) and 1.2 (this act) are ticked. Boxes go from 0[x]/ 23[ ]to 2[x]/ 21[ ]..openspec.yamlapproved_by/approved_onare ADDED afterproposed_on.kind,id,path,reason,proposed_byandproposed_ondo not move.New record:
review/ratification-2026-10-06.md(Status: ratified,Kind: report, oneRatified:citation).README.md: the Active changes entry's status, now linking the record.The sequenced-after ledger row does not move.
The one divergence from the text as filed.
tasks.md1.2 says the record carriesStatus: record. It carriesStatus: ratifiedwith aRatified:citation, as #1144's record did.document-lifecyclesanctions both spellings, the option put to Brett read "(Status: ratified, Ratified by)", and aStatus: recordfile tripsrecord-immutability(CRITICAL) on any later edit, such as a Copilot fix commit on this PR. Confirmed by the holder at #6566023619783.Gate state at
f9f71063The tree is
mainat40d6e5c1plus this PR's twelve commits (the change itself, five merges ofmainand six re-measurements of the record), with the submodules initialised. After the first head,mainmoved five times: the archive ofadd-worker-input-budget(#1258), then #1266 and #1264, then the archive ofamend-worker-input-budget-dispatch-wording(#1269), then #1263, #1270, #1271 and #1267 (renew-resolved-council-protocol), then #1272, #1275 (the archive ofcorrect-naming-families-count) and #1277 (a bot review-lane repin). They touchREADME.md,docs/, the sweep ledger, other changes, the review-lane contracts and workflows and the doc-health and project-repo-schema specs, and not the change directory (its tree is still02d362f6ebcaf49e18aa107f7ce2b3a409ca2275onmain, last commitfc4fa0ff). Somainwas merged in, never rebased, and everything below was re-measured.mainhas since moved again, tob4b9d903(a new change,refresh-install-repository-enumerations-opsxfactory-gateway: its own directory, a README entry and a ledger row). It is not merged here, per the holder's one-merge instruction, and a trial merge with it is clean.An earlier
tests/doc-healthrun showed 8 failures intest_neutrality_dispatch.py. They were this actor's own environment, not the tree: an exportedREPOvariable collided with the fake scout worker'sREPO. With it unset the file gives 25 passed, and the whole directory is green above.Copilot
0039a47e: review5436306140, "Approval recommended", Findings: None, 0 threads.739da6e0(after the first merge ofmain): review5440756736, "Approval recommended", Findings: None, 0 threads.69479c77(after the second merge ofmain): review5459920482, "Approval recommended", 0 threads.83e3511e(after the third merge ofmain): review5460937374, "Approval recommended", 0 open findings, 0 threads.b186eb62(after the fourth merge ofmain): review5462168108, "Needs a closer look", 0 open findings, 0 threads. Its stated reason is that final approval depends on human validation of the governance authority and the historical provenance assertions. The holder ruled at openDox + openXdox: two open-source layers, an installable app with users, projects and a database; domain descendants pin openXdox (Brett's ruling 2026-09-04) #6566069024568, item 5, that this is NOT a block, because that authority is Brett Heap's ratify word6023375303.b186eb62: the rollup was SUCCESS with 15 status checks, all SUCCESS, includingmerge-master-approval,pytest-suiteand SonarCloud Code Analysis. 0 threads unresolved.f89fc853(after the fifth merge ofmain): review5464071466, "Needs a closer look", 0 open findings, 0 threads. Its stated reason is that the exact-head checks and the Codex review were then pending, and that final approval also depends on governance provenance, which the holder's ruling at openDox + openXdox: two open-source layers, an installable app with users, projects and a database; domain descendants pin openXdox (Brett's ruling 2026-09-04) #6566069024568, item 5, covers.f9f71063(a record-only correction of the corpus subtest figure, 312 to 311, which the completed run measured): Copilot requested through the reviewer API after the push. Its result, the checks and the thread count are recorded here once the exact final head has been reviewed.Codex
b186eb62,@codex reviewwas posted twice (comments6067925769and6069046343), and thechatgpt-codex-connector[bot]answered both with the usage-limit message (comments6067927988and6069048581). No Codex review existed at that head.f89fc853,@codex review(comment6071059884) was answered with a review: Reviewed commitf89fc853cb, "Didn't find any major issues" (comment6071083487; summary comment6071062721, Code Review completed at 2026-10-08T23:29:24Z).f9f71063,@codex reviewwas posted once after the push (comment6071252263). The bot's reply is recorded here once it arrives. READY needs a Codex "Reviewed commit" at the exact head, or Brett Heap's explicit waiver (openDox + openXdox: two open-source layers, an installable app with users, projects and a database; domain descendants pin openXdox (Brett's ruling 2026-09-04) #6566069024568, item 4).What is NOT done
specs/038-…/tasks.mdis not edited here. T071's tick there goes in the holder's own bookkeeping batch.Rule 6: this PR touches
openspec/changes/and the README OpenSpec Records block, so it lands in a declared window by the holder, and not by this actor.🤖 Generated with Claude Code