writeonce/docs/examples
shoney.arickathil e296d0541d fix(porch-store): close the ephemeral-row race, not just shrink it
- Root cause of the residual: a 4xx/5xx row lived under the bare key,
  so a second message could delete-and-replace it before the FIRST
  caller's own middleware-side read (necessarily outside receive,
  WO-E226) ever ran -- the owner itself could read back a LATER
  message's answer, not just a duplicate reading a stale one
- Fix: a 4xx/5xx miss is never stored under the bare key at all. Each
  such attempt gets its own row, keyed by a nonce carried back in the
  scalar reply's low digits, so no other message for the same bare key
  ever touches it -- the decision AND the row's identity are both
  fixed inside the one serialized receive call
- Disclosed trade-off: that row is never revisited by a bare-key
  lookup, so it is never TTL-pruned either -- permanent per failed
  attempt, the same no-sweeper trade-off this codebase already makes
  elsewhere, not a new one
- Gate leg 18e: reran 20x in isolation against the fix with zero
  500-500 or 200-200 outcomes (was reproducible before)
- §18's SIGTERM-stop check now force-kills on timeout before clearing
  $SRV, instead of matching §14/§17b's own gap where a still-running
  process escapes the exit trap too -- an orphan no longer survives
  past this leg regardless of the assertion's own outcome

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 464147a9ddf3a53cb1946637c3f517ba615ee358)
2026-09-15 01:15:30 +02:00
..
chat docs(24): T10 closeout — stories done, board, graph, ledger, CODE-LOGIC 2026-08-28 00:06:31 +02:00
db-actor docs(24): T10 closeout — stories done, board, graph, ledger, CODE-LOGIC 2026-08-28 00:06:31 +02:00
db-bench feat(db2-keys): gate the residency measurement, close out task 7 2026-08-30 20:38:03 +02:00
employee docs: audit all markdown against the code, fix findings, flatten status folders 2026-08-26 19:20:22 +02:00
employee-list docs(databasev2): third track — the database beyond RAM, with per-table storage modes 2026-08-26 20:52:48 +02:00
fibers feat(lang+wo-html): raw text literals, component layer, MVC samples 2026-08-25 03:58:41 +02:00
gc-cycle docs: audit all markdown against the code, fix findings, flatten status folders 2026-08-26 19:20:22 +02:00
log-watcher docs: audit all markdown against the code, fix findings, flatten status folders 2026-08-26 19:20:22 +02:00
operators feat: iteration 36 task 5 — operators sample, docs closeout 2026-08-22 21:42:08 +02:00
porch fix(porch-store): close the ephemeral-row race, not just shrink it 2026-09-15 01:15:30 +02:00
residency feat(db2-delta): lift the resident:keys refusal, prove it end to end 2026-08-30 20:37:49 +02:00
residency-bench feat(db2-keys): gate the residency measurement, close out task 7 2026-08-30 20:38:03 +02:00
shop refactor(porch): name the web framework porch, fix the wo.toml identifier claim 2026-08-26 19:36:34 +02:00
site@81ef9b9ca0 refactor(site-submodule): docs/examples/site becomes a submodule 2026-08-30 22:02:55 +02:00
skill-catalog feat(query-corpus): iteration 9g corpus #1 — skillhost needs no new query grammar 2026-09-15 01:15:30 +02:00
subprocess feat(lang42): subprocess example + gate 2026-09-01 22:19:25 +02:00
web-app refactor(porch): name the web framework porch, fix the wo.toml identifier claim 2026-08-26 19:36:34 +02:00
writeonce-view feat(serve+view): file serving, downloads, supported systems; rename 2026-08-25 04:41:00 +02:00