Verify brief publication against live origin and record historical gaps
Assistant: codex Assistant-Model: gpt-6-astra Assistant-Session: 01a09cbd-43c1-79f3-809e-1ee97b40b64d
This commit is contained in:
parent
8a65297d56
commit
8bd2e5ff92
10 changed files with 565 additions and 90 deletions
66
docs/brief-durability-audit.md
Normal file
66
docs/brief-durability-audit.md
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
# Daily brief durability audit
|
||||
|
||||
The verifier resolves the live `origin/main` commit with `git ls-remote` and
|
||||
reads that immutable Git tree. If necessary, it fetches missing objects. Local
|
||||
files, local commits and stale remote-tracking refs cannot establish completion.
|
||||
An unreachable remote or Hub is an error (exit 2), never a successful check.
|
||||
Hub progress reads are paginated; repeating/malformed pages fail closed.
|
||||
|
||||
```bash
|
||||
python3 scripts/verify_brief_durability.py --require-hub
|
||||
python3 scripts/verify_brief_durability.py --allow-reconciled --json
|
||||
python3 scripts/verify_brief_durability.py --allow-reconciled --require-date 2026-09-14
|
||||
```
|
||||
|
||||
The last command is the acceptance check for the September 14 scheduled run.
|
||||
Before that run publishes, it must fail. A known historical gap cannot satisfy
|
||||
`--require-date`.
|
||||
|
||||
For events dated September 13, 2026 onward (or any event containing push
|
||||
attestation), the verifier requires `pushed=true`, the canonical date/path,
|
||||
and a full `origin_sha` that is an ancestor of the live remote head and contains
|
||||
the nonempty brief. The current remote tree must also contain the file.
|
||||
Earlier events with files on origin are reported separately as legacy evidence;
|
||||
the audit does not invent historical push attestations.
|
||||
|
||||
## September 7–11 reconciliation
|
||||
|
||||
The five original `fi_daily_brief` events remain intact in the append-only Hub
|
||||
log. The evidence file
|
||||
[`2026-09-14-brief-completion-reconciliation.json`](evidence/2026-09-14-brief-completion-reconciliation.json)
|
||||
records exact event IDs, original details and the audited remote commit. No
|
||||
missing brief is reconstructed or counted as successful.
|
||||
|
||||
After publishing this evidence to origin, append one correction per event:
|
||||
|
||||
```bash
|
||||
python3 scripts/reconcile_brief_completions.py # review, read-only
|
||||
python3 scripts/reconcile_brief_completions.py --apply # append corrections
|
||||
```
|
||||
|
||||
The helper validates every source event and missing path before writing. It
|
||||
uses stable idempotency keys and skips already recorded corrections. Correction
|
||||
events use `fi_daily_brief_reconciliation`, never the completion event type.
|
||||
|
||||
The verifier accepts a correction only when its event ID/date/path/disposition/
|
||||
reason matches the evidence JSON in a published ancestor commit. Default strict
|
||||
mode still fails on these missing dates. `--allow-reconciled` explicitly allows
|
||||
the acknowledged historical debt, prints every gap, and fails on any new gap or
|
||||
invalid attestation.
|
||||
|
||||
## Next-run readiness (2026-09-14 Berlin)
|
||||
|
||||
Temporal schedule `activity-schedule-3169ab1f-882b-59c7-9763-d014dc96f4fc` is
|
||||
unpaused; its next action is September 14 at 07:30 Europe/Berlin (05:30 UTC).
|
||||
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
|
||||
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;
|
||||
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.
|
||||
|
|
@ -141,3 +141,11 @@ The baseline survey (2026-07-24) already covers the field. The **first daily**
|
|||
should only list changes **after** that document’s research window. If nothing
|
||||
moved, a short no-delta brief still completes the rhythm and posts
|
||||
`fi_daily_brief`.
|
||||
|
||||
## Durability audit and historical corrections
|
||||
|
||||
See [the Git-backed audit contract](brief-durability-audit.md) for live-origin verification,
|
||||
paginated Hub reads, and append-only correction records. `--allow-reconciled`
|
||||
explicitly acknowledges the five missing September 7–11 briefs; it never
|
||||
counts them as successful. Use `--require-date YYYY-MM-DD` to prove a scheduled
|
||||
day has a valid published completion. An unavailable Hub/remote fails the audit.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,98 @@
|
|||
{
|
||||
"schema_version": 1,
|
||||
"repo": "freedom-intelligence",
|
||||
"checked_origin_sha": "8a65297d56da216eea1e4cea362da3bfbd68fff6",
|
||||
"corrections": [
|
||||
{
|
||||
"original_event_id": "5d9461ef-bf99-44b2-90fe-d8a3bf5524f9",
|
||||
"date": "2026-09-07",
|
||||
"path": "briefs/2026/09/2026-09-07.md",
|
||||
"disposition": "false_completion",
|
||||
"reason": "Executor reported a local commit without origin publication; no brief exists in the audited origin/main tree.",
|
||||
"original_created_at": "2026-09-07T05:30:15.016103Z",
|
||||
"original_detail": {
|
||||
"date": "2026-09-07",
|
||||
"path": "briefs/2026/09/2026-09-07.md",
|
||||
"repo": "freedom-intelligence",
|
||||
"wrote": true,
|
||||
"executor": "rein-aharness",
|
||||
"committed": true,
|
||||
"skipped_existing": false,
|
||||
"collection_candidates": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"original_event_id": "90b7719f-4bcf-475b-8042-715ee8bc8127",
|
||||
"date": "2026-09-08",
|
||||
"path": "briefs/2026/09/2026-09-08.md",
|
||||
"disposition": "false_completion",
|
||||
"reason": "Executor reported a local commit without origin publication; no brief exists in the audited origin/main tree.",
|
||||
"original_created_at": "2026-09-08T05:30:26.872826Z",
|
||||
"original_detail": {
|
||||
"date": "2026-09-08",
|
||||
"path": "briefs/2026/09/2026-09-08.md",
|
||||
"repo": "freedom-intelligence",
|
||||
"wrote": true,
|
||||
"executor": "rein-aharness",
|
||||
"committed": true,
|
||||
"skipped_existing": false,
|
||||
"collection_candidates": 2
|
||||
}
|
||||
},
|
||||
{
|
||||
"original_event_id": "54754f04-5175-4755-8473-ee42ebe95232",
|
||||
"date": "2026-09-09",
|
||||
"path": "briefs/2026/09/2026-09-09.md",
|
||||
"disposition": "false_completion",
|
||||
"reason": "Executor reported a local commit without origin publication; no brief exists in the audited origin/main tree.",
|
||||
"original_created_at": "2026-09-09T05:30:22.905105Z",
|
||||
"original_detail": {
|
||||
"date": "2026-09-09",
|
||||
"path": "briefs/2026/09/2026-09-09.md",
|
||||
"repo": "freedom-intelligence",
|
||||
"wrote": true,
|
||||
"executor": "rein-aharness",
|
||||
"committed": true,
|
||||
"skipped_existing": false,
|
||||
"collection_candidates": 0
|
||||
}
|
||||
},
|
||||
{
|
||||
"original_event_id": "1dc604ca-43d2-49de-a39b-dd90f05b10a8",
|
||||
"date": "2026-09-10",
|
||||
"path": "briefs/2026/09/2026-09-10.md",
|
||||
"disposition": "false_completion",
|
||||
"reason": "Executor reported a local commit without origin publication; no brief exists in the audited origin/main tree.",
|
||||
"original_created_at": "2026-09-10T05:30:31.005526Z",
|
||||
"original_detail": {
|
||||
"date": "2026-09-10",
|
||||
"path": "briefs/2026/09/2026-09-10.md",
|
||||
"repo": "freedom-intelligence",
|
||||
"wrote": true,
|
||||
"executor": "rein-aharness",
|
||||
"committed": true,
|
||||
"skipped_existing": false,
|
||||
"collection_candidates": 1
|
||||
}
|
||||
},
|
||||
{
|
||||
"original_event_id": "84144b03-dce4-4623-9191-5e36fe3c2692",
|
||||
"date": "2026-09-11",
|
||||
"path": "briefs/2026/09/2026-09-11.md",
|
||||
"disposition": "false_completion",
|
||||
"reason": "Executor reported a local commit without origin publication; no brief exists in the audited origin/main tree.",
|
||||
"original_created_at": "2026-09-11T05:30:13.749386Z",
|
||||
"original_detail": {
|
||||
"date": "2026-09-11",
|
||||
"path": "briefs/2026/09/2026-09-11.md",
|
||||
"repo": "freedom-intelligence",
|
||||
"wrote": true,
|
||||
"executor": "rein-aharness",
|
||||
"committed": true,
|
||||
"skipped_existing": false,
|
||||
"collection_candidates": 1
|
||||
}
|
||||
}
|
||||
],
|
||||
"interpretation": "These five dates remain missing. Append-only corrections acknowledge false completions; they do not create briefs, claim recovery, or satisfy a required-date check."
|
||||
}
|
||||
|
|
@ -143,3 +143,11 @@ python3 scripts/verify_brief_durability.py --require-hub
|
|||
- Skipping the completion event (leaves `due=true` forever)
|
||||
- Posting `fi_daily_brief` for a local-only commit (clears `due`, loses the day)
|
||||
- Reusing `railiance-platform-pg-backup` for weights (30-day expiry)
|
||||
|
||||
## Durability audit and historical corrections
|
||||
|
||||
See [the Git-backed audit contract](brief-durability-audit.md) for live-origin verification,
|
||||
paginated Hub reads, and append-only correction records. `--allow-reconciled`
|
||||
explicitly acknowledges the five missing September 7–11 briefs; it never
|
||||
counts them as successful. Use `--require-date YYYY-MM-DD` to prove a scheduled
|
||||
day has a valid published completion. An unavailable Hub/remote fails the audit.
|
||||
|
|
|
|||
|
|
@ -77,3 +77,11 @@ tunnel ports). Check health before declaring hub down.
|
|||
| ---- | ------ |
|
||||
| 2026-07-23 | Stub created |
|
||||
| 2026-07-24 | `fi_daily_brief` contract + activity-core linkage documented |
|
||||
|
||||
## Durability audit and historical corrections
|
||||
|
||||
See [the Git-backed audit contract](brief-durability-audit.md) for live-origin verification,
|
||||
paginated Hub reads, and append-only correction records. `--allow-reconciled`
|
||||
explicitly acknowledges the five missing September 7–11 briefs; it never
|
||||
counts them as successful. Use `--require-date YYYY-MM-DD` to prove a scheduled
|
||||
day has a valid published completion. An unavailable Hub/remote fails the audit.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue