@bendyline/gilde 0.1.17 → 0.1.18

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 (93) hide show
  1. package/README.md +5 -1
  2. package/authoring/gstack/LICENSE.gstack +21 -0
  3. package/authoring/gstack/README.md +50 -0
  4. package/authoring/gstack/evals/cso.json +152 -0
  5. package/authoring/gstack/evals/design-consultation.json +201 -0
  6. package/authoring/gstack/evals/document-generate.json +174 -0
  7. package/authoring/gstack/evals/investigate.json +153 -0
  8. package/authoring/gstack/evals/office-hours.json +141 -0
  9. package/authoring/gstack/evals/plan-ceo-review.json +135 -0
  10. package/authoring/gstack/evals/qa-only.json +376 -0
  11. package/authoring/gstack/evals/retro.json +191 -0
  12. package/authoring/gstack/evals/spec.json +162 -0
  13. package/authoring/gstack/overlays/cso.json +132 -0
  14. package/authoring/gstack/overlays/design-consultation.json +153 -0
  15. package/authoring/gstack/overlays/document-generate.json +124 -0
  16. package/authoring/gstack/overlays/investigate.json +128 -0
  17. package/authoring/gstack/overlays/office-hours.json +119 -0
  18. package/authoring/gstack/overlays/plan-ceo-review.json +128 -0
  19. package/authoring/gstack/overlays/qa-only.json +145 -0
  20. package/authoring/gstack/overlays/retro.json +132 -0
  21. package/authoring/gstack/overlays/spec.json +140 -0
  22. package/authoring/gstack/persona-drafts/cso.about.md +9 -0
  23. package/authoring/gstack/persona-drafts/design-consultation.about.md +9 -0
  24. package/authoring/gstack/persona-drafts/office-hours.about.md +9 -0
  25. package/authoring/gstack/persona-drafts/qa-only.about.md +5 -0
  26. package/authoring/gstack/persona-drafts/spec.about.md +26 -0
  27. package/authoring/gstack/snapshots/cso/SKILL.md +1285 -0
  28. package/authoring/gstack/snapshots/design-consultation/SKILL.md +1230 -0
  29. package/authoring/gstack/snapshots/document-generate/SKILL.md +1252 -0
  30. package/authoring/gstack/snapshots/investigate/SKILL.md +1074 -0
  31. package/authoring/gstack/snapshots/office-hours/SKILL.md +1697 -0
  32. package/authoring/gstack/snapshots/plan-ceo-review/SKILL.md +1476 -0
  33. package/authoring/gstack/snapshots/qa-only/SKILL.md +1256 -0
  34. package/authoring/gstack/snapshots/retro/SKILL.md +1812 -0
  35. package/authoring/gstack/snapshots/spec/SKILL.md +2359 -0
  36. package/authoring/gstack/wave.json +103 -0
  37. package/data/connector-types/gi/github-releases/manifest.json +17 -0
  38. package/data/connector-types/gi/github-releases/versions/1.0.0/manifest.json +71 -0
  39. package/data/connector-types/index.json +1 -1
  40. package/data/craftbook-templates/br/branding-website/versions/1.1.0/craftbook.json +190 -0
  41. package/data/craftbook-templates/br/branding-website/versions/1.1.0/test.json +164 -0
  42. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.0/craftbook.json +358 -0
  43. package/data/craftbook-templates/br/browser-qa-audit/versions/2.0.0/test.json +376 -0
  44. package/data/craftbook-templates/ca/careful-mode/versions/1.1.0/craftbook.json +43 -0
  45. package/data/craftbook-templates/ca/careful-mode/versions/1.1.0/test.json +110 -0
  46. package/data/craftbook-templates/ca/careful-mode/versions/1.2.0/craftbook.json +43 -0
  47. package/data/craftbook-templates/ca/careful-mode/versions/1.2.0/test.json +110 -0
  48. package/data/craftbook-templates/co/content-deck/versions/1.1.0/craftbook.json +185 -0
  49. package/data/craftbook-templates/co/content-deck/versions/1.1.0/test.json +166 -0
  50. package/data/craftbook-templates/co/content-deck/versions/1.2.0/craftbook.json +185 -0
  51. package/data/craftbook-templates/co/content-deck/versions/1.2.0/test.json +169 -0
  52. package/data/craftbook-templates/co/corpus-email-digest/versions/1.1.0/craftbook.json +189 -0
  53. package/data/craftbook-templates/co/corpus-email-digest/versions/1.1.0/test.json +182 -0
  54. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.0/craftbook.json +189 -0
  55. package/data/craftbook-templates/co/corpus-email-digest/versions/1.2.0/test.json +187 -0
  56. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.0/craftbook.json +385 -0
  57. package/data/craftbook-templates/de/design-system-consultation/versions/2.0.0/test.json +201 -0
  58. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.0/craftbook.json +353 -0
  59. package/data/craftbook-templates/en/engineering-retrospective/versions/2.0.0/test.json +191 -0
  60. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.0/craftbook.json +347 -0
  61. package/data/craftbook-templates/ex/executive-level-review/versions/2.0.0/test.json +135 -0
  62. package/data/craftbook-templates/fr/freeze-scope/versions/1.2.0/craftbook.json +50 -0
  63. package/data/craftbook-templates/fr/freeze-scope/versions/1.2.0/test.json +131 -0
  64. package/data/craftbook-templates/fr/freeze-scope/versions/1.3.0/craftbook.json +50 -0
  65. package/data/craftbook-templates/fr/freeze-scope/versions/1.3.0/test.json +131 -0
  66. package/data/craftbook-templates/ht/html-arcade-game/versions/1.1.0/craftbook.json +197 -0
  67. package/data/craftbook-templates/ht/html-arcade-game/versions/1.1.0/test.json +173 -0
  68. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.0/craftbook.json +197 -0
  69. package/data/craftbook-templates/ht/html-arcade-game/versions/1.2.0/test.json +176 -0
  70. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.0/craftbook.json +333 -0
  71. package/data/craftbook-templates/id/idea-office-hours/versions/2.0.0/test.json +141 -0
  72. package/data/craftbook-templates/im/image-set-index/versions/1.1.0/craftbook.json +163 -0
  73. package/data/craftbook-templates/im/image-set-index/versions/1.1.0/test.json +177 -0
  74. package/data/craftbook-templates/im/image-set-index/versions/1.2.0/craftbook.json +163 -0
  75. package/data/craftbook-templates/im/image-set-index/versions/1.2.0/test.json +180 -0
  76. package/data/craftbook-templates/index.json +1 -1
  77. package/data/craftbook-templates/re/release-artifact-sanity-check/art.json +13 -0
  78. package/data/craftbook-templates/re/release-artifact-sanity-check/logo.webp +0 -0
  79. package/data/craftbook-templates/re/release-artifact-sanity-check/manifest.json +24 -0
  80. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.0/craftbook.json +202 -0
  81. package/data/craftbook-templates/re/release-artifact-sanity-check/versions/1.0.0/test.json +138 -0
  82. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.0/craftbook.json +348 -0
  83. package/data/craftbook-templates/ro/root-cause-investigation/versions/2.0.0/test.json +153 -0
  84. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.0/craftbook.json +353 -0
  85. package/data/craftbook-templates/se/security-architecture-review/versions/2.0.0/test.json +152 -0
  86. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.0/craftbook.json +391 -0
  87. package/data/craftbook-templates/sp/spec-authoring/versions/2.0.0/test.json +162 -0
  88. package/data/craftbook-templates/te/technical-documentation/versions/2.0.0/craftbook.json +343 -0
  89. package/data/craftbook-templates/te/technical-documentation/versions/2.0.0/test.json +174 -0
  90. package/data/craftbook-templates/tr/translate-content/versions/1.1.0/craftbook.json +84 -0
  91. package/data/craftbook-templates/tr/translate-content/versions/1.1.0/test.json +141 -0
  92. package/package.json +8 -4
  93. package/schemas/craftbook-test.schema.json +232 -3
