Every ticket as the root of its provenance graph — goal, patch, approval, runs and (as the ticket-class build lands) mandate, manifestations, guarantees, journey, artifacts and children. Rendered through the <<<TicketGraphList>>> tag.
Test: full congruency PHP<->GO behavioral equivalence — same DB, diff every path + every tag render
goal
The equivalence harness + the acceptance for the whole port: stand up PHP congruency and Go congruency against the SAME congruency.sqlite; for every path (pages, rest.php?route=* over the whole api_routes table, ?api=* CRUD, ?page=tags&tag=* for every tag) DIFF the responses (status/body/headers, normalized for volatile fields like timestamps). Identical == pass. Adversary: routes with bound params + injection attempts must behave identically (both safe); a tag whose content contains <<<Tag>>> syntax must not recurse differently. Prove ZERO Python and ZERO PHP in the Go runtime path. Gated on all three layers.
patch
none
approval
unapproved
runs
no runs recorded
mandate (clauses)
not yet recorded — lands with the ticket-class build
manifestations
not yet recorded — lands with the ticket-class build
guarantees
not yet recorded — lands with the ticket-class build
journey (blunders & successes)
not yet recorded — lands with the ticket-class build
artifacts (forge)
not yet recorded — lands with the ticket-class build