@jakkrichm/create-nexus-devflow 2.16.4 → 2.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/dist/bin/create-nexus-devflow.d.ts +1 -1
  2. package/dist/bin/create-nexus-devflow.js +77 -4
  3. package/dist/bin/create-nexus-devflow.js.map +1 -1
  4. package/dist/lib/doctor.js +2 -1
  5. package/dist/lib/doctor.js.map +1 -1
  6. package/dist/lib/project-config.js +2 -1
  7. package/dist/lib/project-config.js.map +1 -1
  8. package/dist/lib/project-status-engine.d.ts +11 -3
  9. package/dist/lib/project-status-engine.js +99 -17
  10. package/dist/lib/project-status-engine.js.map +1 -1
  11. package/dist/lib/review.d.ts +1 -0
  12. package/dist/lib/review.js +58 -3
  13. package/dist/lib/review.js.map +1 -1
  14. package/dist/lib/skill-registry-engine.js +1 -1
  15. package/dist/lib/skill-registry-engine.js.map +1 -1
  16. package/dist/lib/status.d.ts +3 -3
  17. package/dist/lib/status.js +2 -2
  18. package/dist/lib/status.js.map +1 -1
  19. package/dist/lib/tooling/commands/migrate-structure.d.ts +8 -0
  20. package/dist/lib/tooling/commands/migrate-structure.js +200 -0
  21. package/dist/lib/tooling/commands/migrate-structure.js.map +1 -0
  22. package/dist/lib/tooling/commands/summarize-run-status.js +3 -1
  23. package/dist/lib/tooling/commands/summarize-run-status.js.map +1 -1
  24. package/dist/lib/tooling/registry.js +2 -0
  25. package/dist/lib/tooling/registry.js.map +1 -1
  26. package/dist/lib/update.d.ts +34 -3
  27. package/dist/lib/update.js +142 -1
  28. package/dist/lib/update.js.map +1 -1
  29. package/dist/lib/workspace-paths.d.ts +16 -0
  30. package/dist/lib/workspace-paths.js +85 -0
  31. package/dist/lib/workspace-paths.js.map +1 -0
  32. package/dist/scripts/prepare-template.js +75 -15
  33. package/dist/scripts/prepare-template.js.map +1 -1
  34. package/package.json +1 -1
  35. package/template/.agents/skills/analyze/SKILL.md +21 -21
  36. package/template/.agents/skills/audit/SKILL.md +36 -18
  37. package/template/.agents/skills/audit/reference/independent-review.md +58 -2
  38. package/template/.agents/skills/brainstorm/SKILL.md +1 -1
  39. package/template/.agents/skills/complete/SKILL.md +23 -1
  40. package/template/.agents/skills/complete/reference/completion-recovery.md +248 -0
  41. package/template/.agents/skills/continuous/SKILL.md +156 -82
  42. package/template/.agents/skills/feature/SKILL.md +6 -0
  43. package/template/.agents/skills/feature/reference/build-history.md +79 -0
  44. package/template/.agents/skills/idea/SKILL.md +14 -14
  45. package/template/.agents/skills/rollback/SKILL.md +23 -10
  46. package/template/.claude/skills/analyze/SKILL.md +21 -21
  47. package/template/.claude/skills/audit/SKILL.md +33 -16
  48. package/template/.claude/skills/audit/reference/independent-review.md +58 -2
  49. package/template/.claude/skills/brainstorm/SKILL.md +1 -1
  50. package/template/.claude/skills/complete/SKILL.md +23 -1
  51. package/template/.claude/skills/complete/reference/completion-recovery.md +248 -0
  52. package/template/.claude/skills/continuous/SKILL.md +156 -82
  53. package/template/.claude/skills/feature/SKILL.md +6 -0
  54. package/template/.claude/skills/feature/reference/build-history.md +79 -0
  55. package/template/.claude/skills/idea/SKILL.md +14 -14
  56. package/template/.claude/skills/rollback/SKILL.md +23 -10
  57. package/template/AGENTS.md +11 -10
  58. package/template/devflow/{context → 00-context}/ai-interaction.md +1 -1
  59. package/template/devflow/{build-plan.md → 30-planning/build-plan.md} +24 -0
  60. package/template/devflow/40-tasks/.gitkeep +0 -0
  61. package/template/devflow/40-tasks/README.md +11 -0
  62. package/template/devflow/60-docs/migration-guide-decade-numbered.md +93 -0
  63. package/template/devflow/config.json +1 -0
  64. /package/template/devflow/{context → 00-context}/coding-standards.md +0 -0
  65. /package/template/devflow/{context → 00-context}/glossary.md +0 -0
  66. /package/template/devflow/{context → 00-context}/project-overview.md +0 -0
  67. /package/template/devflow/{ideas.md → 10-ideation/ideas.md} +0 -0
  68. /package/template/devflow/{reference → 10-ideation/reference}/build-plan-template.md +0 -0
  69. /package/template/devflow/{reference → 10-ideation/reference}/feature-spec-template.md +0 -0
  70. /package/template/devflow/{reference → 10-ideation/reference}/mockup.html +0 -0
  71. /package/template/devflow/{reference → 10-ideation/reference}/project-overview-template.md +0 -0
  72. /package/template/devflow/{reference → 10-ideation/reference}/project-plan-template.md +0 -0
  73. /package/template/devflow/{reference → 10-ideation/reference}/running-id-contract.md +0 -0
  74. /package/template/devflow/{decisions → 20-discovery/decisions}/.gitkeep +0 -0
  75. /package/template/devflow/{decisions → 20-discovery/decisions}/README.md +0 -0
  76. /package/template/devflow/{discoveries → 20-discovery/discoveries}/.gitkeep +0 -0
  77. /package/template/devflow/{project-plan.md → 30-planning/project-plan.md} +0 -0
  78. /package/template/devflow/{history → 50-history}/HISTORY.md +0 -0
  79. /package/template/devflow/{history → 50-history}/features/README.md +0 -0
  80. /package/template/devflow/{history → 50-history}/fixes/README.md +0 -0
  81. /package/template/devflow/{history → 50-history}/rollbacks/README.md +0 -0
  82. /package/template/devflow/{docs → 60-docs}/USAGE.md +0 -0
  83. /package/template/devflow/{docs → 60-docs}/diagrams/nexus-devflow-architecture.html +0 -0
  84. /package/template/devflow/{docs → 60-docs}/diagrams/nexus-devflow-architecture.json +0 -0
  85. /package/template/devflow/{docs → 60-docs}/diagrams/nexus-devflow-lifecycle.html +0 -0
  86. /package/template/devflow/{docs → 60-docs}/diagrams/nexus-devflow-lifecycle.json +0 -0
  87. /package/template/devflow/{docs → 60-docs}/examples/living-spec/adr.example.md +0 -0
  88. /package/template/devflow/{docs → 60-docs}/examples/living-spec/current-feature.example.md +0 -0
  89. /package/template/devflow/{docs → 60-docs}/examples/living-spec/discovery.example.md +0 -0
  90. /package/template/devflow/{docs → 60-docs}/examples/living-spec/ideas.example.md +0 -0
  91. /package/template/devflow/{docs → 60-docs}/governance-rules.md +0 -0
  92. /package/template/devflow/{docs → 60-docs}/manual-review-workflow-spec.md +0 -0
  93. /package/template/devflow/{docs → 60-docs}/markdown-metadata-contract.md +0 -0
  94. /package/template/devflow/{docs → 60-docs}/quickstart.md +0 -0
  95. /package/template/devflow/{docs → 60-docs}/release-process.md +0 -0
  96. /package/template/devflow/{docs → 60-docs}/skill-selection-policy.md +0 -0
  97. /package/template/devflow/{docs → 60-docs}/workflow-surface-map.md +0 -0
