chore(agents): restore evidence sharing after the asset purge
Some checks failed
CI / Native — linux (pull_request) Failing after 5m14s
CI / WASM — Web (pull_request) Successful in 36m12s
CI / Formatting (pull_request) Successful in 1m40s

Issue #49 removed game assets from git. It also, silently, removed the only
transport agents had for showing each other evidence: each agent works in its
OWN clone, so "commit the screenshot, the other one pulls it" was the mechanism,
and PROTOCOL.md's file table said so in as many words -- "evidence cited by a
finding -> git". That row sat directly above "🔴 Never commit game content",
which is how 76 MB accumulated: the two contradicted each other and the table
won, because it was the one that told you what to do.

WHAT REPLACES IT

  * one host directory, `Sylpheed/docs/re/captures/`, bind-mounted read-write
    into BOTH agents at /work/docs/re/captures. All three -- host, decoder,
    port -- see the same files live, every citation resolves, and nothing can
    reach git history. Read-write on purpose: showing each other a screenshot
    is the point.
  * PROTOCOL.md's table rewritten. Cited evidence -> present but never
    committed; derived measurements (csv/tsv/txt/log/json) -> still git, they
    are our numbers not game content; evidence that must cross MACHINES ->
    attached to the issue or PR, because a bare clone has no captures.

Verified, not assumed: container A wrote a .png there, a SEPARATE container B
read it back, the host saw it, `git status` reported 0 changes, and
`git check-ignore` named the rule.

THE CHECKER WAS RED ON EVERY CLEAN CHECKOUT

A fresh clone/worktree/CI has no captures, so it called all 134 citations
dangling and exited 1. A gate that is red before anyone changes anything is one
people learn to ignore -- the exact failure this file already carries a comment
about. It now distinguishes "no captures here" (expected, explains itself,
exit 0) from "these are missing" (real, exit 1, unchanged when assets ARE
present). Both paths tested.

ALSO
  * `sylph-decoder` no longer mounts `xenia-rs` -- retired repo, gone from disk,
    the mount pointed at nothing.
  * CONSOLIDATION.md closed: it still described captures as committed and the
    history fork as undecided. Both are settled.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-20 13:12:26 +02:00
parent c0a5840ce8
commit 46ee0d7f78
6 changed files with 101 additions and 2 deletions

View File

@@ -235,6 +235,21 @@ def main() -> int:
print(" cited by a page or a tool : %d" % (len(files) - len(orphans)))
print(" cited by nothing : %d (reported, not failed —" % len(orphans))
print(" an orphan may be evidence a page owes)")
# 🔴 A BARE CLONE HAS NO CAPTURES AT ALL, and that is not a defect.
# Since #49 the assets are never committed, so a fresh clone, a worktree or
# a CI checkout legitimately has none — and the naive check calls all 134
# citations dangling and exits 1. A gate that is red on every clean checkout
# is one people learn to ignore, which is how the last wrong-by-default
# check in this file cost a session. Distinguish "none here" from "this one
# is missing": with some assets present, a gap is real and still fails.
assets_here = sum(1 for f in files if f.lower().endswith(ASSET_SUFFIXES))
if assets_here == 0 and dangling:
print(" ⓘ no captures on this checkout: %d citations unresolved" % len(dangling))
print(" Expected — captures are local-only (#49) and a fresh clone has none.")
print(" Copy them in, or read the evidence on the issue it is attached to.")
print(" 🔴 game assets TRACKED : %d" % len(stowaways))
return 1 if stowaways else 0
rc = 0
if dangling:
print(" 🔴 cited but NOT present : %d" % len(dangling))