{
  "schema_version": "pruviq.verify-forward-status.v1",
  "as_of_boundary": "2026-10-05T00:00:00Z",
  "status_lag_hours": 3,
  "disclosure_policy": "Process-integrity record only. Nothing that depends on strategy output (P&L, drawdown, parity, entries, positions, signals, coins, F5-P stop) is published before each program's reveal — forward-rules-v1 horizon.no_interim_decisions, prereg-v1 withheld_until_reveal. This file records; it decides nothing.",
  "field_notes": {
    "status": "Computed at as_of_boundary from hour indexes only: running = the last journaled hour is within status_lag_hours of the boundary; ended = horizon end + 48 h settling has passed. F5-P has no fixed end here (its verdict date may extend), so it never shows ended; running means hours keep being recorded — whether or not its own stop rule has fired.",
    "hours": "journaled and expected count hours before the horizon end only.",
    "integrity.torn_tail": "true = the journal ends in an unterminated write (usually a write in progress); the unfinished part is left out and the week stays provisional.",
    "week.final": "false = provisional: the journal has not reached the boundary yet; recomputed next run.",
    "capture_gap_days": "UTC days with at least one hour whose capture was missing or down, from the raw journal. Not a verdict input — the verdict uses source_missing, recomputed by the verifier after exchange backfill.",
    "integrity.pins_match": "false = the pinned code/rules differ from the registration.",
    "sources.prefix_sha256": "sha256 of the journal's raw bytes (lines before as_of_boundary, each with its newline, file order). chain_head is the last such line's hash."
  },
  "programs": [
    {
      "id": "F5-P",
      "start_at": "2026-10-01T00:00:00Z",
      "verdict_due": "2026-12-24T00:00:00Z",
      "verdict_due_latest": "2027-04-01T00:00:00Z",
      "status": "not_running",
      "week": {
        "index": 1,
        "final": false
      },
      "hours": {
        "journaled": 0,
        "expected": 96,
        "last_hour": null,
        "last_hour_idx": null
      },
      "integrity": {
        "hash_chain_ok": false,
        "chain_break_at": null,
        "chain_head": null,
        "torn_tail": false,
        "smoke_lines": 0,
        "pins_match": null
      },
      "capture_gap_days": 0,
      "verdict": {
        "status": "none_yet",
        "report_url": null
      }
    },
    {
      "id": "B1",
      "start_at": "2026-10-01T00:00:00Z",
      "verdict_due": "2026-12-24T00:00:00Z",
      "verdict_due_latest": "2026-12-24T00:00:00Z",
      "status": "not_running",
      "week": {
        "index": 1,
        "final": false
      },
      "hours": {
        "journaled": 0,
        "expected": 96,
        "last_hour": null,
        "last_hour_idx": null
      },
      "integrity": {
        "hash_chain_ok": false,
        "chain_break_at": null,
        "chain_head": null,
        "torn_tail": false,
        "smoke_lines": 0,
        "pins_match": null
      },
      "capture_gap_days": 0,
      "verdict": {
        "status": "none_yet",
        "report_url": null
      }
    },
    {
      "id": "B2",
      "start_at": "2026-10-01T00:00:00Z",
      "verdict_due": "2026-12-24T00:00:00Z",
      "verdict_due_latest": "2026-12-24T00:00:00Z",
      "status": "not_running",
      "week": {
        "index": 1,
        "final": false
      },
      "hours": {
        "journaled": 0,
        "expected": 96,
        "last_hour": null,
        "last_hour_idx": null
      },
      "integrity": {
        "hash_chain_ok": false,
        "chain_break_at": null,
        "chain_head": null,
        "torn_tail": false,
        "smoke_lines": 0,
        "pins_match": null
      },
      "capture_gap_days": 0,
      "verdict": {
        "status": "none_yet",
        "report_url": null
      }
    },
    {
      "id": "B3",
      "start_at": "2026-10-05T00:00:00Z",
      "verdict_due": "2026-12-28T00:00:00Z",
      "verdict_due_latest": "2026-12-28T00:00:00Z",
      "status": "not_started",
      "week": {
        "index": null,
        "final": false
      },
      "hours": {
        "journaled": 0,
        "expected": 0,
        "last_hour": null,
        "last_hour_idx": null
      },
      "integrity": {
        "hash_chain_ok": false,
        "chain_break_at": null,
        "chain_head": null,
        "torn_tail": false,
        "smoke_lines": 0,
        "pins_match": null
      },
      "capture_gap_days": 0,
      "verdict": {
        "status": "none_yet",
        "report_url": null
      }
    }
  ],
  "sources": [
    {
      "program": "F5-P",
      "journal": "stage3/paper/journal.jsonl",
      "prefix_sha256": "6774bd94235cf2fe99c8b0adce3c5b208fb5b9023a6e26f5f5765918044e65d7",
      "prefix_lines": 468
    },
    {
      "program": "B1",
      "journal": "forward/batch1/journals/B1.jsonl",
      "prefix_sha256": "cd37751581e510a349abddac0e988eba416ef5e69161ebda260f87078918be5a",
      "prefix_lines": 117
    },
    {
      "program": "B2",
      "journal": "forward/batch1/journals/B2.jsonl",
      "prefix_sha256": "c5b161518b8a7223c85110c2291b5700dcb4e21024d07459c1b8222b81e54572",
      "prefix_lines": 117
    },
    {
      "program": "B3",
      "journal": "forward/batch1/b3/journals/B3.jsonl",
      "prefix_sha256": "7b71fbf13152273e017a68280424a9c9ac8b283832f0ab0d68151835008075f2",
      "prefix_lines": 21
    }
  ],
  "paid_placement": false,
  "not_investment_advice": true,
  "rc": 0,
  "rc_meaning": "0 = every program's journal read (or absent). A source that cannot be read writes nothing."
}
