@drafthq/draft 3.6.0 → 3.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/README.md +28 -49
- package/bin/README.md +47 -1
- package/cli/src/installer.js +1 -1
- package/cli/src/lib/cursor-registry.js +10 -0
- package/core/agents/architect.md +21 -9
- package/core/agents/debugger.md +5 -0
- package/core/agents/ops.md +7 -2
- package/core/agents/planner.md +7 -0
- package/core/agents/rca.md +14 -3
- package/core/agents/reviewer.md +1 -0
- package/core/agents/writer.md +6 -0
- package/core/knowledge-base.md +22 -3
- package/core/methodology.md +30 -5
- package/core/shared/condensation.md +27 -17
- package/core/shared/context-verify.md +3 -1
- package/core/shared/cross-skill-dispatch.md +7 -3
- package/core/shared/draft-context-loading.md +3 -0
- package/core/shared/git-report-metadata.md +1 -0
- package/core/shared/graph-query.md +0 -2
- package/core/shared/graph-usage-report.md +1 -1
- package/core/shared/jira-sync.md +10 -6
- package/core/shared/okf-retrieval.md +1 -1
- package/core/shared/parallel-analysis.md +14 -7
- package/core/shared/pattern-learning.md +2 -0
- package/core/shared/template-contract.md +1 -1
- package/core/shared/vcs-commands.md +5 -2
- package/core/templates/ai-context.md +3 -2
- package/core/templates/ai-profile.md +7 -0
- package/core/templates/architecture.md +6 -2
- package/core/templates/discovery.md +1 -1
- package/core/templates/guardrails.md +9 -0
- package/core/templates/hld.md +5 -4
- package/core/templates/intake-questions.md +45 -0
- package/core/templates/jira.md +11 -2
- package/core/templates/lld.md +8 -5
- package/core/templates/okf/concept.md +0 -1
- package/core/templates/product.md +11 -2
- package/core/templates/rca.md +6 -0
- package/core/templates/service-index.md +1 -0
- package/core/templates/spec.md +15 -0
- package/core/templates/tech-stack.md +12 -0
- package/core/templates/workflow.md +20 -0
- package/integrations/agents/AGENTS.md +1272 -292
- package/integrations/copilot/.github/copilot-instructions.md +1272 -292
- package/package.json +1 -1
- package/scripts/fetch-memory-engine.sh +24 -6
- package/scripts/lib.sh +11 -4
- package/scripts/tools/_graph_queries.sh +10 -3
- package/scripts/tools/_lib.sh +33 -11
- package/scripts/tools/check-repo-size.sh +125 -0
- package/scripts/tools/check-skill-line-caps.sh +1 -2
- package/scripts/tools/check-template-noop.sh +0 -1
- package/scripts/tools/classify-files.sh +2 -2
- package/scripts/tools/cycle-detect.sh +16 -8
- package/scripts/tools/fix-whitespace.sh +3 -0
- package/scripts/tools/git-metadata.sh +6 -0
- package/scripts/tools/graph-arch.sh +1 -1
- package/scripts/tools/graph-callers.sh +6 -3
- package/scripts/tools/graph-impact.sh +4 -2
- package/scripts/tools/graph-init.sh +12 -8
- package/scripts/tools/graph-preflight.sh +3 -0
- package/scripts/tools/graph-query.sh +70 -7
- package/scripts/tools/graph-snapshot.sh +29 -5
- package/scripts/tools/hotspot-rank.sh +24 -9
- package/scripts/tools/install-smoke-test.sh +223 -0
- package/scripts/tools/mermaid-from-graph.sh +28 -11
- package/scripts/tools/migrate-track-frontmatter.sh +9 -10
- package/scripts/tools/okf-coverage-check.sh +4 -3
- package/scripts/tools/okf-fix-links.sh +18 -93
- package/scripts/tools/okf-plan-concepts.sh +5 -8
- package/scripts/tools/okf-render-views.sh +19 -14
- package/scripts/tools/okf-validate-quality.sh +13 -2
- package/scripts/tools/okf-validate.sh +13 -2
- package/scripts/tools/parse-git-log.sh +19 -1
- package/scripts/tools/resolve-tools.sh +24 -8
- package/scripts/tools/verify-citations.sh +1 -2
- package/scripts/tools/verify-doc-anchors.sh +13 -33
- package/scripts/tools/verify-graph-binary.sh +13 -3
- package/skills/GRAPH.md +21 -10
- package/skills/adr/SKILL.md +24 -6
- package/skills/assist-review/SKILL.md +2 -1
- package/skills/bughunt/SKILL.md +54 -11
- package/skills/bughunt/references/regression-tests.md +14 -4
- package/skills/change/SKILL.md +19 -9
- package/skills/coverage/SKILL.md +26 -10
- package/skills/debug/SKILL.md +12 -2
- package/skills/decompose/SKILL.md +39 -9
- package/skills/deep-review/SKILL.md +17 -4
- package/skills/deploy-checklist/SKILL.md +9 -2
- package/skills/documentation/SKILL.md +12 -1
- package/skills/draft/SKILL.md +40 -29
- package/skills/draft/context-files.md +8 -1
- package/skills/draft/quality-guide.md +10 -2
- package/skills/graph/SKILL.md +1 -1
- package/skills/impact/SKILL.md +3 -1
- package/skills/implement/SKILL.md +60 -18
- package/skills/incident-response/SKILL.md +5 -2
- package/skills/init/SKILL.md +102 -23
- package/skills/init/references/architecture-spec.md +31 -7
- package/skills/init/references/okf-emitter.md +3 -3
- package/skills/jira/SKILL.md +33 -13
- package/skills/jira/references/review.md +61 -19
- package/skills/learn/SKILL.md +29 -6
- package/skills/new-track/SKILL.md +73 -18
- package/skills/quick-review/SKILL.md +7 -2
- package/skills/revert/SKILL.md +11 -5
- package/skills/review/SKILL.md +123 -24
- package/skills/review/references/zero-setup-mode.md +117 -0
- package/skills/standup/SKILL.md +9 -1
- package/skills/status/SKILL.md +6 -6
- package/skills/tech-debt/SKILL.md +7 -1
- package/skills/testing-strategy/SKILL.md +10 -2
- package/skills/tour/SKILL.md +2 -1
- package/skills/upload/SKILL.md +3 -2
package/core/shared/jira-sync.md
CHANGED
|
@@ -28,7 +28,7 @@ All Jira content written by Draft (comments and descriptions) MUST include a sig
|
|
|
28
28
|
|
|
29
29
|
Append this signature block at the end of every Jira comment:
|
|
30
30
|
|
|
31
|
-
```
|
|
31
|
+
```text
|
|
32
32
|
─────────────────────────────
|
|
33
33
|
🤖 Generated by Draft
|
|
34
34
|
```
|
|
@@ -37,7 +37,7 @@ Append this signature block at the end of every Jira comment:
|
|
|
37
37
|
|
|
38
38
|
Append this signature line inside `{noformat}` blocks at the end of every Jira description:
|
|
39
39
|
|
|
40
|
-
```
|
|
40
|
+
```yaml
|
|
41
41
|
---
|
|
42
42
|
🤖 Generated by Draft
|
|
43
43
|
Branch: [branch-name] | Commit: [short-hash]
|
|
@@ -63,7 +63,7 @@ On every sync operation, after posting the comment or attachment:
|
|
|
63
63
|
|
|
64
64
|
All Jira comments from Draft follow this format for consistency and scannability:
|
|
65
65
|
|
|
66
|
-
```
|
|
66
|
+
```json
|
|
67
67
|
[draft] {action}: {1-line summary}
|
|
68
68
|
─────────────────────────────
|
|
69
69
|
• {key detail 1}
|
|
@@ -77,7 +77,8 @@ Attachment: {filename} (if applicable)
|
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
Examples:
|
|
80
|
-
|
|
80
|
+
|
|
81
|
+
```json
|
|
81
82
|
[draft] spec-complete: Specification and plan generated for track add-user-auth
|
|
82
83
|
─────────────────────────────
|
|
83
84
|
• 3 phases, 12 tasks planned
|
|
@@ -90,7 +91,7 @@ Attachments: spec.md, plan.md
|
|
|
90
91
|
🤖 Generated by Draft
|
|
91
92
|
```
|
|
92
93
|
|
|
93
|
-
```
|
|
94
|
+
```json
|
|
94
95
|
[draft] rca-complete: Root cause identified for login timeout
|
|
95
96
|
─────────────────────────────
|
|
96
97
|
• Root cause: connection pool exhaustion under concurrent load
|
|
@@ -118,7 +119,7 @@ Attachment: rca.md
|
|
|
118
119
|
|
|
119
120
|
## Sync Procedure
|
|
120
121
|
|
|
121
|
-
```
|
|
122
|
+
```text
|
|
122
123
|
1. Verify Jira MCP is available (from context loading state)
|
|
123
124
|
- If unavailable: queue to .jira-sync-queue.json, return
|
|
124
125
|
|
|
@@ -152,8 +153,10 @@ Attachment: rca.md
|
|
|
152
153
|
## Failure Handling
|
|
153
154
|
|
|
154
155
|
If MCP operation fails:
|
|
156
|
+
|
|
155
157
|
1. Do NOT fail the parent skill
|
|
156
158
|
2. Save pending sync to `draft/tracks/<id>/.jira-sync-queue.json`:
|
|
159
|
+
|
|
157
160
|
```json
|
|
158
161
|
{
|
|
159
162
|
"pending": [
|
|
@@ -166,5 +169,6 @@ If MCP operation fails:
|
|
|
166
169
|
]
|
|
167
170
|
}
|
|
168
171
|
```
|
|
172
|
+
|
|
169
173
|
3. On next successful MCP connection, retry queued items
|
|
170
174
|
4. Warn user: "Jira sync queued (MCP unavailable). Will retry on next connection."
|
|
@@ -20,7 +20,7 @@ If `draft/wiki/` does **not** exist (monolith mode), skip this procedure entirel
|
|
|
20
20
|
|
|
21
21
|
The bundle is a tree: `.ai-context.md` (index root: Synopsis + Concept Map) → section indexes (`systems/`, `features/`, `reference/`, `entrypoints/`, `overview/`) → concept pages. Each node advertises a `description` routing key. Navigate it, do not flatten it.
|
|
22
22
|
|
|
23
|
-
```
|
|
23
|
+
```text
|
|
24
24
|
1. Frame the query
|
|
25
25
|
Extract routing terms from the active task: domain nouns from spec.md
|
|
26
26
|
acceptance criteria, file paths / module names / tech terms from plan.md,
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
## Architecture
|
|
10
10
|
|
|
11
|
-
```
|
|
11
|
+
```text
|
|
12
12
|
Phase 1 (Map) N parallel reader agents bounded scope per agent (4 modules each)
|
|
13
13
|
each agent reads source files in its assigned modules
|
|
14
14
|
each agent outputs (A) IR JSON array — structured metadata for tables/diagrams
|
|
@@ -97,7 +97,7 @@ Large modules with deep sub-module hierarchies (e.g., 500+ files with 5+ sub-mod
|
|
|
97
97
|
Use this verbatim as the `prompt` field when spawning each reader agent via the `Agent` tool.
|
|
98
98
|
Replace `{MODULE_LIST}`, `{REPO_ROOT}`, and `{GRAPH_DATA_SUMMARY}` before sending.
|
|
99
99
|
|
|
100
|
-
```
|
|
100
|
+
```text
|
|
101
101
|
You are a module reader agent. You have two jobs for each assigned module:
|
|
102
102
|
(A) Extract structured IR JSON — metadata for tables and diagrams
|
|
103
103
|
(B) Write a full §7 deep-dive section in Markdown — prose the synthesis agent will paste verbatim into architecture.md
|
|
@@ -206,7 +206,7 @@ Only when the graph shows clear internal structure with its own public surface o
|
|
|
206
206
|
Use this as the prompt for the single synthesis agent in Phase 2.
|
|
207
207
|
Replace `{CONCATENATED_IRS}`, `{GRAPH_DEPENDENCY_DIAGRAM}`, and `{ARCHITECTURE_TEMPLATE_STRUCTURE}`.
|
|
208
208
|
|
|
209
|
-
```
|
|
209
|
+
```text
|
|
210
210
|
You are the synthesis agent. Your job is to assemble draft/architecture.md from reader outputs.
|
|
211
211
|
|
|
212
212
|
## Inputs
|
|
@@ -305,7 +305,7 @@ For tier 1–2, skip parallelism — one reader agent handles all modules sequen
|
|
|
305
305
|
|
|
306
306
|
When assigning modules to reader agents (tier 3+), apply this priority ordering:
|
|
307
307
|
|
|
308
|
-
```
|
|
308
|
+
```text
|
|
309
309
|
Rule 1: Assign high fan-in modules to separate readers
|
|
310
310
|
(modules with many callers produce IRs that many other IRs reference)
|
|
311
311
|
|
|
@@ -319,7 +319,8 @@ Rule 4: Use tier table above for modules-per-agent target
|
|
|
319
319
|
```
|
|
320
320
|
|
|
321
321
|
Example grouping heuristic (adapt to actual fan-in data from graph):
|
|
322
|
-
|
|
322
|
+
|
|
323
|
+
```yaml
|
|
323
324
|
reader_A: [highest fan-in module alone] — never share high-fan-in with others
|
|
324
325
|
reader_B: [coupled pair: module_X + module_Y] — modules that call each other
|
|
325
326
|
reader_C: [data layer modules] — shared persistence/cache modules together
|
|
@@ -332,24 +333,30 @@ reader_E: [infra/bootstrap modules] — low fan-in, foundational
|
|
|
332
333
|
## Failure Modes and Recovery
|
|
333
334
|
|
|
334
335
|
### Reader produces prose instead of IR
|
|
336
|
+
|
|
335
337
|
**Detection:** Output doesn't start with `[` or fails JSON.parse.
|
|
336
338
|
**Recovery:** Retry that reader with stricter constraint:
|
|
337
|
-
|
|
339
|
+
|
|
340
|
+
```text
|
|
338
341
|
RETRY INSTRUCTION: Your previous output was not valid JSON. Output ONLY the JSON array.
|
|
339
342
|
The first character of your response MUST be `[`. No preamble. No explanation.
|
|
340
343
|
```
|
|
344
|
+
|
|
341
345
|
**Fallback:** If retry fails, run those modules through the standard sequential analysis.
|
|
342
346
|
|
|
343
347
|
### IR is too sparse AND deep-dive is too short
|
|
348
|
+
|
|
344
349
|
**Detection:** IR `token_budget_used < 150` for a module with >20 files AND deep-dive < 100 lines.
|
|
345
350
|
**Recovery:** Re-run that reader with explicit instruction to read more source files and expand the deep-dive.
|
|
346
351
|
If only the IR is sparse but the deep-dive is substantive, no action needed — prose is the primary output.
|
|
347
352
|
|
|
348
353
|
### Synthesis agent re-reads source outside policy
|
|
354
|
+
|
|
349
355
|
**Detection:** Tool calls to Read for files not in the permitted-sections list during synthesis.
|
|
350
356
|
**Prevention:** The synthesis prompt lists exactly which sections permit source reads. Outside those, synthesis derives from reader prose and IR.
|
|
351
357
|
|
|
352
358
|
### One reader agent fails entirely
|
|
359
|
+
|
|
353
360
|
**Detection:** Agent returns error or times out.
|
|
354
361
|
**Recovery:** Run the failed module group through standard sequential analysis.
|
|
355
362
|
The other readers' IRs are still valid — only the failed group needs re-work.
|
|
@@ -359,7 +366,7 @@ This is the blast-radius advantage over single-agent: a reader failure is a part
|
|
|
359
366
|
|
|
360
367
|
## Token Budget Model
|
|
361
368
|
|
|
362
|
-
```
|
|
369
|
+
```text
|
|
363
370
|
Phase 1 readers (parallel, ceil(M/4) agents):
|
|
364
371
|
Per agent: 4 modules × ~4K source tokens = ~16K input
|
|
365
372
|
IR output: ~2K tokens/agent
|
|
@@ -11,6 +11,7 @@ Referenced by: `/draft:bughunt`, `/draft:deep-review`, `/draft:review`, `/draft:
|
|
|
11
11
|
Execute this phase **after** the main analysis and report generation are complete. This phase updates `draft/guardrails.md` with newly discovered patterns.
|
|
12
12
|
|
|
13
13
|
**Skip this phase if:**
|
|
14
|
+
|
|
14
15
|
- `draft/` directory does not exist (no Draft context)
|
|
15
16
|
- Analysis found zero findings to learn from
|
|
16
17
|
- Running in a read-only or preview mode
|
|
@@ -110,6 +111,7 @@ Append under `## Learned Anti-Patterns`:
|
|
|
110
111
|
```
|
|
111
112
|
|
|
112
113
|
`graph_severity` derivation rules (from live hotspot query `scripts/tools/hotspot-rank.sh --repo .` fanIn values):
|
|
114
|
+
|
|
113
115
|
- fanIn ≥ 10 in any evidence file → `critical`
|
|
114
116
|
- fanIn 5–9 → `high`
|
|
115
117
|
- fanIn 1–4 → `medium`
|
|
@@ -19,4 +19,4 @@ See [verification-gates.md](verification-gates.md) for the canonical WS-9 gate c
|
|
|
19
19
|
|
|
20
20
|
**Required track artifacts (2.0):** `spec.md`, `plan.md`, `hld.md`, `lld.md`, `metadata.json`, `discovery.md`.
|
|
21
21
|
|
|
22
|
-
**Scope fields:** `metadata.json:scope_includes` / `scope_excludes` (or spec frontmatter fallback) define track footprint; conflicts block parallel work without explicit exclusion.
|
|
22
|
+
**Scope fields:** `metadata.json:scope_includes` / `scope_excludes` (or spec frontmatter fallback) define track footprint; conflicts block parallel work without explicit exclusion.
|
|
@@ -38,7 +38,7 @@ git rev-list [range] # Commit listing
|
|
|
38
38
|
|
|
39
39
|
Draft uses [Conventional Commits](https://www.conventionalcommits.org/) for traceability:
|
|
40
40
|
|
|
41
|
-
```
|
|
41
|
+
```text
|
|
42
42
|
<type>(<track_id>): <description>
|
|
43
43
|
|
|
44
44
|
[optional body]
|
|
@@ -49,11 +49,13 @@ Draft uses [Conventional Commits](https://www.conventionalcommits.org/) for trac
|
|
|
49
49
|
Common `<type>` values: `feat`, `fix`, `refactor`, `test`, `docs`, `chore`, `perf`.
|
|
50
50
|
|
|
51
51
|
Footer fields (when applicable):
|
|
52
|
+
|
|
52
53
|
- `Refs: <issue or PR number>` — link to issue tracker
|
|
53
54
|
- `Co-Authored-By: <name> <email>` — for AI-assisted commits
|
|
54
55
|
|
|
55
56
|
If a Jira ticket is linked in `spec.md`, include it in the body or footer:
|
|
56
|
-
|
|
57
|
+
|
|
58
|
+
```text
|
|
57
59
|
feat(add-auth): implement OAuth2 callback
|
|
58
60
|
|
|
59
61
|
Refs: ENG-1234
|
|
@@ -78,6 +80,7 @@ git push -u origin <branch>
|
|
|
78
80
|
```
|
|
79
81
|
|
|
80
82
|
Then open a PR via the `gh` CLI or the GitHub web UI:
|
|
83
|
+
|
|
81
84
|
```bash
|
|
82
85
|
gh pr create --title "<title>" --body "<description>"
|
|
83
86
|
```
|
|
@@ -35,7 +35,7 @@ generated_at: "{ISO_TIMESTAMP}"
|
|
|
35
35
|
|
|
36
36
|
## Component Graph
|
|
37
37
|
|
|
38
|
-
```
|
|
38
|
+
```json
|
|
39
39
|
{project_root}/
|
|
40
40
|
├── {module1}/ ← {5-10 word description}
|
|
41
41
|
│ ├── {submod1}/ ← {description} ({Ncc} cc, {Nh} h)
|
|
@@ -114,6 +114,7 @@ None ✓
|
|
|
114
114
|
{One paragraph or bullets explaining how components find each other.}
|
|
115
115
|
|
|
116
116
|
Key injection points:
|
|
117
|
+
|
|
117
118
|
- `{token1}`: {what it provides}
|
|
118
119
|
- `{token2}`: {what it provides}
|
|
119
120
|
- `{token3}`: {what it provides}
|
|
@@ -144,7 +145,7 @@ interface {ServiceName} {
|
|
|
144
145
|
|
|
145
146
|
## Dependency Graph
|
|
146
147
|
|
|
147
|
-
```
|
|
148
|
+
```json
|
|
148
149
|
[{Component}] -> (HTTP) -> [{ExternalService}]
|
|
149
150
|
[{Component}] -> (SQL) -> [{Database}]
|
|
150
151
|
[{Component}] -> (gRPC) -> [{PeerService}]
|
|
@@ -9,12 +9,14 @@ generated_at: "{ISO_TIMESTAMP}"
|
|
|
9
9
|
# {PROJECT_NAME} Profile
|
|
10
10
|
|
|
11
11
|
## Project
|
|
12
|
+
|
|
12
13
|
- Name: {PROJECT_NAME}
|
|
13
14
|
- One-liner: {ONE_LINE_PRODUCT_DESCRIPTION}
|
|
14
15
|
- Primary users: {USER_TYPES}
|
|
15
16
|
- Repository layout: {monorepo|polyrepo|single-service}
|
|
16
17
|
|
|
17
18
|
## Stack
|
|
19
|
+
|
|
18
20
|
- Language: {LANGUAGE}
|
|
19
21
|
- Framework: {FRAMEWORK}
|
|
20
22
|
- Database: {DATABASE}
|
|
@@ -26,17 +28,22 @@ generated_at: "{ISO_TIMESTAMP}"
|
|
|
26
28
|
- Entry: {ENTRY_POINT}
|
|
27
29
|
|
|
28
30
|
## INVARIANTS
|
|
31
|
+
|
|
29
32
|
{Top 3-5 critical invariants from .ai-context.md, one per line, with file:line refs}
|
|
30
33
|
|
|
31
34
|
## NEVER
|
|
35
|
+
|
|
32
36
|
{2-3 safety rules — things that must never happen}
|
|
33
37
|
|
|
34
38
|
## Key Operational Models (from §6 / GRAPH:OPERATIONAL)
|
|
39
|
+
|
|
35
40
|
- {Most critical flow 1 — one line}
|
|
36
41
|
- {Most critical flow 2 (if space allows)}
|
|
37
42
|
|
|
38
43
|
## Active Tracks
|
|
44
|
+
|
|
39
45
|
{List of active track IDs and one-line descriptions, or "none"}
|
|
40
46
|
|
|
41
47
|
## Recent Changes
|
|
48
|
+
|
|
42
49
|
{Last 3-5 significant commits or changes, one per line}
|
|
@@ -79,6 +79,7 @@ The Graph Health & Fidelity Dashboard (above) is the first artifact any reader o
|
|
|
79
79
|
The longest and most precise section.
|
|
80
80
|
|
|
81
81
|
Every invariant must include:
|
|
82
|
+
|
|
82
83
|
- Precise statement
|
|
83
84
|
- Why violation is dangerous
|
|
84
85
|
- Enforcement mechanism (test, runtime, type system, review, graph constraint, or none)
|
|
@@ -86,7 +87,7 @@ Every invariant must include:
|
|
|
86
87
|
|
|
87
88
|
Example format:
|
|
88
89
|
|
|
89
|
-
```
|
|
90
|
+
```text
|
|
90
91
|
### INV-003: Sentinel Lock Ordering
|
|
91
92
|
**Rule**: `_strategies_lock < _strategy_process_locks < _global_capacity_lock < entry_lock`
|
|
92
93
|
**Fidelity**: High (enforced in code + tests)
|
|
@@ -106,6 +107,7 @@ Focus on the highest-value dynamic behavior:
|
|
|
106
107
|
- Lifecycle sequences (bootstrap, shutdown, reconciliation, failover)
|
|
107
108
|
|
|
108
109
|
Each backed by:
|
|
110
|
+
|
|
109
111
|
- Graph-derived paths where available
|
|
110
112
|
- High-quality Mermaid (stateDiagram-v2, sequenceDiagram, or detailed flowchart)
|
|
111
113
|
- Explicit note when the flow is only partially visible in the graph
|
|
@@ -135,6 +137,7 @@ Include a short "graph coverage for this view" paragraph.
|
|
|
135
137
|
## 6. Error Handling & Failure Mode Catalog
|
|
136
138
|
|
|
137
139
|
For every major component or flow:
|
|
140
|
+
|
|
138
141
|
- What can go wrong
|
|
139
142
|
- How it is detected
|
|
140
143
|
- The defined safe response
|
|
@@ -145,6 +148,7 @@ For every major component or flow:
|
|
|
145
148
|
## 7. State & Data Truth Sources + Reconciliation
|
|
146
149
|
|
|
147
150
|
For each major domain:
|
|
151
|
+
|
|
148
152
|
- Authoritative source
|
|
149
153
|
- Derived / cached views
|
|
150
154
|
- Reconciliation mechanisms and lag tolerance
|
|
@@ -201,4 +205,4 @@ AI agents are trained by the document itself to treat Stub and Human Judgment cl
|
|
|
201
205
|
|
|
202
206
|
**End of clean graph-primary architecture template.**
|
|
203
207
|
|
|
204
|
-
This is the single forward-looking source of truth. Legacy 28-section volume-oriented material has been retired.
|
|
208
|
+
This is the single forward-looking source of truth. Legacy 28-section volume-oriented material has been retired.
|
|
@@ -67,7 +67,7 @@ track ID, or `_NONE_FOUND_` with justification.
|
|
|
67
67
|
|
|
68
68
|
Flat list of files and functions touched in the spike. Files cited here
|
|
69
69
|
without line numbers are exempt from drift checks (they document
|
|
70
|
-
|
|
70
|
+
_familiarity_, not pinned facts).
|
|
71
71
|
|
|
72
72
|
- _TBD_reference_1_path_ — _TBD_reference_1_symbol_ — _TBD_reference_1_role_
|
|
73
73
|
- _TBD_reference_2_path_ — _TBD_reference_2_symbol_ — _TBD_reference_2_role_
|
|
@@ -32,21 +32,25 @@ Run `/draft:learn` to scan the codebase and update learned patterns. Quality com
|
|
|
32
32
|
<!-- Hard constraints that must never be violated. Check [x] to enable enforcement. -->
|
|
33
33
|
|
|
34
34
|
### Git & Version Control
|
|
35
|
+
|
|
35
36
|
- [ ] No direct commits to main/master
|
|
36
37
|
- [ ] No force push to shared branches
|
|
37
38
|
- [ ] PR required for all changes
|
|
38
39
|
|
|
39
40
|
### Code Quality
|
|
41
|
+
|
|
40
42
|
- [ ] No console.log/print statements in production code
|
|
41
43
|
- [ ] No commented-out code blocks
|
|
42
44
|
- [ ] No TODO comments without linked issue
|
|
43
45
|
|
|
44
46
|
### Security
|
|
47
|
+
|
|
45
48
|
- [ ] No secrets/credentials in code
|
|
46
49
|
- [ ] No disabled security checks without documented exception
|
|
47
50
|
- [ ] Dependencies must pass security audit
|
|
48
51
|
|
|
49
52
|
### Testing
|
|
53
|
+
|
|
50
54
|
- [ ] Tests required before merge
|
|
51
55
|
- [ ] No skipped tests without documented reason
|
|
52
56
|
- [ ] Coverage must not decrease
|
|
@@ -67,6 +71,7 @@ Run `/draft:learn` to scan the codebase and update learned patterns. Quality com
|
|
|
67
71
|
- [x] G1.12: No `shared_ptr` binding to non-trivial objects (EventDriver holders) in callbacks
|
|
68
72
|
|
|
69
73
|
### C++/Systems — Concurrency & Locking
|
|
74
|
+
|
|
70
75
|
- [x] G2.1: No mutable operations under shared/read locks
|
|
71
76
|
- [x] G2.2: Always release spinlock before invoking callbacks or `Finish()`
|
|
72
77
|
- [x] G2.3: No expensive object destruction under spinlock protection
|
|
@@ -74,12 +79,14 @@ Run `/draft:learn` to scan the codebase and update learned patterns. Quality com
|
|
|
74
79
|
- [x] G2.5: No synchronous waits (`Trigger::Wait`) in async code paths
|
|
75
80
|
|
|
76
81
|
### C++/Systems — Control Flow & Error Handling
|
|
82
|
+
|
|
77
83
|
- [x] G3.1: Always `return` after `Finish()` in conditional blocks
|
|
78
84
|
- [x] G3.2: CHECKs for internal consistency only — never for external input validation
|
|
79
85
|
- [x] G3.3: No side-effecting expressions inside DCHECK
|
|
80
86
|
- [x] G3.4: CHECK/DCHECK/LOG(DFATAL) selection per severity matrix
|
|
81
87
|
|
|
82
88
|
### C++/Systems — Format & API Correctness
|
|
89
|
+
|
|
83
90
|
- [x] G4.1: Printf format specifiers must match argument types
|
|
84
91
|
- [x] G4.2: MemTracer Print vs Printf selection (lazy construction vs immediate materialization)
|
|
85
92
|
- [x] G4.3: Use Maybe-prefixed MemTracer variants only when op may be finished
|
|
@@ -87,9 +94,11 @@ Run `/draft:learn` to scan the codebase and update learned patterns. Quality com
|
|
|
87
94
|
- [x] G4.5: `boost::optional<bool>` tests presence, not value — use `*xx` or `.value_or()`
|
|
88
95
|
|
|
89
96
|
### C++/Systems — GFlags & Runtime Configuration
|
|
97
|
+
|
|
90
98
|
- [x] G5.1: Snapshot gflag values at op start — never depend on flag stability mid-op
|
|
91
99
|
|
|
92
100
|
### C++/Systems — Performance
|
|
101
|
+
|
|
93
102
|
- [x] G6.1: Avoid `ByteSize()` on proto objects in hot paths
|
|
94
103
|
- [x] G6.2: Prefer repeated fields over map fields in proto for serialization-sensitive paths
|
|
95
104
|
- [x] G6.3: No inline execution in `SpawnWorkersAndJoin` `done_cb`
|
package/core/templates/hld.md
CHANGED
|
@@ -194,9 +194,9 @@ For each component, populate one subsection:
|
|
|
194
194
|
|
|
195
195
|
Provide a brief list and summary of all inventions associated with the proposed design.
|
|
196
196
|
|
|
197
|
-
1.
|
|
198
|
-
2.
|
|
199
|
-
3.
|
|
197
|
+
1.
|
|
198
|
+
2.
|
|
199
|
+
3.
|
|
200
200
|
|
|
201
201
|
**Were Invention Disclosure Forms (IDFs) submitted for the inventions listed?**
|
|
202
202
|
|
|
@@ -208,6 +208,7 @@ Provide a brief list and summary of all inventions associated with the proposed
|
|
|
208
208
|
### Third Party Technology (TPT)
|
|
209
209
|
|
|
210
210
|
**TPT includes:**
|
|
211
|
+
|
|
211
212
|
- **Open Source Software (OSS):** Software licensed under an Open Source License (e.g., MIT, BSD, GPL, Apache)
|
|
212
213
|
- **Commercial (non-OSS) Technology:** Non- software, documentation, content, APIs, SDKs, logos, artwork, data, GUIs, Tools, databases, and other intellectual property NOT licensed under an Open Source License
|
|
213
214
|
|
|
@@ -289,7 +290,7 @@ Provide a brief list and summary of all inventions associated with the proposed
|
|
|
289
290
|
|
|
290
291
|
### Cost Implications <!-- REQUIRED -->
|
|
291
292
|
|
|
292
|
-
|
|
293
|
+
_Primarily for SaaS deployments_
|
|
293
294
|
|
|
294
295
|
- Include cloud cost calculation here
|
|
295
296
|
- Is there any cost to the customer for cloud workloads?
|