Skip to content

Rounds 2 and 3 of the roadmap: feature/round-2 into main - #11

Merged
darko-mijic merged 175 commits into
mainfrom
feature/round-2
Oct 10, 2026
Merged

darko-mijic merged 175 commits into
mainfrom
feature/round-2

Conversation

@darko-mijic

@darko-mijic darko-mijic commented Oct 3, 2026 •

Copy link
Copy Markdown
Contributor

Rounds 2 and 3 of the roadmap, the tooling unit and sitting two: everything on feature/round-2 since main at 592f1dc, for the owner's review and merge. design/STATE.md ("Where the work stands") has what each unit showed, at the tier named. design/ROADMAP.md has what comes next.

What the branch holds, by unit

  • Round 2 (2026-10-02 to 03): the S3 measurement (six cost targets and the contention run), S4 on paper (generations, rebuild, write pause, operator entries, audit, tenancy), CancelOrder and release, Probe 6 (the migrations component is not used by the rebuild) and Probe 7 (scheduler, restore, scheduled arguments), the gate with its audit record and operator entries, the stock item ID bound, and a review with its fold-in.
  • The tooling unit: design only. The hosted-tier design and data, plus the hosted project and its dev/hosted deployment.
  • Round 3, unit 3b: the online rebuild of the order summary, with thirteen functions per composition. Every read model is installed through its first rebuild, the parent list pages across a switch, and Sc L2-5 passes at the native backend tier.
  • Sitting two: sixteen owner rows ruled, the language in CONTEXT.md, and the Apache-2.0 LICENSE.
  • The close of round 3, the rest of the mini roadmap:
    • 4f, the language in the code: the refusal field entry; the tier names compiled, pure test, convex-test and native backend; the harness's backup archive names.
    • The hosted tier, built from design-hosted-tier.md section 7: redaction, the record's target, hostedTarget, the selection kinds, npm run test:hosted and .github/workflows/hosted.yml. It has never run against a hosted deployment.
    • 4c, the history view on paper, with a pure determinism test of its fold.
    • 4a, command audit at step 10 and the diagnostic. There is one line per execution and a gap line when the sink fails. Sc ALL-1 passes at the native backend tier.
    • 4d, the receipts sweep, one tenant per run, bounded by rows and bytes.

Proof

CI runs on the push. On the integrated head (e97db90): npm test passed 1,029; the whole tier had 1,178 passed, 2 failed and 5 skipped. The two failures were Probe 4's 1 s timeouts under a load average of 10, and both passed alone. Acceptance had 34 passed and 4 missing: two L2-6 examples, L2-7 and L2-8, which have no verifier yet. After the fold-in: npm test passed 1,046, and the Sc ALL-1 verifiers and touched native files passed. CI's first push of the close failed one file, Probe 4's nested example, which hit its 1 s execution limit. An earlier push had also failed Sc L2-5 intermittently, because interruptGeneration lost every OCC retry to the rebuild's own batches. Both are fixed: Probe 4's documents hold an ASCII string in place of bytes, and the interrupt now touches only the generation row, with interruptedFence. CI on 131b48a passed: 175 files, 174 passed and 1 skipped; 1,201 tests passed; acceptance 34 passed, 0 failed, 4 missing, "run passed · tree clean".

The close ran one behavior review (gpt-6-astra at xhigh, 17 mutations, 14 caught) and four line reads (gpt-6.1-sol). An Opus agent read the GPT-written code. Forty-three findings were ruled and folded in, and sol read the fold-in. The defects that mattered were found twice, independently, by reviewers from both families: two gaps where a deploy key could leak through an error's name or an AggregateError, and the sweep's missing byte bound. All three are fixed, with tests.

What waits for the owner

  • Review and merge this pull request.
  • The doc's two hunks from sitting two: git apply ~/dev-libar-supporting-context/calibration/application-platform-sitting-two/patch-doc-sitting-two.diff. Only the owner edits the doc.
  • After the merge, the hosted tier's first runs. First from your machine with npm run test:hosted, then the scheduled workflow on main. The hosted environment admits only main.
  • The dashboard check: delete clean-capybara-16, the unused production deployment, if nothing uses it.
  • The untracked tmp-convex-findings.txt in the main tree makes every local run record "not clean" until it is moved.

Not in this branch

The history view's build (5d), baselines and migration (5a), restore (5b), the adopter-facing cut (5c), ready on any Spec (4e, the owner's), and Layers 3 to 6.

Review repair (2026-10-10)

A review of the four open pull requests on 2026-10-10 found one contract break on this branch. The receipt sweep, sweep in src/command/receipts.ts and sweepNext through it, deleted expired receipts without reading the maintenance gate, so a write pause and the restore door did not hold it, while spec:application.write-pause promises that every writer in a scope reads the gate inside its own mutation, names the mutations that skip the read with the sweep among none of them, and says the restore door keeps every writer out. The Spec side was right. sweep now calls assertWritable for the scopes all and the tenant's after its argument check and before its first receipt read, the restore door read first, so a closed scope refuses the run with the transient writePaused and deletes nothing, and sweepNext inherits the read after its tenant-list read. The three Specs that describe the sweep, spec:application.write-pause, spec:command.receipt-table and spec:command.idempotency-and-receipts, and the gate's header comment changed in the same commit. Proof by tier: convex-test, six new tests in tests/simulator/receipts-sweep.test.ts on both compositions, where a closed all refuses both entries and the receipts remain, a closed tenant refuses that tenant while another tenant sweeps, MAINTENANCE_MODE=restore refuses with write paused for all: restore and deletes nothing, and the same call deletes after resumeGate or once the variable is cleared, with exactly those six failing when the gate read is taken out; native backend, one test in tests/native/gate.test.ts where the restore door refuses internal.receipts.sweep on a running backend and the same call deletes after the variable is cleared; the compiled and pure tiers are unchanged and pass, and CI's native job runs on the push. Drift repair, not a decision: no register row. The commit is bb82f33, "fix(receipts): the sweep reads the gate before it deletes"; design/STATE.md records it, with its measured block re-measured there. A gpt-6.1-sol read of the repair (job-mv27ccog-b3a71a66) found the typeScopeKey entry of spec:application.write-pause still naming the builders of a scope without the sweep, which builds its tenant scope through tenantScope; 44a89c1 adds it, with the digest re-measured.

