Skip to content

Archive amend-worker-input-budget-dispatch-wording: promote the reworded rationale sentence onto doc-health - #1269

Merged
brettheap merged 4 commits into
mainfrom
archive/amend-worker-input-budget-dispatch-wording
Oct 8, 2026
Merged

brettheap merged 4 commits into
mainfrom
archive/amend-worker-input-budget-dispatch-wording

Conversation

@brettheap

@brettheap brettheap commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Lane: openxfactory-1

What this is

This archives amend-worker-input-budget-dispatch-wording, the #1262 amendment. Brett Heap gave the archive word in session to lane openxfactory-1, verbatim "archive it after it lands" (2026-10-07). It is RULED in opensoft/brett-wip lanes/log/openxfactory-1.md at 2026-10-07T11:04:36Z, commit cd962505. Refs #1262.

This pull request lands as a MERGE COMMIT, never a squash, inside a Rule 6 landing window, because it touches openspec/changes/. The archive directory is named for the UTC day of the archive act, 2026-10-08. archive-date-vs-commit compares that name with the UTC committer date of the commit that first added the directory. A merge commit keeps that commit; a squash would replace it with one dated at landing.

code_surface: none, so under release-realization the packet archives on landing plus its own task list. No realization evidence is owed: #1137 → 9da52e31 already never dispatches a unit it measured over the budget (the packet's tasks.md 1.1).

The archive act

It went through the governed wrapper, never a bare openspec archive:

TZ=UTC python3 scripts/proposal-support.py . archive amend-worker-input-budget-dispatch-wording --yes

The wrapper exited 0. It reported:

  • "ORIGIN RETAINED amend-worker-input-budget-dispatch-wording (declaration unchanged since the ratifying commit a936e53)";
  • "Applying changes to openspec/specs/doc-health/spec.md: ~ 1 modified";
  • "Totals: + 0, ~ 1, - 0, → 0";
  • "archived as '2026-10-08-amend-worker-input-budget-dispatch-wording'".

The promotion

The block was taken from the archived delta and from canon by its heading, and hashed.

block canon before canon after = archived delta
MODIFIED Bounded worker input budget 3,595 B, sha256 3533488d999d93d5… 3,771 B, sha256 83326fa0f49f6e7c…

The commits

  1. The ticks. tasks.md 3.5 and 4.1, on the recording for the archive act, so the wrapper finds no open box (precedent e37ab6bd).
  2. The archive act.
    • The five packet files move as R100 renames, and canon doc-health takes the delta.
    • The README OpenSpec Records bullet moves from Active to the head of Archived.
    • The modified-block-currency self-gate's one _LEDGER_SUBJECTS row for this block retires on its own stated condition, leaving 13 literal entries, 12 unique.
  3. The ledger row and the PR number. validate-sequenced-after.py . --seed-ledger --moved-by '#1269' flips this change's row to archived, dated 2026-10-08. The README bullet's PR marker now names Archive amend-worker-input-budget-dispatch-wording: promote the reworded rationale sentence onto doc-health #1269.
  4. A record fix after review. Copilot's review 5459760638 at dcce80b8 raised no inline finding, but its overview noted the archived tasks.md still said 3.5 and 4.1 keep an open box. 918c6fbd puts that note in the past tense. Non-normative; the archive commit 39fac485 (committed 2026-10-08T16:18:45Z) stays the archive directory's adding commit, and archive-date-vs-commit passes.

Review

  • 5459760638 at dcce80b8: no inline finding; the overview note above, taken in 918c6fbd.
  • 5459832399 at 918c6fbd, this head: approval recommended, 0 findings.
  • Review threads: 0, so 0 unresolved.

Gates at this head

Each gate was run locally in a fresh full clone named openxFactory at this head, 918c6fbd, and main a936e531 was measured the same way in a second clone of the same kind.

