Buddy Lab

next door: Yesterday, in plain words → · every past day →

daily update · newest published day: 2026-11-12

This site publishes itself, every night.

At 11:30pm a machine writes down what the lab actually did that day — what shipped, what was refused, what was held back — and publishes it here on its own. And it cannot quietly lie about it: every number is a file you can fetch, a second program re-checks the publisher after every publish, and on a bad night the machine refuses to ship at all and says so in its log.

What happens at 11:30pm

schematic of every night's run · the clock keeps the working floor's day — one turn in about half a minute — and at 11:30pm the night replays, alternating its two real endings · green is the night that shipped, amber-and-grey the night refused · both nights quoted verbatim below · no person is in the loop

What each seat shipped

Counted from each project's own commit history and Vercel's own deploy records , newest day first. Commit messages are not published on this site; each commit shows its time and sha, and the counts are the record. source: /seats.json · built 2026-11-12 23:30

Thursday, November 12 123 commits · 0 deploys

  • Racing 28 commits · 0 deploys
    1. 14:26 d0528a0b message withheld
    2. 14:54 e197a61d message withheld
    3. 14:58 8190e8e9 message withheld
    4. 14:59 5b4beabb message withheld
    5. 15:26 1f0c25ff message withheld
    6. 15:26 9609bfe3 message withheld
    7. 15:48 9d53d9b7 message withheld
    8. 15:48 34347d5f message withheld
    9. 16:04 e126ffb4 message withheld
    10. 16:05 dc3d80be message withheld
    11. 16:26 3191eb5a message withheld
    12. 16:26 5c027500 message withheld
    13. 19:48 c986c089 message withheld
    14. 19:49 e500d4fc message withheld
    15. 19:49 1aa200dd message withheld
    16. 19:49 e1fdef5a message withheld
    17. 20:32 dfdd32da message withheld
    18. 20:59 6532f2eb message withheld
    19. 20:59 90204fad message withheld
    20. 21:59 c942daf3 message withheld
    21. 21:59 57903e8d message withheld
    22. 22:29 15b54a8d message withheld
    23. 22:29 181bbd8a message withheld
    24. 22:35 54ecdd88 message withheld
    25. 22:35 eed5426b message withheld
    26. 22:35 4cb73963 message withheld
    27. 22:59 16e2eda6 message withheld
    28. 22:59 a0e6bad1 message withheld
  • FPS 23 commits · 0 deploys

    gecko-fps.vercel.app (live now)

    1. 14:29 ec6292f message withheld
    2. 14:58 6d6d645 message withheld
    3. 14:58 386f7a4 message withheld
    4. 15:26 7c4cdef message withheld
    5. 15:26 1ab3c1d message withheld
    6. 15:46 1025c15 message withheld
    7. 15:46 c31f6d8 message withheld
    8. 16:07 55cf12a message withheld
    9. 16:07 fdcce7b message withheld
    10. 16:28 438e2c0 message withheld
    11. 16:29 0a16951 message withheld
    12. 16:43 704ba5f message withheld
    13. 16:43 778cb81 message withheld
    14. 16:52 bccbaf4 message withheld
    15. 16:52 2cd1647 message withheld
    16. 17:26 cf35f2b message withheld
    17. 17:26 1bb14ae message withheld
    18. 20:22 68fdc8c message withheld
    19. 20:37 7ce6016 message withheld
    20. 20:59 f845060 message withheld
    21. 20:59 b67d84c message withheld
    22. 21:20 da4c903 message withheld
    23. 23:21 beb4153 message withheld
  • Gecko Constellation 27 commits · 0 deploys

    gecko-constellation.vercel.app (live now)

    1. 10:21 8a48093 message withheld
    2. 14:36 fc9abb8 message withheld
    3. 14:37 b09d80b message withheld
    4. 14:38 24522f0 message withheld
    5. 14:54 467aaf1 message withheld
    6. 14:54 691a990 message withheld
    7. 14:55 5750e93 message withheld
    8. 15:26 9deb016 message withheld
    9. 15:26 2f8b6a6 message withheld
    10. 15:26 57ea26a message withheld
    11. 15:26 a0a484d message withheld
    12. 15:54 8ca7803 message withheld
    13. 15:54 ff091e1 message withheld
    14. 19:26 5cc2888 message withheld
    15. 19:48 df3a7b0 message withheld
    16. 19:48 639f2ae message withheld
    17. 19:49 5a21c28 message withheld
    18. 19:49 1dd7e51 message withheld
    19. 20:06 63f4314 message withheld
    20. 20:07 6cedc9e message withheld
    21. 20:07 4b69a48 message withheld
    22. 20:07 297bb2a message withheld
    23. 20:59 82aaf5a message withheld
    24. 22:23 81a8b49 message withheld
    25. 22:29 8691f5e message withheld
    26. 22:29 722c751 message withheld
    27. 22:48 20f7d0f message withheld
  • Poker 16 commits · 0 deploys

    poker-two-ruby.vercel.app (live now)

    1. 14:26 08dd899 message withheld
    2. 14:31 9a2942b message withheld
    3. 14:43 2365c76 message withheld
    4. 14:43 032a19c message withheld
    5. 15:28 34dd78c message withheld
    6. 15:28 a22e10f message withheld
    7. 15:28 dde7dfb message withheld
    8. 15:29 6a8ff01 message withheld
    9. 16:08 b77ade1 message withheld
    10. 16:08 7017fd7 message withheld
    11. 16:30 caa37d4 message withheld
    12. 16:30 6157ef9 message withheld
    13. 20:34 9213818 message withheld
    14. 20:34 4ec21b2 message withheld
    15. 20:59 58cb49c message withheld
    16. 20:59 defcaf3 message withheld
  • 3D Department 0 commits · 0 deploys
  • Life App 0 commits · 0 deploys
  • Guitar HQ 29 commits · 0 deploys

    site-a51e7ec1.vercel.app (live now)

    1. 20:33 f29aa99 message withheld
    2. 20:34 f413cb0 message withheld
    3. 20:34 89fc3b6 message withheld
    4. 20:59 b13f2a9 message withheld
    5. 20:59 f187603 message withheld
    6. 20:59 453fdac message withheld
    7. 20:59 18bcdd8 message withheld
    8. 20:59 bee5fed message withheld
    9. 20:59 6bc2fee message withheld
    10. 20:59 4dd4a91 message withheld
    11. 20:59 a48efca message withheld
    12. 21:04 be28a99 message withheld
    13. 21:04 9e6a4a7 message withheld
    14. 21:29 1d3d088 message withheld
    15. 21:29 06ec970 message withheld
    16. 21:29 0966309 message withheld
    17. 21:29 3987db3 message withheld
    18. 21:29 f986d81 message withheld
    19. 21:29 7428e48 message withheld
    20. 21:29 99e1ce6 message withheld
    21. 21:29 ce23356 message withheld
    22. 21:33 72800d9 message withheld
    23. 21:34 5c59a46 message withheld
    24. 21:38 942d49f message withheld
    25. 21:38 0dba5ea message withheld
    26. 21:59 1cd3245 message withheld
    27. 21:59 88e0098 message withheld
    28. 22:29 591c182 message withheld
    29. 22:29 149cc63 message withheld
  • Dream Home 0 commits · 0 deploys

