Skip to content

Ratify realize-doc-health-direction-arc on Brett Heap's word (#656 6023375303) - #1261

Merged
brettheap merged 12 commits into
mainfrom
r2/t071-ratify-arc
Oct 9, 2026
Merged

brettheap merged 12 commits into
mainfrom
r2/t071-ratify-arc

Conversation

@brettheap

@brettheap brettheap commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

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 (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 confirms the one choice that differs from the change's as-filed text (below).

What is ratified, and what the word authorizes

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

.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 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) #656 6069024568, 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 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) #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 (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) #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

…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>
@brettheap
brettheap requested a balanced review from Copilot October 7, 2026 00:50
@sourcery-ai

sourcery-ai Bot commented Oct 7, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR ratifies the existing realize-doc-health-direction-arc OpenSpec change against the exact fc4fa0ff baseline, records Brett Heap’s ruling and D1–D7 interpretation, authorizes but does not perform T072/T074/T075, and updates lifecycle metadata and documentation without changing requirements, scenarios, code, sequencing, or release state.

Sequence diagram for ratifying the doc-health direction arc

sequenceDiagram
    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
Loading

Flow diagram for ratification lifecycle and realization authorization

flowchart 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]
Loading

File-Level Changes

Change Details Files
Record Brett Heap’s ratification of the already-landed OpenSpec change and its authorized realization scope.
  • Mark the proposal, design, and tasks documents as ratified with citations to the ruling and record.
  • Add the ratification record documenting the baseline commit, D1–D7 interpretation, authorized task order, and explicit non-effects.
  • Add approval metadata while preserving drafting provenance and record the intentional Status: ratified deviation from the filed task wording.
  • Update the README active-change entry to link the ratification record and reflect ratified status.
openspec/changes/realize-doc-health-direction-arc/proposal.md
openspec/changes/realize-doc-health-direction-arc/design.md
openspec/changes/realize-doc-health-direction-arc/tasks.md
openspec/changes/realize-doc-health-direction-arc/.openspec.yaml
openspec/changes/realize-doc-health-direction-arc/review/ratification-2026-10-06.md
README.md
Preserve the change’s implementation and lifecycle boundaries while documenting validation of the ratification packet.
  • Keep skip_specs, declarations, sequencing ledger, and realization tasks unchanged; no code, pin, gitlink, release, archive, or promotion changes are introduced.
  • Document validation, doc-health, proposal-support, sequencing, and test results, including the accepted baseline exception and environment-specific test issue.
openspec/changes/realize-doc-health-direction-arc/review/ratification-2026-10-06.md
openspec/changes/realize-doc-health-direction-arc/.openspec.yaml
openspec/changes/realize-doc-health-direction-arc/tasks.md

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

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 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.

brettheap and others added 2 commits October 7, 2026 09:46
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>

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 lifecycle metadata and ratification provenance are consistent, with no unresolved review findings.

Review effort: Balanced
Findings: None

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>

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 documentation-only changes consistently reflect the cited ruling and established ratification precedent.

0 open findings

🧠 Review effort: Balanced

brettheap and others added 2 commits October 8, 2026 17:44
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>

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 ratification record, cited ruling, lifecycle metadata, and first ratifying commit are consistent, with no unresolved findings.

0 open findings

🧠 Review effort: Balanced

brettheap and others added 2 commits October 8, 2026 19:37
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>
@brettheap
brettheap requested a balanced review from Copilot October 8, 2026 19:56
@brettheap

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

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

Final approval depends on human validation of governance authority and historical provenance assertions.

0 open findings

🧠 Review effort: Balanced

@brettheap brettheap changed the title DRAFT: Ratify realize-doc-health-direction-arc on Brett Heap's word (#656 6023375303) Ratify realize-doc-health-direction-arc on Brett Heap's word (#656 6023375303) Oct 8, 2026
@brettheap
brettheap marked this pull request as ready for review October 8, 2026 21:05
@brettheap

Copy link
Copy Markdown
Contributor Author

@codex review

@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 22 hours and 57 minutes by commenting @sourcery-ai review. Upgrade to get a review now.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

brettheap and others added 2 commits October 8, 2026 23:21
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>
@brettheap
brettheap requested a balanced review from Copilot October 8, 2026 23:27
@brettheap

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 8, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-08T23:46:11.398776Z f9f7106 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: f89fc853cb

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

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

Exact-head checks and the required Codex review remain pending, while final approval also depends on governance provenance.

0 open findings

🧠 Review effort: Balanced

@brettheap
brettheap requested a balanced review from Copilot October 8, 2026 23:44
@brettheap

Copy link
Copy Markdown
Contributor Author

@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>
@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Already looking forward to the next diff.

Reviewed commit: f9f71063bd

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

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".

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 ruling’s author, scope, timestamp, and exact baseline were verified, with no unresolved review defects.

0 open findings

🧠 Review effort: Balanced

@sonarqubecloud

sonarqubecloud Bot commented Oct 8, 2026

Copy link
Copy Markdown

@brettheap

Copy link
Copy Markdown
Contributor Author

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

READY at f9f7106 — holder, on Brett's word "land #1261 when green" (2026-10-09 ~01:03Z).

  • At the head f9f71063: 15 checks SUCCESS and 1 SKIPPED. Copilot "Approval recommended". Codex reviewed f9f71063bd. 0 unresolved threads.
  • Since the head's CI, main has moved to 564f565a (Archive refresh-install-repository-enumerations-opsxfactory-gateway: the sixth install repository promoted into the three enumerations; Purpose widened #1278, lane 5's archive). The squash lands the same tree as merging main into the branch, and T071 verified that merged tree locally: MERGED-TREE-GREEN: local merge 0ad0fa52 (not pushed), clean; validate-openspec-cli-pin.py --all --strict exits 0 with 0 UNDISPOSITIONED; the pinned openspec validate realize-doc-health-direction-arc --strict is valid; code-surface, target-release, sequenced-after (incl. --ledger-diff, 236 rows) and proposal-support verify pass; doc-health is byte-identical to pristine main 564f565a, and its negative control fires; pytest: the ledger, records, sequenced and openspec subset 615 passed, 3 skipped; the corpus directories 866 passed with 312 subtests.
  • Lands in a Rule 6 window (squash), through the holder's openxFactory lander.
  • Authority: Brett's ratify word 6023375303; plan 038 RULED 6013547504; "land Ratify realize-doc-health-direction-arc on Brett Heap's word (#656 6023375303) #1261 when green".

@brettheap

Copy link
Copy Markdown
Contributor Author

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

@brettheap
brettheap merged commit a020b34 into main Oct 9, 2026
17 checks passed
@brettheap

Copy link
Copy Markdown
Contributor Author

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

LANDED — lane openxfactory-4, 2026-10-09T01:13:48Z, PR #1261 → a020b34 (opensoft/openxFactory main; squash)

@brettheap
brettheap deleted the r2/t071-ratify-arc branch October 9, 2026 01:14
brettheap added a commit that referenced this pull request Oct 9, 2026
…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>
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