{ "feature_name": "eliminate-frontend-makefile", "created_at": "2026-08-27T00:00:00Z", "updated_at": "2026-09-29T12:59:52Z", "language": "en", "phase": "implemented", "description": "Remove src/frontend/Makefile entirely, consolidating Go builds (apiserver, xcecli) and their tests onto Meson's tools/go_build wrapper. Closes a real, already-realized duplicate version-fingerprint-computation risk (roadmap.md backlog item, recorded 2026-08-21). Path C single-scope investigation via /kiro-discovery, 2026-08-27.", "approvals": { "requirements": { "generated": true, "approved": true }, "design": { "generated": true, "approved": true, "validation_note": "6 review rounds (1 self-review + 5 independent adversarial subagent reviews, 2026-09-03), run to convergence per explicit user goal ('fix issues found and review again until no new issue found'). Round 6 came back clean (GO, zero new issues) after a category sweep of Python/Nix/YAML/JSON/Cap'n Proto/every other meson.build/remaining skill scripts, a semantic pass beyond literal-keyword grep, and a full cross-artifact consistency check -- self-approved on that basis. Findings across rounds 1-5, all fixed in design.md/research.md: (1) CRITICAL -- the new apiserver-backend Meson test() target's CGO flags contained unresolved @CURRENT_SOURCE_DIR@/@BUILD_ROOT@ placeholder tokens that tools/go_build normally resolves via sed, bypassed entirely by this new test; fixed via Meson's own .replace() at configure time. (2) CRITICAL -- a follow-up fix itself used invalid unquoted Meson dict-literal keys in the test()'s env: argument; fixed to quoted string keys (verified live against a real `meson setup` run). (3) A long tail of live documentation/comment references to the deleted Makefile's targets or fixed paths, discovered by switching file CATEGORY each round rather than re-reading known files (steering docs -> skill docs/scripts -> C testsuite comments -> Go source comments -> root CLAUDE.md): tech.md, testing.md, structure.md, build-deployment.md, frontend/CLAUDE.md, src/docs/deployment.md, xce-deploy-ha/SKILL.md, xce-test-resources/SKILL.md, src/frontend/docs/status.md, src/docs/apiserver-backend-tasks.md (11 doc files total), deploy-ha.sh, run-resource-verify.sh, tests/regression/run.sh (3 scripts), test_ha_bootstrap.c/test_ha_ctrlhello.c (2 C testsuite files), apiserver/xcecli cmd/main.go (2 Go source files), and root CLAUDE.md's Key Files entry. In response to the recurring pattern, the File Structure Plan's doc/script entries were restructured around an explicit SCOPE RULE ('every live reference in this file', not a closed line-number list) and the Testing Strategy's live-reference sweep now runs per-file before Makefile deletion (not only repo-wide after) with named exclusion classes (historical .kiro/specs docs, vendored third-party files, dated historical records, OpenWolf's own logs, one deliberately-retained inert placeholder default)." }, "tasks": { "generated": true, "approved": true, "validation_note": "kiro-spec-tasks 2026-09-03: 4 major tasks / 12 sub-tasks drafted covering all 18 acceptance criteria (1.1-6.3) and every design.md File Structure Plan entry (11 doc files, 4 scripts, 2 C testsuite files, 2 Go source files, 1 meson.build). Task-graph sanity review (fresh subagent, pass 1): NEEDS_FIXES -- task 4.2's completion criteria didn't explicitly re-verify design.md's Testing Strategy 'Discovery-path regression' item after the Makefile is actually deleted, only before. Fixed. Sanity review pass 2 (fresh subagent): PASS -- fix confirmed adequate, no other issues; noted some Phase-3 (P) tasks carry a slightly over-conservative _Depends: 1.1, 2_ (not strictly required by file-locality alone) but this is faithful to design.md's own stated phase gating, not a correctness bug. Auto-approved per -y flag." } }, "ready_for_implementation": false, "blocked_on": [], "gitea": { "milestone_id": 12, "issues": { "requirements_design": 99, "implementation": 100, "validation": 101 } } }