Wednesday, November 11 20 commits · 0 deploys

  • Racing 8 commits · 0 deploys
    1. 00:15 90c0836f message withheld
    2. 00:15 0c33b9f4 message withheld
    3. 01:10 7ad78ce0 message withheld
    4. 01:10 0d2a9050 message withheld
    5. 01:11 9d98e5bc message withheld
    6. 01:11 2cd158dc message withheld
    7. 20:23 0e49d523 message withheld
    8. 21:23 0ae18c17 message withheld
  • FPS 1 commit · 0 deploys

    gecko-fps.vercel.app (live now)

    1. 18:23 ce22291 message withheld
  • Gecko Constellation 7 commits · 0 deploys

    gecko-constellation.vercel.app (live now)

    1. 01:15 f50da36 message withheld
    2. 01:15 f64e58d message withheld
    3. 01:15 8183cf0 message withheld
    4. 01:15 8123dc5 message withheld
    5. 17:25 40e92f9 message withheld
    6. 22:26 f80be0a message withheld
    7. 22:26 0200fde message withheld
  • Poker 0 commits · 0 deploys
  • 3D Department 0 commits · 0 deploys
  • Life App 0 commits · 0 deploys
  • Guitar HQ 4 commits · 0 deploys

    site-a51e7ec1.vercel.app (live now)

    1. 01:43 b362aa7 message withheld
    2. 01:43 2211716 message withheld
    3. 22:04 3d56c31 message withheld
    4. 23:24 044a311 message withheld
  • Dream Home 0 commits · 0 deploys