🤖 Generated with Claude Code

darko-mijic and others added 30 commits October 2, 2026 22:48
The latest release, 0.3.6, has the peer range convex ^1.42.0 and
convex-helpers ^0.1.115, which admit the pinned convex 1.46.0 and
convex-helpers 0.1.124.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ed targets and the local reading of Sc L2-9 at their Specs

Each ruled fork carries its answer and the owner's words it rests on; the licence fork says it is not ruled.
The Specs stop calling 100 lines provisional: it is the bound PlaceOrder's declaration carries, the example's
promise and no platform limit, and the open questions on OQ3 close. The first experiment states its latency,
throughput and contention targets for the pinned local backend. Sc L2-9 reads as the local observation on the
production composition, its concurrency half is the contention run, and no Spec claims hosted parity.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ts and the reading of Sc L2-9

The latency sample counts operations, the speed targets are set for the local backend rather than said to hold,
the contention shape admits engine failures, the mapping risk and the bound's ceilings say no more than the ruling,
and the multi-document gap keeps only its size budget open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…lean as the ruling

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The order decider gains cancel and OrderCancelled, refusing an order with
no event (orderNotFound) and a cancelled one (orderAlreadyCancelled). The
stock item decider gains release and AllocationReleased over its two
totals, refusing a release above the quantity allocated
(insufficientAllocation). Orders gains the cancel operation, Inventory the
release operation, and the parent the CancelOrder use case, which calls
Orders first and releases the lines Orders returned in the same mutation.
The order DTO admits cancelled, so the order summary row CancelOrder
writes says cancelled. Generated component files of the production
composition from a fresh codegen.

Spec: the example domain's model carries every name, shape, code and
message, and owns an example space with six examples, each bound to a
native test on the production composition; pure decider tests with the
fold and rebuild, pure executor tests and convex-test tests beside them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ator entry on paper

A read model is installed through its first rebuild, declares its projection
versions as a list, and keeps batch progress on a row no command reads. The
rebuild's lifecycle is pinned with every transition and who makes it. The gate,
the audit records and the one operator entry contract are pinned for the
builds that follow.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…th the owner's words

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the engine's retry count, the deployed tables checked, the record type spelled out

The table a conflict named now carries the component that holds it, and each request's refused
executions are checked against the engine's own retry count. Rows left behind are reported as
not deployed only while the composition's schemas declare no such table. The Measurement record
type in the first-experiment Spec names the shapes of the latency and throughput readings, the
paths and the caller answers the code writes. The unrelated-stock tests say which tenant layout
they run, and the timing command keeps a backend binary the caller exported.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…t Specs in the corpus form

The no-job assertions of the order summary and the three order sizes keep their function-log
window and add the read of _scheduled_functions in the parent and both contexts, taken once after
the commands, so that place() makes no extra read. Each of the five example Specs changes only its
clause about a delayed job.

F18 to F20 and their examples take the form of the earlier facts and probes: the status line, a
narrative paragraph, an outcome per fact and per example, and step texts that read as sentences.
F19 states the range of times seen under load and asserts none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… ledger

A read of the Spec text for what would make a test and a build disagree. Each
fix follows the text the designer decided: the progress row gets its update
time at insertion, the batch that ends a pass records its counts, an empty
tenant list still reads the gate, a purged generation drops its retirement
fields, the history batch replaces steps 4 and 5, the restore's exemption names
the progress rows `resumeChain` writes, a closed entry reopens only at its
generation's switch or abort, and the stale sentences on the first activation,
the tenant iteration and the audit tenant rule follow the text. The ledger
records what the text closes and what the build must still show.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Tests: the cancel keeps placedAt on the order and its summary row, at the
native and convex-test tiers; a caller without orders.cancel is refused
for an order never placed too, which shows the check comes before Orders
decides; the order DTO's validator admits cancelled; the order rebuild is
compared with a state written out. Each fails with its rule removed.

Spec: a decider returns a rejection and its context's adapter throws it;
quantities and prices are safe whole numbers; stockLimitExceeded is named;
the call order and the quantities' source are shown at the pure tier, not
by the native examples; decidedBy D3 and D6. README: the corpus and the
application package counts, the E-46 row's maximum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…aceOrder

The first experiment's Spec keeps the measurement record type, the capture
bullets and the timing command of the measurement, and the largest order,
the dataset sizes, the contention shape and the speed targets as the
rulings on the forks wrote them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… in the example domain

The corpus count, the expected check line and the package rows of the
design README are recomputed from the merged tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The restore's run record keeps who finished it. A restore drives the progress
rows of generations in building and verifying only, and resumeGeneration
continues a started purge from its progress row. In the backfill mode a null
candidate deletes a row only when the row is older, so the version compare has
no exception. The Layer 3 repair operations run under the established human or
service actor that holds the tenant grant. The progress row's field is pass. The
restore's read-model check without a compare mode enters the ledger as open.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…dgets and page byte checks

The largest order's verification bullet keeps both lanes' changes: the
maximum of 100 lines and the read of the scheduled functions table. The
corpus count, the expected check line and the foundation row are
recomputed from the merged tree.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…argest order and the documents a command reads

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…re read, the contention example in its pack, the refused execution's record, the fourth cost target's count, a page's byte reading and the settled OQ3 row

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…cution time the log reports, not the engine's cap

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…rite pause, operators, audit and tenancy on paper

