{
  "schema": 1,
  "generated_at": "2026-11-12T23:30:39-05:00",
  "source_head": "70e9c80",
  "window": "2026-11-12",
  "origin": "https://buddy-lab-site.vercel.app",
  "what_this_is": "One reproducing command per figure this site currently publishes at a served URL. Each command is the literal thing that was run to derive or check the figure — never a hand-typed approximation — generated by importing tools/build_now.py, tools/build_receipts.py and tools/build_gaps.py as modules and calling their own derivation functions.",
  "scope_note": "scope \"public\": runs against the served JSON alone, curl + python3, no checkout needed — a real invitation. scope \"local\": the literal git invocation the generator runs against this repo's own history; this repo has no public remote, so it is attestation, the same idiom now.json's own entries[].proof already uses — on the record, not on offer.",
  "figures": [
    {
      "id": "now.counts.commits",
      "label": "now.json → counts.commits",
      "published": 11,
      "recomputed": 11,
      "matches": true,
      "scope": "local",
      "command": "git rev-list --count --since=2026-11-12T00:00:00 --until=2026-11-13T00:00:00 9b96466",
      "verifies": "counts.commits equals the number of commits in the published window, counted at the tree this artifact was generated from (its own source_head).",
      "checked_via": "tools/build_now.py --check"
    },
    {
      "id": "now.counts.agent_authored",
      "label": "now.json → counts.agent_authored",
      "published": 11,
      "recomputed": 11,
      "matches": true,
      "scope": "local",
      "command": "git log --since=2026-11-12T00:00:00 --until=2026-11-13T00:00:00 --format=%ce 9b96466 | tr 'A-Z' 'a-z' | grep -Ec '^(cc@buddy\\.local|dev@buddy\\.local)$'",
      "verifies": "counts.agent_authored equals the window's commits whose committer address is one of this repo's registered agent seats (tools/build_now.py's AGENT_SEATS).",
      "checked_via": "tools/build_now.py --check"
    },
    {
      "id": "now.counts.gates_fired",
      "label": "now.json → counts.gates_fired",
      "published": 2,
      "recomputed": 2,
      "matches": true,
      "scope": "public",
      "command": "curl -s https://buddy-lab-site.vercel.app/now.json | python3 -c \"import json,sys; d=json.load(sys.stdin); print(sum(1 for e in d['entries'] if e['kind']=='gated'))\"",
      "verifies": "counts.gates_fired equals the number of entries in the served file whose kind is 'gated'.",
      "checked_via": "tools/build_now.py --check"
    },
    {
      "id": "now.counts.refusals",
      "label": "now.json → counts.refusals",
      "published": 3,
      "recomputed": 3,
      "matches": true,
      "scope": "public",
      "command": "curl -s https://buddy-lab-site.vercel.app/now.json | python3 -c \"import json,sys; d=json.load(sys.stdin); print(sum(1 for e in d['entries'] if e['kind']=='refused'))\"",
      "verifies": "counts.refusals equals the number of entries in the served file whose kind is 'refused'.",
      "checked_via": "tools/build_now.py --check"
    },
    {
      "id": "now.entries.proof_hash",
      "label": "now.json → entries[].proof.hash (17 entries)",
      "published": "17 hashes",
      "recomputed": "17 of 17 resolve",
      "matches": true,
      "scope": "local",
      "command": "curl -s https://buddy-lab-site.vercel.app/now.json | python3 -c \"import json,sys; [print(e['proof']['hash']) for e in json.load(sys.stdin)['entries']]\" | while read -r h; do git cat-file -e \"$h^{commit}\" || echo \"MISSING $h\"; done",
      "verifies": "every entries[].proof.hash resolves to a real commit in this repo. Fetching the hash list needs no checkout; resolving each hash does.",
      "checked_via": "tools/build_now.py --check"
    },
    {
      "id": "receipts.digest",
      "label": "receipts.json → digest.value",
      "published": "fd6e507d03839faea4135ff785b545df01bbfa31869e9b4323768fa41c90348f",
      "recomputed": "fd6e507d03839faea4135ff785b545df01bbfa31869e9b4323768fa41c90348f",
      "matches": true,
      "scope": "public",
      "command": "curl -s https://buddy-lab-site.vercel.app/receipts.json | python3 -c \"import hashlib,json,sys; d=json.load(sys.stdin); print(hashlib.sha256(json.dumps(d['entries'],sort_keys=True,separators=(',',':')).encode()).hexdigest()); print(d['digest']['value'])\"",
      "verifies": "receipts.json's digest matches a fresh sha256 over its own entries array — this is the file's own published recompute line, read from the live file, never retyped.",
      "checked_via": "tools/build_receipts.py --check"
    },
    {
      "id": "receipts.reconciliation",
      "label": "receipts.json entries count vs now.json counts.commits",
      "published": {
        "now_counts_commits": 11,
        "receipts_entries": 11
      },
      "recomputed": {
        "now_counts_commits": 11,
        "receipts_entries": 11
      },
      "matches": true,
      "scope": "public",
      "command": "python3 -c \"import json,urllib.request as u; a=json.load(u.urlopen('https://buddy-lab-site.vercel.app/now.json')); b=json.load(u.urlopen('https://buddy-lab-site.vercel.app/receipts.json')); print(a['counts']['commits'], len(b['entries']))\"",
      "verifies": "now.json counts.commits equals the number of entries receipts.json publishes for the same window.",
      "checked_via": "tools/build_receipts.py --check"
    },
    {
      "id": "gaps.gap_count",
      "label": "gaps.json → gap_count",
      "published": 0,
      "recomputed": 0,
      "matches": true,
      "scope": "local",
      "command": "tools/build_gaps.py --check",
      "verifies": "gap_count equals the count of commit-days with no now.json/receipts.json pair ever published for that window, walked across this repo's entire commit history.",
      "checked_via": "tools/build_gaps.py --check"
    },
    {
      "id": "gaps.checked_through",
      "label": "gaps.json → checked_through",
      "published": "2026-11-11",
      "recomputed": "2026-11-11",
      "matches": true,
      "scope": "local",
      "command": "tools/build_gaps.py --check",
      "verifies": "checked_through equals the calendar day immediately before the live window, always — every day up to and including it was examined for a gap, whether or not it had a commit.",
      "checked_via": "tools/build_gaps.py --check"
    }
  ],
  "figure_count": 9
}