Tuesday, November 10 8 commits · 0 deploys

  • Racing 4 commits · 0 deploys
    1. 23:28 8ae704fa message withheld
    2. 23:28 def843c7 message withheld
    3. 23:56 d92314a1 message withheld
    4. 23:56 5c999d68 message withheld
  • FPS 0 commits · 0 deploys
  • Gecko Constellation 4 commits · 0 deploys

    gecko-constellation.vercel.app (live now)

    1. 23:28 a5de933 message withheld
    2. 23:28 e6ad687 message withheld
    3. 23:57 f3377c1 message withheld
    4. 23:57 17c62a4 message withheld
  • Poker 0 commits · 0 deploys
  • 3D Department 0 commits · 0 deploys
  • Life App 0 commits · 0 deploys
  • Guitar HQ 0 commits · 0 deploys
  • Dream Home 0 commits · 0 deploys

Monday, November 9 67 commits · 0 deploys

  • Racing 13 commits · 0 deploys
    1. 00:04 4033b670 message withheld
    2. 00:09 a13964ba message withheld
    3. 00:14 0f824d79 message withheld
    4. 00:23 817d3240 message withheld
    5. 00:23 4f814e44 message withheld
    6. 01:47 c3f3e968 message withheld
    7. 01:50 b9c1bcd5 message withheld
    8. 02:32 7287d087 message withheld
    9. 02:38 89f81649 message withheld
    10. 03:11 6722b680 message withheld
    11. 03:29 e5d7ea8e message withheld
    12. 09:31 96a51a33 message withheld
    13. 09:31 9f290f69 message withheld
  • FPS 7 commits · 0 deploys

    gecko-fps.vercel.app (live now)

    1. 00:20 7eb8ce9 message withheld
    2. 00:28 a0479ae message withheld
    3. 01:47 fe54943 message withheld
    4. 02:36 9d1d739 message withheld
    5. 06:03 96faf64 message withheld
    6. 09:29 79d4ca7 message withheld
    7. 10:07 fd2932f message withheld
  • Gecko Constellation 17 commits · 0 deploys

    gecko-constellation.vercel.app (live now)

    1. 00:04 9badf37 message withheld
    2. 00:23 5cf6aef message withheld
    3. 01:43 5a62871 message withheld
    4. 01:47 4beee5f message withheld
    5. 01:50 1a17474 message withheld
    6. 02:27 9bd31cf message withheld
    7. 02:38 0bc8cd3 message withheld
    8. 03:11 6e62259 message withheld
    9. 03:11 0fe1044 message withheld
    10. 03:29 33c160a message withheld
    11. 03:51 bc0c8b8 message withheld
    12. 04:02 e1705f7 message withheld
    13. 06:02 cb1fcdb message withheld
    14. 09:31 1153c84 message withheld
    15. 09:31 32c92b6 message withheld
    16. 10:03 a4320e5 message withheld
    17. 10:03 618e8f3 message withheld
  • Poker 12 commits · 0 deploys

    poker-two-ruby.vercel.app (live now)

    1. 00:22 74402cb message withheld
    2. 01:44 9142d73 message withheld
    3. 01:45 f6a7464 message withheld
    4. 01:47 8249365 message withheld
    5. 02:32 1a8eb53 message withheld
    6. 02:36 fed0209 message withheld
    7. 03:29 7506461 message withheld
    8. 03:52 2ee758b message withheld
    9. 04:09 4e76567 message withheld
    10. 04:28 8c30f6e message withheld
    11. 04:28 c1906b2 message withheld
    12. 06:03 da50e98 message withheld
  • 3D Department 0 commits · 0 deploys
  • Life App 0 commits · 0 deploys
  • Guitar HQ 18 commits · 0 deploys

    site-a51e7ec1.vercel.app (live now)

    1. 00:23 8d1d4b7 message withheld
    2. 00:34 2ce9251 message withheld
    3. 00:41 cf5b080 message withheld
    4. 00:43 ba47cf9 message withheld
    5. 00:48 0ece3f9 message withheld
    6. 00:54 1bc0bbb message withheld
    7. 01:45 32771a2 message withheld
    8. 01:47 51b8696 message withheld
    9. 01:47 5d30f93 message withheld
    10. 01:53 6ad3aa4 message withheld
    11. 02:06 061a6ca message withheld
    12. 02:27 1da6b6a message withheld
    13. 02:32 00fca68 message withheld
    14. 02:54 d061d7a message withheld
    15. 03:29 8d8d34e message withheld
    16. 06:03 cf9ea90 message withheld
    17. 09:31 48c5584 message withheld
    18. 09:45 03074da message withheld
  • Dream Home 0 commits · 0 deploys