The two read-model examples keep the first rebuild as their setup and the
read of the scheduled functions table; the application pack keeps its
recomputed count with the registry examples' new wording.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…irst rebuild

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic and others added 23 commits October 3, 2026 10:02
Step 9 and readModelWrites call applyHistoryProjection once per command for
each bound history read model with the entries' events and no version, and
check the row count after that call; a history row counts once in the
limit and in readModelRows. ReadModelBinding accepts a HistoryProjection,
and binding once per source applies to history projections only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… versions is empty

fnDiagnosticLine places versionsOmitted on every line that measures more than
limitDiagnosticBytes, counted in the fit; the code left it out when no entry
was cut, which the pure proof refused.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
tests/hosted/hosted-examples.test.ts binds the four hosted examples and runs them
in order: Probe 7's retention reads the planting records and the parent's
scheduler rows before anything is deployed or imported, then deploys the copy and
plants; Probe 7's replacement in place exports, changes and imports on that copy
with the run's own labels, counts the import in the planting records and lets
every kept schedule finish; the production composition is deployed and places an
order through an ordinary client; Probe 3 deploys the copy again and reads the
usage around three sets of calls. Written and type-checked; no hosted deployment
was contacted.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
npm run test:hosted runs vitest.hosted.config.ts, whose one project, hosted, runs
the driver with the hosted run's global setup; the root configuration includes
none of it. .github/workflows/hosted.yml runs on dispatch and at 03:00 UTC on
Monday and Thursday in the environment hosted, one run at a time, gives the key
only to the steps that need it, masks its forms, and prints the captured log and
uploads the record as hosted-evidence only after the record check finds no form.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	design/README.md
#	design/specs/platform/acceptance-contract.sdp.md
#	design/specs/platform/native-harness.sdp.md
The acceptance contract takes the ruled pass of the first experiment, the
README counts twenty-four rows, restore records the enumeration of a stream
awaiting a baseline as an open question and inventories it, a parent query
relays writePaused unchanged, entry names every kind of entry, the
aggregate form joins ReadModelBinding, the f19 ID is corrected, the tier and
work words are fixed, and "backup archive" names the exported artifact.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The receipt sweep refuses a now later than the mutation's time, reads
through boundedPage with list's byte bound so a run ends at 1,000 rows or
8 MiB, deletes what it read without the dead classification, and checks
now and limit first in sweepNext too; both are exported through the
command index, and the receipt Specs name fnSweepNext and the byte bound.
convex-test cases show each refusal and the early end.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The versions cut of a diagnostic line finds its longest fitting prefix by a
binary search, which a pure test at 1,000 versions holds equal to the
linear search; a sink that returns a thenable has its record counted as
lost by one gap line and its rejection handled, as fnEmitDiagnostic now
says. The pure fit test fails a build that leaves versionsOmitted out, a
convex-test case shows a skipped generation left out of readModelRows, and
the support helper, its virtual modules, a title and a comment say what
they are.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The history fold's pure test folds every interleaving in every one of the
32 contiguous splits, replaces an allocation on a second StockAllocated
from the same stock item, and leaves a prior row unchanged under events it
does not name. The Sc ALL-1 verifiers share BaselineOperationsWorld, and
the control command runs in the after step of its own; both pass on the
native backend.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
redactError redacts an error's name as its message and finds a key in a
cause or in an AggregateError's errors, walked to the same bounded depth;
pure tests plant a key in each. The hosted pure test asserts that the
socket client the admin access builds gets the redacting logger and that a
socket log line carrying the planted key comes out redacted. A pure test
runs scripts/acceptance.mjs on a temporary corpus and asserts exit 1 for a
record that fails a scenario and 0 for one that fails none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The hosted in-place example says the five states are planted before the
export and read after the import from an archive with no scheduler table,
and that the restored pending reference is cancelled; its test compares
the documents and the scheduler rows of every scope the copy mounts, a
fixed list. Probe 3 asserts the documents each call read, the usage
settles against a 300 s deadline, and the retention example checks each
age against the reading's time. The five hosted examples join the
foundation pack, the README states 237 Specs, and the harness Spec names
the deploy key on a hosted deployment, allows a same-run before and after
comparison, and says where the hosted examples run.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ve holds

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ting for the first hosted run, the restore finding's note

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
redactError replaces an error with a redacted stub when its walk reaches
the depth bound with something left to read, and walks the values of a
plain object as it walks a cause and nested errors; a pure test covers
each path. The sweep's byte-bound test states 8 MiB as a literal, and the
acceptance script test takes 60 s, which two graph builds need under load.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
STATE.md describes the branch at its close: round 3's mini roadmap done
but for the hosted tier's first runs, which are the owner's after the
merge; the one pull request into main; what each lane, the integration,
the review, the fold-in and its read showed; the code as it is; decision
42 amended and 52 added; the owner queue and the leads brought to the
present, with CI's failure at d2a8d1b recorded. ROADMAP.md marks 4a, 4c,
4d and 4f done and the hosted tier built.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The blobs payload is an ASCII string, not bytes: convex/values converts
bytes to base64 in JavaScript, which took the combined write 0.44 s of
its 1 s budget unloaded. The string takes 0.065 s at the same document
size and still fails on the bytes-written limit. The test measures the
combined write's execution time from the function log.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
interruptGeneration reads and writes the generation row alone: it
refuses verified, active and purged, bumps the fence and records who
and when. The batch one fence below, the pending batch of the chain the
interrupt replaced, records the interruption on the progress row with
the operator from changedBy and schedules nothing, so an interrupt
conflicts with a batch only through the generation row. CI at d2a8d1b
showed the interrupt losing every rerun to back-to-back checkpoints.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The generation row gains interruptedFence, which interruptGeneration
sets to the new fence and every other fence bump leaves. A stale batch
records the interruption on the progress row only while interruptedFence
equals the fence and the row does not already hold the note, so a batch
pending across an interrupt and a resume writes nothing and one pending
across two interrupts records the second once. Codegen leaves both
compositions' generated files unchanged. STATE.md closes the L2-5 half
of Leads 43.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… writes no read-model row

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 3, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 416 files, which is 316 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 05ebb8b5-8401-4274-b3e2-7416a1c3d81f