@@ -6,6 +6,8 @@ argument-hint: "[{resume, max-features, or start-feature}]"
6
6
 
7
7
  # continuous - Complete the Build Plan One Local Feature at a Time
8
8
 
9
+ **Context reuse:** Reuse any required file already loaded in project instructions or the current session. Read it again only if absent, changed, or exact current bytes or line references are needed.
10
+
9
11
  **First action:** Before project inspection, preflight, or any other tool call,
10
12
  publish `running` to `devflow/.state/run.json` using the dashboard activity
11
13
  contract in `AGENTS.md`.
@@ -19,120 +21,192 @@ Where this sits in the workflow:
19
21
  Gates ➔ Merge)
20
22
  ```
21
23
 
22
- `/continuous` (หรือ `$continuous`) คือโหมดการทำงานแบบ Autonomous Multi-Feature Delivery Loop สำหรับจัดส่งฟีเจอร์ที่อยู่ใน `devflow/build-plan.md` ต่อเนื่องทีละฟีเจอร์ในเครื่อง Local โดยไม่ต้องหยุดรอ Manual Review Prompts ในแต่ละขั้นตอนย่อย แต่ยังคงรักษาความเข้มงวดของ **The 3-Pillars Model & Task-Isolated Living Spec (`devflow/context/{xxx-slug}/spec.md`)**, การทำ TDD, การตรวจ Quality Gates, การบันทึก Findings Ledger, และการ Squash-merge ลง Local Main Commit ทีละฟีเจอร์อย่างปลอดภัย 100%
23
-
24
- ### ขอบเขตสิทธิ์ที่ได้รับอนุญาตเฉพาะในเครื่อง Local:
25
- - สร้างและสลับ Feature Branch ในเครื่อง Local
26
- - บันทึก Checkpoint Commits ย่อยบน Branch
27
- - สร้าง required immutable independent-review checkpoints
28
- - บันทึก Feature Commit สุดท้าย
29
- - Squash-merge ฟีเจอร์ที่เสร็จสมบูรณ์ลง Default Branch ของ Local
30
- - ลบ Feature Branch เฉพาะใน Local หลังรวมโค้ดสำเร็จ
31
- - วนลูปเริ่มทำฟีเจอร์ที่ยังไม่ได้เช็ค (`- [ ]`) รายการถัดไปใน `build-plan.md`
32
-
33
- ### ข้อจำกัดความปลอดภัยเด็ดขาด (Strict Safety Boundaries):
34
- - **ห้าม** Push ขึ้น Remote Repository
35
- - **ห้าม** Deploy หรือเผยแพร่ (Publish) สู่ภายนอก
36
- - **ห้าม** ลบข้อมูลจริง, ทำลาย Database, หรือรัน Destructive Migration
37
- - **ห้าม** กด Accept Finding หรือเพิกเฉยต่อ Failing Quality Gate แทนมนุษย์
24
+ Continuous Mode (`/continuous` or `$continuous`) is an explicit opt-in loop for
25
+ completing planned features serially from `devflow/build-plan.md` in local isolation
26
+ without pausing at normal human review prompts. It preserves the same strict
27
+ **The 3-Pillars Model & Task-Isolated Living Spec (`devflow/context/{xxx-slug}/spec.md`)**,
28
+ disciplined TDD verification, quality gates, findings ledger, branch isolation, and
29
+ one clean local main commit per feature that a careful human workflow would produce.
30
+
31
+ ### Authorized Local Actions for this Run:
32
+ - Create and switch local feature branches (`feature/{xxx-slug}`)
33
+ - Create configured checkpoint commits on those branches
34
+ - Create required immutable independent-review checkpoints
35
+ - Create the final local feature commit
36
+ - Squash-merge a completed feature into the local default branch (`main`)
37
+ - Delete the merged local feature branch
38
+ - Repeat with the next unchecked build-plan item
39
+
40
+ ### Strict Safety Boundaries:
41
+ - **NEVER** push to remote repositories
42
+ - **NEVER** deploy or publish externally
43
+ - **NEVER** delete production data, destroy databases, or run irreversible migrations
44
+ - **NEVER** accept findings or waive failing quality gates on behalf of the user
45
+ - Always stop before those actions and hand off to the user
38
46
 
39
47
  ---
40
48
 
41
49
  ## Input & Target Selection
42
50
 
43
- - **ไม่ระบุ Argument (`/continuous`)**:
44
- 1. หากมีฟีเจอร์ค้างอยู่ใน `devflow/context/{xxx-slug}/` ให้ทำต่อจากขั้นตอนย่อยแรกที่ยังไม่ได้เช็ค (`- [ ]`)
45
- 2. หากไม่มี ให้เลือกฟีเจอร์แรกที่ยังไม่ได้เช็ค (`- [ ]`) ใน `devflow/build-plan.md`
46
- 3. วนลูปทำต่อเนื่องตามลำดับใน `build-plan.md` จนกว่าจะหมด หรือครบตามจำนวน `continuous.maxFeatures` ใน `devflow/config.json`
47
- - **ระบุ `resume` (`/continuous resume`)**: ทำงานต่อจากฟีเจอร์และขั้นตอนย่อยที่ค้างอยู่ทันที
48
- - **ระบุชื่อหรือหมายเลขฟีเจอร์ (`/continuous 13`)**: เริ่มต้นจากฟีเจอร์ที่ระบุ แล้ววนลูปต่อไปยังฟีเจอร์ถัดไป
51
+ Before selecting a new feature or requiring an active live spec, always inspect
52
+ pending completion using the installed Complete skill and
53
+ `../complete/reference/completion-recovery.md`. Use its read-only candidate screen
54
+ first: settled clean default-branch history needs no historical transient objects
55
+ for a new run. An actual completion candidate or an explicit request to resume
56
+ interrupted completion requires full recovery proof, using this run's scoped Git
57
+ authority and `qualityGates.continuous`. Do not repeat archival or a work commit/merge.
58
+ Missing, conflicting, or unprovable recovery evidence stops before next-feature work.
59
+ An active feature with no completion candidate resumes implementation normally; its
60
+ ordinary `resume` does not require an archive or completion proof.
61
+
62
+ With no argument after pending completion has been reconciled:
63
+
64
+ 1. Resume an active feature in `devflow/context/{xxx-slug}/spec.md`.
65
+ 2. Otherwise select the next unchecked leaf item (`- [ ]`) in `devflow/build-plan.md`.
66
+ 3. Continue in build-plan order until no unchecked leaf remains or
67
+ `continuous.maxFeatures` completed features have been counted.
68
+
69
+ `resume` explicitly resumes the active feature or its pending completion.
70
+ A feature number or name may set the starting item only when no different work item
71
+ is active. After that item, continue with the next unchecked leaf items in normal
72
+ build-plan order.
73
+
74
+ Continuous Mode handles planned features only. If the active work is a fix or rollback,
75
+ stop and point to its normal reviewed workflow. Never overwrite active work to make
76
+ the requested target fit.
49
77
 
50
78
  ---
51
79
 
52
- ## Step 1: Preflight Safety Check (ตรวจสอบความพร้อมก่อนเริ่ม)
80
+ ## Step 1: Preflight Safety Check
53
81
 
54
- อ่านบริบทตั้งต้น:
82
+ Read initial context:
55
83
  - `AGENTS.md`
56
- - `devflow/config.json` (หากไม่มี ให้ใช้ค่า Defaults อย่างปลอดภัย; หาก Invalid ให้หยุดและชี้ไปที่ `/doctor`)
57
- - `devflow/project-plan.md` และ `devflow/build-plan.md`
84
+ - `devflow/config.json` (if missing, use safe defaults; if invalid, stop and point to `/doctor`)
85
+ - `devflow/project-plan.md` and `devflow/build-plan.md`
58
86
  - `devflow/context/project-overview.md`
59
- - `devflow/context/{xxx-slug}/` (ถ้ามีงานค้างอยู่)
60
- - `devflow/context/coding-standards.md` และ `devflow/context/ai-interaction.md`
61
- - สถานะ Git (`git status`, `git branch`, recent log)
62
-
63
- ### กฎการเริ่มงาน (Start Conditions):
64
- 1. สถานะ Git Working Tree สะอาด (Clean) บน Default Branch หรือมีเฉพาะ Diff ของฟีเจอร์ปัจจุบัน
65
- 2. `devflow/build-plan.md` มีฟีเจอร์ที่ยังไม่ได้ทำเหลืออยู่
66
- 3. ไม่มี Finding ระดับ P0 หรือ P1 ค้างในสถานะ `open` หรือ `fixed`
67
- 4. บันทึก Commit SHA ตั้งต้นของ Default Branch ไว้สำหรับสรุปผลในรายงานสุดท้าย
87
+ - `devflow/context/{xxx-slug}/` (if work is already active)
88
+ - `devflow/context/coding-standards.md` and `devflow/context/ai-interaction.md`
89
+ - Git status (`git status`, `git branch`, default branch, and recent log)
90
+
91
+ ### Start Conditions:
92
+ 1. The project is a Git repository.
93
+ 2. The working tree is clean on the default branch, or all dirty work belongs to the
94
+ active feature on its matching configured feature branch, including proven pending
95
+ completion handled through the recovery contract.
96
+ 3. `devflow/build-plan.md` is a valid ordered checkbox plan with at least one remaining leaf.
97
+ 4. Overview is fresh. If stale but both plans are clear and consistent, refresh it
98
+ using `/overview` behavior and include that change with the first feature.
99
+ 5. Existing P0 or P1 findings are not `open` or `fixed`.
100
+ 6. Project commands and the exact `Verify` command, when declared, are usable.
101
+ 7. Record the starting default-branch commit SHA for the final integration summary.
102
+
103
+ The initial `devflow/.state/run.json` record required by `AGENTS.md` must already show
104
+ command `continuous` and status `running` before preflight begins. After preflight passes,
105
+ enrich it with boundary `local-only`, the current feature, and completed-feature progress
106
+ against the smaller of the remaining queue or configured limit. Update it when a feature
107
+ starts, after every passing build step, after each quality gate, and after each local main
108
+ commit. On a stop, set status `blocked` with `/continuous resume` when resuming is safe.
109
+ At the end of the queue or limit, set status `completed`.
68
110
 
69
111
  ---
70
112
 
71
- ## Step 2: Serial Feature Lifecycle (วงจรการส่งมอบทีละฟีเจอร์)
113
+ ## Step 2: Serial Feature Lifecycle
72
114
 
73
- ดำเนินงานวนลูปทีละ 1 ฟีเจอร์ตามลำดับ:
115
+ Execute the loop one feature at a time in strict order:
74
116
 
75
- ### 2.1 Select & Spec (เลือกและร่างสเปก)
76
- - หาก Resuming: ใช้ Spec เดิมใน `devflow/context/{xxx-slug}/spec.md`
77
- - หากเป็นฟีเจอร์ใหม่: ถอดความต้องการจาก `build-plan.md` และสร้าง Task Workspace ที่ `devflow/context/{xxx-slug}/` พร้อมเขียน `spec.md`, `stage.md`, `findings.md` และวิเคราะห์ Red-team ก่อนเริ่มโค้ด
117
+ ### 2.1 Select & Spec
118
+ - If resuming: Reuse the existing spec in `devflow/context/{xxx-slug}/spec.md`.
119
+ - If new feature: Extract requirements from `devflow/build-plan.md` and initialize the
120
+ task workspace at `devflow/context/{xxx-slug}/` with `spec.md`, `stage.md`, and `findings.md`.
121
+ Check `../feature/reference/build-history.md` for `--build-N` naming conventions if
122
+ rebuilding a previously rolled-back feature, ensuring existing archives in
123
+ `devflow/history/features/` are never overwritten. Self-review the spec before coding.
78
124
 
79
125
  ### 2.2 Create / Resume Feature Branch
80
- - สร้าง Branch ตาม Prefix ใน Config (เช่น `feature/061-slug`) จาก Default Branch
126
+ - Use the configured branch prefix (e.g., `feature/{xxx-slug}`) from the current local default branch.
127
+ - When resuming, require the existing branch and active spec to agree.
128
+ - If switching would strand unrelated work or the default branch changed unsafely, stop.
129
+ Never stash, reset, or discard work automatically.
81
130
 
82
131
  ### 2.3 Implement Small Steps with Strict TDD
83
- - ดำเนินการสร้างฟังก์ชันทีละ Task ตาม Checklist ใน Spec:
84
- 1. `[TDD-Red]`: เขียน Unit Test ก่อน
85
- 2. `[TDD-Green]`: เขียนโค้ดขั้นต่ำให้ Test ผ่าน
86
- 3. `[TDD-Refactor]`: ปรับแต่งโค้ดให้สะอาดและรัน Verification ผ่าน
87
- 4. ทำเครื่องหมาย `- [x]` ใน Spec และบันทึก Checkpoint Commit บน Branch (หาก `workflow.checkpointCommits: "enabled"`)
132
+ Execute the spec in order, one small diff at a time:
133
+ 1. `[TDD-Red]`: Write the failing unit test first.
134
+ 2. `[TDD-Green]`: Implement the minimal code to pass the test.
135
+ 3. `[TDD-Refactor]`: Clean up and ensure all verifications pass cleanly.
136
+ 4. Check off the step (`- [x]`) in `spec.md`.
137
+ 5. When `workflow.checkpointCommits` is `enabled`, create a conventional local
138
+ checkpoint commit containing that passing step and its checked spec state.
139
+ When `disabled`, keep the work uncommitted until feature completion.
88
140
 
89
141
  ### 2.4 Apply Continuous Quality Gates
90
- ตรวจสอบตามการตั้งค่า `qualityGates.continuous` ใน `devflow/config.json`:
91
- - **Audit**: `manual` (ข้ามอัตโนมัติ), `when-sensitive` (รันเมื่อแตะ Auth/Security/Database/Secrets), `always` (รันทุกฟีเจอร์)
92
- - **Independent Review**: อ่าน `qualityGates.continuous.independentReview`; `manual` คือ opt-in, `always` บังคับทุกฟีเจอร์, และ `when-sensitive` บังคับเมื่อฟีเจอร์แตะ authentication, authorization, secrets, payments, personal data, destructive operations, dependencies, deployment หรือ security boundary อื่น บันทึกคำตัดสินและหลักฐานต่อฟีเจอร์ใน spec
93
- - **Check**: `manual` (ข้ามอัตโนมัติ), `when-behavioral` (รันเมื่อมี Runtime Behavior เช่น UI/CLI/API), `always` (รันทุกฟีเจอร์)
94
- - **Try Guide**: `manual` (ข้ามอัตโนมัติ), `when-user-facing` (สร้าง Try Guide เมื่อเป็น UI/CLI), `always` (สร้างทุกฟีเจอร์)
95
-
96
- ทุก product/spec edit ทำให้ receipt เดิมหมดอายุ เมื่อ Independent Review gate
97
- ทำงาน ให้รัน Verify และสร้าง immutable checkpoint (ได้รับอนุญาตภายใต้ Continuous Mode authority แม้ checkpointCommits จะ disabled) จากนั้นปฏิบัติตาม `/audit independent current`
98
- หาก `review.independentExecution` เป็น `automatic` ให้ spawn และรอ isolated reviewer child พร้อมตรวจสอบ receipt ให้ผ่านก่อนดำเนินการต่อ
99
- หากเป็น `manual` หรือ runtime ไม่สามารถพิสูจน์ isolation, identity, model ได้ ให้ตั้งสถานะเป็น `ready` และหยุดด้วย manual handoff
100
- Continuous Mode จะไม่ทำการ audit งานของตัวเองโดยเด็ดขาด
101
-
102
- คำขอจะบันทึก `Requested execution` และ receipt จะบันทึก `Actual execution`
103
- การจับคู่ของ execution และ reviewer context จะต้องถูกต้องตามสัญญา review
104
- หากเป็น legacy request ที่ไม่มี `Requested execution` ให้ถือว่าเป็น legacy manual-only ห้ามเติมฟิลด์หรือรัน subagent กับมัน
105
-
106
- สำหรับฟีเจอร์ browser-facing ให้รัน `npm run test:browser` เมื่อมี
107
- `test:browser` script และเก็บ interactive evidence ผ่าน `browseros-neo` เมื่อ
108
- พร้อมใช้งาน หาก script หรือ MCP ไม่มี ให้บันทึก limitation และหยุดเมื่อ evidence
109
- นั้นเป็น gate ที่จำเป็น ห้ามติดตั้งหรืออ้างผลโดยปริยาย
142
+ Evaluate `qualityGates.continuous` in `devflow/config.json`:
143
+ - **Audit**: `manual` skips automatic audit; `when-sensitive` runs `/audit current`
144
+ for authentication, authorization, payments, secrets, personal or user data, migrations,
145
+ destructive operations, external side effects, security boundaries, or unusually broad changes;
146
+ `always` audits every feature.
147
+ - **Independent Review**: Read `qualityGates.continuous.independentReview`; `manual` skips
148
+ automatic review; `when-sensitive` requires an isolated reviewer for the same sensitive
149
+ categories as Audit; `always` requires an isolated reviewer for every feature. A passing
150
+ independent receipt satisfies the Audit gate for that feature.
151
+ - **Check**: `manual` skips automatic `/check`; `when-behavioral` runs it when a done-when
152
+ needs observed runtime behavior (UI, CLI, API, background job); `always` checks every feature.
153
+ - **Try Guide**: `manual` skips automatic generation; `when-user-facing` generates a guide
154
+ for UI, CLI, or user-facing workflows; `always` generates one for every feature.
155
+
156
+ Run required gates in order: check, review, then try guide. When independent review is
157
+ selected, ensure application code is in a clean immutable checkpoint. First rerun final
158
+ verification and selected Check gate and set spec status to `verified`. This review
159
+ checkpoint is covered by Continuous Mode authority even when step checkpoint commits are
160
+ disabled. Follow `/audit independent current`.
161
+
162
+ With `review.independentExecution: "automatic"`, spawn and wait for the isolated reviewer
163
+ subagent and validate its receipt before continuing. With `manual`, or when runtime cannot
164
+ prove isolation, identity, model, or completion, set activity to `ready` and stop with the
165
+ manual handoff. Continuous Mode never audits its own work.
166
+
167
+ The request records `Requested execution`; the receipt records `Actual execution`. Require
168
+ the execution and reviewer-context pairing defined by the review contract. A pending request
169
+ without `Requested execution` is legacy manual-only.
170
+
171
+ For browser-facing features, run `npm run test:browser` when `test:browser` script exists
172
+ and collect interactive evidence via `browseros-neo` when available.
110
173
 
111
174
  ### 2.5 Repair Findings
112
- - ซ่อมแซม Finding ระดับ P0/P1 ที่เกิดขึ้นจากฟีเจอร์นี้โดยอัตโนมัติ (ไม่เกิน `continuous.maxRepairAttempts` ครั้ง)
113
- - หากไม่สามารถซ่อมแซมได้ หรือมี P0/P1 ค้างอยู่ ให้หยุดการทำงานทันที
175
+ - Automatically repair confirmed P0 and P1 findings directly caused by the feature, up to
176
+ `continuous.maxRepairAttempts` times.
177
+ - After repair, rerun affected verification and re-audit the repaired area.
178
+ - Any unresolved P0 or P1 finding left `open` or `fixed` stops the loop before completion.
114
179
 
115
180
  ### 2.6 Complete Locally Like a Human
116
- - รัน Verification ขั้นสุดท้าย
117
- - ย้ายและ Archive เอกสารไปที่ `devflow/history/features/{xxx-slug}.md`
118
- - อัปเดตเช็คบ็อกซ์ใน `devflow/build-plan.md`
119
- - ลบโฟลเดอร์รัน `devflow/context/{xxx-slug}/`
120
- - Squash-merge Feature Branch เข้าสู่ Local Main และลบ Feature Branch ใน Local
121
- - นับจำนวนฟีเจอร์ที่สำเร็จเพิ่มขึ้น 1
181
+ Apply the `/complete` safety, logging, and archive behavior without asking commit and merge prompts:
182
+ 1. Run final documented verification.
183
+ 2. Confirm the current spec status is `verified`.
184
+ 3. Capture source tree / annotation proof per `../complete/reference/completion-recovery.md`
185
+ and embed `<!-- devflow:completion {...} -->` in the archive.
186
+ 4. Place the archive at `devflow/history/features/{xxx-slug}.md`.
187
+ 5. Update checkboxes in `devflow/build-plan.md` and append entry to `devflow/history/HISTORY.md`.
188
+ 6. Remove the active run directory `devflow/context/{xxx-slug}/`.
189
+ 7. Switch to the local default branch, squash-merge the feature branch, and create one
190
+ conventional commit containing product work, tests, and DevFlow history.
191
+ 8. Delete the merged local feature branch.
192
+ 9. Confirm the default branch is clean before selecting the next feature.
122
193
 
123
194
  ---
124
195
 
125
196
  ## Step 3: Optional Final Integration Audit
126
197
 
127
- เมื่อครบกำหนดจำนวนฟีเจอร์หรือหมด `build-plan.md` หาก `continuous.finalIntegrationAudit: true` ให้รันการตรวจสอบความเข้ากันได้แบบบูรณาการ (Cross-Feature Contracts & Seams) จากจุดเริ่มต้นถึง HEAD ปัจจุบัน
198
+ When the feature queue completes or `continuous.maxFeatures` is reached, if
199
+ `continuous.finalIntegrationAudit: true`, execute an integration compatibility check
200
+ (Cross-Feature Contracts & Seams) covering the span from the starting commit to current HEAD.
128
201
 
129
202
  ---
130
203
 
131
- ## Step 4: Stop & Report (สรุปรายงานผลลัพธ์)
204
+ ## Step 4: Stop & Report
132
205
 
133
- เมื่อการทำงานสิ้นสุด (ไม่ว่าจะสำเร็จครบถ้วน หรือหยุดเนื่องจากติดเงื่อนไขความปลอดภัย) ให้รายงานสรุปเป็นภาษาไทย:
134
- - Commit เริ่มต้น และ Commit สุดท้ายของ Default Branch
135
- - รายชื่อฟีเจอร์ที่จัดส่งสำเร็จในรอบนี้ พร้อม Commit Hash
136
- - ผลการรัน Quality Gates และการซ่อมแซม Findings (ถ้ามี)
137
- - ความคืบหน้าภาพรวมของ `build-plan.md` และฟีเจอร์ถัดไป
138
- - ย้ำเตือนชัดเจนว่า **ไม่มีการ Push ใดๆ ขึ้น Remote Repository**
206
+ When Continuous Mode finishes (either fully completed or stopped at a safety boundary),
207
+ present a concise summary report in Thai (per user communication rules):
208
+ - Starting and ending commit SHAs of the local default branch.
209
+ - List of features delivered in this run with their commit hashes.
210
+ - Summary of quality gates executed and findings resolved.
211
+ - Overall progress of `devflow/build-plan.md` and next upcoming feature.
212
+ - Clear reminder that **no remote push or deployment has occurred**.
@@ -126,6 +126,10 @@ build plan starts high-level.
126
126
 
127
127
  ## Step 3 - write the spec
128
128
 
129
+ Before review, allocate the selected feature ID's build attempt using
130
+ `reference/build-history.md`: first build 1, otherwise one greater than
131
+ the maximum proven prior attempt after all prior builds were reversed. For attempt N > 1, append `--build-N` to the slug and archive path (e.g. `086-export--build-2.md`).
132
+
129
133
  For the one (sub-)feature being built now, allocate sequential ID (`xxx-slug`) and create a dedicated workspace at `devflow/context/{xxx-slug}/`. Write the full living spec to
130
134
  `devflow/context/{xxx-slug}/spec.md`, following `reference/feature-spec-template.md`. Also initialize `stage.md` and `findings.md` in that folder. The first heading and build-plan identity must use this canonical form:
131
135
 
@@ -133,8 +137,10 @@ For the one (sub-)feature being built now, allocate sequential ID (`xxx-slug`) a
133
137
  # Feature: <title>
134
138
 
135
139
  **From build-plan:** feature <id>
140
+ **Build attempt:** <positive integer>
136
141
  ```