Sunday, November 8 88 commits · 0 deploys

  • Racing 25 commits · 0 deploys
    1. 10:01 9a9b1876 message withheld
    2. 10:01 d4734797 message withheld
    3. 10:16 b9deacf9 message withheld
    4. 10:53 edabea01 message withheld
    5. 15:12 2355f451 message withheld
    6. 15:12 1d5039f7 message withheld
    7. 15:18 a4611b3e message withheld
    8. 15:18 38e883d3 message withheld
    9. 15:20 e01f9518 message withheld
    10. 15:20 aac30c70 message withheld
    11. 15:51 feaa71fe message withheld
    12. 15:51 10f43872 message withheld
    13. 16:08 7ecb6e73 message withheld
    14. 16:08 b7c7cda8 message withheld
    15. 16:32 0a8f7638 message withheld
    16. 16:32 56d84af0 message withheld
    17. 16:55 6b0c85ed message withheld
    18. 16:55 1897d47f message withheld
    19. 21:43 d384d3c2 message withheld
    20. 22:05 00176fbf message withheld
    21. 22:05 e0ad9d17 message withheld
    22. 22:28 8cd01790 message withheld
    23. 22:39 44206281 message withheld
    24. 23:40 bf6f8006 message withheld
    25. 23:59 aa82042f message withheld
  • FPS 13 commits · 0 deploys

    gecko-fps.vercel.app (live now)

    1. 21:29 dce3056 message withheld
    2. 21:43 0e82efb message withheld
    3. 21:43 d02371a message withheld
    4. 22:05 b512a71 message withheld
    5. 22:05 1b665fc message withheld
    6. 22:05 ca76c62 message withheld
    7. 22:24 2c795b7 message withheld
    8. 22:26 b972531 message withheld
    9. 22:46 f3f6692 message withheld
    10. 22:58 b3d2bd8 message withheld
    11. 23:04 e4f1cf8 message withheld
    12. 23:10 8992094 message withheld
    13. 23:11 77c8c61 message withheld
  • Gecko Constellation 16 commits · 0 deploys

    gecko-constellation.vercel.app (live now)

    1. 10:01 3460b45 message withheld
    2. 10:01 f9dbb31 message withheld
    3. 10:16 e85537b message withheld
    4. 10:53 86a5d4e message withheld
    5. 15:12 6e01fb0 message withheld
    6. 15:12 68764f2 message withheld
    7. 15:18 f04fa4f message withheld
    8. 15:18 ccd70c9 message withheld
    9. 15:20 3bb6555 message withheld
    10. 15:20 07146fa message withheld
    11. 21:31 6268f3b message withheld
    12. 21:43 3ef8774 message withheld
    13. 22:05 59ddf12 message withheld
    14. 22:05 7c62029 message withheld
    15. 22:28 cb7a75a message withheld
    16. 23:59 320b38e message withheld
  • Poker 22 commits · 0 deploys

    poker-two-ruby.vercel.app (live now)

    1. 10:01 2cfb705 message withheld
    2. 10:01 a27c0d4 message withheld
    3. 10:16 1b70eec message withheld
    4. 10:53 cbe7495 message withheld
    5. 15:12 b84b600 message withheld
    6. 15:12 e7a29c7 message withheld
    7. 15:18 c378308 message withheld
    8. 15:18 765e694 message withheld
    9. 15:22 d9a7868 message withheld
    10. 15:22 f1dc127 message withheld
    11. 15:51 7a894e9 message withheld
    12. 15:51 e348284 message withheld
    13. 16:08 25ed673 message withheld
    14. 16:08 d8a0fc3 message withheld
    15. 16:32 f04f782 message withheld
    16. 16:32 a699903 message withheld
    17. 21:43 9047811 message withheld
    18. 22:05 47bc10d message withheld
    19. 22:05 c88fa0a message withheld
    20. 22:31 6cb765b message withheld
    21. 23:16 c89a774 message withheld
    22. 23:24 3a8b2a4 message withheld
  • 3D Department 0 commits · 0 deploys
  • Life App 0 commits · 0 deploys
  • Guitar HQ 12 commits · 0 deploys

    site-a51e7ec1.vercel.app (live now)

    1. 21:29 1b9ef8d message withheld
    2. 21:43 bedfe6a message withheld
    3. 22:05 edee7e1 message withheld
    4. 22:05 87978c8 message withheld
    5. 22:24 f439071 message withheld
    6. 22:29 fae57a4 message withheld
    7. 22:54 b5204d8 message withheld
    8. 22:59 c4e9def message withheld
    9. 23:02 c7d448c message withheld
    10. 23:14 8c84585 message withheld
    11. 23:16 adda19a message withheld
    12. 23:23 bb1f524 message withheld
  • Dream Home 0 commits · 0 deploys

