@drafthq/draft 3.6.0 → 3.7.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.
Files changed (117) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.cursor-plugin/plugin.json +1 -1
  4. package/README.md +28 -49
  5. package/bin/README.md +47 -1
  6. package/cli/src/installer.js +1 -1
  7. package/cli/src/lib/cursor-registry.js +10 -0
  8. package/core/agents/architect.md +21 -9
  9. package/core/agents/debugger.md +5 -0
  10. package/core/agents/ops.md +7 -2
  11. package/core/agents/planner.md +7 -0
  12. package/core/agents/rca.md +14 -3
  13. package/core/agents/reviewer.md +1 -0
  14. package/core/agents/writer.md +6 -0
  15. package/core/knowledge-base.md +22 -3
  16. package/core/methodology.md +30 -5
  17. package/core/shared/condensation.md +27 -17
  18. package/core/shared/context-verify.md +3 -1
  19. package/core/shared/cross-skill-dispatch.md +7 -3
  20. package/core/shared/draft-context-loading.md +3 -0
  21. package/core/shared/git-report-metadata.md +1 -0
  22. package/core/shared/graph-query.md +0 -2
  23. package/core/shared/graph-usage-report.md +1 -1
  24. package/core/shared/jira-sync.md +10 -6
  25. package/core/shared/okf-retrieval.md +1 -1
  26. package/core/shared/parallel-analysis.md +14 -7
  27. package/core/shared/pattern-learning.md +2 -0
  28. package/core/shared/template-contract.md +1 -1
  29. package/core/shared/vcs-commands.md +5 -2
  30. package/core/templates/ai-context.md +3 -2
  31. package/core/templates/ai-profile.md +7 -0
  32. package/core/templates/architecture.md +6 -2
  33. package/core/templates/discovery.md +1 -1
  34. package/core/templates/guardrails.md +9 -0
  35. package/core/templates/hld.md +5 -4
  36. package/core/templates/intake-questions.md +45 -0
  37. package/core/templates/jira.md +11 -2
  38. package/core/templates/lld.md +8 -5
  39. package/core/templates/okf/concept.md +0 -1
  40. package/core/templates/product.md +11 -2
  41. package/core/templates/rca.md +6 -0
  42. package/core/templates/service-index.md +1 -0
  43. package/core/templates/spec.md +15 -0
  44. package/core/templates/tech-stack.md +12 -0
  45. package/core/templates/workflow.md +20 -0
  46. package/integrations/agents/AGENTS.md +1272 -292
  47. package/integrations/copilot/.github/copilot-instructions.md +1272 -292
  48. package/package.json +1 -1
  49. package/scripts/fetch-memory-engine.sh +24 -6
  50. package/scripts/lib.sh +11 -4
  51. package/scripts/tools/_graph_queries.sh +10 -3
  52. package/scripts/tools/_lib.sh +33 -11
  53. package/scripts/tools/check-repo-size.sh +125 -0
  54. package/scripts/tools/check-skill-line-caps.sh +1 -2
  55. package/scripts/tools/check-template-noop.sh +0 -1
  56. package/scripts/tools/classify-files.sh +2 -2
  57. package/scripts/tools/cycle-detect.sh +16 -8
  58. package/scripts/tools/fix-whitespace.sh +3 -0
  59. package/scripts/tools/git-metadata.sh +6 -0
  60. package/scripts/tools/graph-arch.sh +1 -1
  61. package/scripts/tools/graph-callers.sh +6 -3
  62. package/scripts/tools/graph-impact.sh +4 -2
  63. package/scripts/tools/graph-init.sh +12 -8
  64. package/scripts/tools/graph-preflight.sh +3 -0
  65. package/scripts/tools/graph-query.sh +70 -7
  66. package/scripts/tools/graph-snapshot.sh +29 -5
  67. package/scripts/tools/hotspot-rank.sh +2 -1
  68. package/scripts/tools/install-smoke-test.sh +223 -0
  69. package/scripts/tools/mermaid-from-graph.sh +2 -1
  70. package/scripts/tools/migrate-track-frontmatter.sh +9 -10
  71. package/scripts/tools/okf-coverage-check.sh +4 -3
  72. package/scripts/tools/okf-fix-links.sh +18 -93
  73. package/scripts/tools/okf-plan-concepts.sh +5 -8
  74. package/scripts/tools/okf-render-views.sh +19 -14
  75. package/scripts/tools/okf-validate-quality.sh +13 -2
  76. package/scripts/tools/okf-validate.sh +13 -2
  77. package/scripts/tools/parse-git-log.sh +19 -1
  78. package/scripts/tools/resolve-tools.sh +24 -8
  79. package/scripts/tools/verify-citations.sh +1 -2
  80. package/scripts/tools/verify-doc-anchors.sh +13 -33
  81. package/scripts/tools/verify-graph-binary.sh +13 -3
  82. package/skills/GRAPH.md +21 -10
  83. package/skills/adr/SKILL.md +24 -6
  84. package/skills/assist-review/SKILL.md +2 -1
  85. package/skills/bughunt/SKILL.md +54 -11
  86. package/skills/bughunt/references/regression-tests.md +14 -4
  87. package/skills/change/SKILL.md +19 -9
  88. package/skills/coverage/SKILL.md +26 -10
  89. package/skills/debug/SKILL.md +12 -2
  90. package/skills/decompose/SKILL.md +39 -9
  91. package/skills/deep-review/SKILL.md +17 -4
  92. package/skills/deploy-checklist/SKILL.md +9 -2
  93. package/skills/documentation/SKILL.md +12 -1
  94. package/skills/draft/SKILL.md +40 -29
  95. package/skills/draft/context-files.md +8 -1
  96. package/skills/draft/quality-guide.md +10 -2
  97. package/skills/graph/SKILL.md +1 -1
  98. package/skills/impact/SKILL.md +3 -1
  99. package/skills/implement/SKILL.md +60 -18
  100. package/skills/incident-response/SKILL.md +5 -2
  101. package/skills/init/SKILL.md +102 -23
  102. package/skills/init/references/architecture-spec.md +31 -7
  103. package/skills/init/references/okf-emitter.md +3 -3
  104. package/skills/jira/SKILL.md +33 -13
  105. package/skills/jira/references/review.md +61 -19
  106. package/skills/learn/SKILL.md +29 -6
  107. package/skills/new-track/SKILL.md +73 -18
  108. package/skills/quick-review/SKILL.md +7 -2
  109. package/skills/revert/SKILL.md +11 -5
  110. package/skills/review/SKILL.md +123 -24
  111. package/skills/review/references/zero-setup-mode.md +117 -0
  112. package/skills/standup/SKILL.md +9 -1
  113. package/skills/status/SKILL.md +6 -6
  114. package/skills/tech-debt/SKILL.md +7 -1
  115. package/skills/testing-strategy/SKILL.md +10 -2
  116. package/skills/tour/SKILL.md +2 -1
  117. package/skills/upload/SKILL.md +3 -2
@@ -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
- *familiarity*, not pinned facts).
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`
@@ -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
- *Primarily for SaaS deployments*
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?