diff --git a/WORK-RECORDS.md b/WORK-RECORDS.md index f4c97d7..a3772e8 100644 --- a/WORK-RECORDS.md +++ b/WORK-RECORDS.md @@ -36,4 +36,4 @@ | task | FI-WP-0004-T06 | done | — | workplans/FI-WP-0004-operational-loop-and-scaleway-reserve.md | | task | FI-WP-0004-T07 | done | — | workplans/FI-WP-0004-operational-loop-and-scaleway-reserve.md | | task | FI-WP-0004-T08 | done | — | workplans/FI-WP-0004-operational-loop-and-scaleway-reserve.md | -| task | FI-WP-0004-T09 | todo | — | workplans/FI-WP-0004-operational-loop-and-scaleway-reserve.md | +| task | FI-WP-0004-T09 | progress | — | workplans/FI-WP-0004-operational-loop-and-scaleway-reserve.md | diff --git a/docs/brief-durability-audit.md b/docs/brief-durability-audit.md index 91c4a70..bb5c8c9 100644 --- a/docs/brief-durability-audit.md +++ b/docs/brief-durability-audit.md @@ -56,7 +56,7 @@ The claim-loop service is active and was restarted after executor commit `11020e8` (push-before-completion). Keep its FI checkout synchronized before the run: the executor pushes its current branch and does not pull automatically. -The activity-core resolver also needs the publication contract: only an event +The deployed activity-core resolver now enforces the publication contract: only an event with `pushed=true`, a full SHA, canonical path and matching `detail.date` may clear today's due bit. An event for yesterday delivered today must leave today due. The Git audit remains the authoritative check of actual origin objects; @@ -64,3 +64,29 @@ the resolver checks the executor's attestation. This preflight is not evidence that the future scheduled run succeeded. Run the exact-date audit after publication and retain its result. + +## Applied repair evidence + +FI implementation/evidence commit: `8bd2e5f`; activity-core fix: `289aff3`. +Twelve verifier regression tests +passed; the activity-core resolver suite passed all 47 tests. The resolver-only +image `activity-core:fi-publication-20260914` passed three container smoke cases +and rolled out successfully to API, worker and event-router. Live resolver +inspection confirms the new code and September 14 due=true. + +Five correction IDs (original events remain unchanged): + +| Missing day | Correction event | +| --- | --- | +| 2026-09-07 | `3b23c7d9-e8fc-4750-8a35-682771303b85` | +| 2026-09-08 | `4fa69450-9b11-4d98-a870-70a755dd7ca0` | +| 2026-09-09 | `53fc8e47-b246-47a9-90da-6b7f5d11ce71` | +| 2026-09-10 | `b33c3abe-7a59-4096-8bd1-ac5998d0b303` | +| 2026-09-11 | `ea5cf3b4-cfd1-4e69-836c-5771099c4049` | + +Re-running reconciliation skipped all five records (no duplicate writes). +Live audit checks: strict mode exits 1 for the five missing dates; +`--allow-reconciled --require-date 2026-09-13` exits 0; +`--allow-reconciled --require-date 2026-09-14` exits 1 because that day's +scheduled publication has not occurred. Progress note: +`687fee6f-e080-40f4-a62c-ffb23face166`.