Skip to content

Propose and ratify amend-worker-input-budget-dispatch-wording on Brett Heap's word 'ratify 1262 when ready' - #1264

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

brettheap merged 6 commits into
mainfrom
change/amend-worker-input-budget-dispatch-wording

Conversation

@brettheap

@brettheap brettheap commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Lane: openxfactory-1

Drafts and RATIFIES the OpenSpec change amend-worker-input-budget-dispatch-wording, the amendment #1262 asks for. Refs #1262.

Ratified in place, as drafted, on Brett Heap's word "ratify 1262 when ready". No requirement or scenario text moved at ratification: the spec delta is blob eead8960 at every commit of this PR. The archive is a separate act on its own word.

The words

Brett Heap, verbatim, in session on 2026-10-07. Each is a RULED line on the lane register (opensoft/brett-wip, lanes/log/openxfactory-1.md) except the second, which the issue itself records.

  1. "(a) land as ratified, amend later". His ruling on Copilot's comment 4202036546 at Archive add-worker-input-budget: promote the bounded worker input budget onto doc-health #1258. RULED at 2026-10-07T09:42:21Z (commit 98b8b3d4).
  2. "log the issue to change this". The lane filed doc-health canon: 'Bounded worker input budget' calls a forbidden over-budget dispatch conformant; reword the rationale clause #1262.
  3. "draft the amendment change for 1262". This PR.
  4. "ratify 1262 when ready". RULED at 2026-10-07T09:58:32Z (commit f6964352). Its condition held at 5b3edf14: every required check green, pytest-suite included, and Copilot's review 5441182701 recommending approval with one low-severity citation fix, taken in 5d236d7d. The ratification is commit 3a7ba60c.
  5. "yes, land it when green". RULED at 2026-10-07T10:04:03Z (commit 43e9a5c2). This PR lands by SQUASH, by the lane's coordinator, inside a Rule 6 window. The squash commit is then the ratifying commit on main, and it carries the origin's approval pair. Closing doc-health canon: 'Bounded worker input budget' calls a forbidden over-budget dispatch conformant; reword the rationale clause #1262 still needs its own word, and the archive is a separate later pull request.

What changes

One ## MODIFIED requirement in doc-health, Bounded worker input budget. Only the last sentence of its second paragraph is replaced.

As promoted (canon on main 16779816, lines 4083-4087):

Where the WORKER assembles the prompt from a dispatchable unit the orchestrator prepared, the orchestrator SHALL measure each unit's assembled size, record it, and SHALL NOT dispatch a unit it has measured over the budget — dispatching one and letting the worker refuse is conformant but useless, because the same unit is selected again next run.

