Skip to content

MMDEP sprint 1 design

Story A — Harness hardening and shared components (also the harness's first real workload)

Goal: prove the Code + Test harness on real MMDEP items while moving duplicated helpers into shared components (rules §15). Each item is small, new-file-first, and has its own tests.

Item Approach Files Reuse Acceptance cx / mode
A1 Shared shell runner New mmdep/shell.py: NO_WINDOW, run(), git() (stdin closed, UTF-8, timeout). Migration of callers is a later attended item (A6) mmdep/shell.py, tests/test_shell.py Same behaviour as harness.run/git Tests for output, closed stdin, timeout, git 1 / scheduled
A2 Duplicate finder options --json output and --fail exit code for CI use tools/quality/dupes.py, tests/test_dupes.py — Tests with synthetic duplicate files 1 / scheduled
A3 Chat archive default from environment MMDEP_CHAT_ARCHIVE overrides the default archive path tools/chat_backup/chat_backup.py, tests/test_chat_backup.py — New test with monkeypatched env; old tests pass 1 / scheduled
A4 Harness ledger summary mmdep/ledger_summary.py: per-month runs, pass rate, cost, by model mmdep/ledger_summary.py, tests/test_ledger_summary.py CSV columns from harness.LEDGER_FIELDS Tests with a temporary ledger 1 / scheduled
A5 Routing-block linter tools/quality/route_lint.py checks an issue body file using mmdep.harness.parse_routing/check_route (must reuse, not re-implement) tools/quality/route_lint.py, tests/test_route_lint.py mmdep.harness Tests for ok, missing block, rejected route 1 / scheduled
A6 Migrate callers to mmdep/shell.py Replace local run/git/NO_WINDOW in harness, collect, setup scripts several A1 Full suite; dupes report shrinks 2 / attended (after A1)

Story B — MMDEP phase 2: queued jobs run without Claude (mmdep jobs)

Goal: registered run-jobs (PE, MCRM, MMDEP) run on the laptop when gate-green, results returned automatically; removes Claude from the run-job loop.

  • B1 Job register: docs/registers/jobs.yaml (job id, repo, command template, inputs, timeout, outputs, allowed network). Attended, cx 2.
  • B2 Runner: mmdep jobs run reads run-job issues, matches a registered job, checks the exact head and CI status through the GitHub API, runs in a worktree with timeouts and closed stdin, commits outputs to the MMDEP relay, adds the answers row. Attended, cx 3 (contract with PE's issue format).
  • B3 Scheduled task wiring (reuse task_xml). Attended, cx 1. Dependencies: PE's run-job issue format (stable since #324).

Story C — Gemini first real use: failure triage (pending GEM-1)

Goal: read-only Flash-Lite drafts one triage line per failed pipeline in the collector snapshot. Measure accuracy and tokens. - C1 mmdep/triage.py + tests with recorded snapshots; reuses harness.call_model. cx 2, scheduled once GEM-1 is approved.

Story D — Spec 0.12 HLD and documentation standard

Goal: consolidate spec 0.11 and the ex-PM specs into an HLD with one LLD per item; documentation standard (VISION/CURRENT/MILESTONES, index per folder). for:design, attended (Claude super-designer), needs Atul's review time, so scheduled for week 2.

Dependencies and capacity

  • Harness capacity: 2 items per hourly run on the free Gemini tier; A1–A5 fit within a day.
  • Atul: merge approvals for harness PRs (batchable), GEM-1 decision, D review.