writeonce/scripts
shoney.arickathil 659ea26582 fix(porch-store): delete the ephemeral nonce row after one read
- The nonce naming an ephemeral (4xx/5xx) row is handed to exactly one
  call() reply and nowhere else -- no other message can ever construct
  that key, so idempotent.wo deleting it right after building the Resp
  is safe by construction (unlike the earlier shared bare-key row,
  which a second message COULD reach and made deleting it racy)
- Closes the leak AND a real correctness edge: the nonce is
  time.ticks() % 1_000_000_000, wrapping every ~1000s -- with rows kept
  forever, a later failed attempt on the same key could land on the
  same nonce and either collide with the unguarded insert or resurface
  a stale replay, exactly what rounds 1/2 removed
- Gate leg 18f: N ephemeral attempts against the same key must return
  IdempotencyKey's row count to baseline, not grow it by N -- confirmed
  failing (baseline+N) against the pre-fix code, passing after
- N picked at 3: the pre-existing runtime hang/segfault (out of scope,
  being tracked separately) reproduces more often at higher sequential
  insert+delete volume against the same key; 3 stayed clean across
  many runs while still proving the property precisely

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 9ad594748e01a665ccaf29733a48c2b83a2749da)
2026-09-15 01:15:30 +02:00
..
chat-accept.sh feat(gates): example apps log to /tmp/<example-app>.log so it can be tailed 2026-08-27 23:53:10 +02:00
db-actor-accept.sh feat: arc stage 3 T7 — transparent DB actor (WO_T_DB hole closed) 2026-08-21 13:10:26 +02:00
db-bench.py feat(db2-keys): gate the residency measurement, close out task 7 2026-08-30 20:38:03 +02:00
deps-accept.sh test: deps-accept — iteration 15's gate (Task 4) 2026-08-19 19:21:32 +02:00
employee-accept.sh feat: FK restrict on delete + employee sample runs; group-by parked (9b) 2026-08-16 18:37:23 +02:00
fibers-accept.sh feat: cross-shard actors — placement, envelopes, home-routed frees, WO-E222 (arc T6) 2026-08-20 12:06:13 +02:00
install-accept.sh feat: installable toolchain — version, wovm self-locate, dist tarball 2026-08-18 01:19:20 +02:00
install-readme.tmpl.md feat: installable toolchain — version, wovm self-locate, dist tarball 2026-08-18 01:19:20 +02:00
linkcheck.py docs: audit all markdown against the code, fix findings, flatten status folders 2026-08-26 19:20:22 +02:00
log-watcher-accept.sh feat(gates): example apps log to /tmp/<example-app>.log so it can be tailed 2026-08-27 23:53:10 +02:00
mkdist.sh feat: installable toolchain — version, wovm self-locate, dist tarball 2026-08-18 01:19:20 +02:00
oop-e2e.sh feat: cross-shard actors — placement, envelopes, home-routed frees, WO-E222 (arc T6) 2026-08-20 12:06:13 +02:00
residency-accept.sh fix(db2-delta): refuse resident:keys with no WO_DATA at runtime 2026-08-30 20:38:03 +02:00
single-binary-smoke.sh feat: milestone 1 complete — .wob emitter, conformance corpus, single binary; GC redesign specced 2026-08-11 19:31:26 +02:00
site-accept.sh refactor(site-submodule): docs/examples/site becomes a submodule 2026-08-30 22:02:55 +02:00
skill-catalog-accept.sh feat(query-corpus): iteration 9g corpus #1 — skillhost needs no new query grammar 2026-09-15 01:15:30 +02:00
subprocess-accept.sh feat(lang42): subprocess example + gate 2026-09-01 22:19:25 +02:00
web-app-accept.sh fix(porch-store): delete the ephemeral nonce row after one read 2026-09-15 01:15:30 +02:00