Skip to content

docs: bring the design and testing pages in line with the shipped code - #111

Merged
Kiran01bm merged 5 commits into
mainfrom
kiran01bm/docs-refresh-sept
Sep 13, 2026
Merged

docs: bring the design and testing pages in line with the shipped code#111
Kiran01bm merged 5 commits into
mainfrom
kiran01bm/docs-refresh-sept

Conversation

@Kiran01bm

Copy link
Copy Markdown
Collaborator

Why

A sweep of the docs against the code on main found a dozen statements the implementation has overtaken. Each one tells a reader something false about what ships: that the refusal class is not emitted yet, that CI does not run the built binary, that the optimistic attempt runs the statement once, that the CLI has six commands, that the plan report has not frozen its version, and that the accepted-blocking path is only planned. A reader who trusts the docs plans against a smaller product than the one they have.

What

Eleven pages change; no code does. The commit message lists every correction by file. The ones that change what a user would do:

  • docs/optimistic-attempt.md: a lock-timeout overrun is retried under the bounded RetryPolicy (three attempts by default; --lock-attempts 1 disables it), each attempt in a fresh transaction; a statement-timeout overrun is never retried. The page said "runs the submitted form once".
  • docs/cli-output-examples.md: create-name-mismatch and create-names-unverified move out of the refusal-reasons table into a note; they are executor failure codes on a failed verdict (exit 1) because the CREATE TABLE has already committed. The destructive example no longer names DROP TABLE, which never reaches classification and refuses as unsupported-statement.
  • docs/testing.md: TM-8 is met by CI's demo job; the how-to-run table gains demo-check, check-capabilities, and the replay* targets; the coverage table gains rows for the executor, migrate, suggest, pull, capabilities, progress, and Supabase suites; the Phase 3 obligations row is "Done".
  • docs/capabilities.md, docs/limitations.md, docs/vision.md: the accepted-blocking path is a shipped library primitive (executor.ExecuteAcceptedBlocking, outcome: executed-without-online-safety, exit 3) with no CLI flag yet, so "planned", "must run outside pg-sprite", and "every capability is reachable from the CLI" are each qualified.
  • docs/architecture.md, docs/low-level-design.md, SAFETY.md: eight CLI commands, the package layout as it exists, the plan report as a versioned contract (format_version 5), and diff --desired rather than a --desired flag on migrate.

How

Every correction was checked against the code before editing: pkg/verdict/verdict.go (WithRefusal, WithAcceptedBlocking), pkg/migrate/refusal_registry.go (DROP TABLE is KindCatalogWorkunsupported-statement), pkg/executor/optimistic.go (DefaultRetryPolicy, "Statement timeouts and all other failures return immediately"), internal/cli/cli.go (command list and --lock-* flags), pkg/plan/plan.go (FormatVersion = 5), .github/workflows/ci.yml (make demo-check), and the test files each new coverage row links to. In the coverage table I left out pkg/checkpoint: its tests today cover only Phase string and terminal-state helpers, which is too little to list as coverage of "durable resume".

The hand-written region of docs/capabilities.md is the only part touched there; make check-capabilities passes.

Risk

Low. Documentation only.

Testing

