Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
8c68e81
build: pin @convex-dev/migrations 0.3.6
darko-mijic Oct 2, 2026
6ca2481
design: the answers in the decision forks; the largest order, the spe…
darko-mijic Oct 2, 2026
17f9972
design: the check's corrections to the largest order, the speed targe…
darko-mijic Oct 2, 2026
3aea615
design: the mapping's risk names no remedy the ruling does not
darko-mijic Oct 2, 2026
6c8f63b
test: measure PlaceOrder cost and native contention
darko-mijic Oct 2, 2026
b17337b
design: the delegated decision on how Sc L2-9 is proven, its checked …
darko-mijic Oct 2, 2026
57d2d09
build: CancelOrder and release in the example domain
darko-mijic Oct 2, 2026
cc00a35
design: generations, the online rebuild, the gate, audit and the oper…
darko-mijic Oct 2, 2026
1129f1c
design: the twelve decisions of the forks recorded as the owner's, wi…
darko-mijic Oct 2, 2026
8e603b7
test: observe native scheduler limits and snapshot replacement
darko-mijic Oct 2, 2026
95fe4e4
Probe commit timestamps, call budgets and page byte thresholds
darko-mijic Oct 2, 2026
a848e22
test: record clean native measurement checks
darko-mijic Oct 2, 2026
0699191
test: prove replacement of later business changes
darko-mijic Oct 2, 2026
b58fe01
test: establish migrations batch and context cursor boundaries
darko-mijic Oct 2, 2026
032bff7
test: read of the measurement: conflict tables with their component, …
darko-mijic Oct 2, 2026
55c7643
test: keep the log window beside the scheduled-function read; the fac…
darko-mijic Oct 2, 2026
c385a37
design: the mechanical read of the generations and gate text, and its…
darko-mijic Oct 2, 2026
6bf8fb7
build: fold in the read of CancelOrder by the other family
darko-mijic Oct 2, 2026
e6a160e
Merge unit/s3-measurement into feature/round-2: the measurement of Pl…
darko-mijic Oct 2, 2026
b181cb0
test: bind scheduler observations to example parameters
darko-mijic Oct 2, 2026
4a76c7f
Merge unit/cancel-order into feature/round-2: CancelOrder and release…
darko-mijic Oct 2, 2026
02e9cd7
design: the main thread's rulings on the check of the generations text
darko-mijic Oct 2, 2026
91a9487
Merge unit/fact-rows into feature/round-2: commit timestamps, call bu…
darko-mijic Oct 2, 2026
b5ba690
design: the gate's audit record names its change by kind
darko-mijic Oct 2, 2026
6407354
design: the measured numbers on the rows of the component call, the l…
darko-mijic Oct 2, 2026
252c5b9
design: the lines the lanes asked of each other's files: how reruns a…
darko-mijic Oct 2, 2026
a781121
test: cover migration cancellation and transaction failure
darko-mijic Oct 2, 2026
23fdd28
build: the largest order's time assertion named as a bound on the exe…
darko-mijic Oct 2, 2026
8b0ecb4
Merge unit/s4-paper into feature/round-2: generations, rebuild, the w…
darko-mijic Oct 2, 2026
0bc5557
design: the first experiment installs the order summary through its f…
darko-mijic Oct 2, 2026
12d3f5b
design: the ledger finding for a current state that is not the fold o…
darko-mijic Oct 2, 2026
1a496d5
test: describe scheduler setup and actions in their bound steps
darko-mijic Oct 2, 2026
665d17c
design: Probe 6's fact and example prose, and the fixture's comments
darko-mijic Oct 2, 2026
68b3804
design: README's sentence on Probe 6 names all its cases
darko-mijic Oct 2, 2026
5813f03
Merge unit/probe-6 into feature/round-2: Probe 6 on the migrations co…
darko-mijic Oct 2, 2026
02e3824
build: the migrations component pinned for the fixture's probe only, …
darko-mijic Oct 2, 2026
47d38b9
design: the rebuild drives every batch with its own self-scheduled mu…
darko-mijic Oct 2, 2026
88a7a2c
build: the gate, its audit record, the operator entry and the tenant …
darko-mijic Oct 2, 2026
8df8f4d
design: the contention run's dataset layout and its rule on caller re…
darko-mijic Oct 2, 2026
c4b1543
design: first-run sentences of the Probe 7 examples that held, the pr…
darko-mijic Oct 2, 2026
aa74051
build: the first-rebuild example bound to its steps and skipped until…
darko-mijic Oct 2, 2026
8097cc8
test: the gate, its audit records, the operator entries and the tenan…
darko-mijic Oct 2, 2026
51c89f3
design: a delegated row for narrowing a command's grant read, with th…
darko-mijic Oct 2, 2026
24e208d
design: the rebuild's batch risk and open question say what the migra…
darko-mijic Oct 2, 2026
cb54d20
design: the package counts recomputed from the tree, the contention e…
darko-mijic Oct 2, 2026
f711357
Test maintenance gate and audit contracts
darko-mijic Oct 2, 2026
2e442b7
Merge unit/probe-7 into feature/round-2: Probe 7 on the scheduler, re…
darko-mijic Oct 2, 2026
04e7e01
test: name the gate's suites after the write pause
darko-mijic Oct 2, 2026
bc6dc78
Merge unit/gate-proof into unit/gate: the proof of the gate, the audi…
darko-mijic Oct 2, 2026
012f37d
design: what the scheduler and restore probe showed, on the restore, …
darko-mijic Oct 2, 2026
9774ec1
design: the mutation timeout bounds a function's own computation, not…
darko-mijic Oct 2, 2026
fba155a
design: the ledger finding for schedules a restore in place keeps, an…
darko-mijic Oct 2, 2026
0bd111e
Correct gate validator type assertions
darko-mijic Oct 2, 2026
1b92bd8
design: the scheduler and restore probe's result on the rows of the r…
darko-mijic Oct 2, 2026
4ddbe2e
test: the race with a close reads each request's last execution from …
darko-mijic Oct 2, 2026
e57a49b
Merge unit/gate-proof into unit/gate: the proof's corrected compiled …
darko-mijic Oct 2, 2026
fcfd27b
design: the bound on an order line's stock item ID, its two examples,…
darko-mijic Oct 2, 2026
e090599
Bound PlaceOrder stock item IDs in UTF-8 bytes
darko-mijic Oct 2, 2026
6c3e4ca
build: grants are held by the gate, and an operator is trimmed before…
darko-mijic Oct 2, 2026
eebdda6
example: the comment beside the stock item ID bound says what it boun…
darko-mijic Oct 2, 2026
1afc84a
design: the gate's rulings in the Specs, and the restore door's examp…
darko-mijic Oct 2, 2026
dcd72a8
build: the trimmed text is the operator, checked and recorded
darko-mijic Oct 2, 2026
0453d69
Merge unit/gate into feature/round-2: the gate, its audit record and …
darko-mijic Oct 2, 2026
a459b4f
ReceiveStock takes the stock item ID bound of PlaceOrder
darko-mijic Oct 2, 2026
7106d9c
Merge unit/polish into feature/round-2: the bound on an order line's …
darko-mijic Oct 2, 2026
73f506b
design: the harness's rerun count names an execution, not an attempt
darko-mijic Oct 2, 2026
e6e1112
build: the measurement counts the gate and audit tables among the row…
darko-mijic Oct 2, 2026
a5d339d
design: the migrations probe's table-scope example names no parent or…
darko-mijic Oct 2, 2026
8fb627c
build: deployTemporary stops its deploy child when the caller's signa…
darko-mijic Oct 2, 2026
c85233d
test: CancelOrder over two stock items, in a second tenant, and the O…
darko-mijic Oct 2, 2026
a29bfa3
design: startGeneration refuses an empty tenant list beside a grant, …
darko-mijic Oct 2, 2026
19250f4
design: OD-044's lean rests on the commit timestamp probe, and OD-057…
darko-mijic Oct 2, 2026
40ea25d
design: the tenant list, the gate and the bounded operations name the…
darko-mijic Oct 2, 2026
8421d6b
design: the close of round 2 of the roadmap
darko-mijic Oct 2, 2026
ba37ad9
build: getGateAudit passes only the cursor and the capped count, so a…
darko-mijic Oct 2, 2026
a309619
build: insertGrant refuses a tenant ID above limitIdLength as invalid…
darko-mijic Oct 2, 2026
301e367
design: fillTenants reads the restore door alone and is refused while…
darko-mijic Oct 2, 2026
a464abf
test: the measurement holds its duplicate count, its engine reruns an…
darko-mijic Oct 2, 2026
e455cff
test: PlaceOrder and ReceiveStock bound a decomposed stock item ID by…
darko-mijic Oct 2, 2026
4111749
test: the failed-schedule scans leave out another function's failed r…
darko-mijic Oct 2, 2026
a745916
design: the first experiment and F19 take the quiet-machine timings w…
darko-mijic Oct 2, 2026
ab863dd
design: the observed PlaceOrder documents name no gate document and w…
darko-mijic Oct 2, 2026
8cc40e8
design: the close of round 2 of the roadmap, completed
darko-mijic Oct 2, 2026
8707403
design: the close of the tooling unit, design only
darko-mijic Oct 3, 2026
62b8817
design: the owner's hosted setup recorded in STATE.md
darko-mijic Oct 3, 2026
2b6b9db
design: 3b the Spec text the proof and the fix share
darko-mijic Oct 3, 2026
91457a4
build: 3b online read-model rebuild
darko-mijic Oct 3, 2026
ab97ed2
build: 3b comments that say what each rebuild export and read-model m…
darko-mijic Oct 3, 2026
18c972d
build: 3b online rebuild proof
darko-mijic Oct 3, 2026
964efbb
build: 3b rebuild proof, scheduling of unfinished passes and the fixt…
darko-mijic Oct 3, 2026
ae38e3c
build: 3b merge 3b-fix
darko-mijic Oct 3, 2026
8701d27
build: 3b merge 3b-proof
darko-mijic Oct 3, 2026
bce1239
build: 3b the setups install each read model through its first rebuild
darko-mijic Oct 3, 2026
bac760b
build: 3b the first rebuild installs a read model, the example rename…
darko-mijic Oct 3, 2026
b88cc48
build: 3b the online rebuild interrupted and resumed while commands run
darko-mijic Oct 3, 2026
cac73fd
build: 3b integration the compiled rebuild proof's refused arguments …
darko-mijic Oct 3, 2026
14d4e6f
build: 3b merge 3b-native
darko-mijic Oct 3, 2026
1943546
build: 3b integration the three setups still on the singular projecti…
darko-mijic Oct 3, 2026
32b7420
design: 3b integration the online rebuild example names its composition
darko-mijic Oct 3, 2026
a013ba4
build: 3b integration the scheduled rows a command or the scheduler s…
darko-mijic Oct 3, 2026
e377f58
design: tests are the proof; the record files go
darko-mijic Oct 3, 2026
0481e9c
design: 3b the interrupt's reruns, the pinned page across a switch, t…
darko-mijic Oct 3, 2026
d85c0fe
build: 3b fold-in a read-model list pages with paginator and moves th…
darko-mijic Oct 3, 2026
6640784
build: 3b fold-in a batch over a generation with no progress row thro…
darko-mijic Oct 3, 2026
7d269db
build: 3b fold-in the online rebuild asserts no live command or paren…
darko-mijic Oct 3, 2026
f84c3e5
build: 3b fold-in the left-behind record counts the markers, progress…
darko-mijic Oct 3, 2026
7b7097f
design: 3b the observations after the slimmer row
darko-mijic Oct 3, 2026
17d7b4e
build: 3b fold-in rollbackGeneration refuses while the tenant list is…
darko-mijic Oct 3, 2026
bd24787
design: 3b the tenant fill copies the IDs the grants hold
darko-mijic Oct 3, 2026
4899752
build: 3b fold-in the install's one batch, its rows and markers, and …
darko-mijic Oct 3, 2026
334822a
build: 3b fold-in the online rebuild counts its batches against the p…
darko-mijic Oct 3, 2026
c20ab04
build: 3b fold-in the progress, tenant-fill and markers tables in eve…
darko-mijic Oct 3, 2026
4a7ef82
design: 3b ledger and register
darko-mijic Oct 3, 2026
8a6af06
build: 3b fold-in the moved cursor kept
darko-mijic Oct 3, 2026
1dbe9c4
build: 3b merge the integration and the fold-in
darko-mijic Oct 3, 2026
314c265
design: 3b four register rows decided by their advisors' checked leans
darko-mijic Oct 3, 2026
ade199d
build: 3b fold-in a cursor from another list is refused
darko-mijic Oct 3, 2026
8ba1342
design: 3b the seam, the pinned page's caps and the first rebuild's o…
darko-mijic Oct 3, 2026
4ab60bd
build: 3b fold-in getGenerations lists only a declared read model
darko-mijic Oct 3, 2026
2283083
build: 3b fold-in rollbackGeneration's refusal order pinned with a pa…
darko-mijic Oct 3, 2026
d149beb
build: 3b fold-in the cursor read and written as paginator encodes it
darko-mijic Oct 3, 2026
de285bb
design: 3b the seam's qualification names the status
darko-mijic Oct 3, 2026
399b410
design: 3b the disclosure sentence names the cursor
darko-mijic Oct 3, 2026
840b32c
design: the close of round 3, unit 3b
darko-mijic Oct 3, 2026
d2a8d1b
design: sitting two, sixteen owner rows ruled and applied, the licenc…
darko-mijic Oct 3, 2026
3e74cd3
build: 4d the receipts sweep
darko-mijic Oct 3, 2026
19738b4
design: the close of round 3, OD-149 decided by its checked lean, the…
darko-mijic Oct 3, 2026
586ecb3
build: 4d an expired tombstone is swept
darko-mijic Oct 3, 2026
f372311
design: hosted the Spec patch with sitting two's words
darko-mijic Oct 3, 2026
f179f6b
build: 4f the language in the code, entry and the tier names
darko-mijic Oct 3, 2026
cd7758e
build: hosted the backup archive names
darko-mijic Oct 3, 2026
ba878de
build: 4f the compiled tier and the index
darko-mijic Oct 3, 2026
14f93ce
design: 4f E-14's option reads as one clause
darko-mijic Oct 3, 2026
221a5e1
build: hosted redaction at the child and the admin boundary
darko-mijic Oct 3, 2026
d76fbd3
build: hosted the record's target and the acceptance filter
darko-mijic Oct 3, 2026
0d2edf7
design: 4a audit and the diagnostic, the Spec text
darko-mijic Oct 3, 2026
2140eb7
design: 4c the history view on paper
darko-mijic Oct 3, 2026
93cadcf
design: 4a the broken audit names its table; the tier words
darko-mijic Oct 3, 2026
175e24c
build: hosted hostedTarget, the selection kinds and the planted-key test
darko-mijic Oct 3, 2026
9c0d88f
build: merge language into feature/round-2
darko-mijic Oct 3, 2026
2d5acdc
build: hosted the run setup and the record check
darko-mijic Oct 3, 2026
55e580e
build: merge history into feature/round-2
darko-mijic Oct 3, 2026
a1d6f35
build: merge sweep into feature/round-2
darko-mijic Oct 3, 2026
8a80ae2
build: 4a audit and the diagnostic
darko-mijic Oct 3, 2026
9d8f079
build: hosted the copy's modules and the local example of the undecla…
darko-mijic Oct 3, 2026
71ac95e
design: the close of round 3, ten history findings fixed or partially…
darko-mijic Oct 3, 2026
12b6186
design: 4a the diagnostic sink is configuration
darko-mijic Oct 3, 2026
45a1d04
build: merge audit into feature/round-2
darko-mijic Oct 3, 2026
39e5472
test: 4a the proof of audit and the diagnostic
darko-mijic Oct 3, 2026
bc0183e
design: 4c step 9 and the binding take the history projection
darko-mijic Oct 3, 2026
7e4e1d1
build: merge audit-proof into feature/round-2
darko-mijic Oct 3, 2026
c2d415e
build: integration the graph counts with the two Sc ALL-1 verifiers
darko-mijic Oct 3, 2026
207f3b7
build: integration a cut diagnostic line carries versionsOmitted when…
darko-mijic Oct 3, 2026
7603ccf
design: the close of round 3, five audit and diagnostic findings fixed
darko-mijic Oct 3, 2026
54473f3
build: hosted the four hosted examples in one driver
darko-mijic Oct 3, 2026
e1b497b
build: hosted the configuration and the workflow
darko-mijic Oct 3, 2026
aa89f34
build: hosted the compiled check of the record and facts types
darko-mijic Oct 3, 2026
e97db90
build: merge hosted into feature/round-2
darko-mijic Oct 3, 2026
7c70057
design: close fold-in F1 F4 F5 F6 F7 F8 F9 F11 F12 F13 F25 F34
darko-mijic Oct 3, 2026
55a93c7
build: close fold-in F14 F15 F16 F17 F19 F22
darko-mijic Oct 3, 2026
8d4f511
build: close fold-in F18 F20 F21 F23 F43
darko-mijic Oct 3, 2026
ebdef9f
build: close fold-in F2 F3 F10 F24
darko-mijic Oct 3, 2026
d9278f8
build: close fold-in F31 F36 F37 F42
darko-mijic Oct 3, 2026
804aa51
build: close fold-in F26 F27 F28 F29 F30 F32 F33 F35 F38 F39 F40 F41
darko-mijic Oct 3, 2026
73ffe6d
design: close fold-in, the local in-place example says what its archi…
darko-mijic Oct 3, 2026
c1bdf80
design: the close of round 3, OD-155 decided by the owner, OD-036 wai…
darko-mijic Oct 3, 2026
651fcc3
build: close fold-in, redaction fails closed
darko-mijic Oct 3, 2026
1b3ff58
design: the close of round 3 and of the feature branch
darko-mijic Oct 3, 2026
4ff759d
build: Probe 4 reaches the bytes-written limit inside its time budget
darko-mijic Oct 3, 2026
2a44655
build: the interrupt touches the generation row only
darko-mijic Oct 3, 2026
131b48a
build: the interrupt marks its fence
darko-mijic Oct 3, 2026
9e58019
design: the close of round 3, CI green after the two fixes, the fence…
darko-mijic Oct 3, 2026
77acdf2
build: the pull request review's three fixes
darko-mijic Oct 3, 2026
bb82f33
fix(receipts): the sweep reads the gate before it deletes
darko-mijic Oct 10, 2026
44a89c1
design(write-pause): the sweep builds a scope too
darko-mijic Oct 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
67 changes: 67 additions & 0 deletions .github/workflows/hosted.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
name: Hosted
# The native backend tier on the one hosted deployment, by npm run test:hosted. It runs on a
# schedule and on dispatch. GitHub runs a schedule from the default branch, and the environment
# hosted admits the default branch only, so a dispatch from another branch gets no key. No other
# workflow waits on this one, and its failure fails no other check.
on:
workflow_dispatch:
schedule:
- cron: "0 3 * * 1,4"
permissions:
contents: read
# One run at a time on the deployment; a queued run waits and no running run is cancelled.
concurrency:
group: hosted
cancel-in-progress: false
jobs:
hosted:
runs-on: ubuntu-latest
environment: hosted
timeout-minutes: 60
steps:
- uses: actions/checkout@v7
- uses: actions/setup-node@v7
with:
node-version: 24
cache: npm
# The install runs before any step is given the key.
- run: npm ci
# GitHub masks the whole key; the part after the | and both URL-encoded forms are masked too.
- name: Mask the deploy key's forms
env:
HOSTED_DEPLOY_KEY: ${{ secrets.HOSTED_DEPLOY_KEY }}
run: |
node -e '
const key = process.env.HOSTED_DEPLOY_KEY ?? "";
const secret = key.slice(key.indexOf("|") + 1);
for (const form of [key, secret, encodeURIComponent(key), encodeURIComponent(secret)])
if (form !== "") console.log("::add-mask::" + form);
'
# The run's output goes to a file. The log is printed and the record uploaded only after the
# record check finds no form of the key in either.
- name: Native run on the hosted deployment
id: run
env:
HOSTED_DEPLOYMENT_URL: ${{ vars.HOSTED_DEPLOYMENT_URL }}
HOSTED_DEPLOY_KEY: ${{ secrets.HOSTED_DEPLOY_KEY }}
HOSTED_DEPLOY_KEY_NAME: ${{ vars.HOSTED_DEPLOY_KEY_NAME }}
HOSTED_PLAN: ${{ vars.HOSTED_PLAN }}
run: |
set +e
npm run test:hosted > "$RUNNER_TEMP/hosted.log" 2>&1
echo "code=$?" >> "$GITHUB_OUTPUT"
- name: Record check
env:
HOSTED_DEPLOY_KEY: ${{ secrets.HOSTED_DEPLOY_KEY }}
run: |
shopt -s nullglob
records=(evidence/runs/hosted-*.json)
node scripts/hosted-record-check.mjs "$RUNNER_TEMP/hosted.log" "${records[@]}"
- name: The run's log
run: cat "$RUNNER_TEMP/hosted.log"
- uses: actions/upload-artifact@v7
with:
name: hosted-evidence
path: evidence/runs/hosted-*.json
- name: The run's result
run: test "${{ steps.run.outputs.code }}" = "0"
3 changes: 2 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ The Convex transactional domain platform. `docs/` holds the inputs. `design/` ho
- Before you write or edit a Spec, read `design/PLAN.md` section 6 and `node_modules/@libar-dev/software-delivery-protocol/.agents/skills/sdp-authoring/SKILL.md`.
- `python3 design/tools/check.py` prints `OK` when the Specs, the README and the ledger agree. Run it before you say they do.
- Name the tier behind a claim about behavior: compiled, pure test, `convex-test`, or native backend.
- Tests and CI are the proof. No agent writes a record file, a proof log or a per-number command list; a job answers in fifteen lines and the run log takes one line. The owner, 2026-10-03: "Tests should be all the proofs we need."
- The earlier platform, in the `convex-event-sourcing` repository, is evidence about Convex and about what failed. Take a fact from it with its date and versions. Take none of its designs or working habits.
- `design/reviews/r3-*.jsonl` are records of a finished review round and keep their text.
- Prose uses plain words, sentence-case headings and no em dashes.
Expand All @@ -25,7 +26,7 @@ The Convex transactional domain platform. `docs/` holds the inputs. `design/` ho
- `design/ROADMAP.md` is the aggregated roadmap: the next units in rounds, what each needs first and shows, what is deferred and why. The owner rules on it; the main thread keeps it current at each close. The slices of `design/STATE.md` keep their names, and the roadmap orders the units inside and between them.
- Four advisors, `advisor-convex`, `advisor-domain`, `advisor-operator` and `advisor-product`, are Fable agents defined under `.claude/agents/`. Each is launched with a task file under `design/advisors/`: `task-sort.md` sorts the open decisions of its lens, `task-fork.md` writes one owner decision as a fork, `task-roadmap.md` proposes the milestones of one subject. The four run at once, with disjoint subjects, and the main thread merges or cuts.
- Every lean, fork or memo is checked by a `gpt-6.1-sol` job of the other family before the owner sees it, on a copy that carries one planted false citation. `design/advisors/README.md` says how each run goes and what the first runs showed; `design/advisors/protocol.md` binds every sentence an advisor writes.
- The memos, briefs, plants and check reports of a run live outside the repository, in the unit folder the project notes name.
- The memos, briefs and plants of a run live outside the repository, in the unit folder the project notes name. A check job's report stays in its job directory.

