Skip to content

T002d: plan 038's fourth bookkeeping batch, ticks T012 and T013, the two early-wave words, and the holder's wave-1 and wave-2 rulings (plan 038) - #1279

Merged
brettheap merged 4 commits into
mainfrom
r2/t002d-bookkeeping-4
Oct 9, 2026
Merged

brettheap merged 4 commits into
mainfrom
r2/t002d-bookkeeping-4

Conversation

@brettheap

@brettheap brettheap commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

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:

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. D18: project edits queue instead of one-in-flight refusals #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

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 File add-neutral-product-standalone-operability: open the BUILD arc, recording ten rulings #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 T002c: plan 038's third bookkeeping batch, ticks T095 to T105, the identity bound by layer, the single-writer rows and the holder's batch-3 flags (plan 038) #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)

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

refs #656

🤖 Generated with Claude Code

brettheap and others added 2 commits October 8, 2026 21:53
Encodes, with no new decision: the ticks of T012 and T013 (openDox-code#90
-> 6827cafc); Brett's words 6035546708 and 6067802993 under "What can
start"; the holder's 6069024023 (engine categories and mappings, T045's
refusal extension, option (D)'s pathless re-raise, run_seq and the advisory
lock), 6069024568 items 2 and 3 (T015's and T042's admissions), and
6069507373 (T044's stage directories, T046's After line and late joins,
N-14 and OQ-H-15 owners, T041's finding_id(), T056's engine.py line on
lane 3's ACK 6069516931, baseline_class NOT NULL, plan.md's "merges main").

Lane: openxfactory-4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Lane: openxfactory-4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@brettheap
brettheap requested a balanced review from Copilot October 8, 2026 23:31
@brettheap

Copy link
Copy Markdown
Contributor Author

@codex review

@sourcery-ai

sourcery-ai Bot commented Oct 8, 2026

Copy link
Copy Markdown

Reviewer's Guide

This bookkeeping-only PR updates plan 038’s specification records to reflect already-ruled decisions and landed work: T012/T013 completion, early phase-5 wave sequencing, health-contract and data-model semantics, and precise task ownership/file chains. It makes no new decision and leaves implementation code, spec.md, and openspec change paths untouched; validation records the known CLI-pin exception and two pre-existing real-repository pytest failures.

File-Level Changes

Change Details Files
Recorded the fourth bookkeeping batch’s landed tasks, wave sequencing, and governance rulings without introducing new decisions.
  • Marked T012 and T013 complete with their shared merge commit, accepted limits, and landing citations.
  • Documented phase-5 wave-1 and wave-2 early-writing and landing order.
  • Added revision and ruling references across the task plan and task ledger.
specs/038-opendox-document-tool-self-maintenance/tasks.md
specs/038-opendox-document-tool-self-maintenance/plan.md
Expanded the health-finding contract to define engine categories, pathless disappearance re-raises, and storage nullability.
  • Added eleven engine categories and mappings for refused pack output, including category-based identity constraints.
  • Specified pathful and pathless uncited-disappearance identities without changing the schema.
  • Clarified that baseline_class is NOT NULL in storage while optional in the finding schema rule.
specs/038-opendox-document-tool-self-maintenance/contracts/health-finding.md
Updated the health data model and task implementation notes for ordered runs and revised wave ownership.
  • Added the server-generated per-corpus run_seq and advisory-lock ordering semantics.
  • Documented pathless re-raise behavior and baseline_class nullability in the data model.
  • Added ownership, file-chain, admission, and implementation notes for T015, T041, T042, T044, T046, T054, T056, and related tasks.
specs/038-opendox-document-tool-self-maintenance/data-model.md
specs/038-opendox-document-tool-self-maintenance/tasks.md
specs/038-opendox-document-tool-self-maintenance/plan.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

@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:35:00.533129Z 897dce4 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 chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 897dce405c

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

Comment thread specs/038-opendox-document-tool-self-maintenance/contracts/health-finding.md Outdated

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.

🟡 Changes recommended

Newly specified contract and database behaviors lack explicit falsifiers in the task plan.

2 open findings
What changed in this PR

Records plan 038’s fourth bookkeeping batch and approved implementation rulings.

Changes:

  • Marks T012/T013 landed and records early-wave sequencing.
  • Defines health finding categories, re-raises, and run ordering.
  • Updates single-writer chains and task ownership.
File Description
tasks.md Updates task status, sequencing, rulings, and ownership.
plan.md Revises merge policy and single-writer chains.
data-model.md Adds run sequencing and baseline constraints.
contracts/​health-finding.md Expands engine categories and re-raise forms.

🧠 Review effort: Balanced


💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread specs/038-opendox-document-tool-self-maintenance/tasks.md
Comment thread specs/038-opendox-document-tool-self-maintenance/tasks.md Outdated
brettheap and others added 2 commits October 9, 2026 01:01
Lane: openxfactory-4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…038)

6072086385 item 1 (Q1, Codex 4225201227): each engine category's pack_id,
replacing 6069024023 item 1's "one pack_id per category". The entry's id for
a finding against a valid manifest entry's pack; opendox for no-sandbox,
manifest-refused, dispositions-refused and entry-refused. Stated in
contracts/health-finding.md's id rule and its install-level bullet, and on
T041's note. 6072086385 item 3 (Q3, Copilot 4225214548): T045's Falsifier
gains one node for each of the two refusals 6069024023 item 1 extends from
6065680005 item 3. Item 2 (Q2) changes nothing in the plan.

Lane: openxfactory-4
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@brettheap
brettheap requested a balanced review from Copilot October 9, 2026 01:02
@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.

🟢 Approval recommended

The bookkeeping changes consistently reflect the cited rulings and resolved review feedback.

0 open findings

2 resolved since last review

🧠 Review effort: Balanced

@sonarqubecloud

sonarqubecloud Bot commented Oct 9, 2026

Copy link
Copy Markdown

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

@brettheap
brettheap marked this pull request as ready for review October 9, 2026 01:29
@brettheap

Copy link
Copy Markdown
Contributor Author

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

READY at 8b76a05 — holder, on Brett's words "land #1279 when green" (2026-10-09 ~01:18Z) and "waive Codex for #1279 and land it" (2026-10-09 ~01:30Z).

  • At the head 8b76a05d: 15 checks green (pytest-suite 9832 of 9838 selected, 6 skipped, 0 failed); Copilot "Approval recommended", no findings; 0 unresolved threads; no closing keyword; the body final.
  • Codex WAIVED for this PR by Brett. Codex answered the trigger with "usage limits" at 01:02:56Z and again at 01:27:38Z. Its last review, at 897dce405c, raised one P2, answered by holder ruling 6072086385 item 1, which this head encodes.
  • Lands squashed in a Rule 6 window through the holder's openxFactory lander. It touches no openspec/changes/ path.
  • Authority: plan 038 RULED 6013547504; the claim 6069520093; the rulings encoded: 6069024023, 6069024568, 6069507373, 6072086385 items 1–3.

@sourcery-ai

sourcery-ai Bot commented Oct 9, 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 18 hours and 34 minutes by commenting @sourcery-ai review. Upgrade to get a review now.

@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:29:30Z, PR #1279 into opensoft/openxFactory main

@brettheap
brettheap merged commit e514f9e 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:29:49Z, PR #1279 → e514f9e (opensoft/openxFactory main; squash)

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