Commit 697a6e2
feat(v3R2): Wave 1 Bundle - Skill Consolidation Stage 1 + Output Styles + bundled SPECs (#709)
* feat(commands): map /moai db and /moai design slash commands
v2.13.0에서 추가된 두 워크플로우의 command 파일과 라우팅이 누락되어
Claude Code slash command 메뉴(/)에서 노출되지 않던 문제를 해결합니다.
변경 사항:
- commands/moai/db.md, design.md 신규 (local + template)
- workflows/db.md 신규 (local 부재분, template 동기화)
- workflows/design.md template 최신 버전(9.5K)으로 local 갱신
- SKILL.md Priority 1 목록과 description에 db/design 추가
- SKILL.md Workflow Quick Reference에 db/design 상세 블록 추가
- CLAUDE.md Subcommands 목록에 design, db 삽입
context/gate/security는 의도적으로 command로 노출하지 않는
내부 워크플로우로 유지 (context는 PR #488에서 SPEC Implementation Log로 대체됨).
🗿 MoAI <email@mo.ai.kr>
* chore: agency 제거 + 템플릿/로컬 드리프트 전체 동기화 + v3 설계 스냅샷
[agency 완전 제거]
- .claude/commands/agency/ 8개 deprecation 래퍼 제거 (v2.13.0 content 흡수 후 잔존)
- .claude/rules/agency/constitution.md redirect stub 제거
- 템플릿에서도 동일 제거 (embedded.go 재생성)
- CLAUDE.md + template CLAUDE.md /agency DEPRECATED 섹션 정리
[user-invocable 수정]
- moai-domain-brand-design/copywriting: true → false
(/moai design 내부 파이프라인 스킬, / 메뉴 노출 제거)
[로컬 부재 스킬 3개 추가]
- moai-domain-db-docs
- moai-workflow-design-context
- moai-workflow-pencil-integration
[템플릿↔로컬 드리프트 동기화 — 60 파일]
Template → Local 59개:
- 7 agents: effort: high/xhigh 필드 복구 (Opus 4.7 HARD rule)
- 41 스킬: Common Rationalizations/Red Flags/Verification evolvable blocks
- 8 워크플로우: HUMAN GATE 6개 + Drift Guard + project.md v2.13.0 DB Phase 4.1a (+257줄)
- rules/skills 기타 마이너 수정 3건
Local → Template 1개 (역방향):
- lsp-client.md: powernap v0.1.3 → v0.1.4 업그레이드 반영
[v3 설계 자료 추가]
- docs/design/major-v3-master.md (1,397줄 마스터 설계서)
- .moai/design/v3-research/ (Wave 1-2 findings + gap matrix + roadmap + themes)
- .moai/specs/SPEC-V3-* (28개 EARS SPEC, ~510 REQs / ~262 ACs)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
* feat(output-style): MoAI에 Progress Board 템플릿 추가
§8 Response Templates에 다단계 작업(PR 체인, 릴리스 파이프라인, 마이그레이션 큐 등
3+ 항목) 진행 상태를 시각화하는 Progress Board 섹션 신설.
- 아이콘 세트 표준화: 🟢 🟡 ⏸️ 🔵 ❌ 🔴 (구조 요소, 번역 금지)
- 자동 스냅샷 타이밍: Stage 1 확정 직후 / 항목 상태 전이 후 / DONE 선언 직전
- 헤더·화살표 주석은 conversation_language로 번역, 아이콘은 고정
- 정렬·연속줄(└─)·최대 12항목 등 포맷 HARD 규칙 6건 명문화
- Version 5.0.0 → 5.1.0
🗿 MoAI <email@mo.ai.kr>
* design: v3 재설계 Round 2 — 35 SPECs + ground-up 아키텍처
## 주요 변경
- Round 1 (v3-legacy): 28 SPECs + 3회 감사 결과 아카이브
- .moai/design/v3-legacy/specs/ (31개 legacy SPEC)
- .moai/design/v3-legacy/research/ (6 findings + 3 audit + 3 synthesis)
- .moai/design/v3-legacy/docs/major-v3-master-v1.md
- Round 2 (v3-redesign): ground-up 재설계 수행
- Wave 1: 6 병렬 리서처 (논문 25+ / 오픈소스 16+ / CC 재해석 / 48 skills / 22 agents / 17 commands) — 33,500 단어
- Wave 2: Synthesis (12 principles / 72 problems / 37 patterns) — 15,000 단어
- Wave 3: Master design v2 (1,217 lines, 7-layer architecture)
- Wave 4: 35 v3R2 SPECs (CON/SPC/RT/ORC/HRN/WF/EXT/MIG 도메인, 8,793 lines)
- Wave 5: plan-auditor 3회 감사 후 READY (88/100 health)
- docs/design/major-v3-master.md: Round 2 판으로 전면 재작성
- 7-layer bottom-up architecture (Constitution → SPEC/TAG → Runtime → Orchestration → Harness → Workflow → Extension)
- 12 design principles (SPEC-as-Contract FROZEN, Fresh-Context Iteration, Agent-as-Judge Without Memory 등)
- 16 breaking changes catalog (BC-V3R2-001..019)
- 9-phase release plan
## 전략적 방향
Round 2 기준 정량:
- 695 REQs, 549 ACs across 35 SPECs
- 48 → 24 skills, 22 → 17 agents (consolidation)
- 100% AC coverage in audit-required SPECs
- Zero dependency cycles, uniform frontmatter (bc_id array 35/35)
v3.0.0 본격 릴리스 전 v2.14부터 점진적 흡수 예정.
BC는 v3.0.0까지 유예, v2.x 라인은 semver 준수.
🗿 MoAI <email@mo.ai.kr>
* design: v3R2 35 SPECs + 유틸리티 감사 + v2.14.0 릴리스 계획
## SPEC-V3R2-* (35개)
- Layer 1 Constitution (3): CON-001/002/003
- Layer 2 SPEC & TAG (4): SPC-001/002/003/004
- Layer 3 Runtime (7): RT-001..007
- Layer 4 Orchestration (5): ORC-001..005
- Layer 5 Harness (3): HRN-001/002/003
- Layer 6 Workflow (6): WF-001..006
- Layer 7 Extension (4): EXT-001..004
- Cleanup (3): MIG-001..003
각 SPEC: EARS 10-section, 100% REQ→AC coverage, frontmatter 정규화 (bc_id array, phase canonical)
Total: 695 REQs, 549 ACs, 8,793 lines
## 유틸리티 감사 (.moai/design/utility-review/)
4개 감사팀 병렬 실행 결과 (~26,500 단어):
- A1 MX TAG 시스템 (2,264 LOC, 5.5/10, REFACTOR) — method receiver bug, word boundary bug
- A2 ast-grep 통합 (6,261 LOC, 6/10, REFACTOR) — Rule Metadata 손실, 고루틴 폭주
- A3 LSP 서브시스템 (18,718 LOC, 7/10, MAINTAIN+targeted) — spawn race, stderr leak, 타입 분산
- A4 외부 연구 (2025-2026 25+ 소스) — ast-grep 0.42.1, powernap 0.1.4, LSP 3.17, jsonv2
## 서브커맨드 감사 + 외부 연구
- B1 워크플로우 서브커맨드 (plan/run/sync/project) — team-reader 고아 참조 등
- B2 유틸리티 서브커맨드 (fix/loop/codemaps) — Ralph Engine 1,578 LOC, codemaps Agentless 위반
- B3 외부 연구 (75+ 소스) — SWE-bench 2026, Opus 4.7 guidance, Reflexion/Self-Refine
## SYNTHESIS.md (37 개선안 4 tier)
- Tier 1 P0 Critical: 7 (버그 수정, block production)
- Tier 2 P1 High: 15 (아키텍처 개선)
- Tier 3 P2 strategic: 10 (2025-2026 연구 기반)
- Tier 4 P3 research: 5 (v3.1+ 연기)
- 신규 SPEC 3개 제안: UTIL-001/002/003
## v2.14.0 릴리스 계획 (docs/design/v2.14.0-release-plan.md)
- 전략: v2.x release 트랙 + v3 planning 트랙 별도 유지
- 브랜치: release/v2.14.0 from main
- 범위: Tier 1 Critical 7개 + UTIL SPECs 3개 + 서브커맨드 non-breaking 7개 = 17 items
- 도메인별 모듈 로테이션: v2.14 utility → v2.15 runtime → v2.16 orchestration → v2.17 workflow → v2.18 extension → v3.0 breaking
- Non-breaking 엄수 (semver minor)
🗿 MoAI <email@mo.ai.kr>
* chore(marketing): v2.13.x 런칭 킷 + 블로그 포스트 + awesome-list 제출 계획
- .moai/marketing/awesome-lists/: 6 파일 (submission plan, README, verification)
- .moai/marketing/blog-posts/: 6 파일 (4-locale 블로그 초안: dev.to, geeknews, juejin, okky, velog, zenn)
- .moai/marketing/launch-kit/: 4 파일 (show-hn, reddit-claudeai, reddit-golang, readme-hero-patch)
런칭 자료. 코드/SPEC 변경 없음.
🗿 MoAI <email@mo.ai.kr>
* design: v3R2 Wave 1 baseline (audit follow-up + archive cleanup)
Archive cleanup (6 obsolete SPECs moved to .moai/specs/_archive/):
- SPEC-AGENCY-001 (superseded by SPEC-AGENCY-ABSORB-001)
- SPEC-DESIGN-CONST-AMEND-001 (constitution change applied to v3.3.0)
- SPEC-INFRA-001 (below MVS, 585 bytes)
- SPEC-ORCH-001 (trivial docs change, no SDD artifact value)
- SPEC-SKILL-001 (commit-note level, 892 bytes; feature shipped beba31b)
- SPEC-THIN-CMDS-001 (test-enforced via commands_audit_test.go)
v3R2 Wave 1 SPEC packages (ready for TDD run):
- SPEC-V3R2-CON-001 (Constitution)
- SPEC-V3R2-EXT-001 (Extension)
- SPEC-V3R2-WF-001 (Workflow)
- SPEC-V3R2-WF-006 (Workflow)
Each provides spec.md, acceptance.md, plan.md, tasks.md.
Audit follow-up acceptance.md additions (15 hardening tracks):
SPEC-CC297-001, CORE-BEHAV-001, DB-CMD-001, DB-SYNC-001, DB-SYNC-002,
DB-TEMPLATES-001, EVAL-001, EVALLIB-001, GLM-001, SDD-001, SLV3-001,
STATUSLINE-002, SUNSET-001, TEAM-001, TELEMETRY-001
Templates sync (single-source-of-truth):
- agents/moai/manager-spec.md
- skills/moai/workflows/plan.md, project.md
- .moai/config/sections/harness.yaml
CI / tooling:
- scripts/docs-i18n-check.sh (4-locale invariant checker)
- .github/workflows/docs-i18n-check.yml (warn-only, strict pending)
- internal/cli/migrate_agency_disk_unix.go / _windows.go (platform split)
🗿 MoAI <email@mo.ai.kr>
* design: workflow hardening SPECs (audit gate + AskUserQuestion enforcement)
Two independent hardening SPECs authored in response to v3R2 Wave 1 audit
findings (CON-001 FAIL: broken master-v3 §1.3 anchor; WF-001 FAIL: 48->24
arithmetic unachievable) and the AskUserQuestion deferred-tool gap analysis.
SPEC-WF-AUDIT-GATE-001 (mandatory plan->run audit gate):
- 7 EARS REQs, 11 ACs, 18 Tasks
- Plan->Run transition automatically invokes plan-auditor before any
implementation begins; FAIL blocks /moai run, results persisted to
.moai/reports/plan-audit/<spec-id>-<YYYY-MM-DD>.md
- --skip-audit override with audit-trail logging
- Team mode parity (gate applies before any teammate begins)
- Dogfood: SPEC must pass its own gate (AC-WAG-11)
SPEC-ASKUSER-ENFORCE-001 (interaction protocol enforcement):
- 9 EARS REQs, 20 ACs, 18 Tasks
- Free-form prose questions prohibited; AskUserQuestion is the sole channel
- ToolSearch(select:<tool>) preload mandatory before any deferred tool call
- Socratic interview standardized (max 4 questions x 4 options, first option
marked "(권장)/(Recommended)" with implication-rich descriptions)
- Subagent attempts to call AskUserQuestion converted to blocker reports
- Canonical text in new .claude/rules/moai/core/askuser-protocol.md
- All 5 core guidance files synchronized + templates + memory dead lesson
graduated (Template-First per CLAUDE.local.md §2)
- Zero overlap with SPEC-WF-AUDIT-GATE-001
🗿 MoAI <email@mo.ai.kr>
* chore(plan-audit): create reports directory (SPEC-WF-AUDIT-GATE-001 T-01)
Create .moai/reports/plan-audit/ directory with .gitkeep file and
update .gitignore to ignore *.md report files while tracking .gitkeep.
Also create template twin at internal/template/templates/.moai/reports/plan-audit/.
REQ: REQ-WAG-004
AC: AC-WAG-10 (사전조건)
* feat(askuser): T-01/T-02/T-03 Phase A — askuser-protocol.md canonical reference 신규 생성
SPEC-ASKUSER-ENFORCE-001 Phase A
- .claude/rules/moai/core/askuser-protocol.md 신규 생성
- 7개 섹션: Channel Monopoly, ToolSearch Preload Procedure, Socratic Interview Structure,
Option Description Standards, Orchestrator-Subagent Boundary, Ambiguity Triggers and Exceptions,
Free-form Circumvention Prohibition
- REQ-AUE-001~007, AC-AUE-001~007, AC-AUE-008-5 커버
🗿 MoAI <email@mo.ai.kr>
* feat(askuser): T-04/T-05 Phase B — CLAUDE.md §7 Rule 5 / §8 보강
SPEC-ASKUSER-ENFORCE-001 Phase B
- §7 Rule 5 Discovery process에 ToolSearch(query: "select:AskUserQuestion") preload step 삽입
- §8 Ambiguity Triggers 뒤에 Deferred Tool Preload Requirement [HARD] 단락 추가
- askuser-protocol.md canonical reference cross-reference 추가
- REQ-AUE-002, REQ-AUE-006, AC-AUE-008-1 충족
🗿 MoAI <email@mo.ai.kr>
* feat(askuser): T-06 Phase C — moai-constitution.md MoAI Orchestrator 단락 강화
SPEC-ASKUSER-ENFORCE-001 Phase C
- [HARD] AskUserQuestion deferred tool — ToolSearch preload 의무 규칙 추가
- askuser-protocol.md canonical reference cross-link 추가
- REQ-AUE-002, AC-AUE-008-2 충족
🗿 MoAI <email@mo.ai.kr>
* feat(plan-audit): add Phase 0.5 Plan Audit Gate placeholder to run.md (SPEC-WF-AUDIT-GATE-001 T-02)
Insert Phase 0.5: Plan Audit Gate header between pre-flight context loading
and Phase 0.6 (formerly 0.5) Environment Assessment in solo run.md.
Phase 0.5 is never skipped — not even in minimal harness — per REQ-WAG-001.
Template twin synced.
REQ: REQ-WAG-001
AC: AC-WAG-01 (사전조건)
* feat(askuser): T-07 Phase D — agent-common-protocol.md User Interaction Boundary 양방향 codify
SPEC-ASKUSER-ENFORCE-001 Phase D
- User Interaction Boundary를 Subagent Prohibitions / Orchestrator Obligations / Blocker Report Format / Re-delegation Procedure 4개 하위 섹션으로 분리
- Orchestrator MUST preload AskUserQuestion via ToolSearch 의무 추가
- Blocker report ## Missing Inputs 형식 명시
- Re-delegation 절차 4-step 명시
- askuser-protocol.md canonical reference cross-link 추가
- REQ-AUE-005, AC-AUE-005, AC-AUE-008-3 충족
🗿 MoAI <email@mo.ai.kr>
* feat(plan-audit): add audit gate placeholder to team/run.md, audit-ready to plan.md, Phase 0.5 to spec-workflow.md (SPEC-WF-AUDIT-GATE-001 T-03)
- team/run.md: insert Phase 0.5 placeholder before TeamCreate in both CG and Agent Teams modes
- plan.md: add audit-ready signal instruction to Completion Criteria
- spec-workflow.md: document Phase 0.5 Plan Audit Gate (verdicts, report persistence, grace window)
- All template twins synced
REQ: REQ-WAG-001, REQ-WAG-005
AC: AC-WAG-05 (사전조건)
* feat(askuser): T-08/T-09 Phase E — output-styles/moai/moai.md §3/§10 갱신
SPEC-ASKUSER-ENFORCE-001 Phase E
- §3 Stage 1 Clarify Process에 Step 0 ToolSearch preload step 삽입 (deferred tool prerequisite)
- §3 Step 1에 max 4 questions per round, max 4 options, (권장) first option 제약 명시
- §10 Output Rules에 free-form interrogative prose prohibited anti-pattern 추가
- askuser-protocol.md canonical reference cross-link
- REQ-AUE-002, REQ-AUE-003, AC-AUE-008-4 충족
🗿 MoAI <email@mo.ai.kr>
* feat(askuser): T-10 Phase F — Template 미러 5개 동기화
SPEC-ASKUSER-ENFORCE-001 Phase F (T-10)
- internal/template/templates/CLAUDE.md 동기화
- internal/template/templates/.claude/rules/moai/core/moai-constitution.md 동기화
- internal/template/templates/.claude/rules/moai/core/agent-common-protocol.md 동기화
- internal/template/templates/.claude/rules/moai/core/askuser-protocol.md 신규 생성 (원본 미러)
- internal/template/templates/.claude/output-styles/moai/moai.md 동기화
- 5개 diff -q 모두 exit 0 확인
- REQ-AUE-009, AC-AUE-009-1 충족
🗿 MoAI <email@mo.ai.kr>
* feat(plan-audit): fill in Phase 0.5 Plan Audit Gate body in solo run.md (SPEC-WF-AUDIT-GATE-001 T-04)
Complete 5-step audit gate instruction: hash computation, 24h cache check,
plan-auditor invocation, 4-way verdict routing (PASS/FAIL/BYPASSED/INCONCLUSIVE),
progress.md persistence + daily report append. Includes skip-audit and
INCONCLUSIVE fall-back subsections. Template twin synced.
REQ: REQ-WAG-001, REQ-WAG-002, REQ-WAG-003, REQ-WAG-004, REQ-WAG-006, REQ-WAG-007
AC: AC-WAG-01, AC-WAG-02, AC-WAG-03, AC-WAG-04, AC-WAG-06, AC-WAG-07, AC-WAG-08, AC-WAG-09
* feat(askuser): T-11 Phase F — make build 실행 + go build 회귀 부재 확인
SPEC-ASKUSER-ENFORCE-001 Phase F (T-11)
- make build exit 0 확인 (embedded via go:embed all:templates in embed.go)
- go build ./... exit 0 확인 (회귀 없음)
- 참고: internal/template/embedded.go 별도 파일 없음 — embed.go의 go:embed all:templates로 직접 임베디드
- AC-AUE-009-2, AC-AUE-009-3 충족 (make build 성공 + go:embed 템플릿 변경분 반영 확인)
🗿 MoAI <email@mo.ai.kr>
* feat(plan-audit): fill in Phase 0.5 gate body in team/run.md (SPEC-WF-AUDIT-GATE-001 T-05)
Add complete gate instruction for both CG Mode and Agent Teams Mode:
- Gate runs in main session (Leader) before TeamCreate
- Verdict=PASS required before any teammate spawn
- References solo run.md Phase 0.5 for 5-step logic (single source)
- FAIL blocks TeamCreate entirely
- Template twin synced
REQ: REQ-WAG-005
AC: AC-WAG-05
* test(plan-audit): add skill audit test for Plan Audit Gate markers (SPEC-WF-AUDIT-GATE-001 T-06)
internal/template/skills_audit_test.go verifies:
- TestSkillsContainPlanAuditGateMarkers: 4 skill files have Phase 0.5 header,
plan-auditor keyword, --skip-audit, INCONCLUSIVE, .moai/reports/plan-audit/
- TestReportsDirGitkeepExists: .moai/reports/plan-audit/.gitkeep present in templates
All tests PASS. Also fix team/run.md Agent Teams Mode gate body to include
INCONCLUSIVE and report path (test-driven fix).
REQ: REQ-WAG-001..007
AC: 사전조건 (skill content integrity)
* docs(plan-audit): T-07/T-08 skip-audit and INCONCLUSIVE content confirmed (SPEC-WF-AUDIT-GATE-001)
skip-audit (REQ-WAG-006) and INCONCLUSIVE fallback (REQ-WAG-007) subsections
were authored in T-04/T-05 commits. This commit records formal T-07/T-08
completion: OPEN QUESTION Q3 resolved (max 3 retries), Q4 resolved (stdin
TTY detection for non-interactive). No file changes needed — already present.
REQ: REQ-WAG-006, REQ-WAG-007
AC: AC-WAG-06, AC-WAG-07
* feat(askuser): T-14~T-18 Phase H — 통합 검증 완료 + progress.md 생성
SPEC-ASKUSER-ENFORCE-001 Phase H
- AC-AUE-012 통합 검증 시퀀스 전체 exit 0 확인 (14개 체크)
- golangci-lint run ./... 0 issues
- go build ./... exit 0, go vet ./... exit 0
- progress.md 생성 — 18 tasks × 20 ACs 상태 기록
- TRUST 5 gate 모두 PASS
- Dogfood self-validation 완료
🗿 MoAI <email@mo.ai.kr>
* feat(plan-audit): implement audit gate runtime + TDD test suite (SPEC-WF-AUDIT-GATE-001 T-09~T-15)
RED-GREEN-REFACTOR cycle for Phase E:
Go runtime package (internal/runtime/):
- clock.go: Clock interface + SystemClock/FakeClock for time injection
- audit_gate.go: PlanAuditor interface, Verdict enum, GateConfig.Invoke 5-step logic
(hash→cache→auditor→verdict routing→persist). TeamModeInvoke for REQ-WAG-005.
- audit_cache.go: InMemoryCache with SHA-256 whitespace-insensitive hash,
24h TTL, hash-change invalidation, ValidateReportDir path safety.
- audit_report.go: FileAuditReporter daily report append + AppendToProgress 4 fields.
Unit tests (internal/runtime/):
- audit_gate_test.go: 20 tests — verdict 4-way, grace window boundary, skip-audit,
cache hit, team mode, hash failure, env var T0 injection.
- audit_cache_test.go: 7 tests — hash stability, TTL, invalidation, sanitize, dir auto-create.
- audit_report_test.go: 5 tests — file path, append multi-run, path safety, progress 4 fields.
Integration tests (internal/cli/, go:build integration):
- run_audit_gate_integration_test.go: AC-WAG-01,02,03,06,07 (5 test functions)
- run_audit_gate_grace_test.go: AC-WAG-08 (3 test functions)
- run_audit_gate_cache_test.go: AC-WAG-09 (2 test functions)
- run_audit_gate_filesystem_test.go: AC-WAG-10 (2 test functions)
- team_run_audit_gate_test.go: AC-WAG-05 (2 test functions)
- dogfood_self_audit_test.go: AC-WAG-11 (1 test function)
Test results: 20 unit tests PASS (race clean), 16 integration tests PASS.
REQ: REQ-WAG-001..007
AC: AC-WAG-01..11 (all)
* chore(plan-audit): Phase F — template sync + dogfood PASS + grace window + status (SPEC-WF-AUDIT-GATE-001 T-16~T-18)
T-16: All template twins verified byte-identical (go test ./internal/template/... PASS)
T-17: Dogfood self-audit PASS — TestSelfAuditPassesOnOwnSpec passed all 4 must-pass criteria.
Report at .moai/reports/plan-audit/SPEC-WF-AUDIT-GATE-001-2026-04-25.md (gitignored, local)
T-18: Grace window T0=2026-04-25T12:00:00Z (in .moai/state/, gitignored by design).
CHANGELOG.md updated with [Unreleased] section for SPEC-WF-AUDIT-GATE-001.
spec.md status: draft → implemented.
progress.md created with all T-01..T-18 completion.
AC: AC-WAG-11 (dogfood verdict: PASS)
* test(plan-audit): boost runtime package coverage to 88.8% (SPEC-WF-AUDIT-GATE-001 T-15 refactor)
Additional test cases for REFACTOR phase:
- TestListSpecArtifactFiles, TestCacheStoreNonPassIgnored (audit_cache_test.go)
- TestRunTriggerLabels, TestAppendRunInconclusiveVerdict, TestNewFileAuditReporterDefaults (audit_report_test.go)
- TestSystemClockNow (clock coverage)
Coverage: 84.7% → 88.8% on internal/runtime (target >= 85%).
All tests pass with -race flag.
REQ: all
AC: all
* design: v3R2 Wave 1 SPECs v1.1.0 (plan-audit fixes)
All four Wave 1 SPECs revised in response to their 2026-04-25 plan-audit
verdicts. Re-audit (2026-04-25 rev2) re-runs:
SPEC-V3R2-CON-001: FAIL -> PASS_WITH_WARNINGS (high confidence)
- master-v3 §1.3 anchor inlined (7 invariants self-contained)
- REQ-002 / REQ-004 schema unified (6 fields with Anchor)
- REQ-041 / AC-011 upgraded skeleton -> behavior-verified
- AC-017 added (registry 6-key direct schema)
- REQ-041 EARS reclassified (Complex -> Event-driven)
- REQ-021 scope tightened + overflow rule (auto-extend 100-149)
- AC IDs standardized to 3-digit zero-padding
- All 6 OPEN QUESTIONS resolved in plan.md Decision Log
SPEC-V3R2-WF-001: FAIL -> PASS_WITH_WARNINGS (high confidence, arithmetic verified)
- Re-scoped 48 -> 24 to 48 -> 38 (Stage 1); SPEC-V3R3-WF-001 reserved for Stage 2
- §6.2 single source of truth; §6.1 demoted to non-authoritative grouping
- jit-docs / foundation-context / design-tools verdict conflicts resolved
- AC-16 / AC-17 / AC-18 added for REQ-009 / 012 / 016
- Tasks T1.7-8/9/10/11/12 added with non-zero-exit fixture DoDs
- MIG-001 upgraded to Shared Contract with HUMAN GATE
- All 7 OPEN QUESTIONS closed or explicitly deferred
SPEC-V3R2-EXT-001: PASS_WITH_WARNINGS -> PASS (0.93)
- OPEN-3 internal/hook/memo/ collision resolved via memo/taxonomy/ sub-package
- OPEN-2 excluded-category locked to static-keyword v1 (5-cat keyword map)
- AC-01b added (REQ-002 name/description direct coverage, 3 cases)
- Frontmatter canonicalized (created_at / updated_at / labels / issue_number)
- AC-04 split into AC-04a (automated regex) and AC-04b (optional human)
- 200-line context-loader claim weakened to "documented target; verify before T1"
- SPEC-V3R2-EXT-002 placeholder verified existing
SPEC-V3R2-WF-006: PASS_WITH_WARNINGS -> PASS (0.91)
- OPEN-A resolved: runtime.Caller(0) ascent with .moai/ marker
- REQ-008 sink concretized: stderr + frozen format string
- HUMAN GATE -> 4 objective Audit-Manual-Check-N PR trailers
- REQ-011 differentiated from REQ-014 (project-over-user override clause)
- AC-13 added with file-existence test hook
- T0 6-step manual precedence experiment with PR-description recording
- CON-001 v1.1.0 boundary re-verified (zero settings-management refs)
Audit gate (SPEC-WF-AUDIT-GATE-001 Phase 0.5) treats PWW as proceed-ready;
remaining residual is cosmetic (AC count narrative, plan.md drift) suitable
for v1.1.1 cleanup during Wave 1 implementation T1.4.
Re-audit reports: .moai/reports/plan-audit/SPEC-V3R2-{CON,EXT,WF}-*-rev2.md
(local artifacts, gitignored)
🗿 MoAI <email@mo.ai.kr>
* feat(constitution): SPEC-V3R2-CON-001 — FROZEN/EVOLVABLE zone registry 구현
zone-registry.md (68 entries: 38 Frozen + 30 Evolvable) + internal/constitution
패키지(Zone, Rule, Registry, LoadRegistry, ValidateRuleReferences) 신규 구현.
`moai constitution list/guard` CLI 서브커맨드 추가, moai doctor에 Constitution
Registry 점검 통합. 모든 17개 AC PASS, 커버리지 86.5%, 바이너리 델타 +33KiB.
🗿 MoAI <email@mo.ai.kr>
* feat(memory): SPEC-V3R2-EXT-001 — Typed Memory Taxonomy 4-type enforcement
- internal/hook/memo/taxonomy: 새 서브패키지 (MemoryType 4종 enum, ParseFile, DetectStale, AuditFile/Index/Duplicates)
- internal/config/defaults.go: DefaultMemoryStalenessHours, DefaultMemoryIndexLineCap, DefaultMemoryStaleAggregateThreshold 상수 추가
- session_start.go: detectAndWrapStaleMemories — 오래된 메모리 파일 staleness wrap (MOAI_MEMORY_AUDIT=0 롤백)
- post_tool.go: runMemoryAudit — Write/Edit 시 agent-memory 파일 audit, stderr non-blocking 경고
- moai-memory.md + 템플릿 twin: 4-type 분류 체계, MEMORY.md 200-line cap, excluded category 가이드 추가
- workflow.yaml + 템플릿 twin: memory: 설정 섹션 신설 (staleness_threshold_hours/index_line_cap/stale_aggregate_threshold)
- taxonomy 커버리지 91.7% (목표 90%+), 전체 go test ./... PASS, golangci-lint 0 issues
🗿 MoAI <email@mo.ai.kr>
* feat(skills): SPEC-V3R2-WF-001 Wave 1.1 — KEEP baseline hash lock
REQ-WF001-005/REQ-WF001-012: SHA256 해시 기록 (21개 FROZEN/KEEP 스킬 +
20개 moai/workflows/ 파일). Wave 1.7 회귀 감지 기준선.
🗿 MoAI <email@mo.ai.kr>
* feat(skills): SPEC-V3R2-WF-001 Wave 1.2 — MERGE target content absorption
T1.2-1: moai-foundation-thinking — philosopher(First Principles 5-phase +
Assumption/Bias/Trade-off modules) + workflow-thinking(Sequential Thinking MCP) 흡수
T1.2-2: moai-workflow-project — templates + docs-generation + jit-docs 섹션 흡수
T1.2-3: moai-design-system NEW — design-craft + domain-uiux + design-tools(Pencil) 통합
T1.2-4: moai-domain-database — platform-database-cloud Cloud Vendor Guide 흡수
T1.2-5: moai-foundation-core — foundation-context Token Budget 섹션 흡수
Checkpoint T1.2-END: make build exit 0, diff -rq empty (byte-identical parity)
Level 2 tokens: thinking ~1556, project ~1535, design-system ~626, database ~1169, core ~1671
🗿 MoAI <email@mo.ai.kr>
* docs(spec): SPEC-V3R2-WF-001 Wave 1.1+1.2 progress 기록
Wave 1.1: baseline-hashes.txt (21 스킬 + 20 workflows 해시)
Wave 1.2: 5개 MERGE 타겟 완료, Checkpoint T1.2-END PASS
Level 2 토큰: thinking 1556, project 1535, design-system 626, database 1169, core 1671
🗿 MoAI <email@mo.ai.kr>
* feat(skills): SPEC-V3R2-WF-001 Wave 1.3 — trigger union + related-skills dedup
REQ-WF001-007: 5개 MERGE target skill의 frontmatter에 retiring skill 트리거 keyword 병합.
case-insensitive dedup 적용, related-skills alias 보존 (Wave 1.4 archive 전까지 참조 가능).
- moai-foundation-thinking: +5 keywords (architecture/analysis/design thinking 등), +3 agents
- moai-workflow-project: +8 keywords, +related-skills, +3 agents
- moai-design-system: +20 keywords from design-craft+domain-uiux+design-tools(Pencil only)
- moai-domain-database: +2 keywords, +progressive_disclosure, +agents/phases/languages, +related-skills
- moai-foundation-core: +8 keywords, +2 agents (manager-docs/project), +related-skills
Checkpoint T1.3-END: PASS (make build exit 0 / diff -rq empty / YAML parse ALL PASS)
Template-First: COMPLIANT (internal/template/templates/ → .claude/skills/ 순서)
FROZEN: moai-domain-copywriting, moai-domain-brand-design 미변경
🗿 MoAI <email@mo.ai.kr>
* feat(skills): SPEC-V3R2-WF-001 Wave 1.4 — archive 11 + skill-rename-map + plan.md drift cleanup
- T1.4-1..11: git mv 11 retired skills to .moai/archive/skills/v3.0/ (local)
- T1.4-1..11: rm -rf from internal/template/templates/.claude/skills/ (template)
- T1.4-1..11: RETIRED.md written for each archived skill
- T1.4-12: .moai/decisions/skill-rename-map.yaml created (schema v1, merges:10, retires:1, refactors:6)
- Plan.md drift: D1(L333 "=13"→"=11") D2(OQ-1 CLOSED) D3(OQ-2 CLOSED) D4(L481-482 -eq24→-eq38) D5(R5 OQ-1 CLOSED)
- Checkpoint T1.4-END: make build exit 0, diff -rq empty, skill count=38 (both trees)
- OQ-CONTRACT HUMAN GATE: deferred to PR review (MIG-001 author approval)
🗿 MoAI <email@mo.ai.kr>
* feat(skills): SPEC-V3R2-WF-001 Wave 1.5 — REFACTOR notes + UNCLEAR telemetry window
- T1.5-1: moai-workflow-testing: Refactor Notes (split bundled modules/ into Level-3)
- T1.5-2: moai-domain-backend: Refactor Notes (narrow to API design decision matrix)
- T1.5-3: moai-domain-frontend: Refactor Notes (router-only, ref-react + library-nextra)
- T1.5-4: moai-domain-database: Refactor Notes (MERGE target + restructuring deferred)
- T1.5-5: moai-platform-deployment: Refactor Notes (Vercel-primary, Railway/Convex doc-only)
- T1.5-6: moai-platform-auth: Refactor Notes (triplet retained, narrower per-vendor)
- T1.5-7: moai-framework-electron: Telemetry Window (UNCLEAR, 60-day, 2026-04-25..2026-06-24)
- T1.5-8: moai-platform-chrome-extension: Telemetry Window (UNCLEAR, 60-day)
- Checkpoint T1.5-END: make build exit 0, diff -rq empty, skill count=38
🗿 MoAI <email@mo.ai.kr>
* feat(agents): SPEC-V3R2-WF-001 Wave 1.6 — agent prompt rewrite (retired skill refs)
- expert-frontend: moai-domain-uiux → moai-design-system
- manager-project: moai-workflow-templates → moai-workflow-project
- manager-docs: moai-workflow-jit-docs → moai-workflow-project
- builder-skill: moai-workflow-templates → moai-workflow-project
- Template + local pairs updated (8 files total, Template-First rule compliant)
- Checkpoint T1.6-END: grep empty, make build exit 0, diff -rq empty
🗿 MoAI <email@mo.ai.kr>
* feat(skills): SPEC-V3R2-WF-001 Wave 1.7 — CI 검증 + 아카이브 확정 + 마무리
- embed_test.go 임계값 수정: skillCount 300→260, totalFiles 450→440 (Wave 1.4 아카이브 반영)
- templates/.mcp.json 삭제 (TestEmbeddedTemplates_NoMCPConfig 수정)
- go test ./...: 전체 통과 (exit 0)
- make build: 성공 (v2.13.2)
- diff -rq skills/agents: empty (PASS)
- FROZEN 해시 검증: moai-domain-copywriting, moai-domain-brand-design MATCH
- skill 카운트: .claude/skills/ + template/skills/ 각 38개 (Stage 1 목표 달성)
- 아카이브 RETIRED.md 11개 + skill-rename-map.yaml + plan.md drift 5건 커밋
- context-window-management.md 추가 (양쪽 twin)
- baseline-hashes.txt 삭제 (Wave 1.1 artifact, 검증 완료)
- wave-1.7-report.md 생성
SPEC-V3R2-WF-001 Stage 1 완료: 48 → 38 스킬 통합.
🗿 MoAI <email@mo.ai.kr>
* test(template): SPEC-V3R2-WF-006 output styles audit + schema docs
output style 파일에 대한 TDD 검증 테스트 5종을 구현하고
settings-management.md에 outputStyle 설정 선례 및 fallback 계약을 문서화.
변경 사항:
- internal/template/output_styles_audit_test.go: 신규 추가
- TestOutputStylesFrontmatterSchema: name/description/keep-coding-instructions
스키마 검증 + boolean 리터럴 감지 (extractRawBooleanValue)
- TestOutputStylesExactlyTwo: embedded fs 내 스타일 파일 개수 == 2 검증
- TestOutputStylesTemplateLiveParity: template vs live 바이트 동일성 (runtime.Caller(0) 어센트)
- TestOutputStylesEncoding: UTF-8 유효성, BOM/CR 부재 검증
- TestOutputStylesFallbackDocsContract: settings-management.md 내 OUTPUT_STYLE_UNKNOWN 문자열 검증
- .claude/rules/moai/core/settings-management.md: Output Style Configuration 섹션 추가
- outputStyle precedence table (project > user > 기본값 "MoAI")
- Fallback 정책: OUTPUT_STYLE_UNKNOWN: <name> not found; falling back to MoAI (stderr)
- Frontmatter schema contract (3-key minimum, 추가 key 허용)
- Breaking change policy
- internal/template/templates/.claude/rules/moai/core/settings-management.md: 동일 내용 미러 (Template-First)
커버된 AC: AC-01~AC-13 (SPEC-V3R2-WF-006)
🗿 MoAI <email@mo.ai.kr>
* chore(spec): SPEC-V3R2-WF-006 progress.md 최종 완료 업데이트
T0~T5 전 태스크 COMPLETE, AC-01~13 (AC-12 EXT-002 defer) 커버리지 매트릭스 기록.
🗿 MoAI <email@mo.ai.kr>
* fix(skills): SPEC-V3R2-WF-001 Wave 1.4/1.7 — 누락된 template 삭제 + baseline-hashes.txt 정리
Wave 1.4 commit (2649727) 에서 .claude/skills/ 의 git mv 만 staging 되었고
internal/template/templates/.claude/skills/ 11개 deprecated skill 의 disk 삭제는
git stage 가 누락되었음. Disk 상으로는 diff -rq empty 로 일관성을 유지했으나
git tree 가 inconsistent.
본 commit 에서 11개 deprecated skill 의 template tree 삭제 + Wave 1.7 의
baseline-hashes.txt 임시 파일 삭제를 stage 하여 git tree consistency 복구.
- internal/template/templates/.claude/skills/{moai-design-craft, moai-design-tools,
moai-docs-generation, moai-domain-uiux, moai-foundation-context,
moai-foundation-philosopher, moai-platform-database-cloud, moai-tool-svg,
moai-workflow-jit-docs, moai-workflow-templates, moai-workflow-thinking}
- .moai/specs/SPEC-V3R2-WF-001/baseline-hashes.txt (임시 파일)
REQ-WF001-006 (template/local byte-identical) 은 disk 기준으로 이미 충족.
이 commit 은 git tree 의 후속 정합성만 복구하며 disk state 는 변경하지 않음.
🗿 MoAI <email@mo.ai.kr>
* docs(sync): SPEC-V3R2-WF-001 + WF-006 완료 — CHANGELOG + SPEC 상태 업데이트
WF-001 (Skill Consolidation Stage 1): 48 → 38 skill 통합 완료
- 11개 스킬 RETIRE (archive 생성)
- 5개 merge cluster 구성 (trigger keyword union 보존)
- 6개 REFACTOR 스킬 (모듈화 계획)
- Agency FROZEN 계약 유지
- MIG-001 migration artifact schema 정의
WF-006 (Output Styles Alignment): 스키마 및 우선순위 정책 확립
- Frontmatter schema 검증 (name, description, keep-coding-instructions)
- Loading precedence: project > user > default
- Fallback 경고 메커니즘 (stderr)
- CI drift check 확장
CHANGELOG에 WF-001 BC-V3R2-006 (11개 디렉터리 삭제)와 WF-006 schema/precedence 항목 추가
🗿 MoAI <email@mo.ai.kr>
---------
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 048a193 commit 697a6e2
115 files changed
Lines changed: 16559 additions & 1464 deletions
File tree
- .claude
- agents/moai
- output-styles/moai
- rules/moai
- core
- workflow
- skills
- moai-design-system
- moai-domain-backend
- moai-domain-database
- moai-domain-frontend
- moai-framework-electron
- moai-platform-auth
- moai-platform-chrome-extension
- moai-platform-deployment
- moai/workflows
- .github/workflows
- .moai
- config/sections
- harness
- specs
- SPEC-AGENCY-ABSORB-001
- SPEC-ASKUSER-ENFORCE-001
- SPEC-CC297-001
- SPEC-CORE-BEHAV-001
- SPEC-DB-CMD-001
- SPEC-DB-SYNC-001
- SPEC-DB-SYNC-002
- SPEC-DB-SYNC-HARDEN-001
- SPEC-DB-TEMPLATES-001
- SPEC-EVAL-001
- SPEC-EVALLIB-001
- SPEC-GLM-001
- SPEC-OPUS47-COMPAT-001
- SPEC-SDD-001
- SPEC-SLV3-001
- SPEC-STATUSLINE-002
- SPEC-SUNSET-001
- SPEC-TEAM-001
- SPEC-TELEMETRY-001
- SPEC-V3R2-CON-001
- SPEC-V3R2-EXT-001
- SPEC-V3R2-WF-001
- SPEC-V3R2-WF-006
- SPEC-WF-AUDIT-GATE-001
- _archive
- SPEC-AGENCY-001
- SPEC-DESIGN-CONST-AMEND-001
- SPEC-INFRA-001
- SPEC-ORCH-001
- SPEC-SKILL-001
- SPEC-THIN-CMDS-001
- docs/design
- internal
- cli
- constitution
- hook
- runtime
- template
- templates
- .claude
- agents/moai
- output-styles/moai
- rules/moai
- core
- workflow
- skills
- moai-design-system
- moai-domain-backend
- moai-domain-database
- moai-domain-frontend
- moai-framework-electron
- moai-platform-auth
- moai-platform-chrome-extension
- moai-platform-deployment
- moai/workflows
- .moai/config/sections
- scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
110 | 110 | | |
111 | 111 | | |
112 | 112 | | |
113 | | - | |
| 113 | + | |
114 | 114 | | |
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | 118 | | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
119 | 162 | | |
120 | 163 | | |
121 | 164 | | |
| |||
124 | 167 | | |
125 | 168 | | |
126 | 169 | | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
127 | 173 | | |
128 | 174 | | |
129 | 175 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
74 | 74 | | |
75 | 75 | | |
76 | 76 | | |
77 | | - | |
| 77 | + | |
| 78 | + | |
78 | 79 | | |
79 | 80 | | |
80 | 81 | | |
| |||
310 | 311 | | |
311 | 312 | | |
312 | 313 | | |
| 314 | + | |
313 | 315 | | |
314 | 316 | | |
315 | 317 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
7 | 11 | | |
8 | 12 | | |
9 | 13 | | |
| |||
17 | 21 | | |
18 | 22 | | |
19 | 23 | | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
20 | 59 | | |
21 | 60 | | |
22 | 61 | | |
| |||
0 commit comments