todo2code

Participant: codex (AI agent)

Understanding

The completed t2c.branch/v1 projector deliberately accepts immutable facts instead of running Git. The next missing boundary is a local runtime observer that pins moving names to exact SHAs, derives topology and textual-collision facts, and detects ref movement without altering the user’s repository.

The output is intentionally insufficient to authorize a merge: this ticket does not claim semantic completeness or infer PR/reviewer state. Its value is to make later todo2code, Goal, Koru and Validator consumers share one exact, reproducible Git snapshot rather than resolving branches independently.

Intent

Risks and controls

Execution plan

  1. Change ticket state to IN_PROGRESS / EDIT after explicit approval.
  2. Implement strict input validation, exact ref capture and canonical output.
  3. Add read-only topology, changed-path and stable patch-ID materialization.
  4. Add isolated textual merge inspection and pair short-circuiting.
  5. Re-resolve every ref and fail closed if the snapshot moved.
  6. Test clean, conflict, duplicate patch, stale, reorder, ref-movement and cleanup cases in an offline temporary Git repository.
  7. Run focused tests, full npm run verify, governance, Lizard and Docker core E2E; repair only files owned by this ticket.
  8. Publish a protected PR and request Koru plus Validator review for the exact head using openrouter/z-ai/glm-5.2.

Acceptance criteria understood

AC-01 through AC-10 in the ticket README are the complete acceptance boundary. In particular, no public interface or cross-repository adapter is implied.

Actual changes

Blockers