📥 Commits

Reviewing files that changed from the base of the PR and between 592f1dc and 44a89c1.


⛔ Files ignored due to path filters (9)
  • example/convex/_generated/api.d.ts is excluded by !**/_generated/**
  • example/convex/inventory/_generated/component.ts is excluded by !**/_generated/**
  • example/convex/orders/_generated/component.ts is excluded by !**/_generated/**
  • fixture/convex/_generated/api.d.ts is excluded by !**/_generated/**
  • fixture/convex/annex/_generated/api.ts is excluded by !**/_generated/**
  • fixture/convex/annex/_generated/component.ts is excluded by !**/_generated/**
  • fixture/convex/depot/_generated/api.ts is excluded by !**/_generated/**
  • fixture/convex/depot/_generated/component.ts is excluded by !**/_generated/**
  • package-lock.json is excluded by !**/package-lock.json

📒 Files selected for processing (416)
  • .github/workflows/hosted.yml
  • AGENTS.md
  • CONTEXT.md
  • LICENSE
  • README.md
  • design/PLAN.md
  • design/README.md
  • design/ROADMAP.md
  • design/SESSIONS.md
  • design/STATE.md
  • design/advisors/README.md
  • design/decisions/forks/OD-025.md
  • design/decisions/forks/OD-046.md
  • design/decisions/forks/OD-047.md
  • design/decisions/forks/OD-048.md
  • design/decisions/forks/OD-064.md
  • design/decisions/forks/OD-068.md
  • design/decisions/forks/OD-069.md
  • design/decisions/forks/OD-123.md
  • design/decisions/forks/OD-148.md
  • design/decisions/forks/OD-150.md
  • design/decisions/forks/OD-151.md
  • design/decisions/forks/OD-152.md
  • design/decisions/forks/OD-153.md
  • design/decisions/register.json
  • design/reviews/consensus-ledger.json
  • design/specs/advanced/coalesced-recomputation.source-changes-during-recompute.sdp.md
  • design/specs/advanced/cross-stream-online-rebuild.backfill-races-live-writes.sdp.md
  • design/specs/advanced/ordered-consumer.duplicate-out-of-order-applied-once.sdp.md
  • design/specs/advanced/ordered-consumer.partition-failure-isolated.sdp.md
  • design/specs/advanced/ordered-consumer.sdp.md
  • design/specs/agents/agent-runs.budget-exceeded-blocks-execution.sdp.md
  • design/specs/agents/agent-runs.changed-input-voids-approval.sdp.md
  • design/specs/agents/agent-runs.unauthorized-proposal-rejected.sdp.md
  • design/specs/agents/agent-runs.untrusted-input-cannot-widen.sdp.md
  • design/specs/agents/budget-accounting.timed-out-paid-call-settles-once.sdp.md
  • design/specs/application.pack.sdp.md
  • design/specs/application/first-experiment.native-acceptance-production-configuration.sdp.md
  • design/specs/application/first-experiment.native-contention.sdp.md
  • design/specs/application/first-experiment.order-at-stock-item-id-bound.sdp.md
  • design/specs/application/first-experiment.order-of-1-line.sdp.md
  • design/specs/application/first-experiment.order-of-10-lines.sdp.md
  • design/specs/application/first-experiment.order-of-max-lines.sdp.md
  • design/specs/application/first-experiment.receive-stock-item-id-past-bound-refused.sdp.md
  • design/specs/application/first-experiment.sdp.md
  • design/specs/application/first-experiment.stock-item-id-past-bound-refused.sdp.md
  • design/specs/application/generation-registry.command-without-generation-fails.sdp.md
  • design/specs/application/generation-registry.first-activation-makes-read-model-writable.sdp.md
  • design/specs/application/generation-registry.first-rebuild-installs-read-model.sdp.md
  • design/specs/application/generation-registry.sdp.md
  • design/specs/application/orders-inventory-example.cancel-duplicate-answered-from-receipt.sdp.md
  • design/specs/application/orders-inventory-example.cancel-placed-order.sdp.md
  • design/specs/application/orders-inventory-example.cancel-second-context-rejects.sdp.md
  • design/specs/application/orders-inventory-example.cancel-twice-rejected.sdp.md
  • design/specs/application/orders-inventory-example.cancel-unknown-order-rejected.sdp.md
  • design/specs/application/orders-inventory-example.cancel-without-grant-refused.sdp.md
  • design/specs/application/orders-inventory-example.sdp.md
  • design/specs/application/parent-use-cases.sdp.md
  • design/specs/application/parent-use-cases.second-context-rejects.sdp.md
  • design/specs/application/parent-use-cases.second-context-throws.sdp.md
  • design/specs/application/projection-contract.sdp.md
  • design/specs/application/read-models.committed-state-read-through-query.sdp.md
  • design/specs/application/read-models.committed-state-visible.sdp.md
  • design/specs/application/read-models.list-pages-by-cursor.sdp.md
  • design/specs/application/read-models.query-refused-before-disclosure.sdp.md
  • design/specs/application/read-models.query-refused-without-grant.sdp.md
  • design/specs/application/read-models.sdp.md
  • design/specs/application/rebuild.online-rebuild-interrupt-resume.sdp.md
  • design/specs/application/rebuild.sdp.md
  • design/specs/application/rebuild.write-pause-rebuild-abort.sdp.md
  • design/specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md
  • design/specs/application/restore.restore-representative-dataset.sdp.md
  • design/specs/application/restore.sdp.md
  • design/specs/application/write-pause.restore-door-without-deploy.sdp.md
  • design/specs/application/write-pause.sdp.md
  • design/specs/command-pipeline.pack.sdp.md
  • design/specs/command/actor-and-scope.sdp.md
  • design/specs/command/command-declaration.broken-argument-contract-fails-build.sdp.md
  • design/specs/command/command-declaration.renamed-handler-fails-build.sdp.md
  • design/specs/command/command-declaration.sdp.md
  • design/specs/command/command-pipeline.failure-after-journal-append.sdp.md
  • design/specs/command/command-pipeline.failure-after-state-write.sdp.md
  • design/specs/command/command-pipeline.failure-before-receipt.sdp.md
  • design/specs/command/command-pipeline.sdp.md
  • design/specs/command/idempotency-and-receipts.capacity-refusal-then-retry.sdp.md
  • design/specs/command/idempotency-and-receipts.concurrent-non-ui-calls.sdp.md
  • design/specs/command/idempotency-and-receipts.key-reuse-changed-input.sdp.md
  • design/specs/command/idempotency-and-receipts.rate-refusal-then-retry.sdp.md
  • design/specs/command/idempotency-and-receipts.retry-after-lost-response.sdp.md
  • design/specs/command/idempotency-and-receipts.sdp.md
  • design/specs/command/idempotency-and-receipts.ui-double-submit.sdp.md
  • design/specs/command/outcome-boundary.rejected-then-retried-after-change.sdp.md
  • design/specs/command/outcome-boundary.sdp.md
  • design/specs/command/receipt-table.sdp.md
  • design/specs/command/tenancy-and-authority.client-claims-agent-namespace.sdp.md
  • design/specs/command/tenancy-and-authority.client-claims-system-namespace.sdp.md
  • design/specs/command/tenancy-and-authority.revoked-then-retried.sdp.md
  • design/specs/command/tenancy-and-authority.same-key-two-tenants.sdp.md
  • design/specs/command/tenancy-and-authority.sdp.md
  • design/specs/command/tenancy-and-authority.shared-key-two-subjects.sdp.md
  • design/specs/constraints/bulk-operations-bounded.sdp.md
  • design/specs/constraints/one-public-execution-per-intent.sdp.md
  • design/specs/context/batch-shaped-api.sdp.md
  • design/specs/context/context-component.competing-commands.sdp.md
  • design/specs/context/context-component.competing-unique-value.sdp.md
  • design/specs/context/context-component.invalid-transition.sdp.md
  • design/specs/context/context-component.sdp.md
  • design/specs/context/context-component.stale-version-rejected.sdp.md
  • design/specs/context/journal.rebuild-from-baseline.sdp.md
  • design/specs/context/journal.sdp.md
  • design/specs/context/persistence-adapter.sdp.md
  • design/specs/context/queries.sdp.md
  • design/specs/decisions/d02-context-owns-state-and-journal.sdp.md
  • design/specs/decisions/d03-events-only-source-of-next-state.sdp.md
  • design/specs/decisions/d04-four-outcomes.sdp.md
  • design/specs/decisions/d09-rebuild-online-by-default.sdp.md
  • design/specs/decisions/d10-contexts-meet-in-parent-use-cases.sdp.md
  • design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md
  • design/specs/decisions/d19-operations-travel-with-capability.sdp.md
  • design/specs/effects/external-effects.provider-success-reply-lost.sdp.md
  • design/specs/effects/external-effects.stale-worker-after-cancellation.sdp.md
  • design/specs/effects/external-effects.stale-worker-late-evidence.sdp.md
  • design/specs/facts/f01-serializable-mutations-under-occ.sdp.md
  • design/specs/facts/f04-nested-calls-cost-more-than-helpers.probe-3-component-call-from-mutation.sdp.md
  • design/specs/facts/f04-nested-calls-cost-more-than-helpers.probe-3-component-call-from-query.sdp.md
  • design/specs/facts/f04-nested-calls-cost-more-than-helpers.probe-3-hosted-function-calls.sdp.md
  • design/specs/facts/f05-react-client-retries-until-confirmed.probe-1-backend-restart-with-pending-mutation.sdp.md
  • design/specs/facts/f05-react-client-retries-until-confirmed.probe-1-client-closed-with-pending-mutation.sdp.md
  • design/specs/facts/f05-react-client-retries-until-confirmed.probe-1-http-client-retry.sdp.md
  • design/specs/facts/f12-backups-exclude-pending-scheduled-functions.probe-7-fresh-import.sdp.md
  • design/specs/facts/f12-backups-exclude-pending-scheduled-functions.probe-7-hosted-in-place-import.sdp.md
  • design/specs/facts/f12-backups-exclude-pending-scheduled-functions.probe-7-in-place-import.sdp.md
  • design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md
  • design/specs/facts/f13-transactions-have-limits.probe-4-component-call-shares-limits.sdp.md
  • design/specs/facts/f13-transactions-have-limits.probe-4-nested-call-shares-limits.sdp.md
  • design/specs/facts/f13-transactions-have-limits.probe-4-nesting-depth.sdp.md
  • design/specs/facts/f13-transactions-have-limits.probe-7-arguments.sdp.md
  • design/specs/facts/f13-transactions-have-limits.sdp.md
  • design/specs/facts/f14-convex-error-survives-nested-and-component-boundary.probe-2-component-boundary.sdp.md
  • design/specs/facts/f14-convex-error-survives-nested-and-component-boundary.probe-2-nested-mutation.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-built-in-paginate-throws-in-component.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-full-first-page-not-split.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-full-first-page-split-at-equal-cap.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-hook-splits-across-boundary.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-pages-stay-contiguous.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-parent-page-outgrows-row-cap.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-split-required-relayed.sdp.md
  • design/specs/facts/f15-parent-query-over-component-query-stays-reactive.probe-5-subscription-updates.sdp.md
  • design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.probe-7-hosted-retention.sdp.md
  • design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.probe-7-scan.sdp.md
  • design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.probe-7-states.sdp.md
  • design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md
  • design/specs/facts/f17-migrations-fits-generation-backfill.probe-6-batch-races-command.sdp.md
  • design/specs/facts/f17-migrations-fits-generation-backfill.probe-6-context-batch-cursor.sdp.md
  • design/specs/facts/f17-migrations-fits-generation-backfill.probe-6-context-enumeration.sdp.md
  • design/specs/facts/f17-migrations-fits-generation-backfill.probe-6-interruption-and-resume.sdp.md
  • design/specs/facts/f17-migrations-fits-generation-backfill.probe-6-operator-cancel.sdp.md
  • design/specs/facts/f17-migrations-fits-generation-backfill.probe-6-transaction-failure.sdp.md
  • design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md
  • design/specs/facts/f18-commit-timestamps.probe-8-parent-and-components.sdp.md
  • design/specs/facts/f18-commit-timestamps.sdp.md
  • design/specs/facts/f19-nested-calls-share-time-budgets.probe-11-component-calls.sdp.md
  • design/specs/facts/f19-nested-calls-share-time-budgets.probe-9-nested-time.sdp.md
  • design/specs/facts/f19-nested-calls-share-time-budgets.sdp.md
  • design/specs/facts/f20-pagination-checks-bytes-after-reading.probe-10-oversized-row.sdp.md
  • design/specs/facts/f20-pagination-checks-bytes-after-reading.probe-10-stream-budget.sdp.md
  • design/specs/facts/f20-pagination-checks-bytes-after-reading.sdp.md
  • design/specs/facts/fact-ledger.sdp.md
  • design/specs/facts/probe-plan.sdp.md
  • design/specs/foundation.pack.sdp.md
  • design/specs/kernel/domain-kernel.evaluate-twice.sdp.md
  • design/specs/kernel/domain-kernel.incremental-then-rebuild.sdp.md
  • design/specs/kernel/domain-kernel.sdp.md
  • design/specs/kernel/outcome-model.sdp.md
  • design/specs/kernel/state-document-mapping.sdp.md
  • design/specs/obligations/do-nothing-check.sdp.md
  • design/specs/obligations/obligation-module.backlog-left-alone.sdp.md
  • design/specs/obligations/obligation-module.dispatch-killed-rearmed.sdp.md
  • design/specs/obligations/obligation-module.duplicate-worker-lost-callback.sdp.md
  • design/specs/obligations/obligation-module.exhausted-needs-attention.sdp.md
  • design/specs/obligations/obligation-module.sdp.md
  • design/specs/obligations/obligation-module.wrapper-failed-rearmed.sdp.md
  • design/specs/obligations/operator-operations.sdp.md
  • design/specs/obligations/retention-and-restore.restore-behind-provider.sdp.md
  • design/specs/obligations/retention-and-restore.retention-keeps-unresolved.sdp.md
  • design/specs/obligations/retention-and-restore.sdp.md
  • design/specs/operations/baseline-operations.broken-audit-aborts.sdp.md
  • design/specs/operations/baseline-operations.broken-metrics-never-abort.sdp.md
  • design/specs/operations/baseline-operations.sdp.md
  • design/specs/platform/acceptance-contract.sdp.md
  • design/specs/platform/native-harness.admin-key-acting-as-identity-reaches-internal-function.sdp.md
  • design/specs/platform/native-harness.fixture-issuer-token-yields-identity.sdp.md
  • design/specs/platform/native-harness.hosted-deployment-accepts-production-composition.sdp.md
  • design/specs/platform/native-harness.ordinary-client-refused-component-function.sdp.md
  • design/specs/platform/native-harness.ordinary-client-refused-internal-function.sdp.md
  • design/specs/platform/native-harness.sdp.md
  • design/specs/platform/native-harness.undeclared-table-survives-another-composition-deploy.sdp.md
  • design/specs/platform/transactional-domain-platform.sdp.md
  • design/specs/platform/vocabulary.sdp.md
  • design/specs/processes/approvals.approval-races.sdp.md
  • design/specs/processes/workflow-processes.deploy-with-process-in-flight.sdp.md
  • design/specs/processes/workflow-processes.restart-after-external-step.sdp.md
  • docs/sdp-feedback.md
  • evidence/README.md
  • example/convex/gate.ts
  • example/convex/inventory/operations.ts
  • example/convex/inventory/streams.ts
  • example/convex/orderSummary.ts
  • example/convex/ordering.ts
  • example/convex/orders/operations.ts
  • example/convex/orders/streams.ts
  • example/convex/readModels.ts
  • example/convex/rebuild.ts
  • example/convex/receipts.ts
  • example/convex/receiving.ts
  • example/convex/schema.ts
  • example/domain/order.ts
  • example/domain/orderAllocationHistory.ts
  • example/domain/stockItem.ts
  • fixture/convex/annex/bytePage.ts
  • fixture/convex/annex/callBudget.ts
  • fixture/convex/annex/limits.ts
  • fixture/convex/annex/scheduledRows.ts
  • fixture/convex/annex/schema.ts
  • fixture/convex/annex/timestamps.ts
  • fixture/convex/bytePage.ts
  • fixture/convex/callBudget.ts
  • fixture/convex/convex.config.ts
  • fixture/convex/depot/convex.config.ts
  • fixture/convex/depot/migrations.ts
  • fixture/convex/depot/schema.ts
  • fixture/convex/depotCommands.ts
  • fixture/convex/documentTitles.ts
  • fixture/convex/gate.ts
  • fixture/convex/limits.ts
  • fixture/convex/migrations.ts
  • fixture/convex/orders.ts
  • fixture/convex/readModels.ts
  • fixture/convex/rebuild.ts
  • fixture/convex/receipts.ts
  • fixture/convex/rejectionCommands.ts
  • fixture/convex/scheduledRows.ts
  • fixture/convex/schema.ts
  • fixture/convex/summaries.ts
  • fixture/convex/summarizedTwice.ts
  • fixture/convex/timestamps.ts
  • harness/acceptance.ts
  • harness/admin.ts
  • harness/backend.ts
  • harness/backup-archive.ts
  • harness/child.ts
  • harness/evidence.ts
  • harness/hosted-run.ts
  • harness/hosted.ts
  • harness/native.ts
  • harness/snapshot.ts
  • harness/watch.ts
  • package.json
  • scripts/hosted-record-check.mjs
  • scripts/measure-place-order.mjs
  • src/audit/index.ts
  • src/audit/tables.ts
  • src/audit/write.ts
  • src/command/actor-and-scope.ts
  • src/command/authority.ts
  • src/command/declaration.ts
  • src/command/index.ts
  • src/command/outcome-boundary.ts
  • src/command/pipeline.ts
  • src/command/receipts.ts
  • src/command/tables.ts
  • src/context/queries.ts
  • src/gate/entries.ts
  • src/gate/gate.ts
  • src/gate/index.ts
  • src/gate/tables.ts
  • src/operations/diagnostic.ts
  • src/operations/index.ts
  • src/read-model/generations.ts
  • src/read-model/index.ts
  • src/read-model/projection.ts
  • src/read-model/queries.ts
  • src/read-model/rebuild.ts
  • src/read-model/tables.ts
  • src/read-model/write.ts
  • tests/hosted/copy.ts
  • tests/hosted/examples.ts
  • tests/hosted/hosted-examples.test.ts
  • tests/hosted/planting.ts
  • tests/native/backup-archive-entries.ts
  • tests/native/backup-archive-replacement.test.ts
  • tests/native/backup-archive-scheduler.ts
  • tests/native/baseline-operations-steps.ts
  • tests/native/baseline-operations.broken-audit-aborts.test.ts
  • tests/native/baseline-operations.broken-metrics-never-abort.test.ts
  • tests/native/call-budget.ts
  • tests/native/cancel-order-steps.ts
  • tests/native/command-pipeline.failure-before-receipt.test.ts
  • tests/native/command-without-grant-forbidden.test.ts
  • tests/native/context-queries.test.ts
  • tests/native/f12-backups-exclude-pending-scheduled-functions.probe-7-fresh-import.test.ts
  • tests/native/f12-backups-exclude-pending-scheduled-functions.probe-7-in-place-import.test.ts
  • tests/native/f13-transactions-have-limits.probe-7-arguments.test.ts
  • tests/native/f16-scheduled-functions-table-shows-failed-runs.probe-7-scan.test.ts
  • tests/native/f16-scheduled-functions-table-shows-failed-runs.probe-7-states.test.ts
  • tests/native/f17-migrations-fits-generation-backfill.probe-6-batch-races-command.test.ts
  • tests/native/f17-migrations-fits-generation-backfill.probe-6-context-batch-cursor.test.ts
  • tests/native/f17-migrations-fits-generation-backfill.probe-6-context-enumeration.test.ts
  • tests/native/f17-migrations-fits-generation-backfill.probe-6-interruption-and-resume.test.ts
  • tests/native/f17-migrations-fits-generation-backfill.probe-6-operator-cancel.test.ts
  • tests/native/f17-migrations-fits-generation-backfill.probe-6-transaction-failure.test.ts
  • tests/native/f18-commit-timestamps.probe-8-parent-and-components.test.ts
  • tests/native/f19-nested-calls-share-time-budgets.probe-11-component-calls.test.ts
  • tests/native/f19-nested-calls-share-time-budgets.probe-9-nested-time.test.ts
  • tests/native/f20-pagination-checks-bytes-after-reading.probe-10-oversized-row.test.ts
  • tests/native/f20-pagination-checks-bytes-after-reading.probe-10-stream-budget.test.ts
  • tests/native/first-experiment-steps.ts
  • tests/native/first-experiment.native-acceptance-production-configuration.test.ts
  • tests/native/first-experiment.order-at-stock-item-id-bound.test.ts
  • tests/native/first-experiment.order-of-max-lines.test.ts
  • tests/native/first-experiment.receive-stock-item-id-past-bound-refused.test.ts
  • tests/native/first-experiment.stock-item-id-past-bound-refused.test.ts
  • tests/native/gate.test.ts
  • tests/native/generation-registry.command-without-generation-fails.test.ts
  • tests/native/generation-registry.first-activation-makes-read-model-writable.test.ts
  • tests/native/generation-registry.first-rebuild-installs-read-model.test.ts
  • tests/native/idempotency-and-receipts.ui-double-submit.test.ts
  • tests/native/migration-state.ts
  • tests/native/migration-steps.ts
  • tests/native/order-read-steps.ts
  • tests/native/order-use-case.ts
  • tests/native/orders-inventory-example.cancel-duplicate-answered-from-receipt.test.ts
  • tests/native/orders-inventory-example.cancel-placed-order.test.ts
  • tests/native/orders-inventory-example.cancel-second-context-rejects.test.ts
  • tests/native/orders-inventory-example.cancel-twice-rejected.test.ts
  • tests/native/orders-inventory-example.cancel-unknown-order-rejected.test.ts
  • tests/native/orders-inventory-example.cancel-without-grant-refused.test.ts
  • tests/native/outcome-boundary.rejected-then-retried-after-change.test.ts
  • tests/native/parent-use-cases.second-context-rejects.test.ts
  • tests/native/place-order-attribution.test.ts
  • tests/native/place-order-attribution.ts
  • tests/native/place-order-contention.test.ts
  • tests/native/place-order-contention.ts
  • tests/native/place-order-measurement.test.ts
  • tests/native/place-order-measurement.ts
  • tests/native/place-order-timing.test.ts
  • tests/native/production-orders.test.ts
  • tests/native/read-models.committed-state-read-through-query.test.ts
  • tests/native/read-models.committed-state-visible.test.ts
  • tests/native/read-models.test.ts
  • tests/native/rebuild-install.ts
  • tests/native/rebuild.online-rebuild-interrupt-resume.test.ts
  • tests/native/receipted-calls.ts
  • tests/native/scheduled-rows.test.ts
  • tests/native/scheduled-rows.ts
  • tests/native/scheduler-cases.ts
  • tests/native/scheduler-composition.ts
  • tests/native/scheduler-functions.ts
  • tests/native/scheduler-restore.ts
  • tests/native/scheduler-scan.test.ts
  • tests/native/shared-limits.ts
  • tests/native/tenancy-and-authority.revoked-then-retried.test.ts
  • tests/native/tenancy-steps.ts
  • tests/native/undeclared-table-survives-another-composition-deploy.test.ts
  • tests/native/write-pause.restore-door-without-deploy.test.ts
  • tests/native/write-pause.test.ts
  • tests/pure/acceptance.test.ts
  • tests/pure/child.test.ts
  • tests/pure/command.test.ts
  • tests/pure/convex-cli.test.ts
  • tests/pure/diagnostic.test.ts
  • tests/pure/evidence.test.ts
  • tests/pure/example-domain.test.ts
  • tests/pure/example-use-cases.test.ts
  • tests/pure/fixture-faults.test.ts
  • tests/pure/gate-handlers.ts
  • tests/pure/gate.test.ts
  • tests/pure/harness-rules.test.ts
  • tests/pure/hosted.test.ts
  • tests/pure/native.test.ts
  • tests/pure/order-allocation-history.test.ts
  • tests/pure/read-model.test.ts
  • tests/pure/rebuild-support.ts
  • tests/pure/rebuild.test.ts
  • tests/pure/rejection-validation.test.ts
  • tests/pure/stock-item-id-bound.test.ts
  • tests/pure/write-pause.test.ts
  • tests/simulator/audit.test.ts
  • tests/simulator/command.test.ts
  • tests/simulator/context-queries.test.ts
  • tests/simulator/diagnostic-context.ts
  • tests/simulator/diagnostic-support.ts
  • tests/simulator/diagnostic.test.ts
  • tests/simulator/envelope-bounds.test.ts
  • tests/simulator/example.test.ts
  • tests/simulator/fixture-faults.test.ts
  • tests/simulator/gate-inspection.ts
  • tests/simulator/gate-pipeline.test.ts
  • tests/simulator/gate-support.ts
  • tests/simulator/gate.test.ts
  • tests/simulator/read-model-page-in-generation.test.ts
  • tests/simulator/read-model.test.ts
  • tests/simulator/rebuild-support.ts
  • tests/simulator/rebuild.test.ts
  • tests/simulator/receipt-disclosure.test.ts
  • tests/simulator/receipts-sweep.test.ts
  • tests/simulator/tenants.test.ts
  • tests/simulator/write-pause.test.ts
  • tests/types/command-declaration.renamed-handler-fails-build.test-d.ts
  • tests/types/gate-audit.test-d.ts
  • tests/types/gate.test-d.ts
  • tests/types/hosted-record.test-d.ts
  • tests/types/rebuild.test-d.ts
  • tests/types/reject-platform-codes.test-d.ts
  • tsconfig.json
  • vitest.hosted.config.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

