decompose wave 5 — contract suite: audit-first split of the verification backlog (engines' columns already discharge most rows; map in review-wave-5's appendix), seven mechanism-grouped suite-row tasks (queue depth, scheduler, tx commit-atomicity, streams, locks, wakes, opts/backoff equivalence), two engine-side hardening tasks (sqlite commit-error arm, pg F-1 defense-in-depth), and the review-wave-5 gate that flips the engine specs to stable
This commit is contained in:
1 parent
9a00fb8a7e
commit
250511d480
11 files changed
+911
-2
No files matched your search
@@ -0,0 +1,81 @@
|
||||
---
|
||||
id: suite-opts-backoff-rows
|
||||
name: Contract-suite rows — backoff-curve equivalence + the deferred enqueue-opts clock legs
|
||||
status: pending
|
||||
depends_on: []
|
||||
scope: narrow
|
||||
risk: low
|
||||
impact: phase
|
||||
level: implementation
|
||||
tags: [wave-5, contract-suite, queues]
|
||||
---
|
||||
|
||||
## Description
|
||||
|
||||
Complete the arithmetic-equivalence backlog rows
|
||||
(core-contract.md §Verification backlog): "Backoff-curve and
|
||||
stamp-resolution equivalence across engines" and the two
|
||||
wall-clock-adjacent legs the existing `enqueue_opts_resolution` row
|
||||
explicitly deferred ("The `run_at`-alone-literal and
|
||||
neither-field-resolves-to-now legs ... pin with wave 5's equivalence
|
||||
row").
|
||||
|
||||
Work:
|
||||
|
||||
- **Extend `enqueue_opts_resolution` in place** (one owner per
|
||||
property — the row's own doc comment names this wave-5 completion;
|
||||
stamps accumulate per the convention): the `run_at`-alone literal
|
||||
leg (a future `run_at` is the row's ready time verbatim; a past
|
||||
`run_at` resolves to ready-now — the boundary-total rule, ADR-023
|
||||
§2) and the neither-field leg (ready now — tolerance-bounded
|
||||
proximity, never a tight timing assert).
|
||||
- **Add `backoff_curve_equivalence`** — the equal-jitter exponential
|
||||
curve (ADR-010 §3): `delay ∈ [base·2^(a−1)/2, base·2^(a−1)]` per
|
||||
attempt, uniform jitter over the lower half — *the range, not a
|
||||
jitter label, is the definition*. Drive claim → `retry(err, None)`
|
||||
cycles on a queue with a small `backoff_base_s` stamp (2 s keeps
|
||||
the integer-second row resolution honest: ranges [1,2], [2,4],
|
||||
[4,8] across the first attempts; the inter-attempt waits stay
|
||||
tolerance-bounded and sequential), reading the computed delay back
|
||||
via `get_job`'s `run_at` minus now, asserting range membership per
|
||||
attempt on both engines — identical bounds is the equivalence pin
|
||||
(ADR-012 §2: engine-side arithmetic, suite-pinned identical
|
||||
outputs). Include the explicit-delay override leg
|
||||
(`retry(err, Some(d))` honored — a `Some(0)` resolves ready-now per
|
||||
the boundary-total rule). **The 1-hour cap leg is not
|
||||
suite-pinnable** (reaching capped attempts requires waiting out
|
||||
minute-scale delays); it stays pinned engine-side (both engines'
|
||||
unit tests already pin the curve against the ADR text — the
|
||||
wave-3/4 reviews verified it) — record that disposition in Notes
|
||||
for the review gate.
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- [ ] `enqueue_opts_resolution` extended with both clock legs; its
|
||||
doc comment's deferral note updated (stamps accumulate)
|
||||
- [ ] `backoff_curve_equivalence` exists, version-stamped (ADR-010 §3,
|
||||
ADR-020 §1–§3, ADR-012 §2, ADR-023 §2)
|
||||
- [ ] Rows wired into both engines' `contract_suite.rs` targets
|
||||
- [ ] SQLite column green server-less; pg column green against the
|
||||
harness server
|
||||
- [ ] The cap-leg disposition recorded in Notes
|
||||
- [ ] `cargo test -p alkstore-sqlite -p alkstore-postgres` green
|
||||
(pg rows skip cleanly server-less); clippy `-D warnings`; fmt clean
|
||||
|
||||
## References
|
||||
|
||||
- docs/architecture/core-contract.md §Verification backlog (backoff-curve
|
||||
and stamp-resolution equivalence; enqueue-opts resolution equivalence)
|
||||
- docs/architecture/decisions/010-queue-semantics-depth.md §3
|
||||
- docs/architecture/decisions/020-enqueue-opt-semantics-and-bridges.md §1–§3
|
||||
- docs/architecture/decisions/012-forked-substrate-design.md §2
|
||||
- alkstore-contract-suite/src/properties.rs (`enqueue_opts_resolution`'s
|
||||
deferral note)
|
||||
|
||||
## Notes
|
||||
|
||||
> To be filled by implementation agent
|
||||
|
||||
## Summary
|
||||
|
||||
> To be filled on completion
|
||||
Reference in new issue
Block a user