137
142
 
143
+
138
144
  Fill every section:
139
145
  - Goal, Problem Statement, and In/Out of scope
140
146
  - Acceptance Criteria (AC-1, AC-2, ...)
@@ -0,0 +1,79 @@
1
+ # Build history identity
2
+
3
+ Read metadata from the archived original spec, not appended findings or review.
4
+ Read the feature ID from its `**From build-plan:**` or supported legacy
5
+ feature field, not its title or filename. Normalize the numeric part by removing
6
+ leading zeros and the optional letter to lowercase (`012A` becomes `12a`). Match
7
+ that complete ID, never a substring. Use the archived spec's positive integer
8
+ `**Build attempt:**`; duplicate or malformed fields stop selection. A legacy
9
+ first-build archive without it counts as attempt 1 only when its spec identity
10
+ and unsuffixed `NN-name.md` path agree unambiguously. Derive the expected name
11
+ from its own spec, not today's renamed plan title. Text such as `Build 2` in a
12
+ title proves no attempt.
13
+ For new paths, pad the numeric part to at least two digits, keep its letter, and
14
+ use the spec title's lowercase kebab-case slug. Append `--build-N` only for N > 1.
15
+ An archive declaring an attempt must agree with that computed path.
16
+ The double hyphen is reserved: slug normalization collapses punctuation runs to
17
+ one hyphen, so a first build titled `Export Build 2` uses `04-export-build-2.md`,
18
+ while a later attempt 2 titled `Export` uses `04-export--build-2.md`.
19
+
20
+ Before freezing a new spec, check its exact planned archive path in `devflow/history/features/` and branch.
21
+ Require `lstat` to return `ENOENT` for the archive leaf; any existing entry,
22
+ including a dangling symlink, blocks it. Present parents must be ordinary
23
+ directories. Require a valid branch name and no existing or namespace-conflicting
24
+ local branch ref (inspect `git for-each-ref refs/heads/`, including packed refs).
25
+ Also require no prior use of the archive path in available Git history:
26
+
27
+ ```bash
28
+ git log --all --reflog --full-history --format=%H -- <planned-archive-path>
29
+ ```
30
+
31
+ Any result or inspection failure stops before spec review with the exact collision.
32
+ Do not auto-bump the attempt or rename reviewed work to avoid it. These checks
33
+ apply to new specs; existing completion must run its recovery routing first so
34
+ its own archive is reconciled rather than rejected. Preserve already-reviewed
35
+ legacy spec bytes, branch, and any proven recovery destination.
36
+
37
+ A legacy rebuild can preserve a reviewed spec without this field. Its completion
38
+ annotation must freeze the original `baseCommit`: resolve only prior builds and
39
+ their completed reversals present at that base, derive `max(attempts) + 1`, and
40
+ require the exact resulting archive path. For an integrated archive, its unique
41
+ introducing commit's sole parent must equal that base. For unfinished completion,
42
+ use Complete's phase proof. The path checks this derived attempt; it never supplies
43
+ the number. Missing or ambiguous proof stops without rewriting the archived spec.
44
+ Settled history numbering and rollback selection do not require the annotation's
45
+ historical `head` or `sourceTree`; actual completion recovery still requires them.
46
+
47
+ Before using prior builds or reversals, prove each selected record on the local
48
+ default branch. Resolve the unique introducing commit with:
49
+
50
+ ```bash
51
+ git log --full-history --diff-filter=A --format=%H <local-default> -- <archive-path>
52
+ git log --full-history --format=%H <introducing-commit>..<local-default> -- <archive-path>
53
+ ```
54
+
55
+ The first result must contain exactly one commit which actually adds the path;
56
+ the second must be empty. Confirm the current blob and mode equal that addition
57
+ (use Git's normal EOL normalization for a working-file comparison). Inspect the
58
+ record at that commit, not an uncommitted replacement. Reject orphan, overwritten,
59
+ deleted/re-added, renamed, multiply-added, or conflicting records. Never choose
60
+ the newest commit, file count, or timestamp to resolve ambiguity.
61
+
62
+ A build is reversed only by a completed `**Type:** Rollback` record in `devflow/history/rollbacks/` with its exact
63
+ `**Target archive:**` and full `**Target commit:**`, matching feature ID, verified
64
+ or complete status and finished steps. Its `Target parent` must match the target's
65
+ sole parent. Prove that rollback record's unique unchanged addition
66
+ by the same procedure, reachable on the local default after the target build.
67
+ Require a non-merge rollback commit containing that record and its completed
68
+ plan bookkeeping. Uncommitted, malformed, changed, or merely rollback-looking
69
+ files are not completed reversals. Conflicting or duplicate reversals stop.
70
+
71
+ Include exact rollback references retained on the selected plan line; missing
72
+ referenced records are a blocker, not an empty history. For a new unchecked feature,
73
+ use 1 when there are no prior records; otherwise
74
+ require every prior build to have one proven completed reversal and allocate
75
+ `max(attempts) + 1`. Duplicate attempts or inconsistent/missing history stop with
76
+ the exact paths and missing proof. Search only this feature's records and their
77
+ exact reversal references. Ignored local-only history without introducing-commit
78
+ proof cannot establish a rebuild or rollback target; stop without force-adding or
79
+ migrating it. Ordinary first builds do not require prior history.
@@ -26,32 +26,32 @@ When invoked:
26
26
  3. Allocate the next sequential ID (e.g. `IDEA-001`, `IDEA-002`).
27
27
 
28
28
  ### 2. AI Feasibility & Value Analysis
29
- Evaluate the user's raw idea and generate an enriched summary in **Thai (`th`)**:
30
- - **ไอเดียตั้งต้น (Raw Idea)**: ข้อความที่ผู้ใช้ระบุ
31
- - **AI Feasibility & Tech**: ประเมินความเป็นไปได้ (ง่าย / ปานกลาง / ซับซ้อน) พร้อมแนะนำ Library, API, หรือแนวทางเทคนิคเบื้องต้น
32
- - **Value & Potential**: คุณค่า ประโยชน์ และความน่าสนใจของฟีเจอร์นี้
33
- - **Quick Seed (สรุปประเด็นกันลืม)**: 2-3 ประเด็นทางเทคนิคหรือแนวทางการต่อยอด เพื่อให้กลับมาอ่านทีหลังแล้วจำบริบทได้ทันที
29
+ Evaluate the user's raw idea and generate an enriched entry in Thai (`th` per user communication rules):
30
+ - **Raw Idea**: The user's input description
31
+ - **AI Feasibility & Tech**: Feasibility rating (Easy / Medium / Complex) along with recommended libraries, APIs, or architectural approaches
32
+ - **Value & Potential**: Business value, user benefits, and strategic impact
33
+ - **Quick Seed**: 2-3 key technical nuances or seed points to preserve context for later pickup
34
34
 
35
35
  ### 3. Append to `devflow/ideas.md`
36
36
  Insert the new idea block directly under `## 📌 Pending Ideas` in `devflow/ideas.md`:
37
37
 
38
38
  ```markdown
39
- ### [IDEA-001] {หัวข้อไอเดียสั้นๆ}
39
+ ### [IDEA-001] {Brief idea title}
40
40
  - **บันทึกเมื่อ**: {YYYY-MM-DD}
41
- - **ไอเดียตั้งต้น**: {ข้อความที่ผู้ใช้ป้อน}
42
- - **AI Feasibility & Tech**: {บทวิเคราะห์ความเป็นไปได้และเครื่องมือ}
43
- - **Value & Potential**: {บทวิเคราะห์คุณค่าและความน่าสนใจ}
41
+ - **ไอเดียตั้งต้น**: {User's raw idea text}
42
+ - **AI Feasibility & Tech**: {Feasibility and tooling analysis}
43
+ - **Value & Potential**: {Value and impact analysis}
44
44
  - **Quick Seed (กันลืม)**:
45
- 1. {ประเด็นสำคัญที่ 1}
46
- 2. {ประเด็นสำคัญที่ 2}
47
- - **สถานะ**: `Pending` (หยิบไปทำได้ด้วย `/feature IDEA-001` หรือ `/discovery IDEA-001`)
45
+ 1. {Key point 1}
46
+ 2. {Key point 2}
47
+ - **สถานะ**: `Pending` (Ready for pickup via `/feature IDEA-001` or `/discovery IDEA-001`)
48
48
  ```
49
49
 
50
- *(หากมีข้อความ `*(ยังไม่มีไอเดียค้างอยู่...)*` ให้ลบออกเมื่อมีไอเดียแรก)*
50
+ *(If placeholder `*(ยังไม่มีไอเดียค้างอยู่...)*` exists, remove it upon recording the first idea)*
51
51
 
52
52
  ### 4. Output Summary
53
53
  Report to the user:
54
54
  - Allocated Idea ID: `[IDEA-xxx]`
55
55
  - Summary of Feasibility & Value analysis
56
56
  - Seed points saved
57
- - Instructions for promotion: "เมื่อพร้อมลงมือทำ สามารถพิมพ์ `/feature IDEA-xxx` หรือ `/discovery IDEA-xxx` ได้ทันที"
57
+ - Instructions for promotion: "Ready to implement? Run `/feature IDEA-xxx` or `/discovery IDEA-xxx` anytime."
@@ -53,16 +53,23 @@ skill.
53
53
 
54
54
  ## Step 1 - resolve the exact feature
55
55
 
56
- Match the requested number or name against both the checked build-plan items and
57
- `devflow/history/features/*.md`. Exclude the directory README.
58
-
59
- Use the archive path to locate the commit that added it:
60
-
61
- git log --diff-filter=A --format="%H %s" HEAD -- <archive-path>
62
-
63
- Use the newest matching commit reachable from the current branch. Confirm the
64
- archive was added by that commit and its subject and diff are consistent with the
65
- requested feature. If the target is a merge commit, stop before Step 2 and before
56
+ Resolve the requested number or name to one checked build-plan ID; for an archive
57
+ path, read its exact spec identity first and match that checked item. Then gather
58
+ all exact-ID feature archive candidates using `../feature/reference/build-history.md`.
59
+ Normalize the stable ID, retaining its letter, and read attempts from verified
60
+ spec metadata/history proof, never arbitrary title or filename suffixes.
61
+
62
+ For each candidate, require its unique introducing commit on the local default
63
+ and prove the archive blob and mode have not changed since that addition. Exclude
64
+ builds with a proven completed reachable rollback naming that exact archive and
65
+ introducing commit. The checked item must have exactly one unreversed build.
66
+ An explicit archive request stays bound to that exact path: reject it if already
67
+ reversed, rather than silently choosing another build. Ambiguous, orphan,
68
+ overwritten, multiply-added, or missing records stop with their exact paths and
69
+ missing proof. Do not select by newest commit, filename order, or rollback date.
70
+
71
+ Confirm the selected commit's diff is consistent with the requested feature.
72
+ If the target is a merge commit, stop before Step 2 and before
66
73
  writing or changing `devflow/context/{xxx-slug}/spec.md`. Do not record a
67
74
  target parent or choose a mainline. Publish `blocked` to
68
75
  `devflow/.state/run.json`, explain that DevFlow cannot safely infer which
@@ -129,6 +136,12 @@ Allocate sequential ID (`xxx-slug`) and create `devflow/context/{xxx-slug}/`. Wr
129
136
  - compatibility work that is allowed, if any
130
137
  - exact verification commands and observable removal criteria
131
138
 
139
+ Before freezing a new rollback spec, apply the archive-path and branch-availability
140
+ checks in `../feature/reference/build-history.md` to its planned branch and
141
+ `YYYY-MM-DD-<exact-target-archive-stem>.md` destination. Retain `--build-N` in the
142
+ target stem when present. A collision stops for an explicit decision; never
143
+ renumber the target or silently rename reviewed work. Existing completion recovery runs first.
144
+
132
145
  The first build step must apply the target commit's product diff in reverse using
133
146
  the guarded Type: Rollback behavior in `/implement`. Later steps may repair only
134
147
  the specific downstream compatibility issues named in the spec. Do not use a
@@ -5,20 +5,21 @@ Instructions for AI coding agents working in this project. This is the cross-too
5
5
  ## What this is
6
6
 
7
7
  This project uses **Nexus-DevFlow**, an agentic workflow layer supporting **The 3-Pillars Workspace Architecture & Pure Task-Isolated Living Spec Model**:
8
- 1. **🔮 Future (Backlog)**: `devflow/ideas.md`, `devflow/project-plan.md`, `devflow/build-plan.md` — Centralized Idea Inbox & Master Build Plan.
9
- 2. **⚡ Present (Active Context)**: `devflow/context/` — Global Shared Source of Truth (`project-overview.md`, `coding-standards.md`, `ai-interaction.md`, `glossary.md`) & Active Task Workspaces (`devflow/context/{xxx-slug}/`).
10
- 3. **📦 Past (History Archive)**: `devflow/history/` — Categorized delivery archives (`features/`, `fixes/`, `rollbacks/`, and `HISTORY.md`).
8
+ 1. **🔮 Future (Backlog)**: `devflow/ideas.md`, `devflow/project-plan.md`, `devflow/build-plan.md` (or Decade-Numbered `devflow/10-ideation/` & `devflow/30-planning/`).
9
+ 2. **⚡ Present (Active Context)**: `devflow/context/` (or Decade-Numbered `devflow/00-context/`) — Global Shared Source of Truth (`project-overview.md`, `coding-standards.md`, `ai-interaction.md`, `glossary.md`) & Active Task Workspaces (`devflow/context/{xxx-slug}/` or `devflow/40-tasks/{xxx-slug}/`).
10
+ 3. **📦 Past (History Archive)**: `devflow/history/` (or Decade-Numbered `devflow/50-history/`) — Categorized delivery archives (`features/`, `fixes/`, `rollbacks/`, and `HISTORY.md`).
11
11
 
12
- To start a new project, scaffold the application first in an empty folder, then run `npx nexus-devflow` (or `npm create @jakkrichm/nexus-devflow`) to overlay DevFlow onto your codebase.
12
+ To start a new project, scaffold the application first in an empty folder, then run `npx nexus-devflow` (or `npm create @jakkrichm/nexus-devflow`) to overlay DevFlow onto your codebase. To migrate an existing workspace to the Decade-Numbered Stages structure (`00-context`, `10-ideation`, `20-discovery`, `30-planning`, `40-tasks`, `50-history`, `60-docs`), run `npx nexus-devflow migrate-structure`.
13
13
 
14
14
  ## Read these for full context
15
15
 
16
16
  - `devflow/config.json` - deterministic project workflow settings
17
- - `devflow/context/project-overview.md` - the project's source of truth
18
- - `devflow/context/coding-standards.md` - engineering conventions & rules to follow
19
- - `devflow/context/ai-interaction.md` - how to interact with the user on this project
20
- - `devflow/context/glossary.md` - domain terms & architecture definitions
21
- - `devflow/context/{xxx-slug}/` - active task living spec, stage, findings ledger, and independent review receipt
17
+ - `devflow/00-context/` (or `devflow/context/`) `project-overview.md` - the project's source of truth
18
+ - `devflow/00-context/` (or `devflow/context/`) `coding-standards.md` - engineering conventions & rules to follow
19
+ - `devflow/00-context/` (or `devflow/context/`) `ai-interaction.md` - how to interact with the user on this project
20
+ - `devflow/00-context/` (or `devflow/context/`) `glossary.md` - domain terms & architecture definitions
21
+ - `devflow/40-tasks/{xxx-slug}/` (or `devflow/context/{xxx-slug}/`) - active task living spec, stage, findings ledger, and independent review receipt
22
+
22
23
 
23
24
  ## Project configuration
24
25
 
@@ -42,7 +43,7 @@ Unused adapter families can be removed. Codex, Antigravity, GitHub Copilot, and
42
43
 
43
44
  ### Universal Invocation & Agent Directives:
44
45
 
45
- 1. **Canonical Command Names & AI Provider Invocation**: Each workflow stage and companion tool has exactly **one Canonical Name** (e.g. `feature`, `fix`, `implement`, `check`, `complete`, `continuous`, `analyze`, `discovery`, `idea`, `grill`, `brainstorm`, `bughunter`, `devflow`, `doctor`, `overview`, `debug`, `onboard`, `adopt`, `try`, `rollback`, `ci`, `test`, `setup-tests`, `browser-tests`, `autopilot`, `prototype`, `report-html`, `brief`, `audit`, `release`, `convert-any-to-md`, `publish-devflow`, `matt-pocock`). The way you invoke commands depends on your AI Provider / Tool:
46
+ 1. **Canonical Command Names & AI Provider Invocation**: Each workflow stage and companion tool has exactly **one Canonical Name** (e.g. `feature`, `fix`, `implement`, `check`, `complete`, `continuous`, `analyze`, `discovery`, `idea`, `grill`, `brainstorm`, `bughunter`, `devflow`, `doctor`, `overview`, `debug`, `onboard`, `adopt`, `try`, `rollback`, `ci`, `test`, `setup-tests`, `browser-tests`, `autopilot`, `prototype`, `report-html`, `brief`, `audit`, `release`, `convert-any-to-md`, `publish-devflow`, `vendor`). The way you invoke commands depends on your AI Provider / Tool:
46
47
  - **Canonical Name (Plain text)**: Directly invoke or prompt the command by its standard name (e.g., `feature`, `implement`, `continuous`, `devflow`, `discovery`, `analyze`).
47
48
  - **Slash Prefix (`/`)**: For tools supporting slash commands (Claude Code, Google Antigravity, Gemini CLI), e.g., `/feature`, `/fix`, `/implement`, `/continuous`, `/devflow`, `/discovery`, `/analyze`.
48
49
  - **Dollar Prefix (`$`)**: For OpenAI Codex CLI or skill-invocation tools, e.g., `$feature`, `$fix`, `$continuous`, `$devflow`, `$discovery`, `$analyze`.
@@ -148,7 +148,7 @@ Progress lives in persistent files, not in transient chat history:
148
148
 
149
149
  - **Branch Naming**: `feature/{xxx-slug}` or `fix/{xxx-slug}`.
150
150
  - **Commit Messages**: Conventional imperative format (e.g. `feat(uninstall): add clean eject CLI command`, `fix(parser): handle undefined metadata field`).
151
- - **No AI Attribution in Commits**: Never include "Generated with AI" or agent metadata in Git commit logs.
151
+ - **No AI Attribution in Commits**: Never include "Generated with AI", AI `Co-Authored-By` trailers, or agent metadata in Git commit logs or PR descriptions; preserve genuine human attribution. Claude Code supports `"attribution": { "commit": "", "pr": "" }` in `.claude/settings.json` to suppress default signatures.
152
152
  - **Explicit Approval for Push & Deploy**: Merge approval is strictly separate from consent to `git push` to remote repositories or deploy to production.
153
153
 
154
154
  ---
@@ -276,3 +276,27 @@
276
276
  - [x] **35. Superpowers Debugging Heuristics & TDD Reference Guides (`DISC-20260909-003`, `085-superpowers-debugging-heuristics-integration`)** `[Size: S]`
277
277
  - *Dependencies*: Feature 31 (`081`), Feature 32 (`082`)
278
278
  - *Scope*: เพิ่ม JIT reference guides สำหรับ root-cause tracing, defense-in-depth, condition-based waiting, TDD anti-patterns และ two-stage review พร้อม 3-Strike Rule และ Iron Law; ซิงก์ `.agents/` กับ `.claude/` และตรวจ file contracts
279
+
280
+ ---
281
+
282
+ ## Phase 36: Upstream AI Blueprint v1.6.1 Synchronization
283
+
284
+ - [x] **36. Sync Upstream v1.6.1 (Installer Symlink Rejection, Completion Recovery Engine, Rebuild History Preservation, Local-Only Spec Review & Status Evidence Alignment) (`DISC-20260911-001`, `086-sync-upstream-ai-blueprint-v161`)** `[Size: M]`
285
+ - *Dependencies*: Feature 28 (`073`), DISC-20260911-001
286
+ - *Scope*: นำเข้า 5 เสาหลักความปลอดภัยและความแม่นยำจาก AI Blueprint v1.6.1: (1) ปฏิเสธ Symlink paths และตรวจ type compatibility ในตัวติดตั้ง `create-nexus-devflow`, (2) สร้างสัญญา `completion-recovery.md` พร้อม JSON comment annotation `<!-- devflow:completion ... -->` กู้คืนการส่งมอบงานที่สะดุด, (3) สร้างสัญญา `build-history.md` รองรับการตั้งชื่อ `--build-N` เมื่อ Rebuild ฟีเจอร์ที่เคยถูก Rollback, (4) ขยาย `lib/review.ts` ให้รองรับ `specSnapshot` สำหรับ Local-only spec review, (5) บูรณาการ `classifyWorkEvidence` ใน `project-status-engine.ts` และ `dashboard.ts` ป้องกัน False Ready State เมื่อ verification failed หรือพบ malformed records, (6) ซิงก์สคิลและเอกสารทั้ง `.agents/` และ `.claude/` พร้อม automated tests ผ่าน 100%
287
+
288
+ ## 🔌 Phase 37: AI-Orchestrated Project-Local Vendor Skill Ingestion (`/vendor`)
289
+
290
+ - [x] **37. AI-Orchestrated Project-Local Vendor Skill Ingestion (`DISC-20260911-002`, `087-ai-orchestrated-vendor-skill-ingestion`)** `[Size: M]`
291
+ - *Dependencies*: Feature 33 (`083`), Feature 34 (`084`), DISC-20260911-002
292
+ - *Scope*: พัฒนาคำสั่ง `/vendor` (พร้อม aliases: `skill-add`, `equip`, `ingest`) สำหรับนำเข้า Git repository ลงในระดับโปรเจกต์ `devflow/.vendor/<slug>/`, ให้ AI Agent สำรวจโค้ดและสังเคราะห์ Custom Wrapper Skill ใน `.agents/skills/<slug>/SKILL.md` และ `.claude/skills/<slug>/SKILL.md`, พัฒนากลไก Update Protection ใน `update.ts` เพื่อป้องกันไม่ให้คำสั่งอัปเดต DevFlow ลบ custom skills เหล่านี้, บันทึก metadata ลง `.nexus/nexus-devflow.json`, ปรับปรุง CLI `nexus-devflow skill update all` ให้รองรับการ pull upstream ใน `.vendor/` โดยคงรักษา custom wrapper ที่ AI เขียนไว้, พร้อมเขียน Automated Unit Tests ครอบคลุม 100%
293
+
294
+ ---
295
+
296
+ ## 📂 Phase 38: Decade-Numbered Folder Architecture & Multi-Version Migration Engine
297
+
298
+ - [x] **38. Decade-Numbered Folder Architecture, Legacy Path Resolver & Structure Migration Engine (`REQ-20260911-001`, `088-decade-numbered-folder-architecture`)** `[Size: M]`
299
+ - *Dependencies*: None
300
+ - *Scope*: ปรับสถาปัตยกรรมโฟลเดอร์ของ DevFlow ให้จัดเรียงตาม Decade-Numbered Stages (`00-context`, `10-ideation`, `20-discovery`, `30-planning`, `40-tasks`, `50-history`, `60-docs`), สร้าง Dynamic Path Resolver Engine รองรับ Client เวอร์ชันเก่าแบบ Zero-Breaking Change, พัฒนา CLI Subcommand `nexus-devflow migrate-structure` ทำการย้ายโฟลเดอร์และอัปเดต Manifest/Config อัตโนมัติ, ลบโฟลเดอร์ Legacy `devflow/runs/`, อัปเดตคู่มือ `AGENTS.md`, `CLAUDE.md`, `README.md`, Playbooks และเขียน Automated Tests ครอบคลุม
301
+
302
+
File without changes
@@ -0,0 +1,11 @@
1
+ # ⚡ 40-tasks: Active Living Spec Workspaces
2
+
3
+ This directory contains active, isolated task workspaces (`{xxx-slug}/`) during development.
4
+
5
+ Each active task folder contains:
6
+ - `spec.md` - Task-isolated living specification and implementation checklist
7
+ - `stage.md` - Lifecycle stage tracker (`defined`, `in-progress`, `checked`, `verified`)
8
+ - `findings.md` - Dedicated findings ledger for audit and verification proof
9
+ - `review.md` - Optional independent review request and receipt
10
+
11
+ When a task is completed via `/complete`, its spec is archived to `devflow/50-history/features/` (or `fixes/`, `rollbacks/`) and the active folder in `40-tasks/` is cleanly removed.