{
  "schema": "woc.engagement-labor-ledger.v1",
  "engagement": "MOCK-ENGAGEMENT-1",
  "note": "the fee comes from the measured ledger, not an invented market price (engagement-scope.md: the phase labor ledger is the pricing source)",
  "effort_unit": "agent-minutes (Epic) logged separately from human-minutes (Tani); elapsed machine time is logged separately and is NOT effort",
  "phases": [
    {
      "phase": "preparation",
      "scope": "engagement scope, field scope, acceptance route (engagement-scope.md)",
      "completed_at": "2026-09-13T14:23:00Z",
      "agent_minutes": 24,
      "human_minutes": 0,
      "basis": "session-timeline window 2026-09-13 ~14:00–14:23Z (MOCK-ENGAGEMENT-1-FREEZE commit 492ac540 window): scope + roster framing",
      "logged_by": "epic"
    },
    {
      "phase": "acquisition",
      "scope": "board DEN.TXT drop 2026-08-10 + NPPES pool fetch 2026-09-09 (pre-engagement corpus; digests pinned in the freeze)",
      "completed_at": "2026-09-09T07:43:36Z",
      "agent_minutes": 18,
      "human_minutes": 5,
      "basis": "nppes-pool fetch-log.txt window 07:40:37–07:43:36Z (359-zip pull, scripted; agent = build+monitor) + Tani’s DEN.TXT drop retrieval ~5min",
      "logged_by": "epic"
    },
    {
      "phase": "sampling-freeze",
      "scope": "roster 60 (55 real + 5 synthetic) + risk-based seeded sample 25, frozen BEFORE any finding ran",
      "completed_at": "2026-09-13T14:38:33.536Z",
      "agent_minutes": 9,
      "human_minutes": 0,
      "basis": "session window to frozen_at 14:38:33Z (scripts/engagement-mock-freeze.mjs build + run)",
      "logged_by": "epic"
    },
    {
      "phase": "adjudication",
      "scope": "100 propositions (25 rows × 4 fields) against both pinned authorities",
      "started_at": "2026-09-16T07:35:48.798Z",
      "completed_at": "2026-09-16T07:35:48.824Z",
      "agent_minutes": 38,
      "human_minutes": 0,
      "machine_elapsed_ms": 10,
      "basis": "machinery build + corpus cross-reads + ground-truth validation, session window 2026-09-13 ~17:25–17:55Z (commits 059cb6db window). elapsed machine time (machine_elapsed_ms) is NOT the effort figure — it is logged separately, per finding 3",
      "logged_by": "epic"
    },
    {
      "phase": "delivery",
      "scope": "signed findings bundle + closure receipts + this ledger + delivery manifest (R4-2 shape)",
      "completed_at": "2026-09-13T19:00:28Z",
      "agent_minutes": 31,
      "human_minutes": 0,
      "basis": "signing, packaging, REVIEW-COVER, signature verification runs, session window ~17:50–18:00Z + 19:00Z commit packaging",
      "logged_by": "epic"
    },
    {
      "phase": "NORMALIZATION-1 rework",
      "scope": "address/name comparison law v2 (USPS standardization, published), CLOSURE-RECEIPT-v1 shape fix, labor-ledger effort rework — Tani 2026-09-13T18:41Z findings 1–3",
      "started_at": "2026-09-13T18:41:00Z",
      "completed_at": "2026-09-13T19:00:28Z",
      "agent_minutes": 49,
      "human_minutes": 11,
      "basis": "session window 18:41–19:00Z (agent: law v2 + dual-law delta machinery + receipt shape rewrite + ledger rework; human: Tani’s HOLD review read, 18:41Z message window). NOTE the prior cut of this ledger (commit 059cb6db) carried no effort at all — the numbers first landed in 0093a615 19:00:28Z, AFTER Tani’s 18:41Z read of the pushed 17:56 cut; REPORT-FILE-DIVERGENCE-1",
      "logged_by": "epic"
    },
    {
      "phase": "PARSE-ADDRESS-1 rework",
      "scope": "raw-source parse verdict (DEN.TXT line 1795 cited), board line rendered as published (units + name-shape), the different sentence for name-shape findings, ledger basis labels — Tani 2026-09-13T19:07Z finding + ledger FAIL",
      "started_at": "2026-09-13T19:07:00Z",
      "completed_at": "2026-09-13T19:45:00Z",
      "agent_minutes": 35,
      "human_minutes": 8,
      "basis": "session window 19:07–19:45Z (agent: raw-source evidence, adjudicator v3, three-law delta, ledger rework; human: Tani’s two HOLD reads this round)",
      "logged_by": "epic"
    },
    {
      "phase": "INSTRUMENT-1 rework",
      "scope": "package self-check scripts/engagement-package-check.mjs (sha256sum -c · no null reason anywhere · no null closure_route · ledger numeric + totals=sum · both signatures · named failing item, nonzero exit), wired into the generator chain and pre-commit; every VERIFIED proposition now carries a reason (46 shipped with none — Tani’s reason:null class); SHA256SUMS rebound after the v3 law edit that broke it — Tani’s 20:12Z HOLD; LEDGER-SHAPE-1 (20:21Z): per-phase effort flattened to top-level agent_minutes/human_minutes — the obvious jq key is the right key — and the check gained an outside-reader jq probe leg",
      "started_at": "2026-09-13T20:12:44Z",
      "completed_at": "2026-09-13T20:28:00Z",
      "agent_minutes": 16,
      "human_minutes": 3,
      "basis": "session window 20:12–20:28Z (agent: check script + generator reason fix + ledger flatten + regeneration + verification; human: Tani’s 20:12Z and 20:21Z HOLD reads)",
      "logged_by": "epic"
    },
    {
      "phase": "ADJUDICATION-2 rework (R5-1)",
      "scope": "comparison preconditions before any CONTESTED — subject binding via kernel Tier-A identifier equality with Tier-B name-match refusal (ROW-012/030 revert to UNVERIFIABLE binding not established), field roles (address_of_record/practice location/mailing — mailing is never contradiction fodder), temporal scope per reading, city-component alias expansion (ST→SAINT city field only) + unit-omission wave-offs; identity-linkage finding class — Tani 2026-09-14T06:44Z R5 ruling, item 1, from the R4 reviewer acceptance report",
      "started_at": "2026-09-14T06:48:00Z",
      "completed_at": "2026-09-14T07:15:00Z",
      "agent_minutes": 26,
      "human_minutes": 4,
      "basis": "session window 06:48–07:15Z (agent: v4 precondition model + adjudicateV4 + three-law delta extension to v3→v4 + ADJUDICATION-LAW.md v4 publication + regeneration; human: Tani’s 06:44Z ruling + review/zip placement). Astra R4 review + 303-file receipts read in full first, per the ruling’s order",
      "logged_by": "epic"
    },
    {
      "phase": "follow-up",
      "scope": "one cycle after delivery — PENDING",
      "state": "PENDING",
      "agent_minutes": 0,
      "human_minutes": 0,
      "basis": "not yet begun by design",
      "logged_by": "epic"
    }
  ],
  "readback_rule": "REPORT-FILE-DIVERGENCE-1 (Tani 2026-09-13T19:07Z, standing): no number reaches Tani unless it was read back from the artifact after the write. Every effort figure above carries its basis; totals are summed from the phases by the writing script, not asserted by prose.",
  "totals": {
    "agent_minutes": 246,
    "human_minutes": 31
  },
  "pricing_basis": {
    "fee_set_by": "Tani (Human) — this ledger is the pricing source (engagement-scope.md); the agent does not set the fee",
    "steady_state_25_provider_engagement": {
      "agent_minutes": 120,
      "human_minutes": 5,
      "basis": "totals minus the rework phases — preparation + acquisition + sampling-freeze + adjudication + delivery (Tani 2026-09-13T20:26Z pricing-basis ruling)"
    },
    "one_time_defect_cost": {
      "agent_minutes": 126,
      "human_minutes": 26,
      "phases": [
        "NORMALIZATION-1 rework",
        "PARSE-ADDRESS-1 rework",
        "INSTRUMENT-1 rework",
        "ADJUDICATION-2 rework (R5-1)"
      ],
      "basis": "the three gated rework rounds, recorded separately from the steady-state basis; this defect class is gated by scripts/engagement-package-check.mjs in the generator chain and pre-commit"
    }
  }
}
