Repository navigation
Epic: lean contract, runtime retirement, native tools #504
Description
Epic: lean contract, runtime retirement, native tools
Why
dev-backlog's heaviest weight is no longer long prose. It is code and tests
that still guard responsibilities whose consumers are gone: a second (bash)
parser of the sprint file, close orchestration that wraps the GitHub CLI, JSON
compatibility fields for a deprecated consumer, staleness age math for a
deleted check, and an automatic migration from a layout that may no longer
exist anywhere. Meanwhile a few real safety defects sit in the guards that
must stay: the triage writer can be fed a report its own contract produces
and run an empty milestone edit, and the "provably disjoint" track guard can
report disjoint tracks that are not.
This epic fixes the guards first, pins the surviving guarantees with
outcome-based tests, then removes runtime surfaces, then shortens the skills
and verifies native-tool paths.
Guarantees that survive every change
- One declared task authority; a failed authority read stops execution with no
fallback to sprint text or a local copy; the authority is never inferred
from installed CLIs. - Every authority mutation is a deliberate call.
triage-applystays the only
scripted writer, mutates only human-accepted actions, and is GitHub-only. - Concurrent active tracks never overlap silently; anything not provably
disjoint is reported as such. spec/*changes only through explicit human approval.- No adapter layer, no background sync, no replacement lifecycle engine.
Sequence
One sprint is active at a time because the scopes overlap.
| Sprint | Milestone | Batches |
|---|---|---|
| S1 lean contract and baseline | Lightening 1: lean contract and baseline | 1: #494, #495 · 2: #496 · 3: #497 |
| S2 runtime retirement | Lightening 2: runtime retirement | 1: #498 · 2: #499 · 3: #500 |
| S3 concise skills and native tools | Lightening 3: concise skills and native tools | 1: #501 · 2: #502 · 3: #503 |
Work
- Ratify the lean contract and exact spec amendments #494 — Ratify the lean contract and exact spec amendments (human gate)
- triage-apply: canonical milestone key, GitHub-only guard, validate every accepted action before any write #495 — triage-apply: canonical milestone key, GitHub-only guard, validate before any write
- Sprint reader: frontmatter-only active detection, unambiguous selectors, conservative scope checks, honest next batch #496 — Sprint reader: frontmatter-only active detection, unambiguous selectors, conservative scope checks, honest next batch
- Outcome-based test and conformance baseline #497 — Outcome-based test and conformance baseline
- Retire the shell runtime and sprint-close orchestration #498 — Retire the shell runtime and sprint-close orchestration
- Retire automatic legacy migration and setup ceremony (consumer-gated) #499 — Retire automatic legacy migration and setup ceremony (consumer-gated)
- Sprint-state JSON v3 and one shared track reader for the doctor #500 — Sprint-state JSON v3 and one shared track reader for the doctor
- Shorten the dev-backlog skill, references, and README #501 — Shorten the dev-backlog skill, references, and README
- One approval surface for the triage report and apply #502 — One approval surface for the triage report and apply
- Integrated actual-outcome conformance and native-tool verification #503 — Integrated actual-outcome conformance and native-tool verification
Done when
- Every work issue is closed with its acceptance criteria verified, or closed
as not planned with the reason recorded (for example, a Ratify the lean contract and exact spec amendments #494 rejection). - The final conformance record (Integrated actual-outcome conformance and native-tool verification #503) shows actual outcomes, not recitals, for
the retained guarantees above. - Gitea is either verified against an authorized target or explicitly
documented as unverified with a bounded follow-up issue.
Non-goals
- A tracker adapter layer, a generic validation framework, a glob engine, a
scheduler, or a replacement lifecycle script. - Line-count or file-count targets.
- Closing or editing the earlier "2026-09 skill lightening" milestone.
Each issue records its implementer and cross-family reviewer. Effort bands in
the issues are estimates, not deadlines or acceptance gates.
Activity
docs: record that spec rev 21 leads the runtime until #496–#502 land (#…
docs: record that spec rev 21 leads the runtime until #496–#502 land (#…
chore: commit the Lightening 1 sprint file and the two planned bluepr…
sungjunlee commentedon Oct 2, 2026
백로그 트리아지 (2026-10-02 19:00 KST) — update (에픽 체크박스 stale)
S1의 child #494 · #495 · #496이 모두 CLOSED로 착지했습니다. 본문 "Work"/"Sequence"의
#494 · #495 · #496라인은 stale입니다.Ratify lean contract and preflight triage writes, 2026-09-29)에서 lean spec 개정 승인 기록까지 반영.milestone=, GitHub-only guard).Closes #496, honest sprint reader — frontmatter-only active, 모호한--track거부, conservative scope, waiting batch). PR #506은 sprint 파일/blueprint 커밋.남은 열린 child는 #497 · #498 · #499 · #500 · #501 · #502 · #503입니다.
이 에픽 자체는 구현 세션에 배정하지 않습니다(
type:epic힌트). 저장소에status:*라벨 체계가 없어 게이트 라벨 조정은 하지 않았습니다. 이번 트리아지는 구현하지 않았습니다.sungjunlee commentedon Oct 9, 2026
Keep the retained boundaries small and evidence-based
This is a coordination addendum, not a separate implementation task.
Publication action: Add this complete comment to existing #504; no new epic.
Priority / severity / type / effort: P1 / Medium aggregate / coordination / 30 minutes.
Objective: Incorporate three bounded follow-ups without expanding the retirement programme.
Why: Independent review confirmed avoidable unlogged effects and incomplete recovery projections; installation evidence needs a narrower claim.
Scope: D1 supplements #502, D2 supplements #500, and D3 supplements #503 with #500 import coordination. Link each final result here.
Out of scope: Exactly-once delivery, durable intent journals, new package architecture, concurrent-writer guarantees, and additional authority integrations.
Investigation: #495 and #496 are closed prerequisites; their argument and normal-input fixes do not cover these boundaries. The refreshed main still matches
4c22937507dd547078003f23befb8b0148d3f101.Acceptance criteria: Each retained change has named outcome evidence and preserved approval gates. Record here that B02's simultaneous-init observation remains deferred under #499 and B03's simultaneous-apply observation remains deferred under #502. Reopen only with an established concurrent-writer use case and explicit stale-lock recovery cost. Do not label either experiment a production incident.
Validation command:
env -u GH_TOKEN -u GITHUB_TOKEN -u GH_REPO -u GH_HOST TRIAGE_APPLY_INTEGRATION=0 node --test --test-concurrency=1 tests/no-skill-package-tests.test.js tests/backlog-triage/triage-apply.test.js tests/dev-backlog/sprint-state.test.js tests/dev-backlog/backlog-doctor.test.jsRisk: Turning small failures into new persistence or orchestration systems would defeat this epic.
Dependencies: Existing #494 gates remain; accept #497's baseline before editing its outcomes.
Parallel safety:
codex/497-outcome-baselineis an active writer; no second baseline writer. Serialize shared runtime/test edits.Rollback: Remove only this addendum or revert individual implementation changes; preserve original issues, records and approval history.
Fixed-SHA evidence / repro strength: B04 fake comment then EACCES; B05 malformed Plan omission; B01 isolated-folder import failure. Deterministic synthetic evidence, no live effects or verified standalone installation failure.
Registered follow-ups — implementation remains pending