nccgs 1.3.0 → 2.0.0-rc.2

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 (180) hide show
  1. package/.claude/agents/nccgs-adversarial-reviewer.md +17 -6
  2. package/.claude/agents/nccgs-engine-programmer.md +2 -2
  3. package/.claude/agents/nccgs-fast-implementer.md +30 -0
  4. package/.claude/agents/nccgs-game-designer.md +26 -0
  5. package/.claude/agents/nccgs-gameplay-programmer.md +3 -4
  6. package/.claude/agents/nccgs-qa-engineer.md +2 -2
  7. package/.claude/agents/nccgs-task-scout.md +24 -0
  8. package/.claude/agents/nccgs-ui-programmer.md +2 -2
  9. package/.claude/agents/nccgs-unity-build-specialist.md +2 -2
  10. package/.claude/agents/nccgs-unity-implementer.md +7 -6
  11. package/.claude/agents/nccgs-unity-systems-specialist.md +2 -2
  12. package/.claude/agents/nccgs-unity-ui-specialist.md +2 -2
  13. package/.claude/agents/nccgs-verification-engineer.md +2 -2
  14. package/.claude/nccgs/MEMORY.md +59 -0
  15. package/.claude/nccgs/THIRD_PARTY_NOTICES.md +16 -0
  16. package/.claude/nccgs/VERSION +1 -1
  17. package/.claude/nccgs/agent-library/nccgs-adversarial-reviewer.md +16 -5
  18. package/.claude/nccgs/agent-library/nccgs-fast-implementer.md +28 -0
  19. package/.claude/nccgs/agent-library/nccgs-game-designer.md +1 -2
  20. package/.claude/nccgs/agent-library/nccgs-gameplay-programmer.md +1 -2
  21. package/.claude/nccgs/agent-library/nccgs-task-scout.md +22 -0
  22. package/.claude/nccgs/agent-library/nccgs-unity-implementer.md +5 -4
  23. package/.claude/nccgs/constitution.md +44 -12
  24. package/.claude/nccgs/hooks/agent-audit.mjs +2 -2
  25. package/.claude/nccgs/hooks/closure-guard.mjs +31 -8
  26. package/.claude/nccgs/hooks/common.mjs +2 -1
  27. package/.claude/nccgs/hooks/runtime-observation.mjs +2 -2
  28. package/.claude/nccgs/hooks/session-start.mjs +11 -4
  29. package/.claude/nccgs/packages/ponytail/LICENSE +21 -0
  30. package/.claude/nccgs/packages/ponytail/NOTICE.md +32 -0
  31. package/.claude/nccgs/packages/ponytail/README.md +46 -0
  32. package/.claude/nccgs/packages/ponytail/complexity-review.md +47 -0
  33. package/.claude/nccgs/packages/ponytail/engineering.md +68 -0
  34. package/.claude/nccgs/packages/ponytail/manifest.json +24 -0
  35. package/.claude/nccgs/pipeline.json +92 -8
  36. package/.claude/nccgs/protocols/agent-contract.md +50 -1
  37. package/.claude/nccgs/protocols/astra-claude.md +46 -12
  38. package/.claude/nccgs/protocols/bounded-repair.md +118 -0
  39. package/.claude/nccgs/protocols/context-packets.md +5 -0
  40. package/.claude/nccgs/protocols/delivery-acceptance.md +105 -0
  41. package/.claude/nccgs/protocols/design-lifecycle.md +139 -0
  42. package/.claude/nccgs/protocols/evidence.md +11 -1
  43. package/.claude/nccgs/protocols/model-routing.md +44 -42
  44. package/.claude/nccgs/protocols/orchestration.md +46 -5
  45. package/.claude/nccgs/protocols/review-handoff.md +65 -0
  46. package/.claude/nccgs/protocols/standalone-gates.md +273 -0
  47. package/.claude/nccgs/protocols/standalone-pilot.md +144 -0
  48. package/.claude/nccgs/protocols/standalone.md +187 -0
  49. package/.claude/nccgs/protocols/task-autonomy.md +55 -0
  50. package/.claude/nccgs/protocols/task-gates.md +73 -7
  51. package/.claude/nccgs/routing.generated.md +25 -7
  52. package/.claude/nccgs/settings.fragment.json +153 -141
  53. package/.claude/nccgs/studio.json +135 -101
  54. package/.claude/nccgs/tools/autonomy.mjs +27 -0
  55. package/.claude/nccgs/tools/command-process.mjs +44 -0
  56. package/.claude/nccgs/tools/compile-policy.mjs +34 -4
  57. package/.claude/nccgs/tools/configure-models.mjs +13 -5
  58. package/.claude/nccgs/tools/criteria.mjs +121 -0
  59. package/.claude/nccgs/tools/delivery-budget.mjs +52 -0
  60. package/.claude/nccgs/tools/design-readiness.mjs +158 -0
  61. package/.claude/nccgs/tools/evidence.mjs +153 -0
  62. package/.claude/nccgs/tools/gates.mjs +151 -24
  63. package/.claude/nccgs/tools/inputs.mjs +73 -0
  64. package/.claude/nccgs/tools/lifecycle.mjs +521 -0
  65. package/.claude/nccgs/tools/native-completion.mjs +21 -0
  66. package/.claude/nccgs/tools/orchestration.mjs +430 -0
  67. package/.claude/nccgs/tools/paths.mjs +60 -0
  68. package/.claude/nccgs/tools/policy.mjs +58 -13
  69. package/.claude/nccgs/tools/process-lock.mjs +74 -0
  70. package/.claude/nccgs/tools/repair-packet.mjs +87 -0
  71. package/.claude/nccgs/tools/review-handoff.mjs +32 -0
  72. package/.claude/nccgs/tools/runtime.mjs +33 -7
  73. package/.claude/nccgs/tools/task.mjs +62 -31
  74. package/.claude/nccgs/tools/tool-guard.mjs +117 -0
  75. package/.claude/nccgs/tools/verification-jobs.mjs +161 -0
  76. package/.claude/nccgs/tools/verification-worker.mjs +71 -0
  77. package/.claude/nccgs/tools/windows-job.cs +96 -0
  78. package/.claude/nccgs/workflow-catalog.json +286 -26
  79. package/.claude/skills/accessibility-review/SKILL.md +12 -5
  80. package/.claude/skills/architecture-decision/SKILL.md +12 -5
  81. package/.claude/skills/asset-audit/SKILL.md +12 -5
  82. package/.claude/skills/audit/SKILL.md +12 -5
  83. package/.claude/skills/balance-review/SKILL.md +12 -5
  84. package/.claude/skills/bug-triage/SKILL.md +12 -5
  85. package/.claude/skills/bug-triage/references/astra.md +12 -5
  86. package/.claude/skills/closure/SKILL.md +12 -5
  87. package/.claude/skills/compatibility-review/SKILL.md +12 -5
  88. package/.claude/skills/context-pack/SKILL.md +12 -5
  89. package/.claude/skills/dependency-review/SKILL.md +12 -5
  90. package/.claude/skills/design/SKILL.md +14 -5
  91. package/.claude/skills/design-review/SKILL.md +14 -5
  92. package/.claude/skills/evidence-review/SKILL.md +12 -5
  93. package/.claude/skills/hotfix/SKILL.md +12 -5
  94. package/.claude/skills/hotfix/references/astra.md +12 -5
  95. package/.claude/skills/incident-recovery/SKILL.md +12 -5
  96. package/.claude/skills/incident-recovery/references/astra.md +12 -5
  97. package/.claude/skills/localize-game/SKILL.md +12 -5
  98. package/.claude/skills/localize-game/references/astra.md +12 -5
  99. package/.claude/skills/migrate-project/SKILL.md +12 -5
  100. package/.claude/skills/migrate-project/references/astra.md +12 -5
  101. package/.claude/skills/migrate-project/references/procedure.md +2 -1
  102. package/.claude/skills/milestone-review/SKILL.md +12 -5
  103. package/.claude/skills/nccgs-code-review/SKILL.md +12 -5
  104. package/.claude/skills/nccgs-code-review/references/astra.md +8 -2
  105. package/.claude/skills/performance-audit/SKILL.md +12 -5
  106. package/.claude/skills/plan-feature/SKILL.md +12 -5
  107. package/.claude/skills/playtest/SKILL.md +12 -5
  108. package/.claude/skills/playtest/references/astra.md +16 -5
  109. package/.claude/skills/project-stage/SKILL.md +12 -5
  110. package/.claude/skills/prototype-feature/SKILL.md +12 -5
  111. package/.claude/skills/prototype-feature/references/astra.md +16 -5
  112. package/.claude/skills/qa-plan/SKILL.md +12 -5
  113. package/.claude/skills/release/SKILL.md +12 -5
  114. package/.claude/skills/release/references/astra.md +12 -5
  115. package/.claude/skills/release-readiness/SKILL.md +12 -5
  116. package/.claude/skills/retrospective/SKILL.md +12 -5
  117. package/.claude/skills/review/SKILL.md +12 -5
  118. package/.claude/skills/review/references/astra.md +8 -2
  119. package/.claude/skills/security-audit/SKILL.md +12 -5
  120. package/.claude/skills/sprint-plan/SKILL.md +12 -5
  121. package/.claude/skills/status/SKILL.md +12 -5
  122. package/.claude/skills/status/references/astra.md +6 -0
  123. package/.claude/skills/story-readiness/SKILL.md +14 -5
  124. package/.claude/skills/test/SKILL.md +12 -5
  125. package/.claude/skills/test/references/astra.md +12 -5
  126. package/.claude/skills/ui-review/SKILL.md +12 -5
  127. package/.claude/skills/work/SKILL.md +12 -5
  128. package/.claude/skills/work/references/astra.md +17 -5
  129. package/CHANGELOG.md +42 -0
  130. package/CLAUDE.md +2 -0
  131. package/MEMORY.md +55 -0
  132. package/README.md +132 -180
  133. package/THIRD_PARTY_NOTICES.md +15 -0
  134. package/UPGRADING.md +91 -69
  135. package/VERSION +1 -1
  136. package/docs/ARCHITECTURE.md +19 -5
  137. package/docs/BOUNDED-REPAIR.md +11 -0
  138. package/docs/HUONG-DAN-MIGRATE-VA-SU-DUNG.md +46 -34
  139. package/docs/NCCGS-1.3.md +10 -122
  140. package/docs/NCCGS-1.4.1.md +149 -0
  141. package/docs/NCCGS-1.4.md +184 -0
  142. package/docs/NCCGS-1.5-IMPLEMENTATION-PLAN.md +378 -0
  143. package/docs/NCCGS-1.5-PILOT.md +130 -0
  144. package/docs/NCCGS-1.5.md +237 -0
  145. package/docs/PHASE-1-OPERATIONS.md +137 -0
  146. package/docs/PHASE-2-OPERATIONS.md +183 -0
  147. package/docs/PROJECT-POLICY.md +21 -9
  148. package/docs/RELEASE-STATUS.md +42 -0
  149. package/docs/WORKFLOWS.md +42 -24
  150. package/package.json +7 -3
  151. package/scaffold/.nccgs/autonomy.json +4 -0
  152. package/scaffold/.nccgs/execution.json +10 -0
  153. package/scaffold/.nccgs/inputs.json +6 -0
  154. package/scaffold/.nccgs/project.yaml +4 -2
  155. package/scaffold/.nccgs/templates/agent-handoff.md +2 -0
  156. package/scaffold/.nccgs/templates/design-contract.json +34 -0
  157. package/scaffold/.nccgs/templates/feature-contract.md +21 -5
  158. package/scaffold/.nccgs/templates/implementation-report.md +4 -1
  159. package/scaffold/.nccgs/templates/repair-packet.json +14 -0
  160. package/scripts/benchmark-snapshot.mjs +205 -0
  161. package/scripts/benchmark-v15.mjs +173 -0
  162. package/scripts/cli.mjs +129 -2
  163. package/scripts/doctor.mjs +128 -22
  164. package/scripts/install.mjs +96 -34
  165. package/scripts/run.mjs +72 -0
  166. package/scripts/supervise.mjs +124 -0
  167. package/scripts/validate.mjs +45 -4
  168. package/tests/autonomy.test.mjs +113 -0
  169. package/tests/benchmark-v15.test.mjs +65 -0
  170. package/tests/design-readiness.test.mjs +200 -0
  171. package/tests/evidence.test.mjs +186 -0
  172. package/tests/framework.test.mjs +333 -16
  173. package/tests/gates.test.mjs +313 -4
  174. package/tests/lifecycle-v15.test.mjs +300 -0
  175. package/tests/orchestration-v15.test.mjs +545 -0
  176. package/tests/phase1.test.mjs +324 -0
  177. package/tests/phase2.test.mjs +250 -0
  178. package/tests/policy-v15.test.mjs +220 -0
  179. package/tests/ponytail-package.test.mjs +75 -0
  180. package/tests/runtime-v15.test.mjs +624 -0
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
- "defaultProfile": "astra-claude",
3
+ "defaultProfile": "claude-standalone",
4
4
  "modelProfiles": {
5
5
  "astra-claude": {
6
- "lightweight": "claude-opus-5-5",
6
+ "lightweight": "sonnet",
7
7
  "standard": "claude-opus-5-5",
8
8
  "deep": "claude-opus-5-5",
9
9
  "leadership": "claude-opus-5-5",
@@ -29,6 +29,13 @@
29
29
  "deep": null,
30
30
  "leadership": null,
31
31
  "review": null
32
+ },
33
+ "claude-standalone": {
34
+ "lightweight": "sonnet",
35
+ "standard": "opus",
36
+ "deep": "opus",
37
+ "leadership": "opus",
38
+ "review": "opus"
32
39
  }
33
40
  },
