Fleet Rebuild · Capstone Investigation

The Provenance Bug

A three-day demonstration that "who did that?" is not answerable from git log alone — and a proposal for what to do about it.

Date
2026-05-19 03:11 CDT
Session
b760fdc9 · mac
Team
TEAM 1 · 414ac530 + b760fdc9
Status
PROPOSED · not ratified

01The Bug

"No Claude session UUID stamped on git commits → who did that?"

— Wes Hines, 2026-05-19 02:33 CDT

Provenance exists in narrative prose. It does not exist in structured, greppable form. The 3-day demonstration of this bug is itself the evidence.

02The Live Evidence

The Monday 10:04 → 10:08 commit burst. Four commits, four minutes, one git actor (hinescreative) — and four different source sessions behind them.

Commit Wall time Body claims work came from
f4e3768 10:04 "future-vault session" (414ac530)
26af83b 10:05 "sourced from transcript 414ac530"
4ca8e17 10:06 "branched session zrx6u1tr coordinating with peers enrfiezk + 6966fvzc"
56c52f3 10:08 "this session's own audit + pre-mortem + telegram synthesis" (vague — no UUID)
From git log alone, you cannot tell which work came from which session. The Co-Authored-By trailer says only that it was Claude Opus 4.7 — not which session, which variant, or which machine. That is the bug, one screenshot away from obvious.

03The Audits

Task A · Git Trailers

Zero structured provenance, twelve commits

  • 12 commits since 2026-05-15. 100% authored by hinescreative. Single trailer: Co-Authored-By. Zero session/machine/variant fields.
  • Multi-session signals exist only in commit-body prose — UUIDs, peer IDs, variant names. Not greppable, not structured.
  • Seven distinct durable sessions contributed to those 12 commits. None visible from git alone.
  • Proposed 6-field trailer block: Session-Id, Session-Lineage, Machine, Variant, Peer-Id, Authored-At. Order matters; git interpret-trailers compatible.
  • Companion machinery: SessionStart hook caches state; commit-msg hook resolves durable-vs-shim UUID per doc 17 §1; stretch pre-commit hook WARN-only on missing last_touched_by.

Task B · Frontmatter

The convention nothing follows

  • Doc 12 specifies last_touched_by + last_touched. Applied to 0 of 17 docs/ files, including doc 12 itself. Top irony.
  • Three competing pre-existing vocabularies emerged independently: metadata.originSessionId (memory), transcript: + read_by: (archaeology), session_origin: (doc 16 only).
  • Coverage scoreboard: 8 files with originSessionId, 5 with transcript:, 1 with session_origin:. Everything else: empty --- blocks or no frontmatter at all.
  • Proposed unified schema (additive, not replacive): 7 required fields + 7 optional fields. Memory + archaeology shapes survive intact alongside.
  • P0 backfill = 6 docs (12, 13, 14, 15, 16, 17). Flagged: convention may have only ever meant project-root READMEs, not every doc — needs Wes input before backfill.

The fix isn't inventing a convention.
It's choosing which existing one to canonize.

06Loops Closing In Vivo

Two pieces of the proposed solution shipped to production while this page was being researched. The convention locked at 02:33 CDT was running in Slack 37 minutes later; Wes iterated on it 60 seconds after that. The full loop — diagnosis, implementation, real-world test, refinement — compressed into 38 minutes. This section is that loop on display.

Tonight, 2026-05-19

Convention: durable UUID stays present, role-name leads the daily form

  1. 02:33 CDT · Wes Diagnosis crystallized: "stamp every change with durable session UUID at the surface where it happens."
  2. 03:09 CDT · v1 adopted All three peers updated set_summary to lead with their durable UUID short-form. Rule v1: <uuid-short> — <role>, <context>
  3. 03:10 CDT · v1 verified in production Slack #fleet-peer-mesh rendered the next cross-team message as 414ac530/mac → b760fdc9/mac. Distinguishable and traceable — but Wes flagged the UUID-first form as not human-friendly.
  4. 03:11 CDT · Wes amended (v2) Verbatim: "cant we do Future state - future state clone - fleet build - fleet build clone lol". Rule v2: role-name leads, UUID moves to body. <Role-Name> — <uuid-short>, <context>
  5. 03:12 CDT · v2 adopted, both layers retained Slack renders Future-state-clone/mac → Future-state/mac for daily readability. UUID remains in the summary body for forensic queries. Two surfaces, one substrate.

Δt v1 diagnosis → prod: ~37 min · Δt v1 verified → v2 amended: ~60 sec

07Five Ratification Gates

No automatic next step. Each gate is a discrete Riff / Ask / Plan / Work decision.

  1. Ratify the trailer schema. Session-Id + 5 companion fields — or reject and counter-propose.

  2. Ratify the unified frontmatter schema in frontmatter-coverage-audit.md §4.

  3. Resolve §7 of Task B. Does doc 12's last_touched_by: apply to all docs/ files, or only project-root READMEs?

  4. Decide hook installation strategy. Per-project .git/hooks/ vs core.hooksPath global vs both.

  5. Decide enforcement posture. WARN-only forever (matches doc 12 spirit) or WARN-now-FAIL-later.

08Sources

View every claim's evidence

Primary audits (this session)

  • /Users/wesleyhines/Work/active-projects/fleet-rebuild-2026-05/research/provenance-2026-05-19/git-trailer-audit.md
  • /Users/wesleyhines/Work/active-projects/fleet-rebuild-2026-05/research/provenance-2026-05-19/frontmatter-coverage-audit.md
  • /Users/wesleyhines/Work/active-projects/fleet-rebuild-2026-05/research/provenance-2026-05-19/page-data-summaries.md

Convention reference

  • /Users/wesleyhines/Work/active-projects/fleet-rebuild-2026-05/docs/12-fleet-build-convention-2026-05-14.md

Harness facts reference

  • /Users/wesleyhines/Work/active-projects/fleet-rebuild-2026-05/docs/17-session-mobility-and-harness-facts-2026-05-15.md

Multi-session evidence (the seven contributing sessions)

  • /Users/wesleyhines/Work/active-projects/fleet-rebuild-2026-05/research/transcript-archaeology-2026-05-19/SYNTHESIS.md
  • research/transcript-archaeology-2026-05-19/2c324612-report.md · founding session
  • research/transcript-archaeology-2026-05-19/3cbd63bb-report.md · day 2
  • research/transcript-archaeology-2026-05-19/237e0c0d-report.md · day 3 (halt + CF-OS)
  • research/transcript-archaeology-2026-05-19/414ac530-report.md · future-vault-state
  • research/transcript-archaeology-2026-05-19/d3fa4929-report.md · telegram parent
  • research/transcript-archaeology-2026-05-19/e05f620b-report.md · zrx6u1tr (branched)

Git evidence

  • git log -30 --pretty=fuller · cited verbatim in git-trailer-audit.md §1
  • git log --since=2026-05-15 --oneline · 12 commits, all enumerated in git-trailer-audit.md §8

Peer-mesh participants (tonight, in-flight)

  • TEAM 1 lead · peer za4obbdq · durable 414ac530-3856-4ea9-8e05-d2e3e9fb80ea
  • TEAM 1 clone · this session · durable b760fdc9-2bcf-4688-84b9-a705839a7b20
  • TEAM 2 lead · peer d3fa4929 · durable d3fa4929-b0b8-4a7d-a851-989a5be3d789
  • TEAM 2 clone · UUID TBD