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

ACTIVE#183 codebean

codebean: ingest/envelop an existing module + repo (source->model, pairs with git_surface)

goal

codebean is currently WRITE-ONLY (model->source via render). Add the reverse: ingest an existing Python module/repo INTO codebean's Module/Class/Function model so it can be edited structurally and re-saved. TRACTABLE because codebean stores function bodies as OPAQUE SOURCE STRINGS (set_body) — ingest need not model statement-level ASTs, only the skeleton (module -> classes -> functions/methods, each with its body as text, plus decorators, bases, params, module-level imports/assignments as a preamble). New MCP tools: import_module(path) and import_repo(repo) — the latter pairs with git_surface (inspect_git_surface + pull_atomic_file already read existing repos). Use the ast groundwork already in prototype/criteria_miner.py. ACCEPTANCE (tester proves): round-trip fidelity — ingest an existing .py, render() it back, and the re-rendered module is SEMANTICALLY equivalent (same classes/functions/bodies; import+exec both, compare behavior on a smoke input); then structurally edit an ingested module (add a method) and save; git_surface envelops a real repo and codebean ingests one of its modules. Component: codebean.

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

#234 codebean: wire import_module/import_repo MCP tools in server.py using the delivered importer.py (spawned · DONE)