@mriekki/project-forge 3.0.0 → 4.1.0

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 (23) hide show
  1. package/assets/components.json +4 -4
  2. package/assets/core/distribution.json +0 -4
  3. package/assets/deployment/distribution.json +1 -0
  4. package/assets/generated/ASSEMBLY.json +22 -37
  5. package/assets/generated/core/core/instructions/project-forge-workflow.instructions.md +8 -2
  6. package/assets/generated/core/core/process/INTERACTIVE_SESSION_GUIDE.md +1 -2
  7. package/assets/generated/core/core/process/OPERATION_JOURNAL.md +1 -2
  8. package/assets/generated/core/core/skills/grill-me/SKILL.md +84 -46
  9. package/assets/generated/core/core/skills/project-forge-update/SKILL.md +3 -3
  10. package/assets/generated/core/core/skills/setup/SKILL.md +149 -199
  11. package/assets/generated/core/core/skills/start-work/SKILL.md +5 -6
  12. package/assets/generated/deployment/docs/DEVELOPER_ENVIRONMENTS.md +52 -12
  13. package/assets/generated/deployment/docs/ENVIRONMENT_PROOF.md +56 -6
  14. package/assets/generated/deployment/src/project_forge_deployment/app_runtime_workstation.py +103 -42
  15. package/assets/generated/deployment/src/project_forge_deployment/environment_cli.py +41 -4
  16. package/assets/generated/deployment/src/project_forge_deployment/environment_probe.py +152 -79
  17. package/assets/generated/deployment/src/project_forge_deployment/environment_setup.py +241 -0
  18. package/assets/generated/deployment/src/project_forge_deployment/image_transfer.py +51 -11
  19. package/package.json +1 -1
  20. package/assets/generated/core/core/agents/coach.agent.md +0 -69
  21. package/assets/generated/core/core/skills/core-sync/SKILL.md +0 -184
  22. package/assets/generated/core/core/skills/developer-env-mode/SKILL.md +0 -231
  23. package/assets/generated/core/core/skills/grill-with-docs/SKILL.md +0 -88
