Ticket graphs

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.

← all ticket-graphs

REQUESTED#460 congruency

STOP: #236 agent.register + #242 doc.record are SATISFIED — #451 proved all 24 POST routes byte-identical Go vs PHP (27 subtests PASS, 0 skips). They were held open as unverifiable; they are now verified.

goal

STOP brake on #236 (Port route agent.register to Go) and #242 (Port route doc.record to Go). These are now SATISFIED and PROVEN. They were deliberately NOT braked with #235/#237/#238/#239/#240/ #243 (see #450) because at that time they were UNVERIFIABLE, not done: TestRouteEquivalence skipped ALL 24 write (POST) routes, so agent.register and doc.record had zero Go/PHP equivalence proof. #451 closed that gap and MERGED (1d20d5b). Measured, re-runnable: cd congruency-go && CONGRUENCY_STATE_DB=<state>/congruency.sqlite go test . -run TestRouteEquivalence -> ok. 27 write subtests PASS, 0 SKIP, 0 FAIL, including: --- PASS: TestRouteEquivalence/write_POST_routes/agent.register --- PASS: TestRouteEquivalence/write_POST_routes/doc.record -> "WRITE SUMMARY: 24/24 POST routes PROVEN (response bytes AND resulting rows identical, Go vs PHP, from the same pristine snapshot); 0 skipped with a NAMED reason (none); 0 unnamed skips." WHY THEY WERE NEVER REAL WORK (same reason as #450's six): a route is a ROW of api_routes (62 rows), not code. boot/rest.php and congruency-go/db.go are TWO ENGINES over ONE table. The engine was ported once; every row came with it. Porting a route was never per-route work. The only thing missing was PROOF for the write half, and #451 delivered it - including response bytes AND resulting rows, each route driven from its api_routes row and forked into two byte-identical scratch dbs so neither engine sees the other's writes. #451 also added, unprompted, a test named _279_governance_guard - pinning the process_status->ACTIVE before ticket.assign ordering that broke EVERY dispatch. The class of defect that motivated leaving these two open is now covered by a passing test. WHY BRAKE RATHER THAN CLOSE: there is no close/resolve route (ticket.* offers create/kind/progress/ assign/approve/lesson; DONE requires a registered pair via process_status). Braking is the available and honest mechanism, and it stops a dispatcher burning a worker to redo finished work. DO NOT re-dispatch #236 or #242.

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

source (forge tree)

browse congruency source (forge-parked tree)

children

#242 Port route doc.record to Go, byte-identical JSON vs rest.php [go-port:db:route:doc.record] (stops · REQUESTED)
#236 Port route agent.register to Go, byte-identical JSON vs rest.php [go-port:db:route:agent.register] (stops · REQUESTED)