@@ -0,0 +1,153 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Root-Cause Investigation — decimal cart total regression",
4
+ "objective": "Require the Root-Cause Investigation craftbook to reproduce a deterministic failure, identify the causal mechanism before editing, implement the smallest fix, and prove the regression test passes.",
5
+ "tags": [
6
+ "workflow",
7
+ "debugging",
8
+ "code-with-tests",
9
+ "node"
10
+ ],
11
+ "prompt": "Use the Root-Cause Investigation craftbook to diagnose the failing decimal cart-total behavior in this workspace. First reproduce it with the existing dependency-free test and preserve concrete evidence; do not edit until a causal hypothesis has been tested. Then make the smallest correct source change, keep the regression coverage, and write the craftbook's artifacts, including `reports/root-cause-investigation.md`. The final report must cite the files inspected, distinguish root cause from symptom, include the exact verification command and result, and describe a safe rollback.",
12
+ "setup": {
13
+ "projectName": "Decimal cart total regression",
14
+ "about": "A tiny dependency-free Node project with one reproducible arithmetic defect. The initial test is expected to fail.",
15
+ "missionObjectives": "Restore exact cent-based addition for decimal prices without broad refactoring and leave a passing regression test plus an evidence-backed investigation report.",
16
+ "files": [
17
+ {
18
+ "path": "package.json",
19
+ "content": "{\n \"name\": \"cart-total-fixture\",\n \"private\": true,\n \"type\": \"module\"\n}\n"
20
+ },
21
+ {
22
+ "path": "src/cart-total.js",
23
+ "content": "/** Sum display-price strings and return a two-decimal total. */\nexport function cartTotal(prices) {\n const cents = prices.reduce((sum, price) => sum + parseInt(price, 10) * 100, 0);\n return (cents / 100).toFixed(2);\n}\n"
24
+ },
25
+ {
26
+ "path": "tests/cart-total.test.mjs",
27
+ "content": "import test from 'node:test';\nimport assert from 'node:assert/strict';\nimport { cartTotal } from '../src/cart-total.js';\n\ntest('keeps cents when totaling decimal display prices', () => {\n assert.equal(cartTotal(['19.99', '5.50']), '25.49');\n});\n\ntest('handles a single whole-dollar price', () => {\n assert.equal(cartTotal(['7.00']), '7.00');\n});\n"
28
+ },
29
+ {
30
+ "path": "source/incident.md",
31
+ "content": "# Incident note\n\nCheckout preview showed **$24.00** for line items **$19.99** and **$5.50**. The expected total is **$25.49**. The defect appeared after price inputs changed from integer-dollar strings to two-decimal display strings. No production data migration is in scope.\n"
32
+ },
33
+ {
34
+ "path": "tests/verify-cart-total.mjs",
35
+ "content": "import assert from 'node:assert/strict';\nimport { cartTotal } from '../src/cart-total.js';\n\nconst cases = [\n [['19.99', '5.50'], '25.49'],\n [['0.10', '0.20'], '0.30'],\n [['12.34', '0.66'], '13.00'],\n [['7.00'], '7.00'],\n [['1.01', '2.02', '3.03'], '6.06'],\n];\nfor (const [prices, expected] of cases) assert.equal(cartTotal(prices), expected, prices.join(' + '));\nconsole.log('CART_TOTAL_ORACLE_OK 5/5');\n",
36
+ "surface": "harness"
37
+ }
38
+ ]
39
+ },
40
+ "mocks": [],
41
+ "success": {
42
+ "taskGraph": {
43
+ "requireCraftbookTask": true,
44
+ "requireTerminalStep": true
45
+ },
46
+ "summary": "The decimal regression is fixed by a diagnosed causal change, the existing test passes, and the craftbook report preserves reproducible evidence.",
47
+ "deliverables": [
48
+ {
49
+ "path": "reports/root-cause-investigation.md",
50
+ "kind": "markdown-report",
51
+ "minBytes": 1200,
52
+ "checks": [
53
+ {
54
+ "kind": "contains",
55
+ "file": "reports/root-cause-investigation.md",
56
+ "pattern": "^#{1,3}\\s+Root cause\\b[\\s\\S]*^#{1,3}\\s+(Fix|Changed files)\\b[\\s\\S]*^#{1,3}\\s+(Regression coverage|Verification)\\b[\\s\\S]*^#{1,3}\\s+Rollback\\b",
57
+ "flags": "im",
58
+ "label": "root cause through rollback sections"
59
+ },
60
+ {
61
+ "kind": "contains",
62
+ "file": "reports/root-cause-investigation.md",
63
+ "pattern": "parseInt|truncat(?:e|ed|ion)|discard(?:s|ed)?\\s+(?:the\\s+)?(?:decimal|fractional|cent)",
64
+ "flags": "i",
65
+ "label": "causal mechanism"
66
+ },
67
+ {
68
+ "kind": "contains",
69
+ "file": "reports/root-cause-investigation.md",
70
+ "pattern": "node\\s+--test\\s+tests/cart-total\\.test\\.mjs[\\s\\S]*(pass|2\\s+tests?|exit(?:ed)?\\s+0)",
71
+ "flags": "i",
72
+ "label": "verification command and result"
73
+ },
74
+ {
75
+ "kind": "citationsResolve",
76
+ "file": "reports/root-cause-investigation.md",
77
+ "minCitations": 2
78
+ }
79
+ ]
80
+ }
81
+ ],
82
+ "checks": [
83
+ {
84
+ "kind": "notContains",
85
+ "file": "src/cart-total.js",
86
+ "pattern": "\\bparseInt\\s*\\(",
87
+ "label": "lossy integer parsing removed"
88
+ },
89
+ {
90
+ "kind": "sourceParses",
91
+ "file": "src/cart-total.js"
92
+ },
93
+ {
94
+ "kind": "nodeRuns",
95
+ "file": "tests/cart-total.test.mjs",
96
+ "timeoutMs": 20000
97
+ },
98
+ {
99
+ "kind": "nodeScriptPasses",
100
+ "script": "tests/verify-cart-total.mjs",
101
+ "requiredOutput": [
102
+ {
103
+ "pattern": "CART_TOTAL_ORACLE_OK 5/5",
104
+ "label": "hidden multi-case regression oracle"
105
+ }
106
+ ]
107
+ }
108
+ ],
109
+ "unchangedFixtures": [
110
+ "package.json",
111
+ "tests/cart-total.test.mjs",
112
+ "source/incident.md"
113
+ ],
114
+ "taskNotes": {
115
+ "minBytes": 180,
116
+ "requireCraftbookTask": true,
117
+ "checks": [
118
+ {
119
+ "kind": "contains",
120
+ "file": "task-notes.md",
121
+ "pattern": "\\bDONE\\b[\\s\\S]*(node\\s+--test|tests/cart-total\\.test\\.mjs)[\\s\\S]*reports/root-cause-investigation\\.md",
122
+ "flags": "i",
123
+ "label": "terminal note records proof and report"
124
+ }
125
+ ]
126
+ }
127
+ },
128
+ "rubric": {
129
+ "artifact": {
130
+ "path": "reports/root-cause-investigation.md",
131
+ "kind": "markdown"
132
+ },
133
+ "axes": [
134
+ {
135
+ "name": "Causal rigor",
136
+ "description": "The report explains why the observed inputs fail in this implementation and distinguishes causal evidence from guesses."
137
+ },
138
+ {
139
+ "name": "Fix discipline",
140
+ "description": "The source change is minimal, directly addresses the diagnosed mechanism, and avoids unrelated refactoring."
141
+ },
142
+ {
143
+ "name": "Verification quality",
144
+ "description": "Reproduction, regression coverage, final command result, blast radius, and rollback are concrete and auditable."
145
+ }
146
+ ]
147
+ },
148
+ "qualityFocus": [
149
+ "Diagnosis precedes source edits",
150
+ "The fix preserves decimal cents and passes the dependency-free test",
151
+ "The final report cites real workspace files and includes rollback"
152
+ ]
153
+ }
@@ -0,0 +1,141 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Idea Office Hours — evidence-backed wedge decision",
4
+ "objective": "Exercise the Idea Office Hours craftbook end to end on a constrained product idea and require a grounded decision, explicit alternatives, and an auditable craftbook-task handoff.",
5
+ "tags": [
6
+ "workflow",
7
+ "product",
8
+ "ideation",
9
+ "decision"
10
+ ],
11
+ "prompt": "Use the Idea Office Hours craftbook to pressure-test the QuietQueue idea in `source/idea-context.md`. Do not jump straight to implementation. Work through the evidence, compare at least three materially different options (including no-build/manual), choose a narrow pilot wedge, and write the craftbook's decision artifacts. The final decision at `decisions/idea-office-hours.md` must cite the supplied source, state what remains assumed, name a concrete next real-world action with an owner and measurement, and avoid inventing customer evidence.",
12
+ "setup": {
13
+ "projectName": "QuietQueue idea review",
14
+ "about": "A hermetic product-decision exercise for a small clinic scheduling concept. Only the seeded evidence is authoritative.",
15
+ "missionObjectives": "Decide whether there is a narrow, testable pilot worth running without handling PHI or committing to a full scheduling product.",
16
+ "files": [
17
+ {
18
+ "path": "source/idea-context.md",
19
+ "content": "# QuietQueue idea context\n\n## Audience\nBoutique physical-therapy clinics with 3–12 practitioners. The immediate user is the front-desk coordinator; clinic owners approve spend.\n\n## Observed problem\nAcross four discovery calls, coordinators described reminder calling as repetitive and hard to finish during busy afternoons. A two-week manual tally recorded **31 no-shows across 420 appointments** and about **6 staff hours per week** spent on reminder calls. These are directional observations, not a statistically representative study.\n\n## Constraints\n- A pilot must launch within two weeks.\n- It must not ingest protected health information.\n- The clinic can export appointment first name, mobile number, and time into a temporary CSV only after its privacy lead approves the fields.\n- The team has one product engineer and no native-mobile capacity.\n- Budget for the pilot is $750.\n\n## Candidate ideas raised so far\n1. A full scheduling and messaging platform.\n2. A CSV-driven reminder assistant that drafts messages for staff approval.\n3. A better call-list spreadsheet and a scripted reminder process (no new product).\n\n## Unknowns\nWhether patients will opt into SMS, whether approval adds too much staff friction, and whether fewer no-shows would persist beyond the pilot.\n"
20
+ }
21
+ ]
22
+ },
23
+ "mocks": [],
24
+ "success": {
25
+ "taskGraph": {
26
+ "requireCraftbookTask": true,
27
+ "requireTerminalStep": true
28
+ },
29
+ "summary": "The named craftbook produces a grounded wedge decision and records its terminal task handoff.",
30
+ "deliverables": [
31
+ {
32
+ "path": "decisions/idea-office-hours.md",
33
+ "kind": "markdown-report",
34
+ "minBytes": 1100,
35
+ "checks": [
36
+ {
37
+ "kind": "contains",
38
+ "file": "decisions/idea-office-hours.md",
39
+ "pattern": "^#{1,3}\\s+(Problem|Problem framing)\\b[\\s\\S]*^#{1,3}\\s+(User evidence|Evidence)\\b[\\s\\S]*^#{1,3}\\s+(Chosen wedge|Decision)\\b",
40
+ "flags": "im",
41
+ "label": "problem, evidence, and chosen-wedge sections"
42
+ },
43
+ {
44
+ "kind": "contains",
45
+ "file": "decisions/idea-office-hours.md",
46
+ "pattern": "^#{1,3}\\s+Alternatives considered\\b[\\s\\S]*(manual|no[- ]build)[\\s\\S]*^#{1,3}\\s+Next real-world action\\b",
47
+ "flags": "im",
48
+ "label": "manual alternative and next action"
49
+ },
50
+ {
51
+ "kind": "valueGrounding",
52
+ "file": "decisions/idea-office-hours.md",
53
+ "facts": [
54
+ {
55
+ "id": "observed-no-shows",
56
+ "label": "observed no-show evidence",
57
+ "required": [
58
+ "31\\s+no-shows?"
59
+ ]
60
+ },
61
+ {
62
+ "id": "observed-appointments",
63
+ "label": "observed appointment denominator",
64
+ "required": [
65
+ "420\\s+appointments?"
66
+ ]
67
+ },
68
+ {
69
+ "id": "staff-time",
70
+ "label": "weekly reminder effort",
71
+ "required": [
72
+ "6\\s+(staff\\s+)?hours?\\s+per\\s+week"
73
+ ]
74
+ },
75
+ {
76
+ "id": "pilot-duration",
77
+ "label": "two-week pilot constraint",
78
+ "required": [
79
+ "two[- ]week|2[- ]week"
80
+ ]
81
+ },
82
+ {
83
+ "id": "pilot-data-boundary",
84
+ "label": "no-PHI pilot constraint",
85
+ "required": [
86
+ "(no|without|not)\\s+(handling|ingesting|using)?\\s*PHI|protected health information"
87
+ ]
88
+ }
89
+ ]
90
+ },
91
+ {
92
+ "kind": "citationsResolve",
93
+ "file": "decisions/idea-office-hours.md",
94
+ "minCitations": 1
95
+ }
96
+ ]
97
+ }
98
+ ],
99
+ "taskNotes": {
100
+ "minBytes": 160,
101
+ "requireCraftbookTask": true,
102
+ "checks": [
103
+ {
104
+ "kind": "contains",
105
+ "file": "task-notes.md",
106
+ "pattern": "\\bDONE\\b[\\s\\S]*decisions/idea-office-hours\\.md",
107
+ "label": "terminal craftbook note names the decision"
108
+ }
109
+ ]
110
+ },
111
+ "unchangedFixtures": [
112
+ "source/idea-context.md"
113
+ ]
114
+ },
115
+ "rubric": {
116
+ "artifact": {
117
+ "path": "decisions/idea-office-hours.md",
118
+ "kind": "markdown"
119
+ },
120
+ "axes": [
121
+ {
122
+ "name": "Diagnostic depth",
123
+ "description": "The decision separates observed evidence from assumptions and identifies the most consequential unknowns before proposing a solution."
124
+ },
125
+ {
126
+ "name": "Option quality",
127
+ "description": "Alternatives are genuinely different, fairly compared, and include a credible manual or no-build path."
128
+ },
129
+ {
130
+ "name": "Decision usefulness",
131
+ "description": "The chosen wedge is narrow, constraint-aware, measurable, and leads to a concrete owner-backed next action."
132
+ }
133
+ ],
134
+ "contextNote": "Judge only against `source/idea-context.md`; unsupported market or customer claims are defects."
135
+ },
136
+ "qualityFocus": [
137
+ "Evidence is clearly distinguished from assumption",
138
+ "The selected wedge is smaller than a full scheduling platform",
139
+ "The next action has an owner, measurement, and decision-useful outcome"
140
+ ]
141
+ }
@@ -0,0 +1,135 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "title": "Executive-Level Review — analytics expansion decision",
4
+ "objective": "Test whether the Executive-Level Review craftbook challenges a proposal, compares lower-cost alternatives, and produces an evidence-anchored mode verdict with decision conditions.",
5
+ "tags": [
6
+ "workflow",
7
+ "strategy",
8
+ "executive-review",
9
+ "decision"
10
+ ],
11
+ "prompt": "Use the Executive-Level Review craftbook to review `source/analytics-proposal.md`. Challenge whether the proposed scope is the best way to reach the outcome; compare at least three alternatives including the two-day manual export and waiting. Produce all craftbook artifacts and a decision-ready `reviews/executive-level-review.md`. Use exactly one allowed mode verdict, score every required dimension from 0–10 with a factual basis, separate unknowns from evidence, and state explicit approve, pause, and stop conditions. Do not invent customer or financial evidence.",
12
+ "setup": {
13
+ "projectName": "Analytics expansion review",
14
+ "about": "A hermetic executive decision review. The seeded proposal is the complete evidence set.",
15
+ "missionObjectives": "Decide what, if anything, should be approved now while preserving the fastest credible route to learning.",
16
+ "files": [
17
+ {
18
+ "path": "source/analytics-proposal.md",
19
+ "content": "# Embedded analytics proposal\n\n## Requested decision\nApprove an eight-week build of customer-facing dashboards with scheduled PDF delivery and CSV export.\n\n## Evidence\nTwelve of 86 active customers requested better reporting in support conversations. Three customers agreed to a design pilot, but none signed a paid commitment. Support currently creates weekly exports for five customers.\n\n## Cost and constraints\n- Estimate: two engineers for 8 weeks.\n- New charting service: $4,000 per month at current volume.\n- Security review is complete; accessibility and data-retention reviews are not.\n- The enterprise renewal decision is in six weeks.\n- A manual scheduled-export workflow can be built in two engineer-days and would test delivery cadence, but not dashboard engagement.\n\n## Unknowns\nWillingness to pay, which metrics matter, PDF accessibility, and whether scheduled delivery or interactive dashboards drives retention.\n"
20
+ }
21
+ ]
22
+ },
23
+ "mocks": [],
24
+ "success": {
25
+ "taskGraph": {
26
+ "requireCraftbookTask": true,
27
+ "requireTerminalStep": true
28
+ },
29
+ "summary": "The named craftbook produces a grounded executive verdict, alternatives, scorecard, and terminal task record.",
30
+ "deliverables": [
31
+ {
32
+ "path": "reviews/executive-level-review.md",
33
+ "kind": "markdown-report",
34
+ "minBytes": 1400,
35
+ "checks": [
36
+ {
37
+ "kind": "contains",
38
+ "file": "reviews/executive-level-review.md",
39
+ "pattern": "^#{1,3}\\s+Executive verdict\\b[\\s\\S]*(SCOPE EXPANSION|SELECTIVE|HOLD|SCOPE REDUCTION)[\\s\\S]*^#{1,3}\\s+Scorecard\\b[\\s\\S]*^#{1,3}\\s+Alternatives\\b[\\s\\S]*^#{1,3}\\s+Recommendation\\b[\\s\\S]*^#{1,3}\\s+Decision conditions\\b",
40
+ "flags": "im",
41
+ "label": "verdict, scorecard, alternatives, recommendation, and conditions"
42
+ },
43
+ {
44
+ "kind": "contains",
45
+ "file": "reviews/executive-level-review.md",
46
+ "pattern": "(user value).*?(strategic fit).*?(evidence strength).*?(feasibility).*?(sequencing).*?(reversibility).*?(operating cost).*?(downside)",
47
+ "flags": "is",
48
+ "label": "complete executive scorecard"
49
+ },
50
+ {
51
+ "kind": "valueGrounding",
52
+ "file": "reviews/executive-level-review.md",
53
+ "facts": [
54
+ {
55
+ "id": "customer-requests",
56
+ "required": [
57
+ "12\\s+(?:of\\s+86\\s+)?(?:active\\s+)?customers"
58
+ ]
59
+ },
60
+ {
61
+ "id": "pilot-evidence",
62
+ "required": [
63
+ "3\\s+customers?[^.]{0,60}(pilot|agreed)"
64
+ ]
65
+ },
66
+ {
67
+ "id": "build-duration",
68
+ "required": [
69
+ "8\\s+weeks?"
70
+ ]
71
+ },
72
+ {
73
+ "id": "operating-cost",
74
+ "required": [
75
+ "\\$4,?000\\s+per\\s+month"
76
+ ]
77
+ },
78
+ {
79
+ "id": "cheap-alternative",
80
+ "required": [
81
+ "(two|2)[ -]?(engineer[- ])?days?[\\s\\S]{0,120}(manual|scheduled)[ -]export"
82
+ ]
83
+ }
84
+ ]
85
+ },
86
+ {
87
+ "kind": "citationsResolve",
88
+ "file": "reviews/executive-level-review.md",
89
+ "minCitations": 1
90
+ }
91
+ ]
92
+ }
93
+ ],
94
+ "taskNotes": {
95
+ "minBytes": 160,
96
+ "requireCraftbookTask": true,
97
+ "checks": [
98
+ {
99
+ "kind": "contains",
100
+ "file": "task-notes.md",
101
+ "pattern": "\\bDONE\\b[\\s\\S]*reviews/executive-level-review\\.md",
102
+ "label": "terminal craftbook note names the review"
103
+ }
104
+ ]
105
+ },
106
+ "unchangedFixtures": [
107
+ "source/analytics-proposal.md"
108
+ ]
109
+ },
110
+ "rubric": {
111
+ "artifact": {
112
+ "path": "reviews/executive-level-review.md",
113
+ "kind": "markdown"
114
+ },
115
+ "axes": [
116
+ {
117
+ "name": "Premise challenge",
118
+ "description": "The review tests whether action is warranted now and compares materially different ways to learn or deliver value."
119
+ },
120
+ {
121
+ "name": "Evidence discipline",
122
+ "description": "Scores and conclusions trace to supplied facts, with unsupported assumptions and missing decisions called out."
123
+ },
124
+ {
125
+ "name": "Executive usefulness",
126
+ "description": "The verdict is decisive, sequenced, reversible where possible, and paired with clear decision-changing conditions."
127
+ }
128
+ ]
129
+ },
130
+ "qualityFocus": [
131
+ "One allowed mode verdict is selected",
132
+ "All scorecard dimensions have evidence-backed scores",
133
+ "The two-day alternative and missing willingness-to-pay evidence influence the decision"
134
+ ]
135
+ }