mandrel 1.82.0 → 1.83.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.
- package/.agents/README.md +41 -0
- package/.agents/docs/SDLC.md +4 -2
- package/.agents/docs/agentrc-reference.json +10 -2
- package/.agents/docs/execution-reference.md +52 -0
- package/.agents/instructions.md +76 -38
- package/.agents/schemas/agentrc.schema.json +31 -3
- package/.agents/schemas/qa-ledger.schema.json +2 -2
- package/.agents/scripts/epic-deliver-prepare.js +41 -1
- package/.agents/scripts/lib/config/explain.js +4 -1
- package/.agents/scripts/lib/config-settings-schema.js +25 -1
- package/.agents/scripts/lib/epic-body-sections.js +88 -0
- package/.agents/scripts/lib/findings/promote-finding.js +3 -3
- package/.agents/scripts/lib/findings/severity.js +5 -6
- package/.agents/scripts/lib/orchestration/check-baselines/phases/evaluate.js +65 -2
- package/.agents/scripts/lib/orchestration/context-hydration-engine.js +96 -11
- package/.agents/scripts/lib/orchestration/doc-reader.js +29 -0
- package/.agents/scripts/lib/orchestration/docs-digest.js +134 -0
- package/.agents/scripts/lib/orchestration/story-close/baseline-attribution/phases/refresh-commit.js +15 -1
- package/.agents/scripts/lib/qa/console-allowlist.js +5 -4
- package/.agents/scripts/lib/qa/resolve-qa-contract.js +144 -8
- package/.agents/skills/core/epic-plan-consolidate/SKILL.md +7 -5
- package/.agents/skills/core/epic-plan-consolidate/examples.md +51 -0
- package/.agents/skills/core/epic-plan-decompose-author/SKILL.md +4 -22
- package/.agents/skills/core/epic-plan-decompose-author/examples.md +47 -0
- package/.agents/skills/core/epic-plan-premortem/SKILL.md +9 -8
- package/.agents/skills/core/epic-plan-premortem/examples.md +53 -0
- package/.agents/skills/core/epic-plan-spec-author/SKILL.md +21 -81
- package/.agents/skills/core/epic-plan-spec-author/examples.md +91 -0
- package/.agents/skills/skills.index.json +3 -3
- package/.agents/skills/stack/qa/qa-explore-driving/SKILL.md +52 -38
- package/.agents/workflows/helpers/deliver-epic-reference.md +514 -0
- package/.agents/workflows/helpers/deliver-epic.md +164 -469
- package/.agents/workflows/helpers/epic-deliver-story.md +35 -11
- package/.agents/workflows/helpers/plan-epic-reference.md +136 -0
- package/.agents/workflows/helpers/plan-epic.md +56 -186
- package/.agents/workflows/helpers/plan-story.md +31 -61
- package/.agents/workflows/helpers/qa-run-scenario.md +194 -0
- package/.agents/workflows/helpers/scope-triage-gate.md +97 -0
- package/.agents/workflows/helpers/single-story-deliver-reference.md +423 -0
- package/.agents/workflows/helpers/single-story-deliver.md +128 -392
- package/.agents/workflows/qa-explore.md +63 -32
- package/.agents/workflows/qa-run.md +293 -130
- package/docs/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/.agents/schemas/qa-finding.schema.json +0 -133
|
@@ -1,133 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
3
|
-
"title": "QaFinding",
|
|
4
|
-
"description": "Structured `F#` finding emitted by the agent-driven QA harness (`.agents/workflows/qa-run.md`, Epic #3214). One object per genuine problem surfaced while sweeping a consumer's Gherkin scenarios through chrome-devtools MCP: a non-allowlisted console error, a failed/error-status network request, or a gross design-token violation. Findings are validated against this schema before they are bundled by likely root cause into operator-approved follow-up ticket drafts (the harness never files tickets autonomously). The shape mirrors the F# convergence in Tech Spec #3285 and is produced in its console-derived subset by `.agents/scripts/lib/qa/console-allowlist.js`.",
|
|
5
|
-
"type": "object",
|
|
6
|
-
"additionalProperties": false,
|
|
7
|
-
"required": [
|
|
8
|
-
"id",
|
|
9
|
-
"classification",
|
|
10
|
-
"surface",
|
|
11
|
-
"symptom",
|
|
12
|
-
"likelyRootCause",
|
|
13
|
-
"disposition",
|
|
14
|
-
"acceptance",
|
|
15
|
-
"evidence"
|
|
16
|
-
],
|
|
17
|
-
"properties": {
|
|
18
|
-
"id": {
|
|
19
|
-
"type": "string",
|
|
20
|
-
"description": "Stable finding identifier, assigned `F1`, `F2`, … in capture order across a surface.",
|
|
21
|
-
"pattern": "^F[0-9]+$"
|
|
22
|
-
},
|
|
23
|
-
"classification": {
|
|
24
|
-
"type": "string",
|
|
25
|
-
"description": "What kind of problem this finding represents. `console-error` and `network-error` are emitted by the instrumentation layer; `design-token` by the visual-inspection layer; `behavior` for a semantic Then-assertion failure.",
|
|
26
|
-
"enum": ["console-error", "network-error", "design-token", "behavior"]
|
|
27
|
-
},
|
|
28
|
-
"surface": {
|
|
29
|
-
"type": "string",
|
|
30
|
-
"description": "The surface (route/screen label) the finding was observed on. Falls back to `unknown` when the harness cannot resolve a surface label.",
|
|
31
|
-
"minLength": 1
|
|
32
|
-
},
|
|
33
|
-
"symptom": {
|
|
34
|
-
"type": "string",
|
|
35
|
-
"description": "A one-line, user-visible description of the problem. Captured evidence (console/network) MUST already be scrubbed of tokens, session cookies, and PII per `.agents/rules/security-baseline.md` before this is rendered."
|
|
36
|
-
},
|
|
37
|
-
"likelyRootCause": {
|
|
38
|
-
"type": ["string", "null"],
|
|
39
|
-
"description": "The agent's best assessment of the underlying cause, or `null` when not yet inferred. Used to bundle findings into follow-up tickets in the assisted drafting step."
|
|
40
|
-
},
|
|
41
|
-
"disposition": {
|
|
42
|
-
"type": "string",
|
|
43
|
-
"description": "Whether the finding blocks the scenario (`blocker`) or is a deferred follow-up (`follow-up`).",
|
|
44
|
-
"enum": ["blocker", "follow-up"]
|
|
45
|
-
},
|
|
46
|
-
"acceptance": {
|
|
47
|
-
"type": ["string", "null"],
|
|
48
|
-
"description": "The acceptance condition that would close the follow-up this finding seeds, or `null` when the finding has not yet been promoted to a draft."
|
|
49
|
-
},
|
|
50
|
-
"foldsInto": {
|
|
51
|
-
"type": "string",
|
|
52
|
-
"description": "Optional. The id of another finding this one is a duplicate of, or folds into during root-cause bundling. Omit for a standalone finding.",
|
|
53
|
-
"pattern": "^F[0-9]+$"
|
|
54
|
-
},
|
|
55
|
-
"security": {
|
|
56
|
-
"type": "boolean",
|
|
57
|
-
"description": "Optional. `true` when the finding has a security dimension (e.g. a leaked token, an auth boundary failure, an injection-prone request) and MUST be routed with security baseline scrutiny. Omit or `false` for a non-security finding."
|
|
58
|
-
},
|
|
59
|
-
"routedTo": {
|
|
60
|
-
"type": "object",
|
|
61
|
-
"description": "Optional finding-to-issue link recording where the finding was routed once it is promoted to a follow-up ticket draft. Omit until the finding has been filed. The same link shape is mirrored on `qa-ledger.schema.json`.",
|
|
62
|
-
"additionalProperties": false,
|
|
63
|
-
"required": ["issue", "url", "kind"],
|
|
64
|
-
"properties": {
|
|
65
|
-
"issue": {
|
|
66
|
-
"type": "integer",
|
|
67
|
-
"description": "The GitHub issue number the finding was routed to.",
|
|
68
|
-
"minimum": 1
|
|
69
|
-
},
|
|
70
|
-
"url": {
|
|
71
|
-
"type": "string",
|
|
72
|
-
"description": "The canonical URL of the routed issue.",
|
|
73
|
-
"minLength": 1
|
|
74
|
-
},
|
|
75
|
-
"kind": {
|
|
76
|
-
"type": "string",
|
|
77
|
-
"description": "The kind of ticket the finding was routed to: a `story`, an `epic`, or a bare `issue`.",
|
|
78
|
-
"enum": ["story", "epic", "issue"]
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
},
|
|
82
|
-
"evidence": {
|
|
83
|
-
"type": "object",
|
|
84
|
-
"description": "Raw signal supporting the finding. Both arrays are always present (possibly empty) so a console-only or network-only finding still carries a well-formed evidence envelope.",
|
|
85
|
-
"additionalProperties": false,
|
|
86
|
-
"required": ["console", "network"],
|
|
87
|
-
"properties": {
|
|
88
|
-
"console": {
|
|
89
|
-
"type": "array",
|
|
90
|
-
"description": "Captured console messages supporting the finding.",
|
|
91
|
-
"items": {
|
|
92
|
-
"type": "object",
|
|
93
|
-
"additionalProperties": false,
|
|
94
|
-
"required": ["level", "text"],
|
|
95
|
-
"properties": {
|
|
96
|
-
"level": {
|
|
97
|
-
"type": "string",
|
|
98
|
-
"description": "Console message level (e.g. `error`, `severe`, `warning`)."
|
|
99
|
-
},
|
|
100
|
-
"text": {
|
|
101
|
-
"type": "string",
|
|
102
|
-
"description": "Console message text, scrubbed of secrets and PII."
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
},
|
|
107
|
-
"network": {
|
|
108
|
-
"type": "array",
|
|
109
|
-
"description": "Captured network requests supporting the finding.",
|
|
110
|
-
"items": {
|
|
111
|
-
"type": "object",
|
|
112
|
-
"additionalProperties": false,
|
|
113
|
-
"required": ["url", "status"],
|
|
114
|
-
"properties": {
|
|
115
|
-
"url": {
|
|
116
|
-
"type": "string",
|
|
117
|
-
"description": "Request URL, scrubbed of secrets and PII (e.g. query-string tokens)."
|
|
118
|
-
},
|
|
119
|
-
"status": {
|
|
120
|
-
"type": "integer",
|
|
121
|
-
"description": "HTTP status code of the response (0 when the request never completed)."
|
|
122
|
-
},
|
|
123
|
-
"method": {
|
|
124
|
-
"type": "string",
|
|
125
|
-
"description": "Optional HTTP method (e.g. `GET`, `POST`)."
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|