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#409 pair_loop

FIX pair_loop: commit the WHOLE package for forge deliverables (pyproject+config), not just the module — forge2 installability

goal

BLOCKER for forge2 landing INSTALLABLE packages. A forge-rewrite unit must produce a package that `pip install -e .` installs (standard #200). The worker DOES create the full package (module + pyproject.toml + config) in its worktree, and the auditor validates installability there — but pair_loop commits ONLY the single --deliverable file, so the pyproject.toml/config land as dropped strays. PROVEN: forge pilot #401 merged only forge2/artifact_tree_gen/add.py (849 loc); its pyproject.toml (a stray) never reached main, so the landed package is NOT installable. 68 sourced forge units would all land module-only. FIX pair_loop.py: when the --deliverable path is under a package tree (specifically forge2/<repo>/...), commit the ENTIRE new/modified fileset of that package directory (git add the package root, e.g. forge2/<repo>/), not just the single deliverable file — so pyproject.toml, config, entry points, and any submodules land together. Keep the current single-file behavior for non-package deliverables (tags, tools) unchanged — gate the package-commit on the deliverable living under forge2/ (or add an explicit --package-commit flag the forge dispatch sets). The auditor already validates the whole worktree, so committing the whole package matches what was validated. Also surface the committed fileset in the commit log (replace the empty 'strays':[] with the actually-committed package files). ACCEPTANCE: re-run the forge pilot (or a new forge unit) and confirm forge2/<repo>/ lands with pyproject.toml present and `pip install -e .` succeeds from the merged tree. Deliverable: checkouts/current/congruency/tools/pair_loop.py. Do NOT change tag/tool single-file commit behavior.

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