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#216 jazz-forge-hygiene

RFC: the FORGE is code's only home — a dead-man's-switch REAPER that commits, pushes, and removes idle checkouts

goal

INVARIANT: code is never left stranded in a checked-out location (anywhere under ~/code/ or any configured checkout root). Code is allowed OUT of the forge in EXACTLY two cases: (1) it is a DEPLOYED production app/utility/script, or (2) an AGENT is ACTIVELY working on it. In every other case the checkout is reclaimed. MECHANISM — reuse the dead-man's-switch pattern we already built (tracker/store.py signals + heartbeat + dead-man's switch, tracker/SIGNALS.md): the DEFAULT condition for any checkout is RECLAIM; the healthy state (active work) must ACTIVELY hold the reaper off via a heartbeat lease. Forgetting to clean up is therefore self-correcting — an idle/stranded checkout is auto-reclaimed, never lingers. RECLAIM is SAFE and ordered: commit any uncommitted work -> push to the forge -> ONLY THEN remove the source directory (work is preserved in the forge before any deletion; nothing is ever lost). Runs as a DURABLE daemon (process_manager, like kokoro/litellm — the #205 durable-runner pattern), not a session child. Extends #213 (no stale checkouts) — that keeps a tree clean; this removes the tree entirely when it should not exist. Spawns the build tickets. DELIVERABLE: docs/CHECKOUT_REAPER_RFC.md — the classify->reclaim state machine + the lease + the deployed-registry.

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

#228 Spec: congruency must NOT require the DB to contain its own source code — forge is the source of truth (spawned · REQUESTED)
#220 RFC: BRANCH-PER-TICKET — every code edit starts on a branch named for its ticket; merge on completion. Find the default specs. (spawned · REQUESTED)
#219 Build: DEPLOYED-app registry — the only persistent-checkout allowlist the reaper honors (spawned · DONE)
#218 Build: active-work LEASE/heartbeat — an agent holds a checkout off the reaper; lapse = dead-man's switch fires (spawned · DONE)
#217 Build: the checkout REAPER daemon — scan checkout roots, classify, and commit->push->remove idle trees (durable, dead-man's-switch) (spawned · DONE)