34
41
  "orchestration": {
@@ -38,373 +45,389 @@
38
45
  "independentVerification": true
39
46
  },
40
47
  "agents": [
48
+ {
49
+ "name": "nccgs-fast-implementer",
50
+ "department": "programming",
51
+ "modelClass": "lightweight",
52
+ "maxTurns": 12,
53
+ "defaultModel": "sonnet",
54
+ "defaultEffort": "medium"
55
+ },
56
+ {
57
+ "name": "nccgs-task-scout",
58
+ "department": "quality",
59
+ "modelClass": "lightweight",
60
+ "maxTurns": 10,
61
+ "defaultModel": "sonnet",
62
+ "defaultEffort": "medium"
63
+ },
41
64
  {
42
65
  "name": "nccgs-creative-director",
43
66
  "department": "leadership",
44
67
  "modelClass": "leadership",
45
- "defaultModel": "claude-opus-5-5",
68
+ "defaultModel": "opus",
46
69
  "maxTurns": 24,
47
- "defaultEffort": "xhigh"
70
+ "defaultEffort": "high"
48
71
  },
49
72
  {
50
73
  "name": "nccgs-technical-director",
51
74
  "department": "leadership",
52
75
  "modelClass": "leadership",
53
- "defaultModel": "claude-opus-5-5",
76
+ "defaultModel": "opus",
54
77
  "maxTurns": 24,
55
- "defaultEffort": "xhigh"
78
+ "defaultEffort": "high"
56
79
  },
57
80
  {
58
81
  "name": "nccgs-producer",
59
82
  "department": "leadership",
60
83
  "modelClass": "leadership",
61
- "defaultModel": "claude-opus-5-5",
84
+ "defaultModel": "opus",
62
85
  "maxTurns": 20,
63
- "defaultEffort": "xhigh"
86
+ "defaultEffort": "high"
64
87
  },
65
88
  {
66
89
  "name": "nccgs-game-design-lead",
67
90
  "department": "design",
68
91
  "modelClass": "standard",
69
- "defaultModel": "claude-opus-5-5",
92
+ "defaultModel": "opus",
70
93
  "maxTurns": 20,
71
- "defaultEffort": "xhigh"
94
+ "defaultEffort": "medium"
72
95
  },
73
96
  {
74
97
  "name": "nccgs-programming-lead",
75
98
  "department": "programming",
76
99
  "modelClass": "standard",
77
- "defaultModel": "claude-opus-5-5",
100
+ "defaultModel": "opus",
78
101
  "maxTurns": 20,
79
- "defaultEffort": "xhigh"
102
+ "defaultEffort": "medium"
80
103
  },
81
104
  {
82
105
  "name": "nccgs-art-direction-lead",
83
106
  "department": "content",
84
107
  "modelClass": "standard",
85
- "defaultModel": "claude-opus-5-5",
108
+ "defaultModel": "opus",
86
109
  "maxTurns": 18,
87
- "defaultEffort": "xhigh"
110
+ "defaultEffort": "medium"
88
111
  },
89
112
  {
90
113
  "name": "nccgs-audio-direction-lead",
91
114
  "department": "content",
92
115
  "modelClass": "standard",
93
- "defaultModel": "claude-opus-5-5",
116
+ "defaultModel": "opus",
94
117
  "maxTurns": 18,
95
- "defaultEffort": "xhigh"
118
+ "defaultEffort": "medium"
96
119
  },
97
120
  {
98
121
  "name": "nccgs-narrative-lead",
99
122
  "department": "content",
100
123
  "modelClass": "standard",
101
- "defaultModel": "claude-opus-5-5",
124
+ "defaultModel": "opus",
102
125
  "maxTurns": 20,
103
- "defaultEffort": "xhigh"
126
+ "defaultEffort": "medium"
104
127
  },
105
128
  {
106
129
  "name": "nccgs-qa-lead",
107
130
  "department": "quality",
108
131
  "modelClass": "standard",
109
- "defaultModel": "claude-opus-5-5",
132
+ "defaultModel": "opus",
110
133
  "maxTurns": 20,
111
- "defaultEffort": "xhigh"
134
+ "defaultEffort": "medium"
112
135
  },
113
136
  {
114
137
  "name": "nccgs-release-lead",
115
138
  "department": "release",
116
139
  "modelClass": "standard",
117
- "defaultModel": "claude-opus-5-5",
140
+ "defaultModel": "opus",
118
141
  "maxTurns": 20,
119
- "defaultEffort": "xhigh"
142
+ "defaultEffort": "medium"
120
143
  },
121
144
  {
122
145
  "name": "nccgs-localization-lead",
123
146
  "department": "content",
124
147
  "modelClass": "standard",
125
- "defaultModel": "claude-opus-5-5",
148
+ "defaultModel": "opus",
126
149
  "maxTurns": 18,
127
- "defaultEffort": "xhigh"
150
+ "defaultEffort": "medium"
128
151
  },
129
152
  {
130
153
  "name": "nccgs-game-designer",
131
154
  "department": "design",
132
155
  "modelClass": "standard",
133
- "defaultModel": "claude-opus-5-5",
134
- "maxTurns": 18,
135
- "defaultEffort": "xhigh"
156
+ "defaultModel": "opus",
157
+ "maxTurns": 48,
158
+ "defaultEffort": "medium"
136
159
  },
137
160
  {
138
161
  "name": "nccgs-systems-designer",
139
162
  "department": "design",
140
163
  "modelClass": "standard",
141
- "defaultModel": "claude-opus-5-5",
164
+ "defaultModel": "opus",
142
165
  "maxTurns": 18,
143
- "defaultEffort": "xhigh"
166
+ "defaultEffort": "medium"
144
167
  },
145
168
  {
146
169
  "name": "nccgs-level-designer",
147
170
  "department": "design",
148
171
  "modelClass": "standard",
149
- "defaultModel": "claude-opus-5-5",
172
+ "defaultModel": "opus",
150
173
  "maxTurns": 18,
151
- "defaultEffort": "xhigh"
174
+ "defaultEffort": "medium"
152
175
  },
153
176
  {
154
177
  "name": "nccgs-economy-designer",
155
178
  "department": "design",
156
179
  "modelClass": "standard",
157
- "defaultModel": "claude-opus-5-5",
180
+ "defaultModel": "opus",
158
181
  "maxTurns": 18,
159
- "defaultEffort": "xhigh"
182
+ "defaultEffort": "medium"
160
183
  },
161
184
  {
162
185
  "name": "nccgs-ux-designer",
163
186
  "department": "design",
164
187
  "modelClass": "standard",
165
- "defaultModel": "claude-opus-5-5",
188
+ "defaultModel": "opus",
166
189
  "maxTurns": 18,
167
- "defaultEffort": "xhigh"
190
+ "defaultEffort": "medium"
168
191
  },
169
192
  {
170
193
  "name": "nccgs-accessibility-specialist",
171
194
  "department": "design",
172
195
  "modelClass": "standard",
173
- "defaultModel": "claude-opus-5-5",
196
+ "defaultModel": "opus",
174
197
  "maxTurns": 18,
175
- "defaultEffort": "xhigh"
198
+ "defaultEffort": "medium"
176
199
  },
177
200
  {
178
201
  "name": "nccgs-prototyper",
179
202
  "department": "design",
180
203
  "modelClass": "standard",
181
- "defaultModel": "claude-opus-5-5",
204
+ "defaultModel": "opus",
182
205
  "maxTurns": 18,
183
- "defaultEffort": "xhigh"
206
+ "defaultEffort": "medium"
184
207
  },
185
208
  {
186
209
  "name": "nccgs-technical-architect",
187
210
  "department": "programming",
188
211
  "modelClass": "deep",
189
- "defaultModel": "claude-opus-5-5",
212
+ "defaultModel": "opus",
190
213
  "maxTurns": 22,
191
- "defaultEffort": "xhigh"
214
+ "defaultEffort": "high"
192
215
  },
193
216
  {
194
217
  "name": "nccgs-gameplay-programmer",
195
218
  "department": "programming",
196
219
  "modelClass": "standard",
197
- "defaultModel": "claude-opus-5-5",
198
- "maxTurns": 22,
199
- "defaultEffort": "xhigh"
220
+ "defaultModel": "opus",
221
+ "maxTurns": 120,
222
+ "defaultEffort": "medium"
200
223
  },
201
224
  {
202
225
  "name": "nccgs-engine-programmer",
203
226
  "department": "programming",
204
227
  "modelClass": "standard",
205
- "defaultModel": "claude-opus-5-5",
228
+ "defaultModel": "opus",
206
229
  "maxTurns": 22,
207
- "defaultEffort": "xhigh"
230
+ "defaultEffort": "medium"
208
231
  },
209
232
  {
210
233
  "name": "nccgs-ai-programmer",
211
234
  "department": "programming",
212
235
  "modelClass": "standard",
213
- "defaultModel": "claude-opus-5-5",
236
+ "defaultModel": "opus",
214
237
  "maxTurns": 22,
215
- "defaultEffort": "xhigh"
238
+ "defaultEffort": "medium"
216
239
  },
217
240
  {
218
241
  "name": "nccgs-network-programmer",
219
242
  "department": "programming",
220
243
  "modelClass": "standard",
221
- "defaultModel": "claude-opus-5-5",
244
+ "defaultModel": "opus",
222
245
  "maxTurns": 24,
223
- "defaultEffort": "xhigh"
246
+ "defaultEffort": "medium"
224
247
  },
225
248
  {
226
249
  "name": "nccgs-tools-programmer",
227
250
  "department": "programming",
228
251
  "modelClass": "standard",
229
- "defaultModel": "claude-opus-5-5",
252
+ "defaultModel": "opus",
230
253
  "maxTurns": 20,
231
- "defaultEffort": "xhigh"
254
+ "defaultEffort": "medium"
232
255
  },
233
256
  {
234
257
  "name": "nccgs-ui-programmer",
235
258
  "department": "programming",
236
259
  "modelClass": "standard",
237
- "defaultModel": "claude-opus-5-5",
260
+ "defaultModel": "opus",
238
261
  "maxTurns": 22,
239
- "defaultEffort": "xhigh"
262
+ "defaultEffort": "medium"
240
263
  },
241
264
  {
242
265
  "name": "nccgs-security-engineer",
243
266
  "department": "quality",
244
267
  "modelClass": "standard",
245
- "defaultModel": "claude-opus-5-5",
268
+ "defaultModel": "opus",
246
269
  "maxTurns": 20,
247
- "defaultEffort": "xhigh"
270
+ "defaultEffort": "medium"
248
271
  },
249
272
  {
250
273
  "name": "nccgs-performance-analyst",
251
274
  "department": "quality",
252
275
  "modelClass": "standard",
253
- "defaultModel": "claude-opus-5-5",
276
+ "defaultModel": "opus",
254
277
  "maxTurns": 20,
255
- "defaultEffort": "xhigh"
278
+ "defaultEffort": "medium"
256
279
  },
257
280
  {
258
281
  "name": "nccgs-technical-artist",
259
282
  "department": "content",
260
283
  "modelClass": "standard",
261
- "defaultModel": "claude-opus-5-5",
284
+ "defaultModel": "opus",
262
285
  "maxTurns": 20,
263
- "defaultEffort": "xhigh"
286
+ "defaultEffort": "medium"
264
287
  },
265
288
  {
266
289
  "name": "nccgs-sound-designer",
267
290
  "department": "content",
268
291
  "modelClass": "standard",
269
- "defaultModel": "claude-opus-5-5",
292
+ "defaultModel": "opus",
270
293
  "maxTurns": 18,
271
- "defaultEffort": "xhigh"
294
+ "defaultEffort": "medium"
272
295
  },
273
296
  {
274
297
  "name": "nccgs-writer",
275
298
  "department": "content",
276
299
  "modelClass": "standard",
277
- "defaultModel": "claude-opus-5-5",
300
+ "defaultModel": "opus",
278
301
  "maxTurns": 18,
279
- "defaultEffort": "xhigh"
302
+ "defaultEffort": "medium"
280
303
  },
281
304
  {
282
305
  "name": "nccgs-world-builder",
283
306
  "department": "content",
284
307
  "modelClass": "standard",
285
- "defaultModel": "claude-opus-5-5",
308
+ "defaultModel": "opus",
286
309
  "maxTurns": 18,
287
- "defaultEffort": "xhigh"
310
+ "defaultEffort": "medium"
288
311
  },
289
312
  {
290
313
  "name": "nccgs-analytics-engineer",
291
314
  "department": "quality",
292
315
  "modelClass": "standard",
293
- "defaultModel": "claude-opus-5-5",
316
+ "defaultModel": "opus",
294
317
  "maxTurns": 18,
295
- "defaultEffort": "xhigh"
318
+ "defaultEffort": "medium"
296
319
  },
297
320
  {
298
321
  "name": "nccgs-live-ops-designer",
299
322
  "department": "design",
300
323
  "modelClass": "standard",
301
- "defaultModel": "claude-opus-5-5",
324
+ "defaultModel": "opus",
302
325
  "maxTurns": 18,
303
- "defaultEffort": "xhigh"
326
+ "defaultEffort": "medium"
304
327
  },
305
328
  {
306
329
  "name": "nccgs-qa-engineer",
307
330
  "department": "quality",
308
331
  "modelClass": "standard",
309
- "defaultModel": "claude-opus-5-5",
332
+ "defaultModel": "opus",
310
333
  "maxTurns": 22,
311
- "defaultEffort": "xhigh"
334
+ "defaultEffort": "medium"
312
335
  },
313
336
  {
314
337
  "name": "nccgs-verification-engineer",
315
338
  "department": "quality",
316
339
  "modelClass": "standard",
317
- "defaultModel": "claude-opus-5-5",
340
+ "defaultModel": "opus",
318
341
  "maxTurns": 22,
319
- "defaultEffort": "xhigh"
342
+ "defaultEffort": "medium"
320
343
  },
321
344
  {
322
345
  "name": "nccgs-adversarial-reviewer",
323
346
  "department": "quality",
324
347
  "modelClass": "review",
325
- "defaultModel": "fable",
326
- "maxTurns": 20,
348
+ "defaultModel": "opus",
349
+ "maxTurns": 200,
327
350
  "defaultEffort": "high"
328
351
  },
329
352
  {
330
353
  "name": "nccgs-documentation-manager",
331
354
  "department": "quality",
332
355
  "modelClass": "lightweight",
333
- "defaultModel": "claude-opus-5-5",
356
+ "defaultModel": "sonnet",
334
357
  "maxTurns": 14,
335
- "defaultEffort": "xhigh"
358
+ "defaultEffort": "medium"
336
359
  },
337
360
  {
338
361
  "name": "nccgs-release-engineer",
339
362
  "department": "release",
340
363
  "modelClass": "standard",
341
- "defaultModel": "claude-opus-5-5",
364
+ "defaultModel": "opus",
342
365
  "maxTurns": 24,
343
- "defaultEffort": "xhigh"
366
+ "defaultEffort": "medium"
344
367
  },
345
368
  {
346
369
  "name": "nccgs-unity-implementer",
347
370
  "department": "unity",
348
- "modelClass": "standard",
349
- "defaultModel": "claude-opus-5-5",
350
- "maxTurns": 24,
351
- "defaultEffort": "xhigh"
371
+ "modelClass": "deep",
372
+ "defaultModel": "opus",
373
+ "maxTurns": 120,
374
+ "defaultEffort": "high"
352
375
  },
353
376
  {
354
377
  "name": "nccgs-unity-systems-specialist",
355
378
  "department": "unity",
356
379
  "modelClass": "standard",
357
- "defaultModel": "claude-opus-5-5",
380
+ "defaultModel": "opus",
358
381
  "maxTurns": 22,
359
- "defaultEffort": "xhigh"
382
+ "defaultEffort": "medium"
360
383
  },
361
384
  {
362
385
  "name": "nccgs-unity-ui-specialist",
363
386
  "department": "unity",
364
387
  "modelClass": "standard",
365
- "defaultModel": "claude-opus-5-5",
388
+ "defaultModel": "opus",
366
389
  "maxTurns": 22,
367
- "defaultEffort": "xhigh"
390
+ "defaultEffort": "medium"
368
391
  },
369
392
  {
370
393
  "name": "nccgs-unity-rendering-specialist",
371
394
  "department": "unity",
372
395
  "modelClass": "standard",
373
- "defaultModel": "claude-opus-5-5",
396
+ "defaultModel": "opus",
374
397
  "maxTurns": 22,
375
- "defaultEffort": "xhigh"
398
+ "defaultEffort": "medium"
376
399
  },
377
400
  {
378
401
  "name": "nccgs-unity-content-specialist",
379
402
  "department": "unity",
380
403
  "modelClass": "standard",
381
- "defaultModel": "claude-opus-5-5",
404
+ "defaultModel": "opus",
382
405
  "maxTurns": 22,
383
- "defaultEffort": "xhigh"
406
+ "defaultEffort": "medium"
384
407
  },
385
408
  {
386
409
  "name": "nccgs-unity-build-specialist",
387
410
  "department": "unity",
388
411
  "modelClass": "standard",
389
- "defaultModel": "claude-opus-5-5",
412
+ "defaultModel": "opus",
390
413
  "maxTurns": 24,
391
- "defaultEffort": "xhigh"
414
+ "defaultEffort": "medium"
392
415
  },
393
416
  {
394
417
  "name": "nccgs-production-coordinator",
395
418
  "department": "leadership",
396
419
  "modelClass": "standard",
397
- "defaultModel": "claude-opus-5-5",
420
+ "defaultModel": "opus",
398
421
  "maxTurns": 18,
399
- "defaultEffort": "xhigh"
422
+ "defaultEffort": "medium"
400
423
  }
401
424
  ],
