create-agdf 0.2.5 → 0.2.6
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/README.md +6 -0
- package/bin/create-agdf.js +110 -8
- package/generated/.agdf/control/README.md +3 -0
- package/generated/.github/skills/agdf-gate-check/SKILL.md +2 -0
- package/generated/.github/skills/agdf-runtime-contract.md +4 -0
- package/generated/AGENTS.md +8 -1
- package/generated/plugins/agdf/.codex-plugin/plugin.json +1 -1
- package/generated/plugins/agdf/control/README.md +3 -0
- package/generated/plugins/agdf/meta/agdf-agent-router.md +8 -1
- package/generated/plugins/agdf/meta/agdf-plugin.definition.json +1 -1
- package/generated/plugins/agdf/meta/agdf-runtime-contract.md +4 -0
- package/generated/plugins/agdf/skills/gate-check/SKILL.md +2 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,6 +17,9 @@ Optional flags:
|
|
|
17
17
|
|
|
18
18
|
- `--dir <path>` write into a specific directory
|
|
19
19
|
- `--force` overwrite existing generated files
|
|
20
|
+
- `--language <de|en>` or `--lang <de|en>` persist the preferred AGDF artefact and chat language
|
|
21
|
+
|
|
22
|
+
If no language is provided, `create-agdf` derives the preference from the local system locale (`LC_ALL`, `LC_MESSAGES`, `LANG`, `LANGUAGE` or the Node.js runtime locale) and falls back to `en`.
|
|
20
23
|
|
|
21
24
|
## Targets and existing AGENTS.md
|
|
22
25
|
|
|
@@ -51,6 +54,7 @@ This writes:
|
|
|
51
54
|
|
|
52
55
|
- `.agdf/control/AGDF_RUN.md`
|
|
53
56
|
- `.agdf/control/MASTER_BACKLOG.md`
|
|
57
|
+
- `.agdf/control/config.json`
|
|
54
58
|
- `.agdf/control/templates/artefacts/UR.md`
|
|
55
59
|
- `.agdf/control/templates/artefacts/PRD.md`
|
|
56
60
|
- `.agdf/control/templates/artefacts/SD.md`
|
|
@@ -60,6 +64,8 @@ This writes:
|
|
|
60
64
|
- `.agdf/control/CONTEXT_GRAPH.md`
|
|
61
65
|
- `.agdf/control/AGENT_QUALITY_CONTRACTS.json`
|
|
62
66
|
|
|
67
|
+
`config.json` stores `artifact_language` and `chat_language` for governed work in the target repository. Runtime rules stay English so all AGDF surfaces share the same control contract.
|
|
68
|
+
|
|
63
69
|
Use `doctor` to check whether the live control state is actionable:
|
|
64
70
|
|
|
65
71
|
```bash
|
package/bin/create-agdf.js
CHANGED
|
@@ -128,17 +128,72 @@ Usage:
|
|
|
128
128
|
Options:
|
|
129
129
|
--dir <path> Write files into a specific directory
|
|
130
130
|
--force Overwrite existing generated files
|
|
131
|
+
--language <de|en>
|
|
132
|
+
Set AGDF chat and artefact language. Defaults to detected system locale.
|
|
133
|
+
--lang <de|en> Alias for --language
|
|
131
134
|
--json Print doctor, gate-check or delivery-map output as JSON
|
|
132
135
|
--help Show this help
|
|
133
136
|
`);
|
|
134
137
|
}
|
|
135
138
|
|
|
139
|
+
function normalizeLanguage(value) {
|
|
140
|
+
const normalized = String(value ?? "").trim().toLowerCase().replace("_", "-");
|
|
141
|
+
if (!normalized) return "";
|
|
142
|
+
if (normalized.startsWith("de")) return "de";
|
|
143
|
+
if (normalized.startsWith("en")) return "en";
|
|
144
|
+
return "";
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function detectSystemLocale() {
|
|
148
|
+
const envLocale = process.env.LC_ALL || process.env.LC_MESSAGES || process.env.LANG || process.env.LANGUAGE || "";
|
|
149
|
+
if (envLocale) return envLocale;
|
|
150
|
+
try {
|
|
151
|
+
return Intl.DateTimeFormat().resolvedOptions().locale || "";
|
|
152
|
+
} catch {
|
|
153
|
+
return "";
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
function resolveLanguagePreference(explicitLanguage) {
|
|
158
|
+
const explicit = normalizeLanguage(explicitLanguage);
|
|
159
|
+
if (explicit) {
|
|
160
|
+
return {
|
|
161
|
+
artifact_language: explicit,
|
|
162
|
+
chat_language: explicit,
|
|
163
|
+
runtime_language: "en",
|
|
164
|
+
source: "parameter",
|
|
165
|
+
detected_locale: detectSystemLocale() || "unknown",
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
const detectedLocale = detectSystemLocale();
|
|
170
|
+
const detected = normalizeLanguage(detectedLocale) || "en";
|
|
171
|
+
return {
|
|
172
|
+
artifact_language: detected,
|
|
173
|
+
chat_language: detected,
|
|
174
|
+
runtime_language: "en",
|
|
175
|
+
source: detectedLocale ? "system_locale" : "default",
|
|
176
|
+
detected_locale: detectedLocale || "unknown",
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
function languageConfigContent(languagePreference) {
|
|
181
|
+
return `${JSON.stringify({
|
|
182
|
+
artifact_language: languagePreference.artifact_language,
|
|
183
|
+
chat_language: languagePreference.chat_language,
|
|
184
|
+
runtime_language: languagePreference.runtime_language,
|
|
185
|
+
source: languagePreference.source,
|
|
186
|
+
detected_locale: languagePreference.detected_locale,
|
|
187
|
+
}, null, 2)}\n`;
|
|
188
|
+
}
|
|
189
|
+
|
|
136
190
|
function parseArgs(argv) {
|
|
137
191
|
const args = [...argv];
|
|
138
192
|
let target;
|
|
139
193
|
let dir = ".";
|
|
140
194
|
let force = false;
|
|
141
195
|
let json = false;
|
|
196
|
+
let language;
|
|
142
197
|
|
|
143
198
|
for (let i = 0; i < args.length; i += 1) {
|
|
144
199
|
const arg = args[i];
|
|
@@ -159,6 +214,22 @@ function parseArgs(argv) {
|
|
|
159
214
|
continue;
|
|
160
215
|
}
|
|
161
216
|
|
|
217
|
+
if (arg === "--language" || arg === "--lang") {
|
|
218
|
+
const next = args[i + 1];
|
|
219
|
+
if (!next) {
|
|
220
|
+
console.error(`Missing value for ${arg}`);
|
|
221
|
+
process.exit(1);
|
|
222
|
+
}
|
|
223
|
+
const normalized = normalizeLanguage(next);
|
|
224
|
+
if (!normalized) {
|
|
225
|
+
console.error("Unsupported language. Use --language de or --language en.");
|
|
226
|
+
process.exit(1);
|
|
227
|
+
}
|
|
228
|
+
language = normalized;
|
|
229
|
+
i += 1;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
|
|
162
233
|
if (arg === "--dir") {
|
|
163
234
|
const next = args[i + 1];
|
|
164
235
|
if (!next) {
|
|
@@ -201,6 +272,7 @@ function parseArgs(argv) {
|
|
|
201
272
|
dir: resolve(process.cwd(), dir),
|
|
202
273
|
force,
|
|
203
274
|
json,
|
|
275
|
+
language: resolveLanguagePreference(language),
|
|
204
276
|
};
|
|
205
277
|
}
|
|
206
278
|
|
|
@@ -219,10 +291,18 @@ function writeGeneratedFile(targetDir, relativePath, content, force) {
|
|
|
219
291
|
writeFileSync(outputPath, content, "utf8");
|
|
220
292
|
}
|
|
221
293
|
|
|
222
|
-
function
|
|
294
|
+
function addLanguageConfig(files, languagePreference) {
|
|
295
|
+
files.push({
|
|
296
|
+
path: join(".agdf", "control", "config.json"),
|
|
297
|
+
content: languageConfigContent(languagePreference),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
function generatedFilesForTarget(target, targetDir, force, languagePreference) {
|
|
223
302
|
const files = [];
|
|
224
303
|
|
|
225
304
|
if (target === "init") {
|
|
305
|
+
addLanguageConfig(files, languagePreference);
|
|
226
306
|
files.push({
|
|
227
307
|
path: join(".agdf", "control", "README.md"),
|
|
228
308
|
content: loadAsset(join(".agdf", "control", "README.md")),
|
|
@@ -246,6 +326,7 @@ function generatedFilesForTarget(target, targetDir, force) {
|
|
|
246
326
|
}
|
|
247
327
|
|
|
248
328
|
if (target === "codex" || target === "both") {
|
|
329
|
+
addLanguageConfig(files, languagePreference);
|
|
249
330
|
for (const codexPath of codexPluginFiles) {
|
|
250
331
|
files.push({
|
|
251
332
|
path: codexPath,
|
|
@@ -255,6 +336,7 @@ function generatedFilesForTarget(target, targetDir, force) {
|
|
|
255
336
|
}
|
|
256
337
|
|
|
257
338
|
if (target === "copilot" || target === "both") {
|
|
339
|
+
if (target !== "both") addLanguageConfig(files, languagePreference);
|
|
258
340
|
const agentsTargetPath = existsSync(join(targetDir, "AGENTS.md")) && !force ? agdfFragmentPath : "AGENTS.md";
|
|
259
341
|
files.push({
|
|
260
342
|
path: agentsTargetPath,
|
|
@@ -297,6 +379,11 @@ function printNextSteps(target, destination, files, wroteAgentsFragment) {
|
|
|
297
379
|
|
|
298
380
|
console.log("");
|
|
299
381
|
console.log("Next steps:");
|
|
382
|
+
const languageConfig = files.find((file) => file.path === join(".agdf", "control", "config.json"));
|
|
383
|
+
if (languageConfig) {
|
|
384
|
+
const language = JSON.parse(languageConfig.content);
|
|
385
|
+
console.log(`- AGDF language preference: artefacts=${language.artifact_language}, chat=${language.chat_language}, runtime=${language.runtime_language}.`);
|
|
386
|
+
}
|
|
300
387
|
if (target === "init") {
|
|
301
388
|
console.log("- Fill .agdf/control/AGDF_RUN.md with the current gate, evidence and next allowed action.");
|
|
302
389
|
console.log("- Run npm create agdf@latest doctor to check the control state before the next agent run.");
|
|
@@ -1026,18 +1113,33 @@ function evaluateGateCheck(targetDir) {
|
|
|
1026
1113
|
? transitionDecision.next_allowed_action
|
|
1027
1114
|
: runState.next_allowed_action;
|
|
1028
1115
|
|
|
1029
|
-
if (doctorBlocker) {
|
|
1116
|
+
if (doctorBlocker?.code === "AGDF_CONTROL_FILE_MISSING") {
|
|
1117
|
+
status = "blocked";
|
|
1118
|
+
blockingReason = doctorBlocker.code;
|
|
1119
|
+
currentGate = "UR";
|
|
1120
|
+
missingApproval = "Approval: UR";
|
|
1121
|
+
allowed = [
|
|
1122
|
+
"initialize the AGDF control scaffold with npm create agdf@latest init",
|
|
1123
|
+
"draft and persist the minimal UR for the requested change",
|
|
1124
|
+
"link the UR from AGDF_RUN.md and MASTER_BACKLOG.md",
|
|
1125
|
+
"request exact approval: Approval: UR",
|
|
1126
|
+
];
|
|
1127
|
+
forbidden = ["create PRD", "create SD", "create TP", "run Brownfield Analysis", "implement code", "claim QA or release readiness"];
|
|
1128
|
+
nextAllowedAction = "Initialize .agdf/control, draft the minimal UR for the request, then ask for exact approval: Approval: UR.";
|
|
1129
|
+
} else if (doctorBlocker) {
|
|
1030
1130
|
status = "blocked";
|
|
1031
1131
|
blockingReason = doctorBlocker.code;
|
|
1032
|
-
allowed = ["repair the AGDF control scaffold", "run doctor again"];
|
|
1033
|
-
forbidden = ["
|
|
1132
|
+
allowed = ["repair the AGDF control scaffold", ...transitionDecision.allowed, "run doctor again"];
|
|
1133
|
+
forbidden = ["create later-gate artefacts beyond the current allowed gate", "implement gated work", "claim QA or release readiness"];
|
|
1034
1134
|
nextAllowedAction = doctorBlocker.next_step;
|
|
1035
1135
|
} else if (doctorRevise) {
|
|
1036
1136
|
status = "blocked";
|
|
1037
1137
|
blockingReason = doctorRevise.code;
|
|
1038
|
-
allowed = [...new Set(["
|
|
1039
|
-
forbidden = ["
|
|
1040
|
-
nextAllowedAction =
|
|
1138
|
+
allowed = [...new Set(["complete the current control-state fields", ...transitionDecision.allowed, "run doctor again"])];
|
|
1139
|
+
forbidden = ["create later-gate artefacts beyond the current allowed gate", "implement gated work before the gate allows it", "claim QA or release readiness"];
|
|
1140
|
+
nextAllowedAction = transitionDecision.current_gate === "UR"
|
|
1141
|
+
? "Fill the current UR control state, persist the UR draft, and request exact approval: Approval: UR."
|
|
1142
|
+
: doctorRevise.next_step;
|
|
1041
1143
|
}
|
|
1042
1144
|
|
|
1043
1145
|
return {
|
|
@@ -1183,7 +1285,7 @@ function main() {
|
|
|
1183
1285
|
process.exit(report.status === "block" ? 2 : 0);
|
|
1184
1286
|
}
|
|
1185
1287
|
|
|
1186
|
-
const files = generatedFilesForTarget(options.target, options.dir, options.force);
|
|
1288
|
+
const files = generatedFilesForTarget(options.target, options.dir, options.force, options.language);
|
|
1187
1289
|
const wroteAgentsFragment = files.some(file => file.path === agdfFragmentPath);
|
|
1188
1290
|
|
|
1189
1291
|
try {
|
|
@@ -8,6 +8,7 @@ Use this scaffold when a target repository should keep AGDF state outside chat h
|
|
|
8
8
|
|
|
9
9
|
| File | Purpose |
|
|
10
10
|
|---|---|
|
|
11
|
+
| `config.json` | Project language preference for generated AGDF artefacts and user-facing chat |
|
|
11
12
|
| `templates/AGDF_RUN.md` | Template for current run state: mode, gate, approvals, evidence, risks, next allowed action |
|
|
12
13
|
| `templates/MASTER_BACKLOG.md` | Template for the living backlog pointer: active initiatives and current UR/Brownfield/PRD/SD/TP/QA/OR artefacts |
|
|
13
14
|
| `templates/artefacts/UR.md` | Template for the durable user requirement artefact of a work item |
|
|
@@ -26,6 +27,7 @@ Use this scaffold when a target repository should keep AGDF state outside chat h
|
|
|
26
27
|
```text
|
|
27
28
|
.agdf/
|
|
28
29
|
control/
|
|
30
|
+
config.json
|
|
29
31
|
AGDF_RUN.md
|
|
30
32
|
MASTER_BACKLOG.md
|
|
31
33
|
artefacts/
|
|
@@ -64,6 +66,7 @@ npm create agdf@latest gate-check --json
|
|
|
64
66
|
## Operating Rules
|
|
65
67
|
|
|
66
68
|
- `AGDF_RUN.md` is the current run dashboard.
|
|
69
|
+
- `config.json` stores the project preference for artefact and chat language; runtime rules stay English.
|
|
67
70
|
- `MASTER_BACKLOG.md` points to active delivery work; detailed artefacts live beside the work item.
|
|
68
71
|
- Brownfield Review records the post-UR Mode/Slice Decision before PRD depth or Quick Task execution is chosen.
|
|
69
72
|
- UR, PRD, SD, TP and QA decisions require durable artefacts or links to the authoritative repository source of truth before the next gate can open.
|
|
@@ -61,6 +61,7 @@ The CLI reports are validators and JSON evidence, not the primary user experienc
|
|
|
61
61
|
12. Approval text and durable artefact presence are separate requirements for UR, PRD, SD, TP and QA report decisions. Approval text without the corresponding persisted or linked artefact keeps the current gate at that gate.
|
|
62
62
|
13. After Brownfield Review, decide the process size before drafting PRD or implementing: `quick_task | structured_slice | structured_delivery | block`.
|
|
63
63
|
14. The Mode/Slice Decision must be visible and evidenced before any Quick Task execution, PRD shortcut or implementation. A decision value without scope reason and evidence is still missing.
|
|
64
|
+
15. Missing or incomplete control state must not push work back to the user. If the next allowed step is an artefact draft, the agent may initialize the scaffold, draft the current allowed artefact, link it, and then request the exact approval. Implementation remains forbidden.
|
|
64
65
|
|
|
65
66
|
## Gate Evaluation
|
|
66
67
|
|
|
@@ -107,6 +108,7 @@ If a status is not explicit, do not assume it is satisfied.
|
|
|
107
108
|
8. Treat a generic "start", "continue" or "leg los" request as a request to perform only the current next allowed action.
|
|
108
109
|
9. After Brownfield Review, choose the smallest safe process path before creating later artefacts.
|
|
109
110
|
10. If the selected path is not visibly recorded with scope reason and evidence, keep the run at `Mode/Slice Decision`.
|
|
111
|
+
11. When `.agdf/control/` is missing or incomplete, make the next allowed artefact action explicit. For a fresh request, that means initialize control state, draft the minimal UR, then request `Approval: UR`.
|
|
110
112
|
|
|
111
113
|
## Output
|
|
112
114
|
Keep the result short and operational:
|
|
@@ -25,6 +25,8 @@ Use this compact output shape when no formal gate artefact is required:
|
|
|
25
25
|
- `risk`: remaining risk or `none`
|
|
26
26
|
- `next_step`: the single next useful action or `none`
|
|
27
27
|
|
|
28
|
+
Do not add a separate `Quality outlook` line for pure Quick Tasks unless the task became a relevant run.
|
|
29
|
+
|
|
28
30
|
## Relevant Run
|
|
29
31
|
|
|
30
32
|
A relevant run is any run that changes durable state, creates or updates an AGDF artefact, changes code or runtime behaviour, performs a gate decision, blocks on a governance condition, produces QA/UAT/release evidence, or closes a delivery slice.
|
|
@@ -43,6 +45,7 @@ When in doubt, use a short OR-lite only if it clarifies gate state, evidence, ri
|
|
|
43
45
|
- For UR, PRD, SD, TP and QA, approval and durable artefact presence are separate requirements. A gate is not satisfied by approval text alone when its artefact is missing from `.agdf/control/` or not linked to the authoritative repository SoT.
|
|
44
46
|
- Approval of one user gate permits work on the next allowed gate artefact or required internal step only. It does not permit implementation unless the approved gate is `TP` and required internal implementation prerequisites are satisfied.
|
|
45
47
|
- Gates must never be skipped or inferred from urgency, tone, chat history, task wording or an instruction to "start". The next allowed action is always the next unsatisfied gate or internal mandatory step.
|
|
48
|
+
- Missing control files or missing current-state fields do not forbid the agent from preparing the current allowed artefact. They forbid later-gate work and implementation. For a fresh request, the allowed work is to initialize `.agdf/control/`, draft the minimal UR, link it, and request `Approval: UR`.
|
|
46
49
|
- `Approval: UR` permits Brownfield Review after G-00 first, then a Mode/Slice Decision. It never permits implementation by itself.
|
|
47
50
|
- PRD, SD and TP depth is chosen after Brownfield Review through the Mode/Slice Decision, not before existing-system impact is understood.
|
|
48
51
|
- The Mode/Slice Decision must be visible before any PRD shortcut, Quick Task execution or implementation: record the decision, required next gate, scope reason and evidence in `AGDF_RUN.md` or an equivalent linked control artefact.
|
|
@@ -137,6 +140,7 @@ Do not create a new node for a mere version, a general chat summary, or a local
|
|
|
137
140
|
|
|
138
141
|
When a repository needs durable AGDF state, use the plugin-local `control/` scaffold as the starting point.
|
|
139
142
|
|
|
143
|
+
- `config.json` stores project language preferences. Use `artifact_language` for generated AGDF artefacts and `chat_language` for user-facing responses unless the user explicitly asks otherwise. Runtime rules remain English.
|
|
140
144
|
- `AGDF_RUN.md` is the current run dashboard.
|
|
141
145
|
- `MASTER_BACKLOG.md` is the living pointer for active delivery work.
|
|
142
146
|
- `BROWNFIELD_REVIEW.md` records the post-UR existing-system view and Mode/Slice Decision before PRD depth or Quick Task execution is chosen.
|
package/generated/AGENTS.md
CHANGED
|
@@ -76,7 +76,14 @@ AGDF is a native agent workflow first: read the live control state, apply the ac
|
|
|
76
76
|
Use `doctor`, `gate-check --json` or `delivery-map --json` as validators when a machine-readable proof is useful, not as a substitute for the router or skills.
|
|
77
77
|
|
|
78
78
|
## Closeout
|
|
79
|
-
|
|
79
|
+
For Quick Task Mode, close with the Runtime Contract mini-output only:
|
|
80
|
+
|
|
81
|
+
- `result`
|
|
82
|
+
- `evidence`
|
|
83
|
+
- `risk`
|
|
84
|
+
- `next_step`
|
|
85
|
+
|
|
86
|
+
For relevant runs that change durable state, code, artefacts or gate status:
|
|
80
87
|
|
|
81
88
|
- run relevant checks or state the test gap
|
|
82
89
|
- never commit, push or open a PR automatically
|
|
@@ -8,6 +8,7 @@ Use this scaffold when a target repository should keep AGDF state outside chat h
|
|
|
8
8
|
|
|
9
9
|
| File | Purpose |
|
|
10
10
|
|---|---|
|
|
11
|
+
| `config.json` | Project language preference for generated AGDF artefacts and user-facing chat |
|
|
11
12
|
| `templates/AGDF_RUN.md` | Template for current run state: mode, gate, approvals, evidence, risks, next allowed action |
|
|
12
13
|
| `templates/MASTER_BACKLOG.md` | Template for the living backlog pointer: active initiatives and current UR/Brownfield/PRD/SD/TP/QA/OR artefacts |
|
|
13
14
|
| `templates/artefacts/UR.md` | Template for the durable user requirement artefact of a work item |
|
|
@@ -26,6 +27,7 @@ Use this scaffold when a target repository should keep AGDF state outside chat h
|
|
|
26
27
|
```text
|
|
27
28
|
.agdf/
|
|
28
29
|
control/
|
|
30
|
+
config.json
|
|
29
31
|
AGDF_RUN.md
|
|
30
32
|
MASTER_BACKLOG.md
|
|
31
33
|
artefacts/
|
|
@@ -64,6 +66,7 @@ npm create agdf@latest gate-check --json
|
|
|
64
66
|
## Operating Rules
|
|
65
67
|
|
|
66
68
|
- `AGDF_RUN.md` is the current run dashboard.
|
|
69
|
+
- `config.json` stores the project preference for artefact and chat language; runtime rules stay English.
|
|
67
70
|
- `MASTER_BACKLOG.md` points to active delivery work; detailed artefacts live beside the work item.
|
|
68
71
|
- Brownfield Review records the post-UR Mode/Slice Decision before PRD depth or Quick Task execution is chosen.
|
|
69
72
|
- UR, PRD, SD, TP and QA decisions require durable artefacts or links to the authoritative repository source of truth before the next gate can open.
|
|
@@ -77,7 +77,14 @@ AGDF is a native agent workflow first: read the live control state, apply the ac
|
|
|
77
77
|
Use `doctor`, `gate-check --json` or `delivery-map --json` as validators when a machine-readable proof is useful, not as a substitute for the router or skills.
|
|
78
78
|
|
|
79
79
|
## Closeout
|
|
80
|
-
|
|
80
|
+
For Quick Task Mode, close with the Runtime Contract mini-output only:
|
|
81
|
+
|
|
82
|
+
- `result`
|
|
83
|
+
- `evidence`
|
|
84
|
+
- `risk`
|
|
85
|
+
- `next_step`
|
|
86
|
+
|
|
87
|
+
For relevant runs that change durable state, code, artefacts or gate status:
|
|
81
88
|
|
|
82
89
|
- run relevant checks or state the test gap
|
|
83
90
|
- never commit, push or open a PR automatically
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
3
|
"id": "agdf",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.6",
|
|
5
5
|
"displayName": "AI Governance & Delivery Framework",
|
|
6
6
|
"developerName": "AI-native Governance & Delivery Framework",
|
|
7
7
|
"description": "Codex-first workflow skills for gated, auditable AI-assisted software delivery.",
|
|
@@ -25,6 +25,8 @@ Use this compact output shape when no formal gate artefact is required:
|
|
|
25
25
|
- `risk`: remaining risk or `none`
|
|
26
26
|
- `next_step`: the single next useful action or `none`
|
|
27
27
|
|
|
28
|
+
Do not add a separate `Quality outlook` line for pure Quick Tasks unless the task became a relevant run.
|
|
29
|
+
|
|
28
30
|
## Relevant Run
|
|
29
31
|
|
|
30
32
|
A relevant run is any run that changes durable state, creates or updates an AGDF artefact, changes code or runtime behaviour, performs a gate decision, blocks on a governance condition, produces QA/UAT/release evidence, or closes a delivery slice.
|
|
@@ -43,6 +45,7 @@ When in doubt, use a short OR-lite only if it clarifies gate state, evidence, ri
|
|
|
43
45
|
- For UR, PRD, SD, TP and QA, approval and durable artefact presence are separate requirements. A gate is not satisfied by approval text alone when its artefact is missing from `.agdf/control/` or not linked to the authoritative repository SoT.
|
|
44
46
|
- Approval of one user gate permits work on the next allowed gate artefact or required internal step only. It does not permit implementation unless the approved gate is `TP` and required internal implementation prerequisites are satisfied.
|
|
45
47
|
- Gates must never be skipped or inferred from urgency, tone, chat history, task wording or an instruction to "start". The next allowed action is always the next unsatisfied gate or internal mandatory step.
|
|
48
|
+
- Missing control files or missing current-state fields do not forbid the agent from preparing the current allowed artefact. They forbid later-gate work and implementation. For a fresh request, the allowed work is to initialize `.agdf/control/`, draft the minimal UR, link it, and request `Approval: UR`.
|
|
46
49
|
- `Approval: UR` permits Brownfield Review after G-00 first, then a Mode/Slice Decision. It never permits implementation by itself.
|
|
47
50
|
- PRD, SD and TP depth is chosen after Brownfield Review through the Mode/Slice Decision, not before existing-system impact is understood.
|
|
48
51
|
- The Mode/Slice Decision must be visible before any PRD shortcut, Quick Task execution or implementation: record the decision, required next gate, scope reason and evidence in `AGDF_RUN.md` or an equivalent linked control artefact.
|
|
@@ -137,6 +140,7 @@ Do not create a new node for a mere version, a general chat summary, or a local
|
|
|
137
140
|
|
|
138
141
|
When a repository needs durable AGDF state, use the plugin-local `control/` scaffold as the starting point.
|
|
139
142
|
|
|
143
|
+
- `config.json` stores project language preferences. Use `artifact_language` for generated AGDF artefacts and `chat_language` for user-facing responses unless the user explicitly asks otherwise. Runtime rules remain English.
|
|
140
144
|
- `AGDF_RUN.md` is the current run dashboard.
|
|
141
145
|
- `MASTER_BACKLOG.md` is the living pointer for active delivery work.
|
|
142
146
|
- `BROWNFIELD_REVIEW.md` records the post-UR existing-system view and Mode/Slice Decision before PRD depth or Quick Task execution is chosen.
|
|
@@ -61,6 +61,7 @@ The CLI reports are validators and JSON evidence, not the primary user experienc
|
|
|
61
61
|
12. Approval text and durable artefact presence are separate requirements for UR, PRD, SD, TP and QA report decisions. Approval text without the corresponding persisted or linked artefact keeps the current gate at that gate.
|
|
62
62
|
13. After Brownfield Review, decide the process size before drafting PRD or implementing: `quick_task | structured_slice | structured_delivery | block`.
|
|
63
63
|
14. The Mode/Slice Decision must be visible and evidenced before any Quick Task execution, PRD shortcut or implementation. A decision value without scope reason and evidence is still missing.
|
|
64
|
+
15. Missing or incomplete control state must not push work back to the user. If the next allowed step is an artefact draft, the agent may initialize the scaffold, draft the current allowed artefact, link it, and then request the exact approval. Implementation remains forbidden.
|
|
64
65
|
|
|
65
66
|
## Gate Evaluation
|
|
66
67
|
|
|
@@ -107,6 +108,7 @@ If a status is not explicit, do not assume it is satisfied.
|
|
|
107
108
|
8. Treat a generic "start", "continue" or "leg los" request as a request to perform only the current next allowed action.
|
|
108
109
|
9. After Brownfield Review, choose the smallest safe process path before creating later artefacts.
|
|
109
110
|
10. If the selected path is not visibly recorded with scope reason and evidence, keep the run at `Mode/Slice Decision`.
|
|
111
|
+
11. When `.agdf/control/` is missing or incomplete, make the next allowed artefact action explicit. For a fresh request, that means initialize control state, draft the minimal UR, then request `Approval: UR`.
|
|
110
112
|
|
|
111
113
|
## Output
|
|
112
114
|
Keep the result short and operational:
|
package/package.json
CHANGED