- The timing command no longer forces the owner's Linux backend binary.
  The harness picks the pinned release for the platform and downloads it
  into .cache/, or takes CONVEX_BACKEND_BINARY when the caller sets it.
- Probe 7's hosted in-place example covers depot/migrations, the
  migrations component the depot mounts. The archive parser reads nested
  _components/<a>/_components/<b>/ paths, the scheduler rows are read in
  that scope, and the binding counts scopes by the key's last slash.
  A throwaway run on a local native backend running the hosted copy
  passed with depot/migrations/migrations compared; the hosted
  deployment has not run it.
- STATE.md takes the corpus digest the check prints, 90b4b34a0c53c54a,
  and says what the review found.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
darko-mijic and others added 2 commits October 10, 2026 11:23
The receipt sweep deleted expired receipts without reading the
maintenance gate, and sweepNext reached it through sweep, while
spec:application.write-pause promises that every writer in a scope
reads the gate inside its own mutation and the restore door keeps
every writer out. The Spec side is right (review of 2026-10-10, F2).

- sweep calls assertWritable after its argument check and before its
  first receipt read, with the scopes "all" and the tenant's and no
  source scope, because it writes no source stream; a closed scope
  refuses the run with writePaused and it deletes nothing. sweepNext
  reads the gate through sweep, after its tenant-list read.