402
425
  "effortProfiles": {
403
426
  "astra-claude": {
404
- "lightweight": "xhigh",
405
- "standard": "xhigh",
406
- "deep": "xhigh",
407
- "leadership": "xhigh",
427
+ "lightweight": "medium",
428
+ "standard": "medium",
429
+ "deep": "high",
430
+ "leadership": "high",
408
431
  "review": "high"
409
432
  },
410
433
  "quality": {
@@ -427,12 +450,23 @@
427
450
  "deep": null,
428
451
  "leadership": null,
429
452
  "review": null
453
+ },
454
+ "claude-standalone": {
455
+ "lightweight": "medium",
456
+ "standard": "medium",
457
+ "deep": "high",
458
+ "leadership": "high",
459
+ "review": "high"
430
460
  }
431
461
  },
432
462
  "sessionProfiles": {
433
463
  "astra-claude": {
434
464
  "model": "claude-opus-5-5",
435
- "effortLevel": "xhigh"
465
+ "effortLevel": "medium"
466
+ },
467
+ "claude-standalone": {
468
+ "model": "opus",
469
+ "effortLevel": "medium"
436
470
  }
437
471
  }
438
472
  }
@@ -0,0 +1,27 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { containedPath } from "./paths.mjs";
4
+
5
+ export function autonomyPolicy(project) {
6
+ const file = containedPath(project, ".nccgs/autonomy.json");
7
+ if (!fs.existsSync(file)) return { schemaVersion: 1, mode: "guarded" };
8
+ const value = JSON.parse(fs.readFileSync(file, "utf8"));
9
+ if (value?.schemaVersion !== 1 || !["full", "guarded"].includes(value.mode)) throw new Error("Invalid NCCGS autonomy policy");
10
+ return { schemaVersion: 1, mode: value.mode };
11
+ }
12
+
13
+ // Session markers are workflow context, not a sandbox against arbitrary code.
14
+ // Project configuration alone cannot activate Claude's native permission mode.
15
+ export function fullTaskAutonomy(project, env = process.env) {
16
+ if (env.NCCGS_TASK_AUTONOMY !== "full" || !env.NCCGS_PROJECT_ROOT) return false;
17
+ if (fs.realpathSync(project) !== fs.realpathSync(env.NCCGS_PROJECT_ROOT)) return false;
18
+ return autonomyPolicy(project).mode === "full";
19
+ }
20
+
21
+ export function hookProjectRoot(env = process.env) {
22
+ return path.resolve(env.NCCGS_PROJECT_ROOT || env.CLAUDE_PROJECT_DIR || process.cwd());
23
+ }
24
+
25
+ export function canonicalHookCommand(command = "") {
26
+ return command.replace('"${CLAUDE_PROJECT_DIR}/', "").replace(/\.mjs"/, ".mjs");
27
+ }
@@ -0,0 +1,44 @@
1
+ import path from "node:path";
2
+ import fs from "node:fs";
3
+ import os from "node:os";
4
+ import crypto from "node:crypto";
5
+ import { fileURLToPath } from "node:url";
6
+ import { spawn, spawnSync } from "node:child_process";
7
+ import { atomicJson } from "./policy.mjs";
8
+
9
+ const windowsSource = fileURLToPath(new URL("./windows-job.cs", import.meta.url));
10
+ function windowsHost() {
11
+ const digest = crypto.createHash("sha256").update(fs.readFileSync(windowsSource)).digest("hex");
12
+ // Build the bundled, inspectable helper; no system execution policy changes.
13
+ const directory = path.join(os.tmpdir(), "nccgs-native", digest);
14
+ fs.mkdirSync(directory, { recursive: true });
15
+ const binary = path.join(directory, "windows-job.exe");
16
+ if (fs.existsSync(binary)) return binary;
17
+ const compiler = path.join(process.env.SystemRoot || "C:/Windows", "Microsoft.NET/Framework64/v4.0.30319/csc.exe");
18
+ const temporary = path.join(directory, `${crypto.randomUUID()}.exe`);
19
+ const result = spawnSync(compiler, ["/nologo", "/target:exe", "/reference:System.Web.Extensions.dll", `/out:${temporary}`, windowsSource], { encoding: "utf8", windowsHide: true, timeout: 30000 });
20
+ if (result.status !== 0 || result.error) throw new Error(`Cannot compile Windows process-group helper: ${result.error?.message || result.stdout || result.stderr}`);
21
+ try { fs.renameSync(temporary, binary); }
22
+ catch (error) { if (!fs.existsSync(binary)) throw error; fs.unlinkSync(temporary); }
23
+ return binary;
24
+ }
25
+ export function startCommand({ executable, args, cwd, stateDirectory, id, stdio }) {
26
+ if (process.platform !== "win32") {
27
+ const child = spawn(executable, args, { cwd, detached: true, shell: false, windowsHide: true, stdio });
28
+ return { child, identity: () => ({ pid: child.pid, group: true }) };
29
+ }
30
+ const groupName = `Local\\NCCGS-${id}`;
31
+ const spec = path.join(stateDirectory, `${id}-command.json`);
32
+ atomicJson(spec, { executable, arguments: args, cwd, groupName });
33
+ const child = spawn(windowsHost(), ["run", spec],
34
+ { cwd, shell: false, windowsHide: true, stdio });
35
+ return { child, identity: () => ({ pid: child.pid, groupName, windowsJob: true }) };
36
+ }
37
+ export function windowsGroupState(groupName) {
38
+ if (typeof groupName !== "string" || !/^Local\\NCCGS-[a-f0-9-]{36}$/.test(groupName)) return "unknown";
39
+ let result;
40
+ try { result = spawnSync(windowsHost(), ["probe", groupName], { encoding: "utf8", windowsHide: true, timeout: 15000 }); }
41
+ catch { return "unknown"; }
42
+ if (result.status !== 0 || result.error || !/^\d+\s*$/.test(result.stdout)) return "unknown";
43
+ return Number(result.stdout) === 0 ? "dead" : "alive";
44
+ }