gate main exit this head exit this head, summary
cli-pin-all-strict 0 0 Totals: 113 passed, 1 failed (114 items) / OK openspec-cli-pin: @fission-ai/openspec@1.12.0 verified against its content address; every target validated --strict with 0 UNDISPOSITIONED failures. THIS IS NOT A CLEAN TREE: 1 finding(s) are ACCEPTED EXCEPTIONS, named above.
proposal-support-verify 0 0 proposal support verification ok
code-surface 0 0 code_surface validation passed (every active declaration's head is admitted, and every identifier it names is carried by the estate inventory).
target-release 0 0 target_release validation passed (every active declaration is admitted).
scope-globs 0 0 scope_globs validation passed (all active changes conform).
sequenced-after 0 0 sequenced_after validation passed (47 active changes, 19 declaring the field). / archive-date agreement passed (no archived row's moved_on predates its directory). / archive-date-vs-commit agreement passed (every archived directory is named for the UTC date of the commit that added it, or is disposi
sequenced-after-ledger-diff 0 0 per-change sweep ledger consistent with the corpus (234 rows).
former-id-arrival 0 0 former-id arrival gate passed (every packet-directory move in range is a draft's, an archive relocation, or declared).
release-tag-gate 0 0 the release-tag obligation is unaffected by this pull request and is not evaluated against it
doc-health 0 0 Findings: 31 critical, 22 error, 69 warning, 19 info. New regressions vs previous report: 0.
  • doc-health: 1 finding line(s) leave and 0 arrive against main.

    • leaves: [info] openxFactory:openspec/changes/amend-worker-input-budget-dispatch-wording/specs/doc-health/spec.md
  • pytest, the gate-module subset (tests/doc-health, sequenced_after, review_lane_pin, proposal-support, code_surface, target_release, packet_reference, citation_remainder, scope_globs, former_id_arrival, openspec_cli_pin): at this head 8 failed and 3580 passed, the SAME 8 ids as main (3580 passed there too).

  • pytest, the whole suite (--continue-on-collection-errors), at dcce80b8, which differs from this head only by the past-tense note: 238 failing or erroring ids, the SAME 238 as main. Both local clones lack the openDox and openXdox legs, which CI sets up; CI's pytest-suite passes at this head.

What this archive does not decide

🤖 Generated with Claude Code

brettheap and others added 2 commits October 8, 2026 16:18
The archive wrapper refuses while any "- [ ]" remains
(scripts/proposal-support.py:4632-4633), and the packet kept 3.5 and 4.1
open deliberately, for the acts that tick them. This follows e37ab6b,
which ticked its own section 4 right before archive 0b1e826.

- 3.5: #1264 landed by squash as a936e53 from head
  a2761b1. At that head: 15 check names, every one concluded success, neutral or skipped; Copilot's review
  5441620162; 4 review thread(s),
  0 unresolved.
- 4.1: performed in this archive pull request on Brett Heap's word
  "archive it after it lands" (RULED 2026-10-07T11:04:36Z, opensoft/brett-wip
  commit cd962505), through the governed wrapper, on a branch cut fresh
  from main a936e53 after the squash.

No requirement or scenario text moves.

Refs #1262

Lane: openxfactory-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ded rationale sentence onto doc-health

On Brett Heap's archive word, verbatim "archive it after it lands"
(2026-10-07, in session to lane openxfactory-1; RULED in
opensoft/brett-wip lanes/log/openxfactory-1.md at 2026-10-07T11:04:36Z,
commit cd962505), given for after the ratification pull request
#1264 landed. It landed by squash as a936e53, the ratifying
commit the origin-retention gate compares against. This branch is cut
fresh from main at a936e53 and carries none of #1264's
pre-squash commits.

code_surface is none, so under release-realization the packet archives
on landing plus its own task list. No realization evidence is owed: the
realization (#1137 -> 9da52e3) already never dispatches a unit it
measured over the budget (tasks.md 1.1).

Performed through the governed wrapper, never a bare openspec archive:

    TZ=UTC python3 scripts/proposal-support.py . archive \
        amend-worker-input-budget-dispatch-wording --yes

exit 0: "ORIGIN RETAINED amend-worker-input-budget-dispatch-wording
(declaration unchanged since the ratifying commit a936e53)",
"Applying changes to openspec/specs/doc-health/spec.md: ~ 1 modified", "Totals: + 0, ~ 1, - 0, → 0", "Change
'amend-worker-input-budget-dispatch-wording' archived as
'2026-10-08-amend-worker-input-budget-dispatch-wording'", over the
content-addressed @fission-ai/openspec@1.12.0 pin. --date was not passed,
so the directory takes today in UTC. The run started at 2026-10-08T16:18:37Z,
and this commit, the directory's adding commit, carries the same UTC day.

THE PROMOTION IS THE DELTA AS WRITTEN, measured on both sides: the block
is extracted by its heading from the archived delta and from canon, and
hashed. doc-health is the only capability the delta touches.
- MODIFIED "Bounded worker input budget": 3,595 bytes
  before, 3,771 bytes now; sha256 83326fa0f49f6e7c... on the
  archived delta and canon alike. Only the second paragraph moves
  (2 lines out, 5 in). The title, the first
  and third paragraphs and all 6 scenarios are byte-identical.
- The preamble and the other 43 requirement blocks are
  byte-identical. Requirements stay 44, scenarios stay
  267, and canon --numstat reads +5 -2.
- #1262 acceptance 3: canon carries #1262's sentence once, and neither the
  old sentence nor "conformant but useless" anywhere.

The five packet files move as R100 pure renames. Also in this commit:
- the README OpenSpec Records bullet moves from Active to the head of
  Archived; its pull-request link is the ARCHIVE-PR-NUMBER-PENDING marker,
  which a later commit replaces once the pull request exists;
- the modified-block-currency self-gate's one _LEDGER_SUBJECTS row for this
  block retires on its own stated condition, leaving 13 literal
  entries and 12 unique.

The archived delta of add-worker-input-budget is not edited. Closing
#1262 needs its own word.

Refs #1262

Lane: openxfactory-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sourcery-ai

sourcery-ai Bot commented Oct 8, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR archives the already-ratified amendment via the governed wrapper, relocates and documents its packet, promotes its reworded rationale into the canonical doc-health requirement, and retires the corresponding modified-block-currency finding while preserving the required audit measurements and landing provenance.

Flow diagram for archiving and promoting the amendment

flowchart LR
    A[Ratified amendment #1262] --> B[PR #1264 lands by squash]
    B --> C[Governed archive wrapper]
    C --> D[Archive packet under 2026-10-08]
    C --> E[Promote rationale to doc-health canon]
    E --> F[Retire modified-block-currency finding]
    D --> G[README and task-list provenance updated]
Loading

File-Level Changes

Change Details Files
Archives the ratified amendment packet through the governed proposal-support workflow and records the archive act.
  • Marks the archive and prerequisite checks complete, including the required merge-commit landing constraint.
  • Moves the five packet files into the dated archive directory and updates the README active/archived records.
  • Adds archive provenance, ratification references, wrapper output, and merge/squash history to the archived task and README documentation.
README.md
openspec/changes/amend-worker-input-budget-dispatch-wording/tasks.md
openspec/changes/archive/2026-10-08-amend-worker-input-budget-dispatch-wording/proposal.md
openspec/changes/archive/2026-10-08-amend-worker-input-budget-dispatch-wording/design.md
openspec/changes/archive/2026-10-08-amend-worker-input-budget-dispatch-wording/specs/doc-health/spec.md
openspec/changes/archive/2026-10-08-amend-worker-input-budget-dispatch-wording/tasks.md
Promotes the amended worker-budget rationale into canonical doc-health specification text.
  • Replaces the misleading conformant-but-useless wording with an explicit worker-refusal backstop explanation.
  • Preserves the SHALL NOT requirement and clarifies that over-budget dispatch remains nonconformant.
  • Leaves the title, surrounding paragraphs, scenarios, preamble, and other requirement blocks unchanged.
openspec/specs/doc-health/spec.md
Retires and remeasures the modified-block-currency ledger entry after canonical promotion.
  • Removes the active ledger subject for the archived amendment while documenting its stated retirement condition and measurements.
  • Updates the self-gate's expected counts and archive discharge rationale.
tests/doc-health/test_modified_block_currency_self_gate.py

Possibly linked issues


Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

…l request in the README

--moved-by needs a real pull-request number, and this branch had none
until #1269 was opened, so the row is seeded here rather than in the
archive act, in the order be6d4a6 used for the previous archive.

Seeded by the machine, not by hand:

  python3 scripts/validate-sequenced-after.py . --seed-ledger --moved-by '#1269'
  -> wrote tests/sequenced_after/corpus-ledger.yaml (234 rows, 1 moved by #1269).
  python3 scripts/validate-sequenced-after.py . --ledger-diff
  -> per-change sweep ledger consistent with the corpus (234 rows).

The diff is one line: amend-worker-input-budget-dispatch-wording's row
goes from state active to archived, moved_by "#1264" ->
"#1269", and moved_on 2026-10-07 -> 2026-10-08. No other
row moved.

README: the archived bullet's ARCHIVE-PR-NUMBER-PENDING marker (two
occurrences, one line) now names PR #1269.

Refs #1262

Lane: openxfactory-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🔵 Needs a closer look

The archived task record still claims completed tasks retain unchecked boxes, contradicting the newly checked entries.

0 open findings

What changed in this PR

Archives the ratified worker-input-budget wording amendment and promotes its corrected rationale into the canonical doc-health specification.

Changes:

  • Promotes the clarified over-budget dispatch wording.
  • Archives the OpenSpec packet and updates its records.
  • Retires associated ledger and self-gate entries.
File Description
README.md Moves the packet from active to archived records.
openspec/​specs/​doc-health/​spec.md Promotes the corrected rationale.
openspec/​changes/​archive/​.../​.openspec.yaml Preserves origin and approval metadata.
openspec/​changes/​archive/​.../​proposal.md Archives the ratified proposal.
openspec/​changes/​archive/​.../​tasks.md Records completed archive tasks.
openspec/​changes/​archive/​.../​specs/​doc-health/​spec.md Preserves the promoted delta.
openspec/​changes/​archive/​.../​review/​ratification-2026-10-07.md Preserves the ratification record.
tests/​doc-health/​test_modified_block_currency_self_gate.py Retires the promoted block’s ledger subject.
tests/​sequenced_after/​corpus-ledger.yaml Marks the change archived with updated provenance.

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

….5 and 4.1 are ticked

Copilot's review 5459760638 at dcce80b noted that the archived task
record still said 3.5 and 4.1 keep a literal open box, beside the two
boxes the tick commit 658026b had just ticked. The note now says they
kept it until their acts and were ticked on 2026-10-08, right before the
archive act. Non-normative: no requirement or scenario text moves, and
the archive commit 39fac48 stays the archive directory's adding commit.

Refs #1262

Lane: openxfactory-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brettheap
brettheap requested a balanced review from Copilot October 8, 2026 16:26
@brettheap

Copy link
Copy Markdown
Contributor Author

Lane: openxfactory-1

Copilot's review 5459760638 at dcce80b8 raised no inline finding, but its overview noted that the archived tasks.md still said 3.5 and 4.1 keep a literal open box, beside the two boxes the tick commit 658026ba had ticked. Taken in 918c6fbd: the note now reads in the past tense ("KEPT A LITERAL - [ ] UNTIL THEIR ACTS", ticked on 2026-10-08 right before the archive act). Non-normative; no requirement or scenario text moves, and the archive commit 39fac485 stays the archive directory's adding commit.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟢 Approval recommended

The archive records, canonical wording, and supporting ledgers are consistent with the ratified amendment.

0 open findings

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

@sonarqubecloud

sonarqubecloud Bot commented Oct 8, 2026

Copy link
Copy Markdown

@brettheap

Copy link
Copy Markdown
Contributor Author

Lane: openxfactory-1

LANDING — lane openxfactory-1, session eb835de4-d46e-4bb7-86f3-82780be6f51e@Eagle, 2026-10-08T17:11:56Z, PR #1269 into opensoft/openxFactory main (Rule 6 window; rule6 scan CLEAR; gate PASS at head 918c6fb on main a936e53). On Brett Heap's word verbatim: "archive it after it lands".

@brettheap
brettheap marked this pull request as ready for review October 8, 2026 17:12
@sourcery-ai

sourcery-ai Bot commented Oct 8, 2026

Copy link
Copy Markdown

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 1 day and 3 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@brettheap
brettheap merged commit c9dfd4f into main Oct 8, 2026
17 checks passed
@brettheap

Copy link
Copy Markdown
Contributor Author

Lane: openxfactory-1

LANDED — lane openxfactory-1, 2026-10-08T17:12:30Z, PR #1269 → c9dfd4f (merge commit into opensoft/openxFactory main). Window closed.

@brettheap
brettheap deleted the archive/amend-worker-input-budget-dispatch-wording branch October 8, 2026 17:37
brettheap added a commit that referenced this pull request Oct 8, 2026
…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>
brettheap added a commit that referenced this pull request Oct 8, 2026
…entity bound by layer, the single-writer rows and the holder's batch-3 flags (plan 038) (#1263)

Lane: openxfactory-4 (openXfactory-4-openDox_extraction)

## T002c: plan 038's third bookkeeping batch (plan 038)

Bookkeeping: no `Arc:` line, and no `openspec/changes/` path. It encodes rulings already posted on #656 and landings already merged, each cited by comment id or merge commit, with no new decision. It follows #1251 and #1257 in form, and redoes nothing either did. #1257 landed as `c70bdbd9`, so this PR is not stacked; `origin/main` (`c9dfd4f8`) is merged into the branch, never rebased.

**Realizes / Falsifier:** none (bookkeeping). The gates are listed under "Gates" below.

### What changed (specs/038-opendox-document-tool-self-maintenance/)

**Ticks, each merge commit read through GraphQL (`pullRequest{mergeCommit{oid}}`) before it was written.** The sweep covered every PR merged since 2026-10-06T23:30Z in openDox-code, openXdox-code, openDox, openXdox, openDox-spec and openxFactory, re-run at 2026-10-08T16:16Z:
- openXdox-code: T095 #46 → `e2340bb6`, T101 #48 → `8b0401a1`, T098 #51 → `fc1115d6`, T103 #49 → `6f259156`, T096 #53 → `34e1c1f2`, T100 #54 → `2a3d8c09`, T099 #47 → `4aa3070a`, T102 #52 → `e7815ac5`, T097 #50 → `4dab93fc`, T022 #41 → `aefd1091`.
- openDox-code: T104 #94 → `d616da3e`, T072 #95 → `99220883` (the arc's first realization).
- Follow-ons recorded on the task they follow: T021's openXdox-code#55 → `da736090`, and T096's openXdox-code#56 → `9720925e`.
- T095's Landed line also records Copilot r4201411760 as the holder's READY note did (`6027382308`, accepted limit under `5988818366`; the fix rides T073).
- Nothing is ticked whose PR has not merged. T029 and T073 (openXdox-code#44, #45) and T012/T013 (openDox-code#90) stay open.

**New task T105** (R2-INV-P5, read-only, lane 3; holder `6027341795`, claimed `6027346843`): ticked on lane 3's DONE line (2026-10-07T00:28:59Z), its summary `6028122920`, the map `lane-coord-034/r2/R2-INV-P5.md`, and the holder's ruling `6028138991`. Verdicts: T041, T042 and T043 READY-WITH-NOTES; T045, T047, T048 and T049 blocked by plan order only. Placed under "Wave 1's readiness" before W1, with a row in the Phase 5 slice table. The task count is 91 and plan.md's two stale "79 tasks" cites now read 91 tasks and T001 to T105 (`6028364555` item 5).

**The four slice notes** (`6028138991`; no requirement or falsifier changes), as implementation notes on T042, T043, T045 and T047, refined by the holder's batch-3 flags (`6028364555`) and the Copilot-thread ruling (`6064169640`):
- T042: the token `RESET_CONFIRMATION` stays byte-identical, its wording may change; Files gain `docs/runtime.md` (R2-INV-P5 § T042: its two table arrays move with `identity.TABLES`, which `test_deploy_shape.py` holds); `RULED_TABLES` is encoded as the map words it.
- T042's SQL column is `full_run` (`6064169640`, fix-now, resolving Copilot 4205521074): the words "quote it or" are gone from T042, and `data-model.md` gains one line saying the SQL column is `full_run` because PostgreSQL 16 reserves `full`.

**Files and falsifiers:**
- T073: Files gain `tests/test_host_plane.py` and the `opendox-snapshot-*` farm exclusion scoped to the `opendox_spec` owner; the falsifier gains the farm case (Copilot r4201411760, accepted at #46's landing, `6027382308`, reply 4201421102). plan.md's conftest and `test_host_plane.py` rows, and the T020, T026 and T095 Files chains, end with T073.
- T015 and T016: Files gain `tests/test_capability_honesty.py` and `tests/test_lens_seed_actions.py` (`6027633398`), with the same-kind enumeration collateral pre-authorized in the minimal way and listed in each PR body, and `tests/test_default_profile.py` (`6023619783` item 1, corrected by `6026622117` item 2), with the chain T015 → T016. plan.md gains two single-writer rows.
- T041, T046, T057: the `identity` bound is split by layer (`6027706377` item 1, refining `6018624750`). T041 narrows to the module's own serialized finding shape; T046 gains it on `health list --json`; T057 gains it on the HTTP Health response; FR-011's coverage row cites all three.
- T022's falsifier gains the root-`.gitignore` source check (`6026275158` item 2); T102's gains the widened no-bypass scan (`6026275158` item 3); `6028364555` item 4.
- T012's Ruled line: `6026275158` item 1 and `6026622117` item 1.
- T072's Files name openDox-code#95, and T071's entry names its ratification record, openxFactory#1261 (a DRAFT PR that exists now). T015's PR does not exist yet, so its number is not named.

**Qualifiers and counts:** "plan 034's" on spec.md (two places) and clarify-questions.md (one place), found by content, nothing else moved (`6027706377` item 2). tasks.md's header and plan.md each carry a revision paragraph.

### Ruled and Decisions
Ruled (all on #656): `6027341795`, `6027346843`, `6027382308`, `6027633398`, `6027706377`, `6026275158`, `6026622117`, `6023619783`, `6028122920`, `6028138991`, `6028364555`, `6064169640`. Decisions: none new.

### Readings, disclosed
- T042's Files wording follows R2-INV-P5 § T042 (the `docs/runtime.md` arrays move with `identity.TABLES`); the holder's `6028364555` item 2 words the cause as the `full` rename, and cites the same map section.
- plan.md's `tests/test_default_profile.py` row says the chain "follows `default_profile.py`'s", as `6023619783` words it; T046 and T057 are not given the file in their own Files lines.
- `6023619783` item 2 (T071's record header) is not in this batch's items and is not encoded here.
- Lane 3's other R2-INV-P5 observations (moved #1144 line references, floor and census counts, T015's census line) stay informational and are not encoded (`6028364555` item 7).

### Gates
- `python3 scripts/validate-openspec-cli-pin.py --all --strict` at the merged head `b236fa6c`: exit 0 (the one accepted exception is `add-chain-attestation`'s disposition, as on main).
- doc-health (`scripts/doc-health.py --single-repo .`) at `b236fa6c` against `origin/main` `c9dfd4f8`, same clone: identical reports, 31 critical, 26 error, 69 warning, 19 info, zero differences after SHA normalization.
- Local `python -m pytest tests/ -q -m "not postgres" -n 8` at `3e6feb6b`: 9206 passed, 7 skipped, 1 failed. The failure is `tests/hermes_runtime_contracts/test_validator_cli.py::test_release_mode_field_is_preserved_on_the_real_repository[--require-realization-realization]`, a 30 s subprocess timeout that fails identically on `origin/main` in the same clone. Later commits change only spec text and chain records.
- CI at the head `b236fa6c`: every check SUCCESS (rollup SUCCESS, read through GraphQL), including `pytest-suite`, `doc-health-py314`, `openspec-cli-pin` and SonarCloud. The head adds only the merge of `origin/main` `c9dfd4f8` (the archive of amend-worker-input-budget-dispatch-wording, #1269) to `c675894d`, whose rollup was SUCCESS too.
- Copilot: at `a9fc7e7b` two threads (4205521074 → fixed in `4263d665` on `6064169640`; 4205521173 → fixed in `c3409c03`). At `3e6feb6b` two threads (4221525148, the PR description, updated; 4221525277, the T020, T026 and T095 chains, fixed in `c675894d`). At `c675894d` and at the head `b236fa6c`: "Approval recommended", 0 open findings. All four threads are answered and resolved.

### NOT done
No requirement text, no contract file and no `openspec/changes/` path is touched. No box is ticked in #1144.

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>
brettheap added a commit that referenced this pull request Oct 9, 2026
…23375303) (#1261)

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 → `51456835` and #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`](#656 (comment)) (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 #656 [`6023619783`](#656 (comment)) confirms the one choice that differs from the change's as-filed text (below).

## What is ratified, and what the word authorizes

- **Ratified:** the change as landed on `main` at `fc4fa0ff` (#1253, merged 2026-10-06T18:56:42Z). Its change-directory tree, `02d362f6ebcaf49e18aa107f7ce2b3a409ca2275`, is identical at #1253's final head `e4f3f1db` and on current `main`, and the last commit on `main` that touches it is `fc4fa0ff`. Copilot's review at `e4f3f1db` read "Approval recommended", Findings: None.
- **D1–D7 stand as recommended.** `tasks.md` 1.2 provides that the word rules `design.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.
- **Authorized:** per the ruling record, the realization in plan 038's order: T072 (opportunistic, ARC-6), then T074 and T075. None of it happens by the word itself.
- **Nothing archives or promotes.** The change stays ACTIVE until its realization is merged and green, and it gates neither release 2's close nor #1144's archive (ARC-Q3 (a)).

## What this PR changes

Six files. None of the changes is requirement or scenario text.

**`openspec/changes/realize-doc-health-direction-arc/proposal.md`**
- `Status: ratified`, with a `Ratified:` citation.
- A qualifier above the filing's "DRAFT. FILING IS NOT RATIFYING" paragraph, which is kept verbatim as the filing's record.
- A `## Ratification record` section.
- A read-at-ratification note after the D1–D7 list.

**`design.md` and `tasks.md`**
- `Status: ratified`, with a `Ratified by:` citation. This is the citation split #1144's record carried.
- `design.md` § 11: the same read-at-ratification note.
- `tasks.md` 1.1 (the filing, citing #1247 → `51456835` and #1253 → `fc4fa0ff`) and 1.2 (this act) are ticked. Boxes go from 0 `[x]` / 23 `[ ]` to **2 `[x]` / 21 `[ ]`**.
- 1.2 keeps its as-filed wording and gains a marked italic note on the one divergence (below), as #1151 did for its own 1.8.

**`.openspec.yaml`**
- `approved_by` / `approved_on` are ADDED after `proposed_on`. `kind`, `id`, `path`, `reason`, `proposed_by` and `proposed_on` do not move.

**New record:** `review/ratification-2026-10-06.md` (`Status: ratified`, `Kind: report`, one `Ratified:` 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.md` 1.2 says the record carries `Status: record`. It carries `Status: ratified` with a `Ratified:` citation, as #1144's record did. `document-lifecycle` sanctions both spellings, the option put to Brett read "(Status: ratified, Ratified by)", and a `Status: record` file trips `record-immutability` (CRITICAL) on any later edit, such as a Copilot fix commit on this PR. Confirmed by the holder at #656 `6023619783`.

## Gate state at `f9f71063`

The tree is `main` at `40d6e5c1` plus this PR's twelve commits (the change itself, five merges of `main` and six re-measurements of the record), with the submodules initialised. After the first head, `main` moved five times: the archive of `add-worker-input-budget` (#1258), then #1266 and #1264, then the archive of `amend-worker-input-budget-dispatch-wording` (#1269), then #1263, #1270, #1271 and #1267 (renew-resolved-council-protocol), then #1272, #1275 (the archive of `correct-naming-families-count`) and #1277 (a bot review-lane repin). They touch `README.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 still `02d362f6ebcaf49e18aa107f7ce2b3a409ca2275` on `main`, last commit `fc4fa0ff`). So `main` was merged in, never rebased, and everything below was re-measured. `main` has since moved again, to `b4b9d903` (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.

```
OPENSPEC_TELEMETRY=0 openspec validate realize-doc-health-direction-arc --strict → valid (the pinned 1.12.0)
validate-openspec-cli-pin.py --all --strict   → exit 0, 0 UNDISPOSITIONED failures
                                                113 passed, 1 failed (114 items); the 1 = the accepted exception, as on main alone
validate-code-surface.py . / validate-target-release.py .  → passed
validate-sequenced-after.py . / --ledger-diff → pass; ledger consistent (235 rows), this row unmoved
proposal-support.py . verify realize-doc-health-direction-arc → ok
doc-health.py --single-repo .                 → 31 critical, 26 error, 69 warning, 19 info
                                                report byte-identical to main alone (same clone kind); 0 findings name this change
doc-health families (1.2's falsifier)         → proposal-origin 0 findings, status-validity 0 findings
                                                (negative control: dropping proposal.md's Ratified: line takes ratified-provenance 27 → 28 critical, naming proposal.md)
pytest -m "not postgres" -k "ledger or records or sequenced or openspec"  → 615 passed, 3 skipped
pytest sequenced_after code_surface target_release proposal-support scope_globs packet_reference → 866 passed, 311 subtests passed
pytest tests/doc-health                       → 2157 passed
```

An earlier `tests/doc-health` run showed 8 failures in `test_neutrality_dispatch.py`. They were this actor's own environment, not the tree: an exported `REPO` variable collided with the fake scout worker's `REPO`. With it unset the file gives 25 passed, and the whole directory is green above.

## Copilot

- **First head `0039a47e`:** review `5436306140`, "Approval recommended", Findings: None, 0 threads.
- **Head `739da6e0`** (after the first merge of `main`): review `5440756736`, "Approval recommended", Findings: None, 0 threads.
- **Head `69479c77`** (after the second merge of `main`): review `5459920482`, "Approval recommended", 0 threads.
- **Head `83e3511e`** (after the third merge of `main`): review `5460937374`, "Approval recommended", 0 open findings, 0 threads.
- **Head `b186eb62`** (after the fourth merge of `main`): review `5462168108`, "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 #656 [`6069024568`](#656 (comment)), item 5, that this is NOT a block, because that authority is Brett Heap's ratify word `6023375303`.
- **Checks at `b186eb62`:** the rollup was SUCCESS with 15 status checks, all SUCCESS, including `merge-master-approval`, `pytest-suite` and SonarCloud Code Analysis. 0 threads unresolved.
- **Head `f89fc853`** (after the fifth merge of `main`): review `5464071466`, "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 #656 `6069024568`, item 5, covers.
- **Final head `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

- At `b186eb62`, `@codex review` was posted twice (comments `6067925769` and `6069046343`), and the `chatgpt-codex-connector[bot]` answered both with the usage-limit message (comments `6067927988` and `6069048581`). No Codex review existed at that head.
- At `f89fc853`, `@codex review` (comment `6071059884`) was answered with a review: **Reviewed commit `f89fc853cb`**, "Didn't find any major issues" (comment `6071083487`; summary comment `6071062721`, Code Review completed at 2026-10-08T23:29:24Z).
- At the final head `f9f71063`, `@codex review` was posted once after the push (comment `6071252263`). 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 (#656 `6069024568`, item 4).

## What is NOT done

- No code, pin, gitlink, contract bundle or release tag moves. T072, T074 and T075 are the realization, and none of them starts by this PR.
- Plan 038's `specs/038-…/tasks.md` is not edited here. T071's tick there goes in the holder's own bookkeeping batch.
- Nothing archives or promotes.

**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](https://claude.com/claude-code)


Lane: openxfactory-4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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