## The language

Expand Down
102 changes: 97 additions & 5 deletions CONTEXT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Transactional domain platform

The language of a platform on which a business operation is one transaction: a command is authorized, decided against current state, recorded as events and answered, all or nothing. These are the words for what the platform is. Words for how it is designed and proven, and words for the work of building it, are listed apart at the end, because they must not leak into the first group.
The language of a platform on which a business operation is one transaction: a command is authorized, decided against current state, recorded as events and answered, all or nothing. These are the words for what the platform is. Words for how it is designed and proven, and words for the work of building it, are listed apart at the end, because they must not leak into the first group. This file leads: `spec:platform.vocabulary` follows it, and the doc keeps its authority over what the platform decides.

## Language

Expand All @@ -22,6 +22,10 @@ _Avoid_: operation (alone), endpoint, handler, context command
The parent's carrying out of one command across one or more contexts, with one outcome.
_Avoid_: workflow, saga, orchestration, executor (the code's name for the function)

**Entry**:
A function the parent registers for a caller: a public command, an internal command, a parent query or an operator entry.
_Avoid_: endpoint, handler, function (alone)

### Commands and outcomes

**Command**:
Expand Down Expand Up @@ -104,7 +108,7 @@ _Avoid_: apply, reduce, patch, state update

**Rebuild**:
Recomputing stored state from the history that should produce it: a stream's current state from its events, or a read model from its sources.
_Avoid_: replay, resync, reprocess, backfill (one step of a read-model rebuild)
_Avoid_: replay, resync, reprocess

**Baseline event**:
An event that holds migrated state, from which a rebuild starts when the meaning of earlier events has changed. Earlier events stay readable.
Expand All @@ -124,6 +128,10 @@ _Avoid_: scope (alone), tenancy
The server-established identity that caused a command: a human, a service, an agent, a reviewer or an operator.
_Avoid_: user, caller, principal, identity

**Stated operator**:
The name an administrator states when calling an operator entry. It records who said they acted and establishes no actor; an actor of kind operator is one the server establishes, which no entry does.
_Avoid_: operator (alone, for this meaning), actor (for a stated name)

**Grant**:
An authoritative statement that an actor holds a permission in a tenant, read in the same transaction as the command it authorizes.
_Avoid_: role, ACL, access rule
Expand Down Expand Up @@ -156,6 +164,18 @@ _Avoid_: replay, repeat, retry (what the caller does)

### Reads

**Parent query**:
A read the parent answers to a caller, authorized in the parent, relaying a context query or reading a read model.
_Avoid_: query (alone), endpoint, read (alone)

**Context query**:
A read a context answers to the parent, returning a DTO and never a document.
_Avoid_: query (alone), getter

**Query refusal**:
The refusal of a parent query, in the same wire shape as a rejection, naming the entry that refused. It is not an outcome, and nothing is recorded.
_Avoid_: rejection (for a query), error, denial

**Read model**:
A stored shape made for reading, updated inside the command from the state that command committed.
_Avoid_: view (alone), cache, table, projection (the logic, not the data)
Expand All @@ -168,10 +188,64 @@ _Avoid_: read model (the data), handler, subscriber
One numbered build of a read model.
_Avoid_: version, attempt

**Installation**:
Making a read model exist in a deployment: its declaration and its first rebuild.
_Avoid_: activation, first activation, setup

**Backfill**:
The part of a rebuild that writes a generation's rows from its sources.
_Avoid_: rebuild (for this part alone), replay, import

**Verification**:
The part of a rebuild that checks a generation's rows against its sources and corrects them.
_Avoid_: validation, reconciliation, audit

**Pass**:
One traversal of a rebuild over its sources or its rows: a backfill, a verification, a purge or a fill. The verb passes and a pass condition belong to scenarios, and a test's outcome is a test result.
_Avoid_: run, iteration, round

**Switch**:
Making a verified generation the one readers see, in one write.
_Avoid_: cutover, promotion, activation

**Rollback**:
Making a retired generation the one readers see again.
_Avoid_: revert, undo, downgrade

**Retired generation**:
A generation readers no longer see, kept until it is purged.
_Avoid_: old generation, previous version, inactive

**Purge**:
Deleting a retired generation's rows.
_Avoid_: cleanup, garbage collection, drop

**Fence**:
The number a generation's batches carry so that a batch from before an interruption writes no read-model row and schedules nothing.
_Avoid_: epoch, token, lease

**Progress row**:
The row that holds where a rebuild stands, read by its batches and by no command.
_Avoid_: checkpoint, cursor row, status row

**Tenant list**:
The parent's list of its tenants, which a rebuild and a sweep walk one tenant at a time.
_Avoid_: tenant table, registry, directory

**Write pause**:
A stretch during which commands that write the sources of a read model are refused, so that the read model can be rebuilt from a consistent cut.
_Avoid_: lock, maintenance mode, freeze

### Backups

**Backup archive**:
The exported file of a deployment's table data at one moment, which a restore imports.
_Avoid_: snapshot (a transaction's view of the database), export, dump, backup (alone, for the file)

**Restore**:
The procedure that imports a backup archive under matching code and proves the invariants hold before any writer runs.
_Avoid_: import (one step of it), recovery, rollback

### Deferred work

**Obligation**:
Expand Down Expand Up @@ -206,9 +280,27 @@ Words for how the platform is specified and proven. They are lasting and may app
- **Do-nothing option**: the design that adds no mechanism and relies on Convex as it is.
- **Fact**: something the design relies on Convex to do, marked documented, probed or assumed.
- **Probe**: one small test on a real backend that turns an assumed fact into a probed one.
- **Scenario**: a situation with a pass condition that the platform must meet.
- **Tier**: the kind of test that can prove a scenario: domain, simulator, native or end to end.
- **Scenario**: a row of the doc's acceptance table, a situation with a pass condition that the platform must meet; a case is one example of a row.
- **Tier**: the kind of test that can prove a scenario: compiled, pure test, convex-test or native backend.
- **Target**: where a native backend test runs, the local backend or a hosted deployment, recorded apart from the tier and the composition.
- **Composition**: an application assembled from the platform for a purpose: the production composition, or the fixture composition that exists only to prove scenarios.
- **Verifier**: a test bound to an example, which proves it when it passes at the example's tier on its composition.
- **Acceptance check**: the check that reads from the graph every scenario the first experiment requires and from one run's record whether each passed.
- **Test result**: what one run of a verifier leaves in the run record: passed, failed or skipped.
- **Run record**: the harness's record of one run of the test projects, with the commit, the pins, the target and every test result; a restore's own record is a restore run.
- **Measurement record**: a run record's entry that holds a measured cost or time with its pins and its target.
- **Local backend**: the pinned backend process the harness starts and disposes of for a test.
- **Hosted deployment**: a Convex Cloud deployment the harness targets with a deploy key.
- **Deploy key**: a hosted deployment's credential, scoped to the actions a run needs.
- **Admin key**: the local backend's credential.
- **Usage reading**: what a hosted deployment's usage report says for a window; a difference of two readings is one run's own only when no other run overlapped it.
- **Stated plan**: the Convex plan a hosted run records as the owner stated it, never read from billing.
- **Kept dataset**: the data a hosted deployment carries from one run to the next on purpose.
- **Planting record**: the row a run writes beside a schedule it planted, so that a later run can tell a retained schedule from a lost one.
- **Execution**: one run of a function by the backend, the unit the function log counts.
- **OCC rerun**: an execution the engine repeats after a write conflict; neither an attempt nor a retry by the caller.
- **Contention**: several commands at once on one stream.
- **Controlled change**: one difference against a reference run, so that a cost is attributed to a line.

## Words that are not part of the language

Expand All @@ -223,7 +315,7 @@ Words about the work of building the platform: when something was done, in what
Three words exist on both sides and mean different things:

- **Agent**: in the language, a kind of actor whose proposals the parent checks. In the work, a model that writes or reviews code. Only the first is a domain term.
- **Reviewer** and **operator**: in the language, kinds of actor. In the work, whoever reviews a change or runs a deployment by hand.
- **Reviewer** and **operator**: in the language, kinds of actor, and apart from them the stated operator. In the work, whoever reviews a change or runs a deployment by hand.
- **Operation**: in the language, one accepted execution of a command. In the work, nothing: "an operation of the session" is a step.

Fixture names such as depot, document and stock are the fixture composition's own small domain. They are not platform language either.
Loading
Loading