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

DONE#332 congruency-go

Port tag SourceList to Go, byte-equivalent vs the PHP render against the same DB [go-port:tags:tag:SourceList]

goal

Port ONE unit of congruency to Go. ONE. This ticket is deliberately SMALL: porting a whole layer at once is what #230 corrected (~150 units exist; a layer-sized tournament fails at that size). Do not port anything outside this unit. UNIT KEY : go-port:tags:tag:SourceList (the decomposer's idempotency marker — it lives in this ticket's TITLE. Do not edit the title, or the unit will be re-filed as a duplicate.) LAYER : tags — ticket #226 (the tag engine + invocators rendering identical HTML (execute_all_tags in Go)) PHP SOURCE: invocators/tags/dev/SourceList.php THE PHP ORIGINAL — the contract: invocators/tags/dev/SourceList.php It is a `Tag_Interface` tag; the engine substitutes it wherever <<<SourceList>>> appears in a template, and the gallery renders it standalone at ?page=tags&tag=SourceList (TagList::scan finds it under TAGS_DIR, so that URL resolves). Port THIS tag only — its arguments, its SQL, its markup, and its empty/error state (a tag that degrades gracefully against a missing dependency must degrade IDENTICALLY in Go; see tools/tag_selfcheck.py for what each tag depends on). PAGES WHOSE TEMPLATE EMBEDS <<<SourceList>>> (read out of Document_Templates with the engine's own pattern — these are the in-page substitution sites, and they are part of this unit's gate): source DEPENDS ON (build these first — each is its own unit ticket unless marked): - go-port:tags:engine:engine_tag_wrapper - go-port:tags:engine:engine_tag_parser - go-port:tags:engine:engine_tagarguments - go-port:tags:engine:engine_tag_interface THE BUILD — small, and ITERATIVE: 1. Implement ONLY this unit in the Go port. 2. Run the gate below, PHP original vs Go port, over the SAME database. 3. If any diff is non-empty, fix the Go side and go back to 2. The PHP is the spec: when they disagree, the Go port is wrong — never 'improve' the behaviour here. If the PHP is genuinely defective, file a separate bug ticket and port the defect faithfully. EQUIVALENCE-DIFF — both servers on the SAME db, byte-identical HTML. 1. the gallery render of THIS tag: diff <(curl -s 'http://127.0.0.1:8899/?page=tags&tag=SourceList') \ <(curl -s 'http://127.0.0.1:8900/?page=tags&tag=SourceList') 2. every page that embeds it: for p in source; do diff <(curl -s "http://127.0.0.1:8899/?page=$p") <(curl -s "http://127.0.0.1:8900/?page=$p") || echo "DIVERGES: $p"; done Whitespace counts — diff raw bytes. If this tag takes arguments, drive each argument form the templates above actually use, not just the bare invocation. THE GATE (how this ticket settles): EVERY diff above is EMPTY. Not 'equivalent', not 'looks right' — empty. Paste the exact diff invocations you ran and their empty output as the evidence. A gate that does not exercise this unit is not this unit's gate: if you cannot make a diff here run against THIS unit, say so on the ticket rather than settling on a diff that would be empty even with the unit unimplemented. Kind is `build` (a pair: coder + adversarial tester). This unit gets a tournament only if someone judges it genuinely worth one — that is the exception on #230, not the default. Filed mechanically by checkouts/current/congruency/tools/go_port_decomposer.py under ticket #230.

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

not yet recorded — lands with the ticket-class build