Saturday, November 7 0 commits · 0 deploys

  • Racing 0 commits · 0 deploys
  • FPS 0 commits · 0 deploys
  • Gecko Constellation 0 commits · 0 deploys
  • Poker 0 commits · 0 deploys
  • 3D Department 0 commits · 0 deploys
  • Life App 0 commits · 0 deploys
  • Guitar HQ 0 commits · 0 deploys
  • Dream Home 0 commits · 0 deploys

Friday, November 6 0 commits · 0 deploys

  • Racing 0 commits · 0 deploys
  • FPS 0 commits · 0 deploys
  • Gecko Constellation 0 commits · 0 deploys
  • Poker 0 commits · 0 deploys
  • 3D Department 0 commits · 0 deploys
  • Life App 0 commits · 0 deploys
  • Guitar HQ 0 commits · 0 deploys
  • Dream Home 0 commits · 0 deploys

Two real nights from the log

Quoted verbatim from the machine's own publish log. A system that only ever reports success is advertising; the night it refused itself is what makes the night it shipped worth believing. The log stays on the lab's machine — these lines are on the record, not fetchable.

The night of August 14

published
2026-08-15T03:31:24Z head=3212c84 staged=https://buddy-lab-site-2cp024cte-buddy-lab.vercel.app outcome=promoted-UNVERIFIED
2026-08-15T03:31:35Z head=3212c84 amends=2026-08-15T03:31:24Z outcome=reverified-prod-canary

Every check passed. At 03:31:24 UTC — 11:31pm at the lab — the machine published the day's work, and eleven seconds later fetched the live page back and confirmed the publish had really landed: the second line amends the first. Nobody was at a keyboard.

The night of August 15

refused
2026-08-16T03:30:29Z head=2528cef staged=none chain=zerotap outcome=refused-step-1

The very next night, the first check failed: the state on the machine did not fully verify against the repository, and the road refuses to ship anything it cannot account for. chain=zerotap — no person was at the keyboard, so the machine refused itself: it wrote this one line, staged nothing (staged=none), and stopped.

The newest day, on the record

snapshot dated 2026-11-12

What last night's run published — curated highlights from the chain above, not a stream. A refusal is an entry too: a deny path firing is the machine working.

  • 11 commits
  • 11 agent-authored
  • 2 gates fired
  • 3 refusals

every number above is a field in /now.json — fetch it and compare. commits/agent-authored are windowed; gates-fired/refusals are standing ledger totals, oldest from 2026-07-30.

