nccgs 2.0.0 → 2.1.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.
- package/.claude/agents/nccgs-adversarial-reviewer.md +1 -1
- package/.claude/agents/nccgs-engine-programmer.md +1 -1
- package/.claude/agents/nccgs-fast-implementer.md +1 -1
- package/.claude/agents/nccgs-game-designer.md +1 -1
- package/.claude/agents/nccgs-gameplay-programmer.md +1 -1
- package/.claude/agents/nccgs-qa-engineer.md +1 -1
- package/.claude/agents/nccgs-task-scout.md +1 -1
- package/.claude/agents/nccgs-ui-programmer.md +1 -1
- package/.claude/agents/nccgs-unity-build-specialist.md +1 -1
- package/.claude/agents/nccgs-unity-implementer.md +1 -1
- package/.claude/agents/nccgs-unity-systems-specialist.md +1 -1
- package/.claude/agents/nccgs-unity-ui-specialist.md +1 -1
- package/.claude/agents/nccgs-verification-engineer.md +1 -1
- package/.claude/nccgs/MEMORY.md +9 -3
- package/.claude/nccgs/VERSION +1 -1
- package/.claude/nccgs/constitution.md +187 -176
- package/.claude/nccgs/hooks/closure-guard.mjs +2 -0
- package/.claude/nccgs/hooks/unity-transport-guard.mjs +11 -0
- package/.claude/nccgs/pipeline.json +260 -260
- package/.claude/nccgs/protocols/context-packets.md +5 -0
- package/.claude/nccgs/protocols/model-routing.md +46 -46
- package/.claude/nccgs/protocols/review-handoff.md +21 -1
- package/.claude/nccgs/protocols/shared-workflow-context.md +33 -0
- package/.claude/nccgs/protocols/unity-boundary.md +20 -0
- package/.claude/nccgs/routing.generated.md +4 -4
- package/.claude/nccgs/settings.fragment.json +84 -24
- package/.claude/nccgs/studio.json +53 -53
- package/.claude/nccgs/tools/autonomy.mjs +13 -0
- package/.claude/nccgs/tools/command-tokens.mjs +22 -0
- package/.claude/nccgs/tools/compile-policy.mjs +4 -0
- package/.claude/nccgs/tools/configure-models.mjs +4 -0
- package/.claude/nccgs/tools/hook-transport.mjs +34 -0
- package/.claude/nccgs/tools/installation-guard.mjs +55 -0
- package/.claude/nccgs/tools/native-completion.mjs +10 -1
- package/.claude/nccgs/tools/returned-handoff.mjs +11 -2
- package/.claude/nccgs/tools/shared-context-guard.mjs +60 -0
- package/.claude/nccgs/tools/shared-context.mjs +25 -0
- package/.claude/nccgs/tools/tool-guard.mjs +120 -131
- package/.claude/nccgs/tools/unity-transport.mjs +170 -0
- package/.claude/nccgs/workflow-catalog.json +4 -4
- package/CHANGELOG.md +235 -165
- package/CLAUDE.md +10 -8
- package/MEMORY.md +109 -56
- package/README.md +206 -168
- package/UPGRADING.md +130 -112
- package/VERSION +1 -1
- package/docs/ARCHITECTURE.md +131 -131
- package/docs/ASSET-PRODUCTION-GRAPHIFY-PLAN.md +230 -0
- package/docs/HUONG-DAN-MIGRATE-VA-SU-DUNG.md +117 -87
- package/docs/NCCGS-1.5.md +237 -237
- package/docs/PROJECT-POLICY.md +94 -94
- package/docs/RELEASE-STATUS.md +32 -7
- package/docs/UNINSTALL.md +134 -0
- package/docs/WFK17-HOOK-REPAIR.md +71 -0
- package/docs/WORKFLOWS.md +85 -85
- package/package.json +1 -1
- package/scaffold/.nccgs/project.yaml +109 -108
- package/scripts/benchmark-v15.mjs +173 -173
- package/scripts/cli.mjs +11 -2
- package/scripts/doctor.mjs +261 -261
- package/scripts/install.mjs +530 -515
- package/scripts/recover-session.mjs +89 -0
- package/scripts/run.mjs +22 -9
- package/scripts/supervise.mjs +4 -0
- package/scripts/uninstall.mjs +292 -0
- package/scripts/validate.mjs +285 -278
- package/tests/autonomy.test.mjs +126 -113
- package/tests/design-readiness.test.mjs +199 -199
- package/tests/fixtures/compiler-shutdown.cs +67 -64
- package/tests/fixtures/native-provider.mjs +61 -0
- package/tests/framework.test.mjs +740 -740
- package/tests/hook-repair.test.mjs +106 -0
- package/tests/lifecycle-v15.test.mjs +346 -300
- package/tests/native-completion-notices.test.mjs +181 -0
- package/tests/phase1.test.mjs +427 -416
- package/tests/phase2.test.mjs +250 -250
- package/tests/policy-v15.test.mjs +234 -234
- package/tests/returned-handoff-notices.test.mjs +170 -0
- package/tests/runtime-v15.test.mjs +1197 -1191
- package/tests/task-slices.test.mjs +285 -285
- package/tests/uninstall.test.mjs +477 -0
- package/tests/unity-transport.test.mjs +348 -0
package/docs/NCCGS-1.5.md
CHANGED
|
@@ -1,237 +1,237 @@
|
|
|
1
|
-
> Historical development/reference document. Version, status, commands and plans
|
|
2
|
-
> below describe their original scope, not the current package defaults. Read
|
|
3
|
-
> [current release guidance](RELEASE-STATUS.md) before use. Research/benchmark proposals
|
|
4
|
-
> do not automatically add requirements to a delivery contract.
|
|
5
|
-
|
|
6
|
-
# NCCGS 1.5 preview — implementation and operation
|
|
7
|
-
|
|
8
|
-
Version: **1.5.0-preview.1**. Target executor: **Claude Code**.
|
|
9
|
-
This is framework functionality with synthetic regression tests, pending real-runtime
|
|
10
|
-
pilot validation. Read [MEMORY.md](../MEMORY.md) before interpreting evaluation results.
|
|
11
|
-
|
|
12
|
-
The 2026-10-03 phase-1 maintenance patch adds managed verification jobs and optional
|
|
13
|
-
supervised headless runs. [Phase-1 operations](PHASE-1-OPERATIONS.md) supersedes the
|
|
14
|
-
older manual-lock and verification-operation details below. Its scoped native
|
|
15
|
-
lifecycle smoke passed; historical game evaluation results stay frozen.
|
|
16
|
-
|
|
17
|
-
[Phase-2 operations](PHASE-2-OPERATIONS.md) supersedes the check-only acceptance
|
|
18
|
-
examples and 4/12/24 dispatch defaults below: automatic criteria need measured
|
|
19
|
-
assertions, new FAST implementation tasks have a ceiling of 6, and new ledgers
|
|
20
|
-
protect repair/QA/review capacity. A real Claude coordinator smoke confirmed that
|
|
21
|
-
failed synthetic criteria block a success report. This does not validate game balance.
|
|
22
|
-
|
|
23
|
-
## Policies and migration
|
|
24
|
-
|
|
25
|
-
New installs use `.nccgs/execution.json`:
|
|
26
|
-
|
|
27
|
-
```json
|
|
28
|
-
{
|
|
29
|
-
"schemaVersion": 1,
|
|
30
|
-
"name": "standalone",
|
|
31
|
-
"externalReview": { "mode": "off" },
|
|
32
|
-
"acceptanceRequired": false,
|
|
33
|
-
"requireObservedEffort": false,
|
|
34
|
-
"maxParallelWorkers": 2
|
|
35
|
-
}
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Model profile lives separately in `.nccgs/project.yaml`; the default is
|
|
39
|
-
`claude-standalone`. Its Sonnet/Opus aliases are requests, never resolved observations.
|
|
40
|
-
Missing execution.json resolves to compatibility. Changing a model profile alone
|
|
41
|
-
does not remove an external, acceptance or historical task obligation.
|
|
42
|
-
|
|
43
|
-
Use `nccgs migrate-execution --to standalone --dry-run` after a framework update;
|
|
44
|
-
remove `--dry-run` to apply. Add `--model-profile claude-standalone` to explicitly
|
|
45
|
-
change models too. Configuration archives live under `.nccgs/backups/execution/ID`.
|
|
46
|
-
`--rollback ID --dry-run` checks restoration; rollback refuses changed configuration
|
|
47
|
-
or corrupted backup hashes. Tasks/evidence/budgets are preserved. See
|
|
48
|
-
[UPGRADING.md](../UPGRADING.md) for failure recovery and legacy task handling.
|
|
49
|
-
|
|
50
|
-
## Intake, classification and modes
|
|
51
|
-
|
|
52
|
-
Example `.nccgs/evidence/intake/hud-fix.json`:
|
|
53
|
-
|
|
54
|
-
```json
|
|
55
|
-
{
|
|
56
|
-
"schemaVersion": 1,
|
|
57
|
-
"objective": "Correct the pause-button offset at the declared reference resolution",
|
|
58
|
-
"mode": "implement",
|
|
59
|
-
"scope": "local",
|
|
60
|
-
"systems": ["HUD"],
|
|
61
|
-
"target": "fix",
|
|
62
|
-
"readiness": "ready",
|
|
63
|
-
"acceptance": [{ "id": "HUD-01", "description": "Offset matches the reference", "check": "layout-reference" }],
|
|
64
|
-
"requiredChecks": ["layout-reference"],
|
|
65
|
-
"requiredArtifacts": [],
|
|
66
|
-
"manualGates": [],
|
|
67
|
-
"assumptions": ["Gameplay and input behavior remain unchanged"],
|
|
68
|
-
"reassessWhen": ["The layout defect crosses multiple UI systems"]
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
This is a template, not evidence that the check ran. For `audit` or `plan`, declare
|
|
73
|
-
`analysisArtifacts` such as `.nccgs/evidence/analysis/TASK-result.md`; source edits
|
|
74
|
-
are prohibited. Include real `sources` paths to hash authoritative documents.
|
|
75
|
-
Criteria with `check` add required objective checks; `{id,description,manual:true}`
|
|
76
|
-
adds a manual acceptance gate. Project-level gate manifests remain mandatory.
|
|
77
|
-
|
|
78
|
-
```text
|
|
79
|
-
node .claude/nccgs/tools/task.mjs init --id hud-fix --intake .nccgs/evidence/intake/hud-fix.json
|
|
80
|
-
node .claude/nccgs/tools/task.mjs bind --id hud-fix --session ACTUAL_SESSION_ID
|
|
81
|
-
node .claude/nccgs/tools/task.mjs inspect --id hud-fix
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
The classifier is deterministic and conservative, not a general semantic model.
|
|
85
|
-
Ready/local/fix can be FAST. Unknown or feature scope defaults to STANDARD.
|
|
86
|
-
Save/serialization, migration, network authority, commerce and cross-system signals
|
|
87
|
-
require CONTROLLED. The coordinator must inspect real risk and supply `riskSignals`,
|
|
88
|
-
reason and evidence; keyword absence is not proof of safety.
|
|
89
|
-
|
|
90
|
-
Explicit `reclassify --classification FILE` requires `reason` and `evidence`; optional
|
|
91
|
-
`risk`, `scope`, `target`, `readiness`, `systems` and `riskSignals` explain the change.
|
|
92
|
-
To change intake content, update the same file and use `refresh-inputs --reason TEXT`.
|
|
93
|
-
Reclassification invalidates affected stages while retaining old evidence and spent
|
|
94
|
-
review rounds. Source/input/policy changes never reuse old approval. Execution policy
|
|
95
|
-
changes cannot be adopted by input refresh: restore pinned policy for current work
|
|
96
|
-
or explicitly scope new work while retaining prior history and spent budgets. Audit/plan
|
|
97
|
-
baseline hashing still detects source edits after canonical inputs are refreshed.
|
|
98
|
-
|
|
99
|
-
## Dispatch, budget and evidence
|
|
100
|
-
|
|
101
|
-
Save a request under `.nccgs/evidence/requests/`:
|
|
102
|
-
|
|
103
|
-
```json
|
|
104
|
-
{
|
|
105
|
-
"requestKey": "hud-fix-implementation-1",
|
|
106
|
-
"kind": "implementation",
|
|
107
|
-
"agent": "nccgs-fast-implementer",
|
|
108
|
-
"writePaths": ["Assets/Game/UI/PauseButton.cs"],
|
|
109
|
-
"reason": "One ready local layout fix with a targeted reference check"
|
|
110
|
-
}
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
```text
|
|
114
|
-
node .claude/nccgs/tools/task.mjs reserve --id hud-fix --request .nccgs/evidence/requests/hud-fix.json
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Use the returned ID in the Agent prompt prefix `[NCCGS-DISPATCH:ID]`, select the
|
|
118
|
-
specified role and task route, and include contract, inputs, ownership and acceptance.
|
|
119
|
-
PreToolUse claims the slot with actual session/tool-use identity. SubagentStart binds
|
|
120
|
-
an unambiguous agent ID. Foreground PostToolUse completion captures final telemetry.
|
|
121
|
-
For this preview use foreground calls; background runs hold slots until correlated
|
|
122
|
-
final evidence or external reconciliation. SubagentStop alone cannot prove model,
|
|
123
|
-
effort or complete usage. Ambiguous same-role starts are not guessed.
|
|
124
|
-
|
|
125
|
-
Review requests use `kind: "review"`, `agent: "nccgs-adversarial-reviewer"`, and
|
|
126
|
-
empty writePaths. Analysis requests also have no source ownership. Dispatch ceilings
|
|
127
|
-
are 4/12/24 for FAST/STANDARD/CONTROLLED by default; first reservation may explicitly
|
|
128
|
-
set `limits.maxDispatches`, `maxDurationMs`, `maxCostUsd`. Limits are pinned, counted
|
|
129
|
-
across descendants, and cannot be raised by another reservation. Review limits are
|
|
130
|
-
2/3/3. Failed, cancelled and uncertain attempts remain spent. Extensions of review
|
|
131
|
-
rounds require a reasoned external operator decision and never grant approval.
|
|
132
|
-
|
|
133
|
-
At most two implementation workers can reserve disjoint paths; review/analysis
|
|
134
|
-
cannot overlap source writers. Direct edit tools enforce ownership. Opaque shell/MCP
|
|
135
|
-
operations are not OS-sandboxed by NCCGS; inspect their actual diff and test effects.
|
|
136
|
-
Audit/plan/review block arbitrary shells and unknown tools. Use read tools, declared
|
|
137
|
-
analysis artifacts and externally supplied command evidence when required.
|
|
138
|
-
|
|
139
|
-
`task verify --id TASK --name CHECK -- EXECUTABLE ARGS` records the actual command,
|
|
140
|
-
exit code, bounded timeout, log hash and before/after source snapshot. Claude may
|
|
141
|
-
run it only for implementation tasks. The verifier must not change source.
|
|
142
|
-
`task ref --file PATH` produces a `{path,sha256}` reference without inventing evidence.
|
|
143
|
-
|
|
144
|
-
Record a completed work stage with a JSON payload (placeholders below must be
|
|
145
|
-
replaced with returned values, never copied as observations):
|
|
146
|
-
|
|
147
|
-
```json
|
|
148
|
-
{
|
|
149
|
-
"snapshot": "ACTUAL_FINAL_SNAPSHOT",
|
|
150
|
-
"dispatchId": "ACTUAL_COMPLETED_DISPATCH_ID",
|
|
151
|
-
"runtime": { "path": ".nccgs/evidence/runtime/observations/ACTUAL.json", "sha256": "ACTUAL_HASH" },
|
|
152
|
-
"checks": [{ "name": "layout-reference", "status": "PASS", "evidence": { "path": ".nccgs/evidence/ACTUAL-check.json", "sha256": "ACTUAL_HASH" } }]
|
|
153
|
-
}
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
Use `record --id TASK --stage implementation --evidence FILE`. Audit/plan use stage
|
|
157
|
-
`analysis` and include `evidence` referencing the declared result artifact. Each
|
|
158
|
-
accepted work/review dispatch can be consumed once, including across history.
|
|
159
|
-
|
|
160
|
-
Review payload adds `verdict` (`PASS|CHANGES_REQUIRED|BLOCKED`), `criteriaMet`,
|
|
161
|
-
`findings`, and a review-artifact `evidence` ref to snapshot/dispatchId/runtime.
|
|
162
|
-
Findings include `severity` (`BLOCKER|HIGH|MEDIUM|LOW|INFO`), `status`
|
|
163
|
-
(`OPEN|RESOLVED|ACCEPTED`) and `description`. An unresolved BLOCKER/HIGH or unmet
|
|
164
|
-
required criterion prevents internal PASS. Review identity must differ from work.
|
|
165
|
-
|
|
166
|
-
## Reporting, external review and closure
|
|
167
|
-
|
|
168
|
-
```text
|
|
169
|
-
node .claude/nccgs/tools/task.mjs report --id TASK --outcome blocked --summary "Actual blocker and missing evidence"
|
|
170
|
-
node .claude/nccgs/tools/task.mjs check --id TASK --target done
|
|
171
|
-
node .claude/nccgs/tools/task.mjs close --id TASK
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
Reports accept `success|partial|blocked|failed` even when successful closure is
|
|
175
|
-
unavailable. Generated Markdown includes evidence status and unresolved gates.
|
|
176
|
-
`record --stage report` can supply `artifacts` refs for required closure outputs.
|
|
177
|
-
Success wording does not override failed checks. Only `close` with all current gates
|
|
178
|
-
passing establishes DONE. `inspect` remains usable with changed/malformed policy.
|
|
179
|
-
|
|
180
|
-
`export-external --out .nccgs/evidence/external/requests/UNIQUE.json` writes an
|
|
181
|
-
immutable task/contract/snapshot packet. An external actor reviews it and imports
|
|
182
|
-
a receipt through `import-external --file FILE` outside the Claude executor:
|
|
183
|
-
|
|
184
|
-
```json
|
|
185
|
-
{
|
|
186
|
-
"schemaVersion": 1,
|
|
187
|
-
"id": "REVIEW_ID",
|
|
188
|
-
"taskId": "TASK",
|
|
189
|
-
"contractHash": "EXPORTED_HASH",
|
|
190
|
-
"snapshot": "EXPORTED_SNAPSHOT",
|
|
191
|
-
"actor": "ACTUAL_EXTERNAL_REVIEWER",
|
|
192
|
-
"verdict": "PASS",
|
|
193
|
-
"findings": [],
|
|
194
|
-
"reviewedAt": "ACTUAL_ISO_TIMESTAMP",
|
|
195
|
-
"source": "ACTUAL_REVIEW_REFERENCE"
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
Off ignores external closure dependency. Advisory retains current findings without
|
|
200
|
-
blocking. Required evaluates all active current receipts; a later empty PASS cannot
|
|
201
|
-
erase earlier blocking findings. To replace a prior decision, include
|
|
202
|
-
`supersedes: ["PRIOR_RECEIPT_ID"]` and `supersessionReason` identifying the new
|
|
203
|
-
evidence. Old findings remain traceable. Stale/duplicate/malformed receipts fail.
|
|
204
|
-
|
|
205
|
-
If acceptance is required, an external Product Owner decision references taskId,
|
|
206
|
-
contractHash, snapshot, `actor: "Product Owner"`, `decision: "ACCEPTED"`, decidedAt,
|
|
207
|
-
statement, reference and each manual gate `{id,decision:"ACCEPTED",reference}`.
|
|
208
|
-
Import via `record --stage acceptance` with its evidence ref. Claude cannot accept
|
|
209
|
-
on the user's behalf. NCCGS neither launches Astra nor sends external messages.
|
|
210
|
-
|
|
211
|
-
## Recovery and telemetry
|
|
212
|
-
|
|
213
|
-
Use `checkpoint --reason TEXT`, `resume`, `dispatch-status` and `telemetry` with
|
|
214
|
-
`--id TASK`. Resume preserves reservations, findings, attempts and budgets. A lost
|
|
215
|
-
callback or dead worker does not refund a slot by timeout. An external operator can
|
|
216
|
-
use `dispatch-reconcile --dispatch ID --request FILE` with `status: failed|cancelled`,
|
|
217
|
-
reason and observed reference after confirming the process is no longer running.
|
|
218
|
-
Never manually reset the ledger. Missing initialized history or altered durable
|
|
219
|
-
evidence fails closed. A crashed lock requires operator inspection before recovery.
|
|
220
|
-
|
|
221
|
-
Telemetry reports known subtotals and coverage for duration, tool calls, tokens and
|
|
222
|
-
cost. Total is null if any started attempt lacks that metric. Observed zero remains
|
|
223
|
-
zero. These are worker measurements; coordinator work, human delay and billing are
|
|
224
|
-
not automatically covered. A configured spend/time ceiling cannot interrupt an
|
|
225
|
-
already running provider request and refuses new dispatch with unknown measurements.
|
|
226
|
-
|
|
227
|
-
Native capture follows the documented Claude Code [hook inputs and Agent tool
|
|
228
|
-
response](https://code.claude.com/docs/en/hooks): resolvedModel/modelsUsed and native
|
|
229
|
-
duration/token/tool-use fields when present. It does not invent effort or cost.
|
|
230
|
-
Actual field availability and correlation must be confirmed by the real pilot.
|
|
231
|
-
|
|
232
|
-
## Release boundary
|
|
233
|
-
|
|
234
|
-
Framework tests and the synthetic five-size benchmark validate mechanics. They
|
|
235
|
-
cannot measure model reasoning, game quality or end-to-end team productivity.
|
|
236
|
-
Use [the pilot protocol](NCCGS-1.5-PILOT.md) before stable promotion. CP0 remains
|
|
237
|
-
reference-only; it is not a valid scored run for this purpose.
|
|
1
|
+
> Historical development/reference document. Version, status, commands and plans
|
|
2
|
+
> below describe their original scope, not the current package defaults. Read
|
|
3
|
+
> [current release guidance](RELEASE-STATUS.md) before use. Research/benchmark proposals
|
|
4
|
+
> do not automatically add requirements to a delivery contract.
|
|
5
|
+
|
|
6
|
+
# NCCGS 1.5 preview — implementation and operation
|
|
7
|
+
|
|
8
|
+
Version: **1.5.0-preview.1**. Target executor: **Claude Code**.
|
|
9
|
+
This is framework functionality with synthetic regression tests, pending real-runtime
|
|
10
|
+
pilot validation. Read [MEMORY.md](../MEMORY.md) before interpreting evaluation results.
|
|
11
|
+
|
|
12
|
+
The 2026-10-03 phase-1 maintenance patch adds managed verification jobs and optional
|
|
13
|
+
supervised headless runs. [Phase-1 operations](PHASE-1-OPERATIONS.md) supersedes the
|
|
14
|
+
older manual-lock and verification-operation details below. Its scoped native
|
|
15
|
+
lifecycle smoke passed; historical game evaluation results stay frozen.
|
|
16
|
+
|
|
17
|
+
[Phase-2 operations](PHASE-2-OPERATIONS.md) supersedes the check-only acceptance
|
|
18
|
+
examples and 4/12/24 dispatch defaults below: automatic criteria need measured
|
|
19
|
+
assertions, new FAST implementation tasks have a ceiling of 6, and new ledgers
|
|
20
|
+
protect repair/QA/review capacity. A real Claude coordinator smoke confirmed that
|
|
21
|
+
failed synthetic criteria block a success report. This does not validate game balance.
|
|
22
|
+
|
|
23
|
+
## Policies and migration
|
|
24
|
+
|
|
25
|
+
New installs use `.nccgs/execution.json`:
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
{
|
|
29
|
+
"schemaVersion": 1,
|
|
30
|
+
"name": "standalone",
|
|
31
|
+
"externalReview": { "mode": "off" },
|
|
32
|
+
"acceptanceRequired": false,
|
|
33
|
+
"requireObservedEffort": false,
|
|
34
|
+
"maxParallelWorkers": 2
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Model profile lives separately in `.nccgs/project.yaml`; the default is
|
|
39
|
+
`claude-standalone`. Its Sonnet/Opus/Fable aliases are requests, never resolved observations.
|
|
40
|
+
Missing execution.json resolves to compatibility. Changing a model profile alone
|
|
41
|
+
does not remove an external, acceptance or historical task obligation.
|
|
42
|
+
|
|
43
|
+
Use `nccgs migrate-execution --to standalone --dry-run` after a framework update;
|
|
44
|
+
remove `--dry-run` to apply. Add `--model-profile claude-standalone` to explicitly
|
|
45
|
+
change models too. Configuration archives live under `.nccgs/backups/execution/ID`.
|
|
46
|
+
`--rollback ID --dry-run` checks restoration; rollback refuses changed configuration
|
|
47
|
+
or corrupted backup hashes. Tasks/evidence/budgets are preserved. See
|
|
48
|
+
[UPGRADING.md](../UPGRADING.md) for failure recovery and legacy task handling.
|
|
49
|
+
|
|
50
|
+
## Intake, classification and modes
|
|
51
|
+
|
|
52
|
+
Example `.nccgs/evidence/intake/hud-fix.json`:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"schemaVersion": 1,
|
|
57
|
+
"objective": "Correct the pause-button offset at the declared reference resolution",
|
|
58
|
+
"mode": "implement",
|
|
59
|
+
"scope": "local",
|
|
60
|
+
"systems": ["HUD"],
|
|
61
|
+
"target": "fix",
|
|
62
|
+
"readiness": "ready",
|
|
63
|
+
"acceptance": [{ "id": "HUD-01", "description": "Offset matches the reference", "check": "layout-reference" }],
|
|
64
|
+
"requiredChecks": ["layout-reference"],
|
|
65
|
+
"requiredArtifacts": [],
|
|
66
|
+
"manualGates": [],
|
|
67
|
+
"assumptions": ["Gameplay and input behavior remain unchanged"],
|
|
68
|
+
"reassessWhen": ["The layout defect crosses multiple UI systems"]
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
This is a template, not evidence that the check ran. For `audit` or `plan`, declare
|
|
73
|
+
`analysisArtifacts` such as `.nccgs/evidence/analysis/TASK-result.md`; source edits
|
|
74
|
+
are prohibited. Include real `sources` paths to hash authoritative documents.
|
|
75
|
+
Criteria with `check` add required objective checks; `{id,description,manual:true}`
|
|
76
|
+
adds a manual acceptance gate. Project-level gate manifests remain mandatory.
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
node .claude/nccgs/tools/task.mjs init --id hud-fix --intake .nccgs/evidence/intake/hud-fix.json
|
|
80
|
+
node .claude/nccgs/tools/task.mjs bind --id hud-fix --session ACTUAL_SESSION_ID
|
|
81
|
+
node .claude/nccgs/tools/task.mjs inspect --id hud-fix
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
The classifier is deterministic and conservative, not a general semantic model.
|
|
85
|
+
Ready/local/fix can be FAST. Unknown or feature scope defaults to STANDARD.
|
|
86
|
+
Save/serialization, migration, network authority, commerce and cross-system signals
|
|
87
|
+
require CONTROLLED. The coordinator must inspect real risk and supply `riskSignals`,
|
|
88
|
+
reason and evidence; keyword absence is not proof of safety.
|
|
89
|
+
|
|
90
|
+
Explicit `reclassify --classification FILE` requires `reason` and `evidence`; optional
|
|
91
|
+
`risk`, `scope`, `target`, `readiness`, `systems` and `riskSignals` explain the change.
|
|
92
|
+
To change intake content, update the same file and use `refresh-inputs --reason TEXT`.
|
|
93
|
+
Reclassification invalidates affected stages while retaining old evidence and spent
|
|
94
|
+
review rounds. Source/input/policy changes never reuse old approval. Execution policy
|
|
95
|
+
changes cannot be adopted by input refresh: restore pinned policy for current work
|
|
96
|
+
or explicitly scope new work while retaining prior history and spent budgets. Audit/plan
|
|
97
|
+
baseline hashing still detects source edits after canonical inputs are refreshed.
|
|
98
|
+
|
|
99
|
+
## Dispatch, budget and evidence
|
|
100
|
+
|
|
101
|
+
Save a request under `.nccgs/evidence/requests/`:
|
|
102
|
+
|
|
103
|
+
```json
|
|
104
|
+
{
|
|
105
|
+
"requestKey": "hud-fix-implementation-1",
|
|
106
|
+
"kind": "implementation",
|
|
107
|
+
"agent": "nccgs-fast-implementer",
|
|
108
|
+
"writePaths": ["Assets/Game/UI/PauseButton.cs"],
|
|
109
|
+
"reason": "One ready local layout fix with a targeted reference check"
|
|
110
|
+
}
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
node .claude/nccgs/tools/task.mjs reserve --id hud-fix --request .nccgs/evidence/requests/hud-fix.json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Use the returned ID in the Agent prompt prefix `[NCCGS-DISPATCH:ID]`, select the
|
|
118
|
+
specified role and task route, and include contract, inputs, ownership and acceptance.
|
|
119
|
+
PreToolUse claims the slot with actual session/tool-use identity. SubagentStart binds
|
|
120
|
+
an unambiguous agent ID. Foreground PostToolUse completion captures final telemetry.
|
|
121
|
+
For this preview use foreground calls; background runs hold slots until correlated
|
|
122
|
+
final evidence or external reconciliation. SubagentStop alone cannot prove model,
|
|
123
|
+
effort or complete usage. Ambiguous same-role starts are not guessed.
|
|
124
|
+
|
|
125
|
+
Review requests use `kind: "review"`, `agent: "nccgs-adversarial-reviewer"`, and
|
|
126
|
+
empty writePaths. Analysis requests also have no source ownership. Dispatch ceilings
|
|
127
|
+
are 4/12/24 for FAST/STANDARD/CONTROLLED by default; first reservation may explicitly
|
|
128
|
+
set `limits.maxDispatches`, `maxDurationMs`, `maxCostUsd`. Limits are pinned, counted
|
|
129
|
+
across descendants, and cannot be raised by another reservation. Review limits are
|
|
130
|
+
2/3/3. Failed, cancelled and uncertain attempts remain spent. Extensions of review
|
|
131
|
+
rounds require a reasoned external operator decision and never grant approval.
|
|
132
|
+
|
|
133
|
+
At most two implementation workers can reserve disjoint paths; review/analysis
|
|
134
|
+
cannot overlap source writers. Direct edit tools enforce ownership. Opaque shell/MCP
|
|
135
|
+
operations are not OS-sandboxed by NCCGS; inspect their actual diff and test effects.
|
|
136
|
+
Audit/plan/review block arbitrary shells and unknown tools. Use read tools, declared
|
|
137
|
+
analysis artifacts and externally supplied command evidence when required.
|
|
138
|
+
|
|
139
|
+
`task verify --id TASK --name CHECK -- EXECUTABLE ARGS` records the actual command,
|
|
140
|
+
exit code, bounded timeout, log hash and before/after source snapshot. Claude may
|
|
141
|
+
run it only for implementation tasks. The verifier must not change source.
|
|
142
|
+
`task ref --file PATH` produces a `{path,sha256}` reference without inventing evidence.
|
|
143
|
+
|
|
144
|
+
Record a completed work stage with a JSON payload (placeholders below must be
|
|
145
|
+
replaced with returned values, never copied as observations):
|
|
146
|
+
|
|
147
|
+
```json
|
|
148
|
+
{
|
|
149
|
+
"snapshot": "ACTUAL_FINAL_SNAPSHOT",
|
|
150
|
+
"dispatchId": "ACTUAL_COMPLETED_DISPATCH_ID",
|
|
151
|
+
"runtime": { "path": ".nccgs/evidence/runtime/observations/ACTUAL.json", "sha256": "ACTUAL_HASH" },
|
|
152
|
+
"checks": [{ "name": "layout-reference", "status": "PASS", "evidence": { "path": ".nccgs/evidence/ACTUAL-check.json", "sha256": "ACTUAL_HASH" } }]
|
|
153
|
+
}
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Use `record --id TASK --stage implementation --evidence FILE`. Audit/plan use stage
|
|
157
|
+
`analysis` and include `evidence` referencing the declared result artifact. Each
|
|
158
|
+
accepted work/review dispatch can be consumed once, including across history.
|
|
159
|
+
|
|
160
|
+
Review payload adds `verdict` (`PASS|CHANGES_REQUIRED|BLOCKED`), `criteriaMet`,
|
|
161
|
+
`findings`, and a review-artifact `evidence` ref to snapshot/dispatchId/runtime.
|
|
162
|
+
Findings include `severity` (`BLOCKER|HIGH|MEDIUM|LOW|INFO`), `status`
|
|
163
|
+
(`OPEN|RESOLVED|ACCEPTED`) and `description`. An unresolved BLOCKER/HIGH or unmet
|
|
164
|
+
required criterion prevents internal PASS. Review identity must differ from work.
|
|
165
|
+
|
|
166
|
+
## Reporting, external review and closure
|
|
167
|
+
|
|
168
|
+
```text
|
|
169
|
+
node .claude/nccgs/tools/task.mjs report --id TASK --outcome blocked --summary "Actual blocker and missing evidence"
|
|
170
|
+
node .claude/nccgs/tools/task.mjs check --id TASK --target done
|
|
171
|
+
node .claude/nccgs/tools/task.mjs close --id TASK
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Reports accept `success|partial|blocked|failed` even when successful closure is
|
|
175
|
+
unavailable. Generated Markdown includes evidence status and unresolved gates.
|
|
176
|
+
`record --stage report` can supply `artifacts` refs for required closure outputs.
|
|
177
|
+
Success wording does not override failed checks. Only `close` with all current gates
|
|
178
|
+
passing establishes DONE. `inspect` remains usable with changed/malformed policy.
|
|
179
|
+
|
|
180
|
+
`export-external --out .nccgs/evidence/external/requests/UNIQUE.json` writes an
|
|
181
|
+
immutable task/contract/snapshot packet. An external actor reviews it and imports
|
|
182
|
+
a receipt through `import-external --file FILE` outside the Claude executor:
|
|
183
|
+
|
|
184
|
+
```json
|
|
185
|
+
{
|
|
186
|
+
"schemaVersion": 1,
|
|
187
|
+
"id": "REVIEW_ID",
|
|
188
|
+
"taskId": "TASK",
|
|
189
|
+
"contractHash": "EXPORTED_HASH",
|
|
190
|
+
"snapshot": "EXPORTED_SNAPSHOT",
|
|
191
|
+
"actor": "ACTUAL_EXTERNAL_REVIEWER",
|
|
192
|
+
"verdict": "PASS",
|
|
193
|
+
"findings": [],
|
|
194
|
+
"reviewedAt": "ACTUAL_ISO_TIMESTAMP",
|
|
195
|
+
"source": "ACTUAL_REVIEW_REFERENCE"
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Off ignores external closure dependency. Advisory retains current findings without
|
|
200
|
+
blocking. Required evaluates all active current receipts; a later empty PASS cannot
|
|
201
|
+
erase earlier blocking findings. To replace a prior decision, include
|
|
202
|
+
`supersedes: ["PRIOR_RECEIPT_ID"]` and `supersessionReason` identifying the new
|
|
203
|
+
evidence. Old findings remain traceable. Stale/duplicate/malformed receipts fail.
|
|
204
|
+
|
|
205
|
+
If acceptance is required, an external Product Owner decision references taskId,
|
|
206
|
+
contractHash, snapshot, `actor: "Product Owner"`, `decision: "ACCEPTED"`, decidedAt,
|
|
207
|
+
statement, reference and each manual gate `{id,decision:"ACCEPTED",reference}`.
|
|
208
|
+
Import via `record --stage acceptance` with its evidence ref. Claude cannot accept
|
|
209
|
+
on the user's behalf. NCCGS neither launches Astra nor sends external messages.
|
|
210
|
+
|
|
211
|
+
## Recovery and telemetry
|
|
212
|
+
|
|
213
|
+
Use `checkpoint --reason TEXT`, `resume`, `dispatch-status` and `telemetry` with
|
|
214
|
+
`--id TASK`. Resume preserves reservations, findings, attempts and budgets. A lost
|
|
215
|
+
callback or dead worker does not refund a slot by timeout. An external operator can
|
|
216
|
+
use `dispatch-reconcile --dispatch ID --request FILE` with `status: failed|cancelled`,
|
|
217
|
+
reason and observed reference after confirming the process is no longer running.
|
|
218
|
+
Never manually reset the ledger. Missing initialized history or altered durable
|
|
219
|
+
evidence fails closed. A crashed lock requires operator inspection before recovery.
|
|
220
|
+
|
|
221
|
+
Telemetry reports known subtotals and coverage for duration, tool calls, tokens and
|
|
222
|
+
cost. Total is null if any started attempt lacks that metric. Observed zero remains
|
|
223
|
+
zero. These are worker measurements; coordinator work, human delay and billing are
|
|
224
|
+
not automatically covered. A configured spend/time ceiling cannot interrupt an
|
|
225
|
+
already running provider request and refuses new dispatch with unknown measurements.
|
|
226
|
+
|
|
227
|
+
Native capture follows the documented Claude Code [hook inputs and Agent tool
|
|
228
|
+
response](https://code.claude.com/docs/en/hooks): resolvedModel/modelsUsed and native
|
|
229
|
+
duration/token/tool-use fields when present. It does not invent effort or cost.
|
|
230
|
+
Actual field availability and correlation must be confirmed by the real pilot.
|
|
231
|
+
|
|
232
|
+
## Release boundary
|
|
233
|
+
|
|
234
|
+
Framework tests and the synthetic five-size benchmark validate mechanics. They
|
|
235
|
+
cannot measure model reasoning, game quality or end-to-end team productivity.
|
|
236
|
+
Use [the pilot protocol](NCCGS-1.5-PILOT.md) before stable promotion. CP0 remains
|
|
237
|
+
reference-only; it is not a valid scored run for this purpose.
|