Beyond CI: a relative-link check over README.md, SAFETY.md, and docs/*.md (rg -o '\]\(([^)#h][^)]*)\)' --replace '$1', fragments stripped, each target tested with -e) reports no broken links.

Bigger picture

Two related docs PRs are open from the same base: #109 surfaces the exit-code ladder in the README, and #110 splits pkg/executor/native.go into cic_* files. This PR does not touch the passages #109 changes; docs/low-level-design.md is edited by both but in different sections.

Generated with Amp (Claude)

@Kiran01bm
Kiran01bm marked this pull request as ready for review September 12, 2026 06:54
@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.

A sweep of the docs against the code found statements that the
implementation has overtaken:

- capabilities-contract: pkg/verdict emits the refusal class on every
  refusal; the page said it did not yet.
- testing: TM-8 is met by CI's demo job (make demo-check); the how-to-run
  table lists demo-check, check-capabilities, and the replay targets; the
  coverage table covers the executor, migrate, suggest, pull, capabilities,
  progress, and Supabase suites; Phase 3 obligations are recorded as done.
- optimistic-attempt: a lock-timeout overrun is retried under the bounded
  RetryPolicy (three attempts by default, --lock-attempts 1 disables it);
  a statement-timeout overrun is never retried. The page said the form
  ran once.
- cli-output-examples: create-name-mismatch and create-names-unverified
  are executor failure codes on a failed verdict (exit 1), not refusal
  reasons; the destructive example named DROP TABLE, which never reaches
  classification.
- low-level-design and architecture: the package layout, the eight CLI
  commands, the executor's scope, and the plan report's versioning as
  shipped; the declarative front door is diff --desired, not a migrate
  flag.
- SAFETY: internal/cli row lists pull and capabilities.
- schemabot-integration: names schemadiff.ListManagedTables as the
  exported catalog query for undeclared-table enumeration.
- capabilities, limitations, vision: the accepted-blocking primitive
  ships as a library call with exit 3 and no CLI flag yet, so
  "planned", "must run outside pg-sprite", and "every capability is
  reachable from the CLI" are qualified accordingly.

Amp-Thread-ID: https://ampcode.com/threads/T-01a07fb2-9632-732b-bd7b-2f143a81bc06
…ADME

The README's 'does not do yet' list now names the accepted-blocking
passthrough as library-only, so the three capability pages move
together. architecture.md no longer claims capabilities --json carries a
format version: its version is the binary version, as the contract page
says. The end-to-end diagrams in both design docs name all eight CLI
verbs and the real migrate --alter / diff --desired entry points; the
package map's pkg/executor row lists the greenfield create path and the
passthrough primitive; and the 'contracts exist' list separates the two
packages that hold only a package doc.

Amp-Thread-ID: https://ampcode.com/threads/T-01a07fb2-9632-732b-bd7b-2f143a81bc06
@Kiran01bm
Kiran01bm force-pushed the kiran01bm/docs-refresh-sept branch from d9c3ed7 to 8bbc411 Compare September 12, 2026 06:57
@aparajon

Copy link
Copy Markdown
Collaborator

🤖 Adversarial review 1/2 — are the corrections themselves correct? 8bbc4116, 13 files, +142/−64, all Markdown.

A docs PR whose thesis is "the docs assert things the code has overtaken" has to be reviewed the same way it was written: every claim checked against the code, not read for style. I checked all of them.

Claim Verified against
Retry is bounded: 3 attempts, 100 ms → 1 s exponential, --lock-attempts 1 disables DefaultRetryPolicy (optimistic.go:110-116); flags at cli.go:112-114 with defaults 3 / 100ms / 1s and help text "1 disables retry"
A statement-timeout overrun is never retried optimistic.go:192-194 — "Statement timeouts and all other failures return immediately: repeating work that exceeded its execution budget is not a lock-acquisition strategy"
The *BudgetError carries the attempt count BudgetError.Attempts (optimistic.go:81-83)
DROP TABLE refuses as unsupported-statement, never classified DROP TABLE usersKindCatalogWork (statement_test.go:130-132) → ReasonUnsupportedStatement (refusal_registry.go:124-125)
create-name-mismatch / create-names-unverified are executor codes, not reasons executor.Code at code.go:97 and :105; absent from verdict.Reasons()
Destructive = dropped column, constraint, index, or NOT NULL; a dropped DEFAULT is not destructiveOp (planner.go:393-400) and the comment above it
Eight CLI commands, in that order type CLI struct (cli.go:24-31)
--desired is on diff, not migrate DiffCmd.Desired (cli.go:152)
format_version 5 plan.FormatVersion = 5 (plan.go:31)
TM-8 is met by CI's demo job .github/workflows/ci.yml:212, make demo-check at :225
demo-check, check-capabilities, replay* exist Makefile
Relative links resolve 512 checked, 0 broken
make check-capabilities passes rc=0

Every one holds. The destructive cell is actually corrected in three ways, not the one the body mentions: DROP TABLE leaves, "truncating conversions" leaves (there is no such case in destructiveOp), and the four real ops are named. And the create-* move is corroborated from outside the diff — docs/execution-model.md:192-193, 309-310 and docs/schemabot-integration.md:181-182 already describe both as exit-1 failures at step 1, so cli-output-examples.md was the lone outlier rather than the doc set being wrong.

Four findings. None of them is a wrong correction.


1. The same file's Exit inventory still carries the single-attempt framing this PR removed

The body's lead example is that optimistic-attempt.md "said 'runs the submitted form once'". Both prose sites are fixed — :47 now has "retried a bounded number of times", :208 has "across every attempt". The table 130 lines further down was not touched:

| 3a | Lock not granted within `lock_timeout` | ... | No — nothing executed |

That is the same statement, in the same file, in the form a reader is most likely to quote: a row in a typed inventory rather than a sentence in a narrative. With the retry documented above it, row 3a now under-describes its own exit — the lock was not granted within lock_timeout three times, with backoff between, which is the operationally different fact. "Lock not granted within lock_timeout on any attempt" is the whole fix.

While in that table, :252 reads not-native-safe-budget-exceeded / lock-budget → "Transient — retry off-peak, same plan". Still true, but it now sits one section from a paragraph explaining that the engine already retried three times, so an operator reading the row alone will retry by hand something that just exhausted its own retry policy. One clause ("after the engine's own bounded retries were exhausted") closes it.

2. The cross-PR note is wrong about which files overlap, in the direction that matters

The body says "This PR does not touch the passages #109 changes; docs/low-level-design.md is edited by both but in different sections." Five files are edited by both:

README.md
docs/capabilities.md
docs/cli-output-examples.md
docs/low-level-design.md
docs/optimistic-attempt.md

optimistic-attempt.md in particular is a recent addition on #109's side — its head has moved to 9b5b1ca since I reviewed it, and the new commit edits that same Exit inventory table finding 1 is about.

The good news, which the body could have claimed and did not: the two merge cleanly and the merged tree is green. I merged #109's current head with 8bbc4116 — auto-merge on all five files, no conflict — and ran go test ./pkg/verdict/ ./internal/cli/ on the result, including #109's new doc-pinning tests. Both packages pass. So there is nothing to do here except correct the sentence: a reviewer who reads "one file overlaps" will not re-check the other four after whichever lands second.

3. The detector that let this drift in is one-directional, and the fix pattern landed in that same file this week

Two executor codes lived in a table headed Refusal reasons — the table whose comment says "The set is closed and pinned by test (verdict.Reasons())". They survived because the pin only runs one way (pkg/verdict/docs_test.go):

for _, r := range Reasons() {
	assert.Contains(t, doc, fmt.Sprintf("| `%s` |", string(r)), ...)
}

Every reason must have a row; no row must be a reason. So the table can accumulate anything, and did. This PR removes the two symptoms and leaves the detector exactly as permissive — the third one lands the same way.

The correction is a few lines and the pattern is already in the same file, added by #109: collect the doc's reason rows and assert.Equal the two sets, the way TestExitCodeLadderDocsListEveryCode does for exit codes. That test catches a doc row for a code that does not exist; this one should catch a doc row for a reason that does not exist.

4. Three of the twelve corrections are mechanically pinnable, and this PR is the argument for pinning them

The sweep found a dozen statements that drifted silently over some months. That is the strongest possible evidence that prose-only synchronization does not hold, and the PR leaves the next dozen equally unprotected. Three corrections need only the AST-read-a-constant pattern pkg/verdict/docs_test.go already uses:

  • format_version 5 — read plan.FormatVersion, assert the docs state it. This one is a published contract version; being wrong about it in the docs is the most expensive item on the list.
  • The eight commands in SAFETY.md — read the field names off type CLI struct, assert the row lists exactly those. It was wrong by two commands and an ordering.
  • DefaultRetryPolicy's 3 / 100 ms / 1 s — three numbers now stated in optimistic-attempt.md that nothing keeps honest.

I would not ask for all three in this PR. But adding one — FormatVersion, since it is a versioned external contract and a four-line test — turns a sweep into a ratchet, and makes the case for the next two by example.


One edit changes a commitment rather than correcting a fact, and I think it is the right call. docs/vision.md:73-78 rewrites the design rule "every capability is reachable from the CLI" into "every capability lands in the library and becomes reachable from the CLI… may ship library-first… but never CLI-only." That is not the docs catching up to the code; that is the rule catching up to a decision already made when the accepted-blocking primitive shipped without a flag. The body does disclose it, and holding the old rule would have meant not shipping library-first at all, which is worse. Worth saying out loud only because nothing enforces the new rule either — "never CLI-only" is now a sentence in vision.md with no test and no checklist behind it, and the README's "does not do yet" list is what carries the accounting.

This review was generated by Claude Code (claude-opus-5).

@aparajon

Copy link
Copy Markdown
Collaborator

🤖 Review 2/2 — two lenses: OSS adoption, and integration ease for importers.

Lens 1: OSS adoption

Every one of these twelve corrections errs in the same direction, and it is the expensive one. The docs described a smaller product than ships: the accepted-blocking path "planned" when the primitive is exported, the bounded attempt single-shot when it retries, six commands when eight exist, the plan report unfrozen when format_version is 5. An evaluator does not discover that a doc understated a capability — they read the limitation, conclude pg-sprite does not do the thing, and leave. Overstatement gets caught in the first test run; understatement is silently fatal, and it is the failure mode a project accumulates naturally because nobody re-reads the pages that describe what does not exist yet.

The sharpest instance is SAFETY.md. Before this PR it listed the CLI as "migrate, status, diff, fmt, lint, and suggest" — omitting pull and capabilities. pull is the on-ramp to the entire declarative workflow: it is how a reader gets from a live database to desired-state files, and without it the declarative model reads as "write the schema files yourself first". That omission sat on the page a careful evaluator reads most closely, because SAFETY.md is where someone deciding whether to point this at a real database goes.

Worth saying, because the twelve-item list makes it sound worse than it is: the doc set is in good shape. 512 relative links resolve. The two mislabeled executor codes were correct on five other pages and wrong on one, so the correction is bringing an outlier into line, not repairing a systemic error. make check-capabilities — the one mechanized doc gate that exists — passes and always did. The drift is concentrated exactly where no automation reaches, which is the argument in finding 4 of 1/2.

The vision.md rewrite is an adoption-positive honesty move, and I want to name it as such rather than leave it as a scope note. "Every capability is reachable from the CLI" was an absolute that the accepted-blocking primitive had already broken. Replacing it with "may ship library-first, never CLI-only" plus a README list of the verbs still owed is a promise a stranger can actually hold the project to, and one it can keep. An aspirational absolute that the tree contradicts teaches a reader to discount the rest of the design rules.

Lens 2: integration ease for schemabot and other orchestrators

The single highest-value line in this PR for an importer is in schemabot-integration.md, and it is one clause. The page previously told an adapter author to enumerate the namespace's live tables itself and pointed at a prose section for the exclusions. It now names the function: schemadiff.ListManagedTables "is the exported catalog query pull uses" — verified at pkg/schemadiff/managed_tables.go:49, consumed by internal/cli/pull.go:54. That turns "reimplement a catalog query and get the partition and extension-owned exclusions right yourself" into "call this, and you get the same set pull gets". Reimplementing it is exactly the class of duplication that drifts from the engine one release later — the doc was previously steering importers into it.

The create-* correction is not cosmetic for an importer; it inverts an outcome mapping. Both codes are things a real orchestrator branches on — schemabot switches on executor.CodeCreateNameMismatch and executor.CodeCreateNamesUnverified in its PostgreSQL apply path. An adapter author who took cli-output-examples.md at its word would have wired them as refusal reasons: nothing ran, nothing committed, safe to retry. The truth is the opposite — the CREATE TABLE committed, the table exists, and a retry re-runs a create against a live table. A refusal and a committed-with-unproven-names failure are the two ends of the retry decision, and the table had them on the wrong end. This is the correction I would lead the PR description with.

Two smaller additions that an orchestrator can act on immediately. capabilities.md now names blocking_passthrough_eligible as the plan-report field that says whether a refusal qualifies for the passthrough — so an orchestrator can surface "run this anyway, under a bounded lock budget" on its own approval surface today, through executor.ExecuteAcceptedBlocking, without waiting for the migrate flag. And stating format_version 5 as a frozen contract rather than an unversioned shape is what lets an importer pin it and fail loudly on a bump instead of silently mis-parsing.

One forward-looking note. This PR documents the library-first reality well, but the accounting for it lives in two hand-maintained places: the README's "does not do yet" list and the vision.md rule. For an importer the question is narrower and answerable — "which exported primitives have no CLI verb?" — and it is the list that decides whether adopting the library buys anything over shelling out to the binary. Right now ExecuteAcceptedBlocking is the only member. When it is two or three, that belongs in schemabot-integration.md as a table, not spread across the README and the vision page.

Approving. Every factual correction checks out against the code, the merge with #109 is clean and green, and the four findings in 1/2 are all follow-ups — the two I would take before merge are the Exit inventory row that still says the attempt runs once, and the one-directional refusal-reason test that let this class of drift in.

This review was generated by Claude Code (claude-opus-5).

@aparajon aparajon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Approved. Every one of the twelve corrections checks out against the code — I verified each claim at its source rather than reading the diff for style: DefaultRetryPolicy's 3/100ms/1s and the flags that expose them, statement timeouts returning immediately, DROP TABLE reaching unsupported-statement through KindCatalogWork, the two create-* codes being executor.Code values rather than refusal reasons, destructiveOp's four ops with DEFAULT deliberately excluded, eight commands, --desired on diff, format_version 5, TM-8 met by CI's demo job, 512 relative links resolving, and make check-capabilities green. Four findings in the review comments, none blocking. The two worth a follow-up commit: the Exit inventory's row 3a in optimistic-attempt.md still says the lock was not granted "within lock_timeout", the same single-attempt framing this PR removed from the two prose sites 150 lines above; and the test that pins the refusal-reason table runs only one way — every reason must have a row, no row must be a reason — which is exactly how two executor codes sat in it, and the bidirectional pattern to fix it landed in that same file in #109. Also noted: five files overlap with #109, not the one the description claims, though I merged the two and the merged tree is green.

This stamp was left by Claude Code (claude-opus-5).

Kiran01bm and others added 2 commits September 13, 2026 18:06
…n table both ways

The Exit inventory's lock-budget row still described the bounded attempt as
a single try, and the orchestrator table beside it told an operator to retry
without saying the engine had already exhausted its own retries; both rows
now carry the retry the prose above them describes.

The test that pins the refusal-reason table checked only that every reason
has a row, so a row for a token that is not a reason went unnoticed. It now
compares the table's row set with verdict.Reasons() in both directions, the
way the exit-code ladder test does.

Amp-Thread-ID: https://ampcode.com/threads/T-01a07fb2-9632-732b-bd7b-2f143a81bc06
@aparajon

Copy link
Copy Markdown
Collaborator

🤖 Delta re-review — 8bbc41169fe9f549. Re-reviewing because the head moved past my approval.

The delta is a merge of main and nothing else, and it is a pure auto-merge. 9fe9f549 has parents 8bbc4116 and 825af36 (main at #109). Reproducing that merge mechanically gives tree 83ba7495, which is byte-identical to 9fe9f549^{tree} — so there is no hand resolution anywhere in it, and no new authored content. Worth stating because a clean-looking merge across two PRs that edit the same five files is exactly where a whole-file resolution silently reverts the other side's hunks, and that did not happen here.

The docs guards did run on it: unit tests (no Docker; docs guards) is green, and the six skipped legs are the path-filtered ones behind changes, with all-green succeeding. Locally on the merged tree go test ./pkg/verdict/ ./pkg/plan/ ./internal/cli/ passes, including #109's new doc-pinning tests against this PR's rewritten tables.

So the four findings in my earlier review are all still open. Two of them changed shape when main landed underneath, and one of them was wrong.


The detector finding is now twelve lines away from its own fix

I argued that the refusal-reason pin only runs one way, so a table headed "the set is closed and pinned by test" can accumulate rows for things that are not reasons — which is how create-name-mismatch and create-names-unverified lived there long enough for this PR to have to remove them.

The merge brought the fix pattern into the same file. TestExitCodeLadderDocsListEveryCode compares two sets with assert.Equalf, and its comment says exactly the right thing: "a ladder table that drops a code fails, and so does a row for a code the binary no longer exits with." Directly below it, three pins still run one way only:

Test Shape
TestExitCodeLadderDocsListEveryCode assert.Equalf(ladder, documented) — both directions
TestDocListsEveryRefusalReason assert.Contains per reason
TestRefusalClassesDocListsEveryRefusalReason assert.Contains per reason
TestRefusalClassesDocListsEveryClassAndOwner assert.Contains per class, per owner

One file, four pins on closed vocabularies, one of which is bidirectional. The cheapest version of this — collecting the doc's | `x` | rows and assert.Equal-ing the sets, the way documentedExitCodes already does for codes — would have failed on main for months and would have written this PR's cli-output-examples.md correction itself. I would take it here rather than leave the asymmetry sitting in one screen of one file.

The body's cross-PR note is now a prediction about a merge that has already happened

The body still says this PR "does not touch the passages #109 changes; docs/low-level-design.md is edited by both but in different sections." Five files were edited by both, and the merge that settled it is now the head commit of this PR. It settled the other way than the sentence implies and it settled cleanly, which is the good outcome — but a stale forward-looking claim in the body of a PR whose thesis is "prose drifts from what the code does" is the one line a reviewer is guaranteed to notice. Deleting it costs nothing now that the merge is in the history.

Correcting my own finding: format_version is pinned, and I named the wrong ratchet

I listed format_version 5 as one of three corrections that nothing keeps honest, and as the one I would pin in this PR. That was wrong — it is pinned twice:

  • pkg/plan/docs_test.go:216 asserts docs/plan-report.md states the current plan.FormatVersion.
  • internal/cli/docs_test.go:149 compares every embedded example on docs/cli-output-examples.md against real pipeline output, so all seven "format_version": 5 bodies on that page are generated rather than typed.

I checked the other stated versions against their constants while I was there — lint 1, suggest 2, plan 5 — and every one in the docs is right, including the 1 and the 2 that look like stale 5s at a glance.

The genuinely unpinned report contract is progress. pkg/progress is the only one of the four with no docs_test.go, and docs/progress-report.md:19 carries the identical "The current version is 3" sentence that plan and suggest each pin with their own TestDocStatesCurrentFormatVersion. That is the four-line ratchet I should have pointed at. The other two items in that finding — the eight-command list in SAFETY.md, and DefaultRetryPolicy's 3 / 100 ms / 1 s, both of which this PR is correcting by hand — still stand as written.

Finding 1 is unchanged, and the merge put a new paragraph on top of it

Neither side touched the two rows, so the Exit inventory row 3a still reads "Lock not granted within lock_timeout", and the orchestrator row at :258 still says "Transient — retry off-peak, same plan" with no mention that the engine already retried. What the merge added is #109's new framing paragraph immediately above that table, which renames the first column to Case and carefully separates case numbers from process exit codes. The result is a freshly-written orientation paragraph sitting directly on top of a row that describes a single attempt, on the page this PR exists to correct — which makes the two-word fix (…within lock_timeout on any attempt) more worth taking here, not less.


Approving again on 9fe9f549. The merge is mechanically clean, the docs guards pass over the merged tables, and every correction I verified in the first pass still holds on the new head. Nothing here blocks: the set-equality pin is the one I would take before merge, since this PR's own diff is the evidence for it.

This review was generated by Claude Code (claude-opus-5).

@aparajon aparajon left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

🤖 Re-approving on 9fe9f549. The delta is a pure auto-merge of main — the mechanically reproduced merge tree is byte-identical to the commit's — and the docs guards pass over the merged tables. Findings are in the delta re-review above; the one I would take before merge is the set-equality pin, whose bidirectional twin now sits twelve lines away in the same file.

This stamp was left by Claude Code (claude-opus-5).

The refusal-class map and the class and owner tables were checked only for
missing rows, so a row for a value the contract does not carry would have
gone unnoticed. Each is now compared with its constant set as a whole, sharing
one table reader so the checks in this file take the same shape.

docs/progress-report.md states a current format_version that no test kept
honest; it now has the same pin as the plan and suggest reports.

Amp-Thread-ID: https://ampcode.com/threads/T-01a07fb2-9632-732b-bd7b-2f143a81bc06
@Kiran01bm

Copy link
Copy Markdown
Collaborator Author

🤖 Adversarial review response — created by Kiran's code review agent (Amp, Claude) — block/pg-sprite pull/111, follow-up commit

All four findings from the first pass, as reshaped by the delta re-review, are fixed: two landed in the already-pushed 7683d0b, the remaining pins and the progress version ratchet land in the follow-up commit; the PR body's cross-PR sentence is being edited; the two hand-maintained lists the re-review still names stay out of this docs PR.

# Finding Status Explanation
1 C1-F1, C3docs/optimistic-attempt.md Exit inventory row 3a and the orchestrator lock-budget row describe a single attempt, so an operator re-runs by hand what the engine just retried Fixed (in 7683d0b) Row 3a now reads "Lock not granted within lock_timeout on any attempt"; the lock-budget row reads "Transient — the engine's own bounded retries are already exhausted; retry off-peak, same plan".
2 C1-F2, C3 — the PR body's cross-PR overlap note under-counts the shared files and predicts a merge that is now 9fe9f549 in this branch's history Fixed The sentence is replaced in the PR description: the exit-code ladder PR has since merged and this branch merged main, so the five files both PRs touched are already reconciled here. No code change.
3 C1-F3, C3 — the refusal-reason pin runs one way (assert.Contains per reason), so a doc row for a value the binary no longer emits passes; widened by the re-review to all three one-way pins in pkg/verdict/docs_test.go Fixed TestDocListsEveryRefusalReason became a set comparison in 7683d0b; the follow-up commit does the same for TestRefusalClassesDocListsEveryRefusalReason and TestRefusalClassesDocListsEveryClassAndOwner, so all four pins in the file assert.Equal documented set against verdict.Reasons() / Classes() / Owners(). They share one table reader (documentedTokens) that rejects a first cell that is not a backticked token, so a mistyped row fails instead of counting as an unknown value. Mutation-checked both ways: a re-inserted create-name-mismatch row is reported as extra; a deleted backend-unavailable row, a deleted provisioning owner row, and a renamed unsupported-partitioned-parent cause heading are each reported as missing; deleting one of several unsupported-statement site rows still passes because the reason stays classified.
4 C1-F4, C3docs/progress-report.md states "The current version is 3" with no pin, unlike plan and suggest Fixed The follow-up commit adds pkg/progress/docs_test.go with the same TestDocStatesCurrentFormatVersion shape the plan and suggest reports carry, asserting the page states progress.FormatVersion; changing the doc's 3 to 4 fails it.
5 C1-F4 — pin format_version 5 No action Withdrawn by the re-review: already pinned by pkg/plan/docs_test.go and by internal/cli/docs_test.go generating every embedded example on docs/cli-output-examples.md.
6 C1-F4, C3 — pin the eight-command list in SAFETY.md and DefaultRetryPolicy's 3 / 100 ms / 1 s Rejected Both fit the AST-read pattern the exit-code ladder pin uses, but each is a new test reaching into a package this docs PR does not otherwise touch; this PR corrects the two passages by hand and leaves the ratchets for a change of their own.
7 C2 — a "library-only primitives" table in docs/schemabot-integration.md Rejected Agreed as the right home once there is more than one member; today ExecuteAcceptedBlocking is the only one and the README list carries it.
8 C1, C3 — the thirteen corrections verified against the code; the merge to 9fe9f549 reproduced as a byte-identical auto-merge; lint 1, suggest 2, plan 5 confirmed against their constants No action Verified correct by the review; unchanged.

Source: block/pg-sprite#111, review comments 5644388162 and 5644388493 and 5652294015 and reviews 5185711002 and 5190262735 at head 9fe9f549; fixes in the follow-up commit

@Kiran01bm
Kiran01bm enabled auto-merge (squash) September 13, 2026 22:58
@Kiran01bm
Kiran01bm merged commit aedf606 into main Sep 13, 2026
16 checks passed
@Kiran01bm
Kiran01bm deleted the kiran01bm/docs-refresh-sept branch September 13, 2026 23:02
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