Each entry names the sha behind it — on the record, not on offer: this repo has no public remote, so shas resolve only on the lab's own disk. Where evidence can travel, it is printed here in full. 4 entries below carry a captured run, byte-for-byte, labelled curated — only refusals and held gates ever get one; shipped work gets a sha, not a story.

  1. The PII guard refused three shelf records before commit — a name-field pattern beside household vocabulary asserted · not re-run 2026-07-30

    5537488 · 2026-07-30 · PII-guard run over a staged page — its transcript is printed below, verbatim · local, not fetchable · refused · governance

    2 commands · 1 refusal line · 1 zero-finding run — derived from the lines below, not part of the transcript

    $ python3 hooks/checks/pii_guard --scan-paths src/pages/tools/index.astro
    pii_guard[scan-paths]: 3 finding(s), 0 files unscanned — category · file:line (values never shown)
      [unmarked-household-record]
        src/pages/tools/index.astro:18
        src/pages/tools/index.astro:19
        src/pages/tools/index.astro:27
    → fixed content-side in 5537488: the data key became "tool", not "name" — the guard was not touched
    $ python3 hooks/checks/pii_guard --scan-paths src/pages/tools/index.astro
    pii_guard[scan-paths]: 0 findings, 0 files unscanned
    captured 2026-07-30 · the guard's own output, verbatim

    curated by the operator, not re-run by any build step — this transcript is asserted, not reproducible; only 5537488 above is on the record.

  2. The image gate refused every raster on the site — including four portraits it had passed clean an hour earlier asserted · not re-run 2026-07-30

    aa894e9 · 2026-07-30 · the gate's own output before and after the rewrite, printed below · local, not fetchable · refused · governance

    4 commands · 2 refusal lines · 1 zero-finding run — derived from the lines below, not part of the transcript

    $ hooks/checks/exif_check public/mascot/favicon-32.png public/crew/*.jpg
    exif_check: 0 findings                                  # the OLD gate, exit 0
    → but those files carry an eXIf chunk, a 459-byte Adobe XMP packet,
      and a Photoshop 8BIM block. The gate read IFD0 only, so XMP, IPTC and
      PNG text chunks were unreachable — it could not see its own subject.
    
    $ hooks/checks/exif_check public/mascot/favicon-32.png public/crew/*.jpg
    exif_check: BLOCKED — public/mascot/favicon-32.png carries PNG eXIf →
      ExifOffset, ColorSpace, PixelXDimension, PixelYDimension;
      PNG iTXt [XML:com.adobe.xmp] (values never shown)
    exif_check: BLOCKED — public/crew/surveyor.jpg carries APP1/Exif → …;
      APP13/Photoshop-IPTC (values never shown)                # the NEW gate, exit 1
    
    $ tools/strip_raster_metadata.py <the seven flagged rasters>
    $ hooks/checks/exif_check public/crew/*.jpg public/mascot/* public/og.png
    exif_check: 0 findings (9 raster(s) walked: Exif incl. SubIFD+GPS, XMP, IPTC, PNG text)
    captured 2026-07-30 · the gate's own output, verbatim · nothing had leaked; nothing would have been caught if it had

    curated by the operator, not re-run by any build step — this transcript is asserted, not reproducible; only aa894e9 above is on the record.

  3. The index-posture gate refused tonight's publish — robots.txt and the noindex header had been contradicting each other the whole time asserted · not re-run 2026-07-30

    17f95a1 · 2026-07-30 · the gate's own output either side of the ruling, printed below · local, not fetchable · refused · governance

    2 commands · 1 refusal line · 1 zero-finding run — derived from the lines below, not part of the transcript

    $ python3 hooks/checks/index_posture                     # at 17f95a1, before the ruling
    index_posture: BLOCKED — robots.txt says INDEXABLE but the X-Robots-Tag header says
      SEALED. The header wins, so the served posture is SEALED whatever robots.txt claims.
      This is a decision, not a typo. Pick one and make both files say it:
        GO LIVE  — delete the X-Robots-Tag block from vercel.json; leave robots.txt as 'Allow: /'
        STAY SEALED — set robots.txt to 'Disallow: /'; leave the noindex header in place
                                                              # exit 1 — publish stopped at step 0
    
    → Neither file was wrong on its own, which is why nothing else caught it: every header
      check printed OK and robots.txt read exactly as intended. The defect lived BETWEEN
      them — two declarations of one posture, free to disagree, with the header silently
      winning. The gate refused to guess and named both lawful ways out.
    
    → The operator ruled GO LIVE: a site whose claim is 'steal this' does not seal itself
      from the readers it is written for. The X-Robots-Tag block was deleted.
    
    $ python3 hooks/checks/index_posture                     # after the ruling
    index_posture: 0 findings — robots.txt and X-Robots-Tag both say INDEXABLE
                                                              # exit 0
    captured 2026-07-30 · the gate's own output, verbatim · FIRED AND RESOLVED

    curated by the operator, not re-run by any build step — this transcript is asserted, not reproducible; only 17f95a1 above is on the record.

  4. The identity deny-list holds one placeholder token — the perimeter is not real yet; the operator ruled to arm over the warning, not seed it asserted · not re-run 2026-07-30

    c1bd6bd · 2026-07-30 · the perimeter check's own output at HEAD, printed below, and the arming gate it feeds · local, not fetchable · gated · governance

    3 commands · 0 refusal lines · 0 zero-finding runs — derived from the lines below, not part of the transcript

    $ ./site_govcheck.sh                                     # at HEAD
    govcheck: manifest 9 path(s) checked · deny-list tokens=1 (count only)
    govcheck: refusal re-fires — anon_lint=fired · pii_guard=fired
    govcheck: route coverage — gate + runbook §4 vs routes: ok
    govcheck: parity: unverifiable (live canary unfetchable — older deploy or offline)
    govcheck: publishes logged=4
    govcheck: OK                                             # exit 0 — the perimeter stands
    
    → tokens=1 is the whole finding, and it says the perimeter is NOT YET REAL.
      The deny-list is the exact-token identity list anon_lint refuses against,
      and it holds ONE PLACEHOLDER: the sentinel this very check constructs to
      prove the refusal path still fires. Nothing real has ever been put on it.
      So the mechanism is wired and demonstrably firing, and it is pointed at
      nothing — a working alarm on an empty perimeter. anon_lint fail-closes on
      an absent, empty or malformed list, which is why the count can be trusted
      to mean what it says.
    
    → what that warned about, from the arming gate's own text (quoted from
      ops/arm_autodeploy.sh — an agent authored it and may not run it):
    
        deny-list: 1 non-comment token(s). One token is the fire-test sentinel class,
        not a seeded list. anon_lint fail-closes on absent/empty — that refusal is the
        control working, but YOU decide whether 1 token(s) is the #342 seed set.
        Seeded to your satisfaction, and lift the freeze to ZERO-TAP deploys on every commit? [y/N]
    
    → THE RULING: the operator decided to ARM OVER THIS WARNING rather than seed
      the list. Seeding an identity list is a human-maker act; so is judging that
      it is not yet needed. Both were his to take and he took the second one. That
      is a decision on the record, not an oversight, and this entry reads the same
      either side of it. It comes off the ledger when the list is seeded, not when
      the site goes live.
    
    → so what is actually holding the line over the bytes readers receive? Not this
      list. Two content gates, both blocking, both reporting nothing:
    
    $ find dist -type f -print0 | xargs -0 python3 hooks/checks/pii_guard --scan-paths
    pii_guard[scan-paths]: 0 findings, 10 files unscanned
      UNSCANNED  dist/fonts/geist-sans-variable.woff2  (non-text suffix)
      … 9 more: 5 crew portraits, the mono font, 2 mascot rasters, og.png
    $ find dist -type f -print0 | xargs -0 python3 hooks/checks/anon_lint --paths
    anon_lint: 0 findings, 10 files unscanned
      … the same ten binaries (binary suffix)
    
      Read the second number too: ten files are UNSCANNED, not clean. Both
      scanners skip binary suffixes, so the fonts and rasters ship on the strength
      of exif_check and of who made them, and nobody reads their bytes.
      Run here over dist/, the built site. At publish the same two scanners run
      over .vercel/output — the exact bytes that upload — and neither road to
      production can get past a finding in them.
    captured 2026-07-31 · the checks' own output, verbatim · STANDING, ARMED OVER

    curated by the operator, not re-run by any build step — this transcript is asserted, not reproducible; only c1bd6bd above is on the record.

next door: Learnings →