@@ -1,69 +0,0 @@
1
- ---
2
- name: Coach
3
- description: Optional guided engineering-learning agent using actual repository context for concepts, code walkthroughs, debugging, coding/SQL/system-design drills, interviews, diagrams, and resources.
4
- user-invocable: true
5
- disable-model-invocation: true
6
- ---
7
-
8
- # Coach
9
-
10
- You are the optional engineering-learning perspective.
11
-
12
- Coaching is never required to start, continue, review, accept, deliver, merge, or complete engineering work.
13
-
14
- ## Core behavior
15
-
16
- - Do not edit production code or implement fixes for the developer.
17
- - Do not invoke subagents.
18
- - Do not silently broaden product scope.
19
- - Do not pin/request/switch to a premium model automatically.
20
- - Read minimum relevant context.
21
- - Use actual repository code, requirements, tests, diffs, incidents, and decisions when useful.
22
- - Ask one material question at a time.
23
- - Continue automatically until stop/natural completion.
24
- - Adapt difficulty to demonstrated understanding.
25
- - Challenge shallow explanations.
26
- - Distinguish actual implementation/understanding from AI-generated work or study.
27
-
28
- ## Depth and levels
29
-
30
- Depth: Light, Focused, Deep, Broad, or Coach recommends.
31
-
32
- Levels:
33
-
34
- ```text
35
- L1 Recognize
36
- L2 Explain
37
- L3 Trace
38
- L4 Apply / Debug
39
- L5 Defend / Design
40
- L6 Interview Ready
41
- ```
42
-
43
- Do not inflate mastery.
44
-
45
- ## Modes
46
-
47
- Support concept learning, real-code walkthroughs, debugging, coding/DSA, SQL/database, design defense, system design, interview drills, gap assessment, learning paths, diagrams, and optional external resources.
48
-
49
- For a structured walkthrough of a changed implementation across a Git/PR/commit change set, route to `/code-walkthrough` when available. Use Coach directly for ad-hoc code explanation or deeper concept exploration.
50
-
51
- Use installed learning assets when present; otherwise coach directly from the repository/context.
52
-
53
- ## Adaptive questioning
54
-
55
- Weak answer → teach/simplify/own-words explanation.
56
-
57
- Solid answer → application/edge case.
58
-
59
- Strong answer → tradeoff/debug/design.
60
-
61
- Very strong answer → scale/change assumptions/interviewer pressure.
62
-
63
- ## Resources and progress
64
-
65
- Prefer official documentation and a small number of current high-quality tutorials/resources. External material is optional.
66
-
67
- Only update an optional learning-progress tracker with explicit human choice.
68
-
69
- Never turn study or personal-project understanding into false claims of professional experience.
@@ -1,184 +0,0 @@
1
- ---
2
- name: core-sync
3
- description: Direct Core-to-consumer synchronization for component-only consumers; package-managed consumers are routed to /project-forge-update so umbrella and component baselines remain coherent.
4
- argument-hint: "[optional local Core path]"
5
- user-invocable: true
6
- disable-model-invocation: true
7
- ---
8
-
9
- # Core Sync
10
-
11
- `/core-sync` is the direct component synchronization path for consumers that are managed directly by `CORE_BASELINE.json` **without** an umbrella `PROJECT_FORGE_BASELINE.json`.
12
-
13
- For package-managed consumers, `/project-forge-update` is authoritative.
14
-
15
- Invocation starts read-only. Direct component synchronization must never make a package-managed consumer disagree with its recorded Project Forge package provenance.
16
-
17
- ## 1. Classify the consumer before doing anything else
18
-
19
- From the consumer repository read, when present:
20
-
21
- - `PROJECT_FORGE_BASELINE.json`;
22
- - `CORE_BASELINE.json`;
23
- - `.github/project-forge-workspace.json`;
24
- - `.github/project-forge-core-sync.json`;
25
- - current Git status, branch, remotes, and default branch when observable.
26
-
27
- ### Package-managed consumer
28
-
29
- If `PROJECT_FORGE_BASELINE.json` exists:
30
-
31
- ```text
32
- PACKAGE-MANAGED PROJECT FORGE CONSUMER
33
- Direct Core sync: NOT PERMITTED
34
- Next: /project-forge-update
35
- ```
36
-
37
- Stop before refreshing a Core checkout, running `tools/package/sync.py`, creating a sync branch, or sending a remote `[sync-core]` request.
38
-
39
- The umbrella package updates Core and Deployment components together and refreshes `PROJECT_FORGE_BASELINE.json`, `CORE_BASELINE.json`, and `DEPLOYMENT_BASELINE.json` coherently. A Core-only sync would bypass that contract.
40
-
41
- ### Component-only Core consumer
42
-
43
- If `PROJECT_FORGE_BASELINE.json` is absent and a valid `CORE_BASELINE.json` exists, continue with the component-managed path below.
44
-
45
- If neither baseline exists, report `CORE SYNC BLOCKED`; do not invent provenance or initialize a consumer implicitly.
46
-
47
- ## 2. Establish the component-only Core baseline
48
-
49
- Run the repository-local integrity check before planning an update:
50
-
51
- ```text
52
- python tools/project-forge-core/check-core-baseline.py --root .
53
- ```
54
-
55
- Stop if the managed overlay has unexplained local drift, missing managed files, or invalid baseline metadata.
56
-
57
- Resolve from `CORE_BASELINE.json`:
58
-
59
- - canonical Core repository;
60
- - currently accepted Core commit/version;
61
- - distribution name;
62
- - managed-path ownership/hashes.
63
-
64
- ## 3. Resolve the Core source safely
65
-
66
- Check local candidates in this order:
67
-
68
- 1. an explicit Core path supplied by the human;
69
- 2. an already-open workspace folder that unambiguously resolves to the recorded Core repository;
70
- 3. the sibling checkout derived from the Core repository name, normally `../project-forge-core`.
71
-
72
- Do not broadly scan the filesystem. A local Core checkout is an optimization, not a prerequisite.
73
-
74
- A local candidate is usable only when it is the recorded Git repository and its state can be inspected safely.
75
-
76
- If no usable local Core checkout exists, use the configured remote provider from `.github/project-forge-core-sync.json` when available. Do not ask the developer to clone Core merely to satisfy `/core-sync`.
77
-
78
- ## 4. Classify a local Core checkout
79
-
80
- Before modifying a local Core checkout inspect:
81
-
82
- ```text
83
- git -C <core-path> status --short --branch
84
- git -C <core-path> branch --show-current
85
- git -C <core-path> remote -v
86
- git -C <core-path> branch -vv
87
- ```
88
-
89
- It may be refreshed automatically only when clean, on its normal accepted/default branch, backed by an unambiguous upstream, and fast-forward-safe.
90
-
91
- Never auto-stash, merge, rebase, reset, clean, force-update, or discard Core work.
92
-
93
- If the checkout is dirty, ahead, diverged, intentionally pinned, or ambiguous, preserve it unchanged and prefer the configured remote provider when available.
94
-
95
- ## 5. Present one bounded component-sync choice
96
-
97
- Use the host-native **single-select structured choice UI** when available because exactly one next action is authorized. In VS Code use the native question surface such as `vscode_askQuestions`. Preserve the consequence labels and show the recommended choice. Use a numbered text list only when structured choice UI is unavailable.
98
-
99
- For a safe local source, show the evidence:
100
-
101
- ```text
102
- CORE SYNC READY
103
-
104
- Consumer baseline: <commit/version>
105
- Source: LOCAL <core-path>
106
- Distribution: <distribution>
107
- ```
108
-
109
- Then offer:
110
-
111
- - `Sync the component-only Core baseline` `[GIT + FILE WRITE]` — `RECOMMENDED`
112
- - `Keep inspecting only` `[READ ONLY]`
113
- - `Stop` `[NO ACTION]`
114
-
115
- For a configured remote source, show:
116
-
117
- ```text
118
- CORE SYNC READY
119
-
120
- Consumer baseline: <commit/version>
121
- Source: REMOTE PROVIDER
122
- Provider: <provider repository>
123
- ```
124
-
125
- Then offer:
126
-
127
- - `Request remote Core sync` `[REMOTE WRITE]` — `RECOMMENDED`
128
- - `Keep inspecting only` `[READ ONLY]`
129
- - `Stop` `[NO ACTION]`
130
-
131
- The selected choice does not authorize merge, release publication, or deployment.
132
-
133
- ## 6. Local component path
134
-
135
- After `Sync the component-only Core baseline` is selected:
136
-
137
- 1. Refresh Core remote state.
138
- 2. Reclassify the accepted/default Core branch.
139
- 3. Fast-forward it only when safe.
140
- 4. Run canonical Core sync preview using the distribution recorded by the baseline.
141
- 5. Stop on `LOCAL_DRIFT`, `CONFLICT`, `LOCAL_MISSING`, `UNTRACKED_CONFLICT`, or an unaccepted `RETIRED_PATH`.
142
- 6. If the consumer is on its default branch, create/switch to a short-lived branch such as `chore/sync-core-<version-or-short-sha>`.
143
- 7. Apply only safe Core additions/updates and refresh `CORE_BASELINE.json` using canonical `tools/package/sync.py`.
144
-
145
- Do not manually copy managed files as a substitute for the canonical tool.
146
-
147
- ## 7. Remote component path
148
-
149
- Remote orchestration is consumer configuration. Read `.github/project-forge-core-sync.json` and require its configured provider contract, for example `github-issue-control-plane` with an owner/repository title template and an empty body.
150
-
151
- Create exactly the configured request. Do not put product requirements, baseline JSON, source code, secrets, or other private consumer details into a public request.
152
-
153
- The provider is expected to validate target authorization, obtain its own short-lived credentials, run canonical Core sync, refuse unsafe drift/conflicts, publish a short-lived consumer branch/PR, and observe consumer CI.
154
-
155
- If the provider cannot satisfy that contract, report `REMOTE SYNC UNAVAILABLE`; do not silently clone Core or invent another synchronization mechanism.
156
-
157
- ## 8. Verification
158
-
159
- For a local apply run:
160
-
161
- ```text
162
- python tools/project-forge-core/check-core-baseline.py --root .
163
- git status --short --branch
164
- git diff --stat
165
- git diff -- CORE_BASELINE.json
166
- ```
167
-
168
- Confirm exact Core provenance, managed hashes, consumer-owned preservation, and intended branch scope. Present the meaningful diff and recommend `/deliver` after human acceptance.
169
-
170
- For a remote path, report the resulting PR and exact Core commit when observed. Merge remains the normal explicit final gate.
171
-
172
- ## 9. Boundaries
173
-
174
- `/core-sync` never:
175
-
176
- - directly synchronizes Core when `PROJECT_FORGE_BASELINE.json` exists;
177
- - uses direct Core sync as a substitute for `/project-forge-update`;
178
- - modifies ambiguous local Core state;
179
- - treats managed consumer drift as disposable;
180
- - publishes Core or Project Forge package releases/tags;
181
- - merges the consumer sync PR;
182
- - deploys production.
183
-
184
- If reusable Core behavior itself is wrong, fix Core canonically through `/upstream-fix`; then adopt it through the update channel appropriate to the consumer's provenance model.
@@ -1,231 +0,0 @@
1
- ---
2
- name: developer-env-mode
3
- description: "Converge and verify the developer workstation for local-only or remote-enabled work. Mode changes become effective only after the selected readiness contract passes."
4
- argument-hint: "status|local|remote"
5
- user-invocable: true
6
- disable-model-invocation: true
7
- ---
8
-
9
- # Developer Environment Mode
10
-
11
- `/developer-env-mode` manages the current workstation's operational development mode. It is not a deployment command and it does not weaken Staging or Production gates.
12
-
13
- Supported intents:
14
-
15
- ```text
16
- /developer-env-mode status
17
- /developer-env-mode local
18
- /developer-env-mode remote
19
- ```
20
-
21
- The governing invariant is:
22
-
23
- ```text
24
- MODE != preference
25
- MODE = verified operational state
26
- ```
27
-
28
- Never record a requested mode as ready until its readiness contract passes. If convergence fails, preserve the prior ready mode when one exists and report the blocker.
29
-
30
- ## 1. Resolve repository and package provenance read-only
31
-
32
- From the repository root inspect, when present:
33
-
34
- - `PROJECT_BOOTSTRAP.json`;
35
- - `PROJECT_FORGE_BASELINE.json` and component baselines;
36
- - `DEV_ENVIRONMENT.json`;
37
- - application setup/build/test commands and project-owned persistence configuration;
38
- - deployment topology and generated deployment tooling;
39
- - Git status so unrelated work is preserved.
40
-
41
- For package-managed consumers, verify managed files are coherent before relying on distributed Core or Deployment tooling. Route managed drift to `/project-forge-update` rather than overwriting it.
42
-
43
- Do not require a Bootstrap/Core/Deployment Kit source checkout for normal consumer use.
44
-
45
- ## 2. Keep current mode state workstation-local
46
-
47
- Mode state is user/workstation state, not repository authority. Store it outside the repository under the user-scoped Project Forge directory, using a repository-scoped location such as:
48
-
49
- ```text
50
- ~/.project-forge/workspaces/<owner>/<repo>/developer-environment.json
51
- ```
52
-
53
- Do not commit this state. Do not store credentials, private keys, target trust stores, database contents, or secret values in it.
54
-
55
- Record enough non-secret evidence to distinguish requested mode from readiness, for example:
56
-
57
- - mode;
58
- - ready/not-ready;
59
- - verification timestamp;
60
- - source revision when available;
61
- - build/test state or fingerprint;
62
- - local database state when applicable;
63
- - local runtime health when applicable;
64
- - remote target/access readiness summary when applicable.
65
-
66
- A later `status` check must be allowed to report that the recorded mode is no longer ready when Docker stops, tools drift, the build becomes stale, the local database is missing/incompatible, or remote access disappears.
67
-
68
- ## 3. `status` is read-only
69
-
70
- `/developer-env-mode status` performs no setup writes. Inspect current workstation evidence and live prerequisites, then report both the selected mode and current readiness.
71
-
72
- Prefer a compact result such as:
73
-
74
- ```text
75
- DEVELOPER ENVIRONMENT
76
-
77
- Selected mode: LOCAL
78
- Readiness: NOT READY
79
-
80
- Docker ........ READY
81
- Build ......... STALE
82
- Tests ......... READY
83
- SQLite ........ READY
84
- Runtime ....... HEALTHY
85
- Remote access . UNAVAILABLE
86
-
87
- NEXT
88
- /developer-env-mode local
89
- ```
90
-
91
- Do not silently repair state during `status`.
92
-
93
- ## 4. `local` means converge a complete local development environment
94
-
95
- Selecting `local` authorizes bounded, non-destructive workstation setup needed to make the current repository usable locally. It does not authorize destructive database reset, deletion of unrelated Docker state, remote publication, remote deployment, or Production writes.
96
-
97
- Converge in this order.
98
-
99
- ### A. Workstation prerequisites
100
-
101
- Verify the current OS is supported by repository configuration. Use repository setup/doctor tooling when present to verify required tools and versions.
102
-
103
- For Docker-based local execution require a working Docker CLI/engine. Prefer repository-distributed Deployment Kit commands when `DEPLOYMENT_BASELINE.json` proves they are installed.
104
-
105
- ### B. Dependencies and restore
106
-
107
- Run repository-defined dependency restore/setup commands when missing or stale. Preserve pinned versions and project conventions. Do not substitute arbitrary global tooling when the repository defines a supported path.
108
-
109
- ### C. Local persistence
110
-
111
- If the application uses SQLite for local development:
112
-
113
- 1. resolve the project-owned database filename/container path and migration/initialization contract from repository configuration/docs/code;
114
- 2. prefer the installed Deployment Kit local SQLite ensure/status primitive when available for workstation-owned persistent storage;
115
- 3. when the database is absent, create the owned local SQLite file/directory non-destructively;
116
- 4. run the repository-provided migration/schema initialization needed to make that database usable;
117
- 5. verify the resulting database can be opened and that the application-required schema/migration state is current when the repository provides such a check.
118
-
119
- If an existing SQLite database is corrupt, incompatible, or has unexpected ownership/schema state, **STOP**. Never delete, replace, reset, or migrate destructively merely to make mode convergence pass. Present the exact recovery/reset decision separately.
120
-
121
- Do not assume every project uses SQLite. Other persistence requires an explicit repository-owned local setup contract.
122
-
123
- ### D. Build and tests
124
-
125
- Run the repository's required local build and test commands. A missing or stale build is a normal convergence condition; rebuild it.
126
-
127
- If build or required tests fail, report `LOCAL MODE NOT READY` and do not mark the mode ready.
128
-
129
- When the project policy says application validation is local-only, GitHub publication/PR activity does not replace this local build/test evidence.
130
-
131
- ### E. Local immutable Docker artifact
132
-
133
- When the local runtime is Docker-based, build the application image locally using repository-owned commands. Resolve an immutable local image identity.
134
-
135
- The standard Deployment Kit workstation adapter may accept either:
136
-
137
- - an exact registry digest (`name@sha256:...`), or
138
- - a local Docker image ID (`sha256:<64 hex>`) for workstation-only execution.
139
-
140
- Never use a mutable tag as the final deployed identity. A local image ID is valid only for workstation placement and is not remote-release evidence.
141
-
142
- ### F. Workstation runtime
143
-
144
- Converge the local application runtime through the repository-distributed workstation adapter when available:
145
-
146
- ```text
147
- placement: workstation
148
- isolation: container
149
- exposure: loopback
150
- ```
151
-
152
- Keep exposure loopback-only. Mount the project-owned local SQLite persistence directory when required. Verify the declared health endpoint and any required local smoke check.
153
-
154
- Do not resolve SSH targets, publish images, create public routes, or deploy Staging/Production while entering local mode.
155
-
156
- ### G. Commit local mode only after readiness passes
157
-
158
- Only after prerequisites, persistence, build, tests, runtime, and health requirements pass, write the workstation-local mode state as ready.
159
-
160
- A successful summary should distinguish local evidence from remote evidence:
161
-
162
- ```text
163
- LOCAL DEVELOPER ENVIRONMENT READY
164
-
165
- Build ........ READY
166
- Tests ........ READY
167
- Docker ....... READY
168
- SQLite ....... READY / NOT APPLICABLE
169
- Application .. HEALTHY
170
- Remote deploy. DISABLED BY MODE
171
- ```
172
-
173
- ## 5. `remote` means verify remote-enabled capability, not deploy
174
-
175
- Selecting `remote` authorizes bounded, non-destructive checks/setup needed to prove that the current workstation can work with the repository's configured remote non-Production environment(s). It does **not** publish an artifact or deploy an application.
176
-
177
- Verify as applicable:
178
-
179
- - normal local developer prerequisites still needed to build/test the project;
180
- - repository deployment topology contains a non-deferred remote environment;
181
- - exact target/provider binding exists when required;
182
- - workstation-to-target trust/access is valid;
183
- - target OS/runtime/platform readiness is valid;
184
- - persistence/readiness prerequisites can be inspected safely;
185
- - GitHub/registry access needed for a later release/publish step is available;
186
- - repository release/deployment tooling and baselines are coherent.
187
-
188
- For the standard remote-SSH path preserve strict host identity. Unknown or changed host identity is a stop condition. Never fall back to another environment or host.
189
-
190
- Do not require a Production target merely to enter remote mode. Do not weaken Production authorization because remote mode is ready.
191
-
192
- Only after the selected remote readiness checks pass, record `remote` as ready.
193
-
194
- Then report the next explicit operation, typically:
195
-
196
- ```text
197
- /deployment-readiness <environment>
198
- ```
199
-
200
- A later `/deploy <environment>` remains separately gated.
201
-
202
- ## 6. Fail closed on destructive or ambiguous repair
203
-
204
- Automatic convergence may safely create missing local directories, dependency caches, build outputs, a new owned SQLite file, migrations that the project defines as normal forward initialization, and a new owned local application container.
205
-
206
- Stop for a separate explicit decision before:
207
-
208
- - deleting/resetting an existing database;
209
- - destructive migration or rollback;
210
- - replacing unexplained persistent data;
211
- - deleting unrelated containers/images/volumes;
212
- - publishing an artifact remotely;
213
- - rebinding a target;
214
- - weakening host verification;
215
- - deploying Staging or Production;
216
- - changing public/LAN exposure.
217
-
218
- ## 7. Relationship to other Project Forge commands
219
-
220
- `/developer-env-mode` prepares a workstation and establishes current operational readiness.
221
-
222
- It does not replace:
223
-
224
- - `/project-forge-update` for managed Project Forge package changes;
225
- - project setup/doctor tooling;
226
- - `/start-work` for implementation authorization;
227
- - `/deployment-readiness` for environment-specific pre-deploy evidence;
228
- - `/deploy` for deployment authorization/execution;
229
- - `/tear-down` for destructive cleanup.
230
-
231
- Mode switching never implies merge, release publication, Staging deployment, or Production deployment.
@@ -1,88 +0,0 @@
1
- ---
2
- name: grill-with-docs
3
- description: Continuously challenge requirements/design and reconcile resolved decisions into permitted authoritative/supplemental documents or proposed external-work-item updates.
4
- argument-hint: "<work-item ID, external key, document, plan, or topic>"
5
- user-invocable: true
6
- disable-model-invocation: true
7
- ---
8
-
9
- # Grill With Docs
10
-
11
- This is the documentation-aware form of `/grill-me`.
12
-
13
- ## 1. Resolve authority
14
-
15
- Read `.github/project-forge-workspace.json` when present.
16
-
17
- Determine:
18
- - authoritative work-item source,
19
- - which local documents are authoritative/supplemental/read-only/not-used,
20
- - whether an external write integration is actually available and permitted.
21
-
22
- Never assume Product/Feature Briefs exist. Never assume `Jira Epic == Feature Brief`.
23
-
24
- ## 2. Continuous grilling
25
-
26
- Ask one material question at a time and challenge:
27
- - ambiguous outcomes,
28
- - missing domain/engineering rules,
29
- - contradictory requirements,
30
- - lifecycle/destructive behavior,
31
- - data integrity/concurrency,
32
- - failure behavior,
33
- - accessibility/UX implications when relevant,
34
- - architecture/operational tradeoffs,
35
- - testability.
36
-
37
- When the challenge is a bounded decision with a small credible option set, use the choice-first interaction guidance from `INTERACTIVE_SESSION_GUIDE.md` and explain important tradeoffs. Use host-native single-select UI for mutually exclusive alternatives when available, and multi-select only when several choices may be valid together. When the purpose is to expose or strengthen the human's reasoning, ask open-ended first; introduce options or hints later only when useful as scaffolding.
38
-
39
- Cadence:
40
-
41
- ```text
42
- question
43
- → human answer
44
- → challenge/analyze
45
- → reconcile the resolved decision when already authorized
46
- → next material question
47
- ```
48
-
49
- Do not ask whether to continue after every answer.
50
-
51
- ## 3. Reconcile to the right authority
52
-
53
- When a decision is resolved:
54
- - update an existing permitted local authority/supplement only when the current session authorizes document edits;
55
- - if Jira/GitHub/another external system is authoritative and no permitted write integration is available, accumulate a concise `PROPOSED EXTERNAL WORK-ITEM UPDATE`;
56
- - if a permitted external write integration exists, require an explicit `[EXTERNAL WRITE]` choice before writing externally;
57
- - never create a competing local source merely to store an answer.
58
-
59
- For local-document models, common homes are:
60
- - brief: high-level scope/outcome/major rule,
61
- - combined requirements: detailed user/engineering behavior and testable scenarios,
62
- - decisions: resolved work-item decision/basis,
63
- - ADR: only a meaningful cross-cutting architecture decision.
64
-
65
- ## 4. Editing authorization
66
-
67
- Invocation alone does not imply broad document-write permission.
68
-
69
- When document changes are needed, present a bounded **single-select structured choice** through the host UI when available. In VS Code use the native question surface such as `vscode_askQuestions`. Relevant choices are:
70
-
71
- - `Continue grilling only` `[READ ONLY]`
72
- - `Reconcile resolved decisions during this session` `[MODIFIES DOCS]`
73
- - `Stop` `[NO ACTION]`
74
-
75
- Use a numbered text list only when structured choice UI is unavailable. After `Reconcile resolved decisions during this session` is selected, focused updates to the permitted current work-item documents are authorized for the active session. Do not ask again after each answer.
76
-
77
- Pause only when a new answer would change higher-level approved scope, contradict another authority/ADR, or require a new cross-cutting decision.
78
-
79
- ## 5. Stop boundary
80
-
81
- Do not implement production code.
82
-
83
- At natural completion summarize:
84
- - decisions resolved,
85
- - documents/proposed external updates changed,
86
- - remaining conflicts/open items.
87
-
88
- If systematic detailed coverage is still needed, recommend `/refine-requirements`.