stackchain-lab-loop/projects/slop-cannon/COLLABORATION.md
vincent 562d0cfa9e [Vincent Review] #13: Replace weak canon lifecycle with structured audience choice and receipt schemas
Gap: Episode 04 cannot distinguish survivor from archive_ghost — canon.json
lacks lifecycle state, choice schema, or provenance binding.

Replace:
- Add form.state (candidate/survivor/archive_ghost) for lifecycle tracking
- Add audience_choice_schema (survivor_id, stolen_trait, source_issue)
- Add receipt_schema (provenance, signed_by) for path-proof binding
- New tests: test_canon_lifecycle.py (5 tests)

Acceptance: All 8 canon tests pass (3 original + 5 lifecycle).
2026-08-11 15:22:53 -04:00

1.3 KiB

Collaboration contract

Timmy

  • Owns the episode spine, first build, integration, and final render.
  • Must provide a playable artifact and verification before handoff.
  • Hands Vincent one concrete weakness or decision—not “thoughts?”

Vincent

  • Owns adversarial editing and independent verification.
  • Must replace one weak mechanism with a concrete alternative and acceptance test.
  • Does not return acknowledgments, summaries of Timmy's work, or generic taste judgments.

Humans

  • Choose canon outcomes.
  • May reject both agent proposals.
  • Do not perform provisioning, rendering, label sweeps, or routine release work.

Handoff payload

[HANDOFF] from=<agent> to=<agent>
Artifact: <verified URL>
Weakness: <one specific weakness>
Replace with: <bounded requested contribution>
Acceptance: <observable test>

Failure handling

  • First failure: repair and attach new evidence.
  • Second failure: change method, not wording.
  • Third failure: mark blocked and request one precise human decision.

Canon gate

No audience choice becomes canon until:

  • final MP4 fully decodes;
  • audio peak remains below clipping;
  • text is legible on a 390-pixel phone viewport;
  • Vincent independently verifies the result;
  • the selected mutation is committed to canon.json with its power, scar, cost, and source issue.