- The write-pause, receipt-table and idempotency-and-receipts Specs
  say so where they describe the gate's callers and the sweep's reads;
  the gate's header comment names the sweep among the callers.
- convex-test, both compositions: a closed deployment and a closed
  tenant refuse sweep and sweepNext with the transient writePaused and
  the receipts remain; the restore door refuses with
  "write paused for all: restore"; the same call deletes after the
  resume or once the variable is cleared. Removing the gate read fails
  all six and no other test.
- Native, tests/native/gate.test.ts: the restore door refuses the
  sweep on a running backend and it deletes nothing, and the same call
  deletes the expired receipt once the variable is cleared.
- STATE.md records the repair and its re-measured corpus digest.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A gpt-6.1-sol read of the review repair (job-mv27ccog-b3a71a66) found
the typeScopeKey entry of spec:application.write-pause still saying a
scope is built only by scopesOfUseCase, startGeneration, the rebuild's
batches, the journal's baseline driver and the operator entries, while
the repaired sweep builds its tenant scope through tenantScope. The
entry now names the receipt sweep among the builders. STATE.md records
the read and its re-measured corpus digest. Code and tests unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@darko-mijic
darko-mijic merged commit a758ba4 into main Oct 10, 2026
3 checks passed
darko-mijic added a commit that referenced this pull request Oct 10, 2026
The three pull requests of the unit are merged or ready: #11 into main
as a758ba4, the Protocol's #28 as 415b095 and #29 as 822aea4, and #12
retargeted to main, merging after this close. The pin is 822aea4
(b5fb659). The third read of the history Specs has run, so the owner's
ready on the history projection waits for nothing else, and the history
rebuild's waits for OD-157 alone; the roadmap's 5d and 4e say so. The
measured block, the corpus digest and the close's gates are re-measured
at the new pin, the native tier included. Two owner-queue rows closed by
the merges are dropped: the three pull requests, and the gen-1 quotes
question that preceded their pushes.

Co-Authored-By: Claude Fable 5.1 <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.

1 participant