As amended (#1262's text, verbatim):

Where the WORKER assembles the prompt from a dispatchable unit the orchestrator prepared, the orchestrator SHALL measure each unit's assembled size, record it, and SHALL NOT dispatch a unit it has measured over the budget. The worker's refusal of an over-budget input (scenario "A worker receives an input over the budget") is a backstop that keeps such an input from reaching the model. It does not make an over-budget dispatch conformant, and relying on it wastes the run, because the same unit is selected again next run.

diff of canon's block (openspec/specs/doc-health/spec.md:4070 to the end, 52 lines) against the delta's block gives one hunk:

17,18c17,21
< measured over the budget — dispatching one and letting the worker refuse is
< conformant but useless, because the same unit is selected again next run.
---
> measured over the budget. The worker's refusal of an over-budget input
> (scenario "A worker receives an input over the budget") is a backstop that
> keeps such an input from reaching the model. It does not make an
> over-budget dispatch conformant, and relying on it wastes the run, because
> the same unit is selected again next run.

The title, the first and third paragraphs and all six scenarios (16 bullets) are byte-identical to canon. The archived delta under openspec/changes/archive/2026-10-06-add-worker-input-budget/ is history and is not edited.

Task 1.1: the realization never dispatches over budget (CONFIRMED)

#1262's acceptance 1, checked read-only:

  • scripts/doc_health/catalog_dispatch.py at Bound the bounded workers' input to the model's context window #1137's merge 9da52e31:
    • :513-515 measures each shard's assembled input in bytes;
    • :516-517 adds the shard to the dispatch list only when it is <= input_budget_bytes;
    • :527-528 writes shards.json from that list alone;
    • :535-543 records the rest as shards_over_budget.
  • On main 16779816, the gate is at :521-522 and the write at :532-533.
  • The worker reads only that list. opensoft/xFactory .github/workflows/doc-health-cataloger-worker.yml:171-175 takes ids[0] of shards.json and exits 0 when the list is empty. The file is identical at b2479b6e (xFactory#481) and at main.
  • tests/doc-health/test_semantic_input_budget.py:503, test_a_shard_measured_over_the_budget_is_never_dispatched, asserts that the over-budget shard is not dispatched.

So the amended sentence describes behaviour that already holds, and code_surface: none is measured, not assumed.

The ratification (commit 3a7ba60c)

Following #1250's pattern (3cec62fd), in one commit, so the ratifying commit also carries the approval pair:

  • proposal.md: Status: draft becomes Status: ratified, with one Ratified: line citing the word, the RULED line and the record;
  • tasks.md: Status: ratified with a Ratified by: line; boxes 0.1 and 0.2 ticked with the word;
  • .openspec.yaml: approved_by (Brett Heap, the word verbatim) and approved_on: 2026-10-07 ADDED after the drafting pair. Every existing field is unchanged, checked by parsing both versions;
  • review/ratification-2026-10-07.md: the record (Status: ratified, Kind: report, Decision date:, Ratifier:, one Ratified: citation and the ratified baseline);
  • README.md: the Active changes entry in its ratified form, ending RATIFICATION ONLY.

Not moved: specs/doc-health/spec.md, the ledger row and the self-gate row.

Files

  • openspec/changes/amend-worker-input-budget-dispatch-wording/:
    • .openspec.yaml: an ad_hoc origin written by proposal-support.py declare-adhoc with the drafting pair, the approval pair added at ratification, and a related: list;
    • proposal.md, tasks.md, review/ratification-2026-10-07.md;
    • specs/doc-health/spec.md, the one delta.
  • README.md: the Active changes entry.
  • tests/doc-health/test_modified_block_currency_self_gate.py: one _LEDGER_SUBJECTS row, with its docstring count and chronology. The carriage arm reports this block once, at INFO (1 of 25 units uncarried, which is the amended sentence). A **Removed from canon by** marker was not used, because the marker would be promoted into canon and carry the old sentence with it, which doc-health canon: 'Bounded worker input budget' calls a forbidden over-budget dispatch conformant; reword the rationale clause #1262's acceptance 3 forbids.
  • tests/sequenced_after/corpus-ledger.yaml: the seeded row (--moved-by '#1264').

Registered and not taken (tasks.md § 5): a code comment at scripts/doc_health/catalog_dispatch.py:527-528 and a test docstring at tests/doc-health/test_semantic_input_budget.py:506-508 still echo the old clause. Editing them would give a wording packet a code surface.

Review

Copilot reviewed each head this PR asked it to:

  • 5441182701 at 5b3edf14: approval recommended, with one low-severity citation fix (r4205972528), taken in 5d236d7d.
  • 5441515765 at 3a7ba60c, the ratifying commit: three non-normative record fixes (r4206239376, r4206239452, r4206239504), taken in e9c63a18. None touched requirement or scenario text; the spec delta is still blob eead8960 and .openspec.yaml is unchanged.
  • 5441560962 at e9c63a18: approval recommended, no findings.
  • 5441620162 at a2761b1f, this head (after the merge of main below): approval recommended, no findings.

Every review thread is answered and resolved: 4 threads, 0 unresolved.

main then moved to a38585e9 (#1266, correct-naming-families-count), and this branch took it by merge commit a2761b1f, never a rebase. The only conflict was the head of the README Active changes list, where both entries are kept, this packet's first, with no byte of either entry changed.

Gates

Same-kind full clones named openxFactory.

At this head, a2761b1f, against main a38585e9:

gate main a38585e9 this head
validate-openspec-cli-pin.py --all --strict exit 0; 113 passed, 1 failed (the accepted add-chain-attestation exception), 0 undispositioned exit 0; 114 passed, the same 1 accepted exception
validate-openspec-cli-pin.py --change amend-worker-input-budget-dispatch-wording n/a (exit 2, no such change) exit 0; 1 passed
proposal-support.py . verify amend-worker-input-budget-dispatch-wording exit 0 exit 0
validate-code-surface.py, validate-target-release.py, validate-scope-globs.py exit 0 exit 0
validate-sequenced-after.py . exit 0 (47 active, 19 declaring) exit 0 (48 active, 20 declaring)
validate-sequenced-after.py . --ledger-diff exit 0 (233 rows) exit 0 (234 rows)
validate-former-id-arrival.py, validate-release-tag-gate.py exit 0 exit 0
doc-health.py --single-repo . 31 critical, 22 error, 69 warning, 19 info 31 critical, 22 error, 69 warning, 20 info. The one added finding is this block's carriage-ledger INFO, named by the self-gate row. No other line moves: no ratified-provenance or proposal-origin finding names the ratified packet
pytest: tests/sequenced_after, tests/proposal-support, the self-gate module and test_semantic_input_budget.py 537 passed

Earlier, against main 16779816, the same validator and doc-health rows held at 24b7862b (draft), 5b3edf14 (ledger seeded), 3a7ba60c (ratified) and e9c63a18. At 24b7862b the pytest subset (tests/doc-health, sequenced_after and nine more gate modules) and the whole suite (--continue-on-collection-errors) failed exactly the same ids as main (7 and 237, from the clone's uninitialized openDox and openXdox legs) plus the 4 sequenced_after ledger tests that fail until the row is seeded; at 5b3edf14, with the row seeded, those modules passed (337 tests). CI's pytest-suite runs the whole suite with the legs. It was green at 5b3edf14, and gh pr checks reports it at this head.

🤖 Generated with Claude Code

…e clause of Bounded worker input budget

The promoted doc-health requirement "Bounded worker input budget" forbids
dispatching a unit measured over the budget (SHALL NOT), then calls that
same dispatch "conformant but useless". Copilot found it on #1258 (comment
4202036546); Brett Heap ruled "(a) land as ratified, amend later", and
on "log the issue to change this" the lane filed #1262. This drafts the
amendment on his word "draft the amendment change for 1262".

One MODIFIED requirement: only the second paragraph's last sentence is
replaced, with #1262's text verbatim. The title, the first and third
paragraphs and all six scenarios are byte-identical to canon. The
archived delta is not edited. code_surface: none; the realization
(#1137, 9da52e3) never dispatches a unit it measured over the budget
(tasks.md 1.1).

Also: the README Active changes entry, and the self-gate's
_LEDGER_SUBJECTS row for the one uncarried unit the
modified-block-currency carriage arm reports (the amended sentence).

Draft only. Ratifying and landing each need their own word.
Refs #1262

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

sourcery-ai Bot commented Oct 7, 2026

Copy link
Copy Markdown

Reviewer's Guide

This draft OpenSpec change amends one contradictory rationale sentence in the promoted “Bounded worker input budget” requirement, explicitly distinguishing the worker’s refusal backstop from the orchestrator’s prohibition on over-budget dispatches. It is documentation and bookkeeping only: existing scenarios, archived history, and runtime code remain unchanged, while the draft lifecycle and self-gate registration are added.

Flow diagram for the worker input budget wording amendment

flowchart LR
    PromotedRequirement[Promoted requirement contains contradictory rationale]
    DraftAmendment[Draft amendment clarifies SHALL NOT dispatch over-budget input]
    Ratification[Authoring lane ratifies amended wording]
    Canon[Amended wording is archived into canon]

    PromotedRequirement --> DraftAmendment
    DraftAmendment --> Ratification
    Ratification --> Canon
Loading

File-Level Changes

Change Details Files
Adds a draft OpenSpec amendment that resolves the contradiction in the bounded worker input budget requirement.
  • Introduces proposal metadata, rationale, provenance, sequencing, and draft lifecycle tasks for issue doc-health canon: 'Bounded worker input budget' calls a forbidden over-budget dispatch conformant; reword the rationale clause #1262.
  • Adds a ## MODIFIED copy of the doc-health requirement with only the rationale sentence replaced by the issue’s wording.
  • Clarifies that worker refusal is a safety backstop, not permission for the orchestrator to dispatch an over-budget unit.
  • Preserves the existing normative SHALL NOT, all six scenarios, and the archived historical delta.
  • Documents that runtime behavior already avoids dispatching measured-over-budget units, so no code surface is changed.
openspec/changes/amend-worker-input-budget-dispatch-wording/.openspec.yaml
openspec/changes/amend-worker-input-budget-dispatch-wording/proposal.md
openspec/changes/amend-worker-input-budget-dispatch-wording/specs/doc-health/spec.md
openspec/changes/amend-worker-input-budget-dispatch-wording/tasks.md
Registers the draft change in repository bookkeeping and the modified-block self-gate.
  • Adds the amendment to the README Active changes list with draft status and provenance.
  • Adds a self-gate ledger subject for the intentionally reworded requirement and updates expected finding counts and explanatory assertions.
  • Leaves the sweep-ledger row and ratification/archive tasks pending as required for the draft lifecycle.
README.md
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

…ing at #1264

The sanctioned seeder (validate-sequenced-after.py --seed-ledger
--moved-by '#1264') writes the one row every filing owes: active,
co-modifier, declares [add-worker-input-budget], depth 1. tasks.md 3.4
is ticked with it.

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.

Copilot review overview

🟢 Approval recommended

The amendment matches #1262, preserves all scenarios, and aligns with existing dispatch behavior; only a non-blocking citation typo remains.

Review effort: Balanced
Findings: 1 Low severity

Open (1)
What changed in this PR

Drafts the #1262 OpenSpec amendment clarifying that over-budget dispatch is non-conformant while worker refusal remains a backstop.

Changes:

  • Adds the single-requirement amendment packet.
  • Registers lifecycle and sequencing metadata.
  • Updates self-gate expectations for the intentional wording difference.
File Description
.openspec.yaml Records origin and related changes.
proposal.md Explains the amendment and impact.
tasks.md Tracks verification, ratification, and archival work.
specs/​doc-health/​spec.md Rewords the contradictory rationale.
README.md Adds the active draft record.
corpus-ledger.yaml Registers sequencing metadata.
test_modified_block_currency_self_gate.py Names the expected informational finding.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread openspec/changes/amend-worker-input-budget-dispatch-wording/tasks.md Outdated
brettheap and others added 2 commits October 7, 2026 11:09
… span

Copilot (review 5441182701, comment r4205972528) found the citation
"catalog_dispatch.py`: :513-515" malformed by its doubled colon. Each
range is now written as `catalog_dispatch.py:<range>` on its own
sub-bullet. Non-normative: no requirement or scenario text moves.

Refs #1262

Lane: openxfactory-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…d 'ratify 1262 when ready'

Brett Heap, 2026-10-07, in session to lane openxfactory-1, verbatim
"ratify 1262 when ready"; RULED on the estate's lane register at
2026-10-07T09:58:32Z (opensoft/brett-wip commit f6964352,
lanes/log/openxfactory-1.md). The register line's condition held: the
draft was green at 5b3edf1 (every required check, pytest-suite
included) and Copilot's review 5441182701 at that head recommended
approval with one low-severity citation fix, taken in 5d236d7.

Ratified as drafted, with no amendment: the MODIFIED requirement
"Bounded worker input budget", spec delta blob eead896, unmoved since
this packet's first commit. No requirement or scenario text moves here.

This one commit carries every ratification change, so the ratifying
commit also carries the approval pair:
- proposal.md: Status: ratified, with one Ratified: line;
- tasks.md: Status: ratified with a Ratified by: line; 0.1 and 0.2 ticked;
- .openspec.yaml: approved_by and approved_on ADDED after the drafting
  pair; every existing field unchanged;
- review/ratification-2026-10-07.md, the record;
- README.md: the Active changes entry in its ratified form.

It lands by squash on "yes, land it when green" (RULED
2026-10-07T10:04:03Z, commit 43e9a5c2). The archive is a separate act.

Refs #1262

Lane: openxfactory-1
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@brettheap
brettheap requested a balanced review from Copilot October 7, 2026 11:16
@brettheap brettheap changed the title amend-worker-input-budget-dispatch-wording: reword the rationale clause of Bounded worker input budget (draft) Propose and ratify amend-worker-input-budget-dispatch-wording on Brett Heap's word 'ratify 1262 when ready' Oct 7, 2026

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.

Copilot review overview

🟡 Changes recommended

The proposal and task records contain stale lifecycle statements and an incomplete changed-file inventory.

Review effort: Balanced
Findings: 3 Low severity

Open (3)
Resolved since last review (1)

Comment thread openspec/changes/amend-worker-input-budget-dispatch-wording/proposal.md Outdated
Comment thread openspec/changes/amend-worker-input-budget-dispatch-wording/proposal.md Outdated
Comment thread openspec/changes/amend-worker-input-budget-dispatch-wording/tasks.md Outdated
…after ratification

- proposal.md code_surface: the inventory names five packet files, adding
  review/ratification-2026-10-07.md (r4206239376).
- proposal.md: the authority paragraph now reads in the ratified state
  while keeping the distinction that the authoring lane ratified nothing
  (r4206239452).
- tasks.md: the open-box note names only 3.5 and 4.1, the two boxes still
  open; section 0 was ticked by the ratifying word (r4206239504).

No requirement or scenario text moves; the spec delta is still blob
eead896, and .openspec.yaml is unchanged.

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.

Copilot review overview

🟢 Approval recommended

The amendment matches issue #1262, preserves the remaining requirement verbatim, and its governance records are consistent.

Review effort: Balanced
Findings: None

Resolved since last review (3)

…ding

main took #1266 (correct-naming-families-count), whose README Active
changes entry landed where this branch's entry sits. Both entries are
kept, this packet's first; no byte of either entry changes. The ledger
merged cleanly: each change keeps its own row.

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.

Copilot review overview

🟢 Approval recommended

The amendment matches the governing issue, preserves unchanged specification content, and keeps lifecycle records consistent.

Review effort: Balanced
Findings: None

@sonarqubecloud

sonarqubecloud Bot commented Oct 7, 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-08T16:15:41Z, PR #1264 into opensoft/openxFactory main (Rule 6 window; rule6 scan CLEAR; gate PASS at head a2761b1 on main a38585e). On Brett Heap's word verbatim: "yes, land it when green".

@brettheap
brettheap marked this pull request as ready for review October 8, 2026 16:15
@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 4 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@brettheap
brettheap merged commit a936e53 into main Oct 8, 2026
16 checks passed
@brettheap

Copy link
Copy Markdown
Contributor Author

Lane: openxfactory-1

LANDED — lane openxfactory-1, 2026-10-08T16:16:15Z, PR #1264 → a936e53 (squash commit into opensoft/openxFactory main). Window closed.

brettheap added a commit that referenced this pull request Oct 8, 2026
…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>
brettheap added a commit that referenced this pull request Oct 8, 2026
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>
@brettheap
brettheap deleted the change/amend-worker-input-budget-dispatch-wording branch October 8, 2026 17:37
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