@knowledge-bus/opencode 0.5.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.
@@ -0,0 +1,711 @@
1
+ guidance:
2
+ id: product-development-guidance
3
+ label: Product development — type guidance
4
+ version: 0.5
5
+ conforms_to: kbp/0.5
6
+ guides: product-development
7
+
8
+ guidance_kinds:
9
+ - { id: convention, sourced: true } # the established form, per an external authority
10
+ - { id: pitfall, sourced: false } # a named, recurring failure mode
11
+ - { id: heuristic, sourced: false } # a quality bar with no external authority
12
+ - { id: empty, sourced: false } # what an honest empty answer means
13
+ - { id: refresh, sourced: false } # what makes this stale
14
+ - { id: boundary, sourced: false } # the reason behind a declared distinct-from edge
15
+
16
+ sources:
17
+
18
+ pichler:
19
+ cite: "Roman Pichler — Product Vision Board"
20
+ url: "https://www.romanpichler.com/tools/product-vision-board/"
21
+ moore:
22
+ cite: "Geoffrey Moore — Crossing the Chasm, the positioning template"
23
+ url: "https://the.gt/geoffrey-moore-positioning-statement/"
24
+ porter:
25
+ cite: "Michael E. Porter — What Is Strategy? (Harvard Business Review, Nov-Dec 1996)"
26
+ url: "https://hbr.org/1996/11/what-is-strategy"
27
+ bmc:
28
+ cite: "Strategyzer (Alexander Osterwalder) — The Business Model Canvas"
29
+ url: "https://www.strategyzer.com/library/the-business-model-canvas"
30
+ vpc:
31
+ cite: "Strategyzer — The Value Proposition Canvas"
32
+ url: "https://www.strategyzer.com/library/the-value-proposition-canvas"
33
+ lean-canvas:
34
+ cite: "Ash Maurya — Lean Canvas (2010)"
35
+ url: "https://leanspark.ai/leancanvas"
36
+ checked: 2026-07-22
37
+ pestle:
38
+ cite: "PESTLE — standard macro-environment framework; specific origin not yet traced"
39
+ ubl:
40
+ cite: "Malte Ubl — Design Docs at Google"
41
+ url: "https://www.industrialempathy.com/posts/design-docs-at-google/"
42
+ rust-rfc:
43
+ cite: "The Rust project — RFC template"
44
+ url: "https://github.com/rust-lang/rfcs/blob/master/0000-template.md"
45
+ madr:
46
+ cite: "MADR — Markdown Architectural Decision Records, template 4.x (Decision Drivers, Confirmation, More Information)"
47
+ url: "https://github.com/adr/madr/blob/main/template/adr-template.md"
48
+ checked: 2026-08-18
49
+ nygard-any:
50
+ cite: "MADR project history and the ADR organisation, on the form serving any decision — renamed to Markdown Any Decision Records in 3.0.0-beta and reverted in 4.0.0-beta with the same fields"
51
+ url: "https://adr.github.io/madr/"
52
+ checked: 2026-08-18
53
+ y-statement:
54
+ cite: "Olaf Zimmermann — Y-statement / (WH)Y-statement; Zdun, Capilla, Tran and Zimmermann, Sustainable Architectural Decisions, IEEE Software 30(6), 2013"
55
+ url: "https://socadk.github.io/design-practice-repository/artifact-templates/DPR-ArchitecturalDecisionRecordYForm.html"
56
+ checked: 2026-08-18
57
+ tyree-akerman:
58
+ cite: "Jeff Tyree and Art Akerman — Architecture Decisions: Demystifying Architecture, IEEE Software 22(2), 2005; the field table is derived from the REMAP and DRL rationale metamodels"
59
+ url: "https://doi.org/10.1109/MS.2005.27"
60
+ checked: 2026-08-18
61
+ iso-42010:
62
+ cite: "ISO/IEC/IEEE 42010 on architecture decisions and rationale, via the editor-maintained standard site (secondary; documents the 2011 edition, not the 2022 second edition)"
63
+ url: "http://www.iso-architecture.org/42010/"
64
+ checked: 2026-08-18
65
+ azure-waf:
66
+ cite: "Microsoft Azure Well-Architected Framework — Maintain an architecture decision record"
67
+ url: "https://learn.microsoft.com/en-us/azure/well-architected/architect-role/architecture-decision-record"
68
+ checked: 2026-08-18
69
+ nepa-rod:
70
+ cite: "NEPA Record of Decision, 40 CFR 1505.2 — last operative text (2024). The CEQ regulations at 40 CFR 1500-1508 were rescinded effective 2025-04-11 and finalised 91 FR 618 (2026-01-08); cited for the drafting convention, not as current law"
71
+ url: "https://www.govinfo.gov/content/pkg/CFR-2024-title40-vol37/xml/CFR-2024-title40-vol37-sec1505-2.xml"
72
+ checked: 2026-08-18
73
+ daci:
74
+ cite: "Atlassian Team Playbook — DACI: A Decision-Making Framework"
75
+ url: "https://www.atlassian.com/team-playbook/plays/daci"
76
+ checked: 2026-08-18
77
+ spade:
78
+ cite: "Gokul Rajaram — SPADE (Setting, People, Alternatives, Decide, Explain), via First Round Review"
79
+ url: "https://review.firstround.com/square-defangs-difficult-decisions-with-this-system-heres-how/"
80
+ checked: 2026-08-18
81
+ dq:
82
+ cite: "Strategic Decisions Group (Spetzler, Winter and Meyer) — the six requirements for decision quality and the weakest-link rule; Howard's Stanford lineage. Book chapter paywalled, cited to SDG"
83
+ url: "https://sdg.com/decision-quality/"
84
+ checked: 2026-08-18
85
+ options-paper:
86
+ cite: "The options-paper convention — issue, background, interests, criteria, enumerated options, optional recommendation; and the straw-man pathology (descriptive secondary source; no fetchable government drafting guide)"
87
+ url: "https://modeldiplomat.com/learn/glossary/options-paper"
88
+ checked: 2026-08-18
89
+ qoc:
90
+ cite: "MacLean, Young, Bellotti and Moran — Questions, Options, and Criteria: Elements of Design Space Analysis, Human-Computer Interaction 6(3-4), 1991. Full text paywalled; primitives quoted from the publisher abstract"
91
+ url: "https://doi.org/10.1080/07370024.1991.9667168"
92
+ checked: 2026-08-18
93
+ bezos-doors:
94
+ cite: "Jeff Bezos — 2015 Amazon letter to shareholders, on one-way and two-way doors and matching process weight to reversibility"
95
+ url: "https://www.sec.gov/Archives/edgar/data/1018724/000119312516530910/d168744dex991.htm"
96
+ checked: 2026-08-18
97
+ hashicorp:
98
+ cite: "HashiCorp — Writing Practices and Culture"
99
+ url: "https://www.hashicorp.com/how-hashicorp-works/articles/writing-practices-and-culture"
100
+ oxide:
101
+ cite: "Oxide — RFD 1: Requests for Discussion"
102
+ url: "https://rfd.shared.oxide.computer/rfd/0001"
103
+ sdd:
104
+ cite: "Pega Academy — Solution Design Document, an enterprise-implementation deliverable"
105
+ url: "https://academy.pega.com/topic/solution-design-document/v2"
106
+ product-brief:
107
+ cite: "Productboard — Product Brief"
108
+ url: "https://www.productboard.com/glossary/product-brief/"
109
+ north-star:
110
+ cite: "Amplitude — The North Star Playbook"
111
+ url: "https://amplitude.com/books/north-star/about-the-north-star-framework"
112
+ ns-one:
113
+ cite: "Amplitude — The North Star Playbook, ch. 1 § One North Star Metric and ch. 4 trap 3"
114
+ url: "https://amplitude.com/books/north-star/about-the-north-star-framework"
115
+ checked: 2026-08-12
116
+ ns-checklist:
117
+ cite: "Amplitude — The North Star Playbook, ch. 2 North Star checklist, check 2"
118
+ url: "https://amplitude.com/books/north-star/the-north-star-checklist"
119
+ checked: 2026-08-12
120
+ outcome:
121
+ cite: "Teresa Torres — Continuous Discovery Habits (2021), on shifting from outputs to outcomes"
122
+ url: "https://www.producttalk.org/2024/07/shifting-from-outputs-to-outcomes/"
123
+ omtm:
124
+ cite: "Alistair Croll and Benjamin Yoskovitz — Lean Analytics (O'Reilly, 2013)"
125
+ url: "https://leananalyticsbook.com/"
126
+ cascade:
127
+ cite: "John Doerr — Measure What Matters (2018), on rigid cascading's costs and aligned autonomy"
128
+ url: "https://www.whatmatters.com/faqs/cascading-top-down-okr-examples"
129
+ kpi:
130
+ cite: "David Parmenter — Key Performance Indicators (Wiley, 4th ed. 2020)"
131
+ url: "https://www.wiley.com/en-us/Key+Performance+Indicators%3A+Developing%2C+Implementing%2C+and+Using+Winning+KPIs%2C+4th+Edition-p-9781119620778"
132
+ guardrail-org:
133
+ cite: "Kohavi, Tang and Xu — Trustworthy Online Controlled Experiments (CUP, 2020), ch. 6 and ch. 21"
134
+ url: "https://experimentguide.com/"
135
+ working-backwards:
136
+ cite: "Colin Bryar and Bill Carr — Working Backwards, on Amazon's controllable input metrics"
137
+ url: "https://workingbackwards.com/"
138
+ c4:
139
+ cite: "Simon Brown — the C4 model"
140
+ url: "https://c4model.com/"
141
+ design-md:
142
+ cite: "Google — DESIGN.md format specification, google-labs-code/design.md (docs/spec.md, PHILOSOPHY.md), version alpha and explicitly unstable. Read from the repository; the published docs site returns an empty body"
143
+ url: "https://github.com/google-labs-code/design.md/blob/main/docs/spec.md"
144
+ checked: 2026-08-18
145
+ dtcg:
146
+ cite: "Design Tokens Community Group — Design Tokens Format Module 2025.10, a draft marked 'Do not implement this version'"
147
+ url: "https://www.designtokens.org/TR/drafts/format/"
148
+ checked: 2026-08-18
149
+ hig:
150
+ cite: "Apple — Human Interface Guidelines, the Foundations topic list. Client-rendered; read through a headless browser"
151
+ url: "https://developer.apple.com/design/human-interface-guidelines/"
152
+ checked: 2026-08-18
153
+ nng-moodboard:
154
+ cite: "Lillian Yang — Mood Boards in UX: How and Why to Use Them (Nielsen Norman Group, 26 February 2023)"
155
+ url: "https://www.nngroup.com/articles/mood-boards/"
156
+ checked: 2026-08-18
157
+ wcag22:
158
+ cite: "W3C — Web Content Accessibility Guidelines 2.2 (Recommendation, 12 December 2024)"
159
+ url: "https://www.w3.org/TR/WCAG22/"
160
+ checked: 2026-08-18
161
+ premortem:
162
+ cite: "Gary Klein — Performing a Project Premortem (Harvard Business Review, September 2007)"
163
+ url: "https://hbr.org/2007/09/performing-a-project-premortem"
164
+ jtbd-hbr:
165
+ cite: "Christensen, Hall, Dillon and Duncan — Know Your Customers' Jobs to Be Done (HBR, September 2016)"
166
+ url: "https://hbr.org/2016/09/know-your-customers-jobs-to-be-done"
167
+ job-story:
168
+ cite: "Alan Klement — Replacing The User Story With The Job Story"
169
+ url: "https://medium.com/@alanklement/replacing-the-user-story-with-the-job-story-af7cdee10c27"
170
+ risk-register:
171
+ cite: "Risk register — standard across PMBOK, PRINCE2 and ISO Guide 73"
172
+ url: "https://en.wikipedia.org/wiki/Risk_register"
173
+ message-house:
174
+ cite: "Product Marketing Alliance — product messaging framework; April Dunford on positioning as its input"
175
+ url: "https://www.productmarketingalliance.com/product-messaging-framework-template/"
176
+ checked: 2026-08-12
177
+ brand-guide:
178
+ cite: "GitLab Pajamas — a standing public brand guideline set"
179
+ url: "https://design.gitlab.com/"
180
+ scenario-walkthrough:
181
+ cite: "Alan Cooper et al. — About Face, on the key path scenario"
182
+ url: "https://medium.com/product-labs/how-to-write-a-useful-scenario-walkthrough-f48bf40b1b69"
183
+ adr:
184
+ cite: "Michael Nygard — Documenting Architecture Decisions (2011); templates at adr.github.io"
185
+ url: "https://www.cognitect.com/blog/2011/11/15/documenting-architecture-decisions"
186
+ adr-boundary:
187
+ cite: "Azure Well-Architected — Architecture decision record, on boundary discipline"
188
+ url: "https://learn.microsoft.com/en-us/azure/well-architected/architect-role/architecture-decision-record"
189
+ canonical:
190
+ cite: "Enterprise Integration Patterns — Canonical Data Model; DDD's domain model and ubiquitous language"
191
+ url: "https://www.enterpriseintegrationpatterns.com/patterns/messaging/CanonicalDataModel.html"
192
+
193
+ elements:
194
+
195
+ product-vision:
196
+ - { kind: convention, source: pichler,
197
+ claim: "Describe the change in the world, not the product." }
198
+ - { kind: pitfall, source: asserted,
199
+ claim: "A standalone vision doc usually signals the strategy around it is missing — vision is the top block of a strategy artifact, not its own deliverable." }
200
+ - { kind: boundary, source: asserted,
201
+ claim: "Per-product visions nest under the company vision; left unnested they compete with it." }
202
+
203
+ positioning-statement:
204
+ - { kind: convention, source: moore,
205
+ claim: "For [segment] who [need], X is a [category] that [benefit], unlike [alternative]." }
206
+ - { kind: pitfall, source: asserted,
207
+ claim: "Brand-led organisations treat this as marketing's asset and product-led ones as product's. Settle ownership before it gets written twice." }
208
+ - { kind: empty, source: asserted, when: { maturity: [unproven] },
209
+ claim: "Pre-competition work often cannot fill the 'unlike' clause honestly. Leave it empty rather than fake it." }
210
+
211
+ customer-segments:
212
+ - { kind: pitfall, source: asserted,
213
+ claim: "Segment by shared job or behaviour, not demographics alone — demographic-only segments are the classic false-precision trap." }
214
+ - { kind: pitfall, source: asserted,
215
+ claim: "In B2B the buyer, the user and the payer differ; healthtech's patient/provider/payer triangle makes single-segment framing misleading." }
216
+ - { kind: pitfall, source: asserted, when: { maturity: [unproven] },
217
+ claim: "One beachhead segment. A long segment list this early signals unvalidated focus." }
218
+ - { kind: boundary, source: asserted,
219
+ claim: "This decides who is served. A named category set the product's own logic consumes is Canonical Model, not segmentation." }
220
+
221
+ value-proposition:
222
+ - { kind: heuristic, source: asserted,
223
+ claim: "Always relative to the segment's current alternative, including doing nothing." }
224
+ - { kind: pitfall, source: asserted,
225
+ claim: "One per segment. A single all-segment value proposition usually means the segments were never really split." }
226
+ - { kind: heuristic, source: asserted, when: { uptake: [bought] },
227
+ claim: "Quantify in time, cost or risk. Where there is no market, qualitative is fine — but still name the alternative." }
228
+
229
+ problem-statement:
230
+ - { kind: heuristic, source: asserted,
231
+ claim: "Pain, affected party, and why now — with no embedded solution." }
232
+ - { kind: pitfall, source: asserted,
233
+ claim: "Solution-shaped problems pre-commit the answer." }
234
+ - { kind: heuristic, source: asserted,
235
+ claim: "One quantified pain beats five asserted ones." }
236
+
237
+ solution-overview:
238
+ - { kind: boundary, source: asserted,
239
+ claim: "Approach and behaviour, not internals. How it technically holds together is architecture-phase territory by the Conclusion Test." }
240
+ - { kind: convention, source: lean-canvas,
241
+ claim: "A Lean Canvas keeps this deliberately thin — top features only; a design document gives it a full section." }
242
+ - { kind: heuristic, source: asserted,
243
+ claim: "State what the solution deliberately does not do. Pairs with Scope (In / Out)." }
244
+
245
+ goals-and-non-goals:
246
+ - { kind: convention, source: ubl,
247
+ claim: "A design-doc core section. Non-goals are outcome-level refusals — things that could reasonably be goals and are chosen against." }
248
+ - { kind: boundary, source: asserted,
249
+ claim: "Distinct from Scope (In / Out)'s feature-level lists and from Trade-offs' strategic refusals. Cheap insurance against drift." }
250
+
251
+ channels:
252
+ - { kind: convention, source: bmc,
253
+ claim: "A Business Model Canvas block spanning discovery, purchase, delivery and support — not just marketing reach." }
254
+ - { kind: heuristic, source: asserted,
255
+ claim: "Product-led versus sales-led growth is at bottom a channels choice. Regulated and enterprise markets often have imposed channels — brokers, distributors, procurement — that dominate the design." }
256
+ - { kind: heuristic, source: asserted,
257
+ claim: "For physical goods, delivery and service channels drive cost structure. Link the two." }
258
+
259
+ customer-relationships:
260
+ - { kind: convention, source: bmc,
261
+ claim: "A Business Model Canvas block: the mode per segment — self-serve, high-touch, community, automated." }
262
+ - { kind: pitfall, source: asserted,
263
+ claim: "The most commonly skipped Business Model Canvas block. Leaving it empty hides the retention model." }
264
+
265
+ revenue-streams:
266
+ - { kind: convention, source: bmc,
267
+ claim: "Core to the Business Model Canvas and the Lean Canvas. Strategy canvases often omit it, treating monetisation as downstream of positioning." }
268
+ - { kind: heuristic, source: asserted,
269
+ claim: "In regulated industries this is often fixed by regulation or reimbursement codes. Record it as a constraint, not a choice." }
270
+ - { kind: heuristic, source: asserted, when: { maturity: [unproven] },
271
+ claim: "A hypothesis to test, not a plan. Deep tech and hardware commonly defer it until technical maturity." }
272
+
273
+ cost-structure:
274
+ - { kind: heuristic, source: asserted,
275
+ claim: "The dominant driver is the insight, not the line items — services and construction run on per-project labour, software on headcount, hardware on cost of goods sold and capex." }
276
+ - { kind: heuristic, source: asserted,
277
+ claim: "Distinguish fixed from variable and note what scales with growth. The growth mechanism can invert the shape." }
278
+ - { kind: heuristic, source: asserted, when: { uptake: [given] },
279
+ claim: "Still applies at personal and household scale, where time is the usual dominant cost." }
280
+
281
+ key-resources:
282
+ - { kind: convention, source: bmc,
283
+ claim: "A Business Model Canvas block: data, intellectual property, licences, physical plant, brand." }
284
+ - { kind: heuristic, source: asserted,
285
+ claim: "Deep tech, EV and robotics are dominated by intellectual property and specialised equipment. Licences and certifications carry lead times — flag them early." }
286
+ - { kind: empty, source: asserted,
287
+ claim: "Software businesses often run thin here. Thin is an answer, not a gap." }
288
+
289
+ key-activities:
290
+ - { kind: convention, source: bmc,
291
+ claim: "A Business Model Canvas block. Everything not listed here is partnership material." }
292
+ - { kind: boundary, source: asserted,
293
+ claim: "Distinct from Capabilities: activities are what you do, capabilities are what you must be able to do. Strategy canvases use the latter." }
294
+
295
+ key-partnerships:
296
+ - { kind: convention, source: bmc,
297
+ claim: "A Business Model Canvas block: suppliers, integrators, resellers, platforms." }
298
+ - { kind: pitfall, source: asserted,
299
+ claim: "For platform-dependent products the platform is a partnership with unilateral terms. Track it as a risk too." }
300
+ - { kind: heuristic, source: asserted,
301
+ claim: "In construction and hardware, partner schedules land directly on the critical path." }
302
+
303
+ unfair-advantage:
304
+ - { kind: convention, source: lean-canvas,
305
+ claim: "Real forms are network effects, proprietary data, switching costs, regulatory moats, patents and brand." }
306
+ - { kind: pitfall, source: lean-canvas,
307
+ claim: "The Lean Canvas's hardest block — 'first mover' and 'passion' do not qualify." }
308
+ - { kind: empty, source: asserted, when: { maturity: [unproven] },
309
+ claim: "Usually empty at this stage. Honest emptiness beats an invented moat." }
310
+
311
+ trade-offs:
312
+ - { kind: convention, source: porter,
313
+ claim: "Strategy without refused options is not strategy. This element is the record of refusal." }
314
+ - { kind: boundary, source: asserted,
315
+ claim: "Absent from the Business Model Canvas and Lean Canvas by design; core to strategy canvases." }
316
+ - { kind: refresh, source: asserted,
317
+ claim: "Date each entry. Refused options get re-litigated when context shifts, and the date says whether that is due." }
318
+
319
+ growth-mechanism:
320
+ - { kind: heuristic, source: asserted,
321
+ claim: "Name the loop — viral, usage, content, referral, sales-led, paid — rather than writing a generic marketing plan. Loops compound; funnels do not." }
322
+ - { kind: heuristic, source: asserted,
323
+ claim: "Consumer runs on virality and habit, B2B on expansion revenue and referenceability; regulated growth is often gated by accreditation cycles." }
324
+
325
+ capabilities:
326
+ - { kind: heuristic, source: asserted,
327
+ claim: "The gap is the point: capability named minus capability possessed is the hiring, partnering and timeline reality." }
328
+ - { kind: heuristic, source: asserted,
329
+ claim: "Deep tech and regulated domains carry acquisition lead times — clearances, certifications, rare skills — that bound the strategy's clock." }
330
+
331
+ north-star-metric:
332
+ - { kind: convention, source: north-star,
333
+ claim: "Proxies customer value, not company results. Revenue is an outcome, not a North Star." }
334
+ - { kind: convention, source: ns-one,
335
+ claim: "One per space, at any abstraction, tested by real users, needs and strategy — never by the org chart. Distinct metrics only for genuinely distinct divisions and customer bases." }
336
+ - { kind: convention, source: outcome,
337
+ claim: "The name stays singular: an effort steers by a scope-named product outcome — a behavioural measure within its own influence that drives the star — and sets its success criteria on that." }
338
+ - { kind: convention, source: omtm,
339
+ claim: "The stage-scoped One Metric That Matters is the same move under another name — team- and period-scoped, complementing a durable star rather than competing with it." }
340
+ - { kind: convention, source: ns-checklist,
341
+ claim: "Represents vision and strategy without being either — a strong metric statement lets a reader recover both at a high level." }
342
+ - { kind: pitfall, source: asserted,
343
+ claim: "A North Star without input metrics is not actionable." }
344
+ - { kind: boundary, source: asserted,
345
+ claim: "Success Metrics owns the definition. A strategy canvas records the choice and links back rather than restating it, because copies drift." }
346
+
347
+ input-metrics:
348
+ - { kind: convention, source: working-backwards,
349
+ claim: "Leading and team-influenceable, or it is an output someone mislabelled." }
350
+ - { kind: heuristic, source: asserted,
351
+ claim: "Few and causal beats many and correlated." }
352
+ - { kind: convention, source: kpi,
353
+ claim: "The KPI umbrella distributes across this decomposition rather than joining it: the star is the one KPI promoted above the rest, input metrics are the leading team-influenceable ones, and lagging result indicators are the business results the star predicts." }
354
+
355
+ guardrail-health-metrics:
356
+ - { kind: heuristic, source: asserted,
357
+ claim: "The counterweight to any target — latency, churn, quality, trust; burnout at personal scale." }
358
+ - { kind: convention, source: guardrail-org,
359
+ claim: "Guardrails divide into trust-related and organisational, the latter largely shared across experiments — so a guardrail binds at the widest scope that must hold, wider than the initiative pushing against it." }
360
+ - { kind: pitfall, source: asserted,
361
+ claim: "Experimentation-heavy organisations formalise these as launch blockers; everywhere else they stay implicit until an incident. Write them down first." }
362
+ - { kind: boundary, source: lean-canvas,
363
+ claim: "Absent from the canvas tradition — the Business Model Canvas has no metrics block and the Lean Canvas's Key Metrics tracks performance, not counterweights. The standing home is Success Metrics." }
364
+
365
+ success-criteria:
366
+ - { kind: heuristic, source: asserted,
367
+ claim: "Per-initiative acceptance, set before the work, expiring with the effort — unlike metrics that run continuously." }
368
+ - { kind: pitfall, source: asserted,
369
+ claim: "'Improve X' invites post-hoc rationalisation. Set a threshold and a measurement date." }
370
+ - { kind: heuristic, source: asserted,
371
+ claim: "What a PRD loosely calls a launch's success metrics is this element. A key result is this element wearing OKR vocabulary — a time-boxed threshold, typically on an input metric." }
372
+ - { kind: convention, source: cascade,
373
+ claim: "The initiative inherits its space's star and guardrails by reference and authors its own commitments. The reference cascades; the goals do not." }
374
+
375
+ market-sizing:
376
+ - { kind: heuristic, source: asserted,
377
+ claim: "Run top-down and bottom-up. They should disagree, and reconciling them is the insight." }
378
+ - { kind: heuristic, source: asserted,
379
+ claim: "As much an investor convention as a planning one. Include it only when the bet's size justifies it." }
380
+ - { kind: pitfall, source: asserted, when: { maturity: [unproven] },
381
+ claim: "Pre-category, point estimates are fiction. Use scenario ranges." }
382
+
383
+ internal-strengths-weaknesses:
384
+ - { kind: pitfall, source: asserted,
385
+ claim: "Sanitised weaknesses are the most common SWOT failure." }
386
+ - { kind: heuristic, source: asserted,
387
+ claim: "Strengths only count against a stated goal or competitor. Context-free strengths are trivia." }
388
+
389
+ external-opportunities-threats:
390
+ - { kind: heuristic, source: asserted,
391
+ claim: "Feed this from PESTLE and competitor work, not from vacuum brainstorming." }
392
+ - { kind: pitfall, source: asserted,
393
+ claim: "A threat wants an owner and a trigger condition, or it is just weather." }
394
+
395
+ macro-environment-factors:
396
+ - { kind: convention, source: pestle,
397
+ claim: "Six lenses: political, economic, social, technological, legal, environmental." }
398
+ - { kind: heuristic, source: asserted,
399
+ claim: "Weight by industry — legal and political dominate banking and healthtech, environmental dominates construction and energy, social and technological dominate consumer." }
400
+ - { kind: refresh, source: asserted,
401
+ claim: "Dates fast. Refresh on regime change — election, regulation, platform shift." }
402
+
403
+ competitor-profile:
404
+ - { kind: heuristic, source: asserted,
405
+ claim: "Per competitor: offering, segment overlap, strengths and weaknesses, pricing where knowable." }
406
+ - { kind: pitfall, source: asserted,
407
+ claim: "Include indirect alternatives and doing nothing. The spreadsheet-and-email incumbent beats most challengers." }
408
+ - { kind: boundary, source: asserted,
409
+ claim: "Sales battlecards are the externalised descendant. Keep evidence separate from spin." }
410
+
411
+ jobs-to-be-done:
412
+ - { kind: convention, source: jtbd-hbr,
413
+ claim: "Jobs are circumstance-anchored and stable. Solutions churn; jobs do not." }
414
+ - { kind: convention, source: job-story,
415
+ claim: "The when / want / so-that job-story form captures circumstance better than persona-attached stories." }
416
+
417
+ pains-and-gains:
418
+ - { kind: convention, source: vpc,
419
+ claim: "Osterwalder's value-proposition-canvas pairing — pains before, gains after." }
420
+ - { kind: pitfall, source: asserted,
421
+ claim: "Source from evidence — interviews, support logs — not empathy-map guessing. Rank by severity times frequency or the list flattens." }
422
+
423
+ user-job-stories:
424
+ - { kind: convention, source: job-story,
425
+ claim: "A user story (as-a / I-want / so-that) presumes a persona; a job story (when / I-want / so-I-can) presumes a circumstance. Pick one per document; do not mix." }
426
+ - { kind: heuristic, source: asserted,
427
+ claim: "Acceptance criteria turn a story from a conversation-starter into testable scope." }
428
+
429
+ stepwise-trace:
430
+ - { kind: heuristic, source: asserted,
431
+ claim: "The joins are the content. No single story contains a seam, and a set of stories does not sum to one trace." }
432
+ - { kind: boundary, source: rust-rfc,
433
+ claim: "One actor, one concrete circumstance, full resolution — all-behaviour-in-outline is Solution Overview's axis. Inside a design document this lives in the RFC tradition's guide-level explanation." }
434
+
435
+ risks-and-assumptions:
436
+ - { kind: heuristic, source: asserted,
437
+ claim: "An assumption is believed true but unvalidated; a risk could go wrong. Each gets impact times likelihood and a response — mitigate, accept, watch." }
438
+ - { kind: convention, source: premortem,
439
+ claim: "Pre-mortem sorting — real tigers versus paper tigers — resists both alarmism and optimism." }
440
+ - { kind: convention, source: rust-rfc,
441
+ claim: "The RFC tradition records drawbacks — known, accepted costs — separately from risks, which are uncertainties." }
442
+ - { kind: heuristic, source: asserted, when: { authority: [approve, statutory] },
443
+ claim: "Regulated and safety domains make this element formal and auditable. Elsewhere the discipline is the same; the paperwork is not." }
444
+
445
+ scope-in-out:
446
+ - { kind: heuristic, source: asserted,
447
+ claim: "Three lists, not two: in, deferred with a revisit trigger, and refused with the reason." }
448
+ - { kind: heuristic, source: asserted,
449
+ claim: "The refused list is the valuable one — it prevents silent re-expansion." }
450
+ - { kind: convention, source: rust-rfc,
451
+ claim: "The deferred list is where natural extensions land — the RFC tradition's future possibilities." }
452
+
453
+ constraints:
454
+ - { kind: heuristic, source: asserted,
455
+ claim: "Imposed, not chosen: regulation, budget, deadline, platform, physics." }
456
+ - { kind: boundary, source: asserted,
457
+ claim: "Distinct from Trade-offs. Mislabelling a choice as a constraint hides a decision." }
458
+
459
+ cross-cutting-concerns:
460
+ - { kind: convention, source: ubl,
461
+ claim: "A design-doc core section: security, privacy, observability." }
462
+ - { kind: heuristic, source: asserted, when: { authority: [approve, statutory] },
463
+ claim: "Regulated domains extend the list — compliance, audit, accessibility." }
464
+ - { kind: heuristic, source: asserted,
465
+ claim: "Exists so these get weighed while change is still cheap." }
466
+ - { kind: convention, source: wcag22,
467
+ claim: "Accessibility minima come from outside, are testable, and bind whatever the identity says. They are obligations to meet, not renderings to choose." }
468
+
469
+ visual-identity-rules:
470
+ - { kind: heuristic, source: asserted,
471
+ claim: "A rule set with nothing forbidden is usually not settled yet." }
472
+ - { kind: heuristic, source: asserted,
473
+ claim: "Takes conclusions, not capture: adopted tokens and marks, never the mood boards and swatch explorations that led there." }
474
+ - { kind: pitfall, source: nng-moodboard,
475
+ claim: "A mood board is what a team makes to agree on a feeling before any rule exists. It is input to this element, not content for it." }
476
+ - { kind: convention, source: design-md,
477
+ claim: "The machine-readable form fixes the order the sections come in, and requires none of them except a primary colour palette." }
478
+ - { kind: convention, source: dtcg,
479
+ claim: "Token formats carry colour, size, type and timing. Icons, accessibility and writing rules fit in none of them, and are no less settled for that." }
480
+ - { kind: heuristic, source: design-md,
481
+ claim: "Name a specific reference rather than a list of adjectives. 'Modern, clean, premium' fits almost anything." }
482
+ - { kind: boundary, source: asserted,
483
+ claim: "These are the standing rules other designs comply with. Recording per-design that an obligation is met stays Cross-Cutting Concerns territory." }
484
+ - { kind: empty, source: asserted,
485
+ claim: "Most of these are only partly answered. A settled palette and nothing else is a real answer, not a stub." }
486
+
487
+ verbal-identity-rules:
488
+ - { kind: convention, source: hig,
489
+ claim: "Writing sits among the foundations as a peer of colour and typography, not beneath them." }
490
+ - { kind: convention, source: brand-guide,
491
+ claim: "The other common arrangement gives writing its own branch beside the visual one, under messaging or content. Both keep them apart; none of the sets surveyed merges them." }
492
+ - { kind: heuristic, source: asserted,
493
+ claim: "The words a brand refuses do as much work as the ones it adopts." }
494
+ - { kind: boundary, source: message-house,
495
+ claim: "Adopted standing copy — boilerplate, taglines, pitches at set lengths — is this territory. The message house is the assembled descendant, taking positioning as input and pillar claims from Value Proposition, restating neither." }
496
+ - { kind: empty, source: asserted,
497
+ claim: "Honestly empty where nothing is written down and every wording is decided in the moment." }
498
+
499
+ alternatives-considered:
500
+ - { kind: convention, source: rust-rfc,
501
+ claim: "Standard in RFCs, decision documents and decision records. This element holds the roads not taken." }
502
+ - { kind: boundary, source: adr,
503
+ claim: "The winner lives in Decision. Folding the chosen option in here structurally breaks that element." }
504
+ - { kind: convention, source: y-statement,
505
+ claim: "Naming the rejected options is grammatically obligatory in the Y-statement form — 'and neglected …' — not an optional courtesy to the reader." }
506
+ - { kind: convention, source: spade,
507
+ claim: "An option set earns its name by being feasible, diverse and comprehensive: realistic, not micro-variants of one another, and covering the problem space." }
508
+ - { kind: pitfall, source: options-paper,
509
+ claim: "Flanking a preferred course with two deliberately unattractive alternatives simulates choice rather than offering it." }
510
+ - { kind: heuristic, source: asserted,
511
+ claim: "Two honest alternatives beat five straw men. Absence invites re-litigation." }
512
+
513
+ decision-criteria:
514
+ - { kind: convention, source: qoc,
515
+ claim: "Criteria are a first-class object, not prose inside the rationale: options are assessed against them, and the assessment carries a sign. That is what lets a later reader see that two decisions were judged against the same criterion, or against conflicting ones." }
516
+ - { kind: convention, source: madr,
517
+ claim: "Stated before the options and referenced from the outcome, so the choice reads as 'best against these', not 'best because I say so'." }
518
+ - { kind: convention, source: nepa-rod,
519
+ claim: "Where an outside body reviews the decision, naming the factors balanced and how they entered the decision is the whole defence against a charge of arbitrariness. This is why the element hardens under external authority rather than being a nicety." }
520
+ - { kind: boundary, source: asserted,
521
+ claim: "Distinct from Goals & Non-Goals and from Constraints: a criterion is a dimension options are compared along, a goal is an outcome aimed for, and a constraint is a fixed limit that admits no trade-off." }
522
+ - { kind: empty, source: asserted,
523
+ claim: "Honestly empty means the choice was made on one dominant consideration already stated in the decision — not that the criteria were never articulated." }
524
+
525
+ decision:
526
+ - { kind: convention, source: adr,
527
+ claim: "One decision per record, dated, and never edited in place: a stale decision is superseded by a new record." }
528
+ - { kind: convention, source: y-statement,
529
+ claim: "Bad rationale has a recognisable shape — 'everybody does it', 'we have always done it like that', 'this will look good on my resume'. Reasoning that survives none of those is not reasoning." }
530
+ - { kind: boundary, source: asserted,
531
+ claim: "The reasoning belongs here, with the commitment it justifies. Splitting rationale into its own element leaves a decision that states what without why." }
532
+ - { kind: heuristic, source: tyree-akerman,
533
+ claim: "A decision that contributes to no stated objective or requirement is a decision worth not making." }
534
+
535
+ accepted-consequences:
536
+ - { kind: convention, source: adr,
537
+ claim: "All consequences belong here, not only the favourable ones — positive, negative and neutral alike. The consequences of one decision commonly become the context of the next." }
538
+ - { kind: boundary, source: asserted,
539
+ claim: "Distinct from Trade-offs: a strategy-altitude refusal versus the accepted consequences of a commitment already made." }
540
+ - { kind: boundary, source: asserted,
541
+ claim: "Distinct from Risks & Assumptions: a consequence is accepted and expected, a risk is uncertain. Filing a known cost as a risk hides that someone chose it." }
542
+ - { kind: empty, source: asserted,
543
+ claim: "Honestly empty means the option genuinely dominated on every criterion — rare enough that it is worth saying so explicitly." }
544
+
545
+ reversal-condition:
546
+ - { kind: heuristic, source: asserted,
547
+ claim: "An observable condition, not a review date: what would have to be seen for this to stop holding. 'Revisit in six months' is a calendar entry; 'if median latency exceeds the budget for two consecutive quarters' is a condition." }
548
+ - { kind: convention, source: madr,
549
+ claim: "Where the decision can be checked mechanically, name the check — a fitness function, a test, a review step — so that compliance is observable rather than assumed." }
550
+ - { kind: convention, source: azure-waf,
551
+ claim: "A decision taken at low confidence should say so, because recorded low confidence is what makes later reconsideration legitimate rather than second-guessing." }
552
+ - { kind: boundary, source: asserted,
553
+ claim: "Distinct from Risks & Assumptions: a failing assumption is one trigger among several. A better alternative appearing, a constraint lifting, or an authority changing reopen the decision without any assumption having failed." }
554
+ - { kind: empty, source: asserted,
555
+ claim: "Honestly empty means nothing observable would reopen it — which is a strong claim about an irreversible commitment, and should read as one." }
556
+
557
+ prior-art:
558
+ - { kind: convention, source: rust-rfc,
559
+ claim: "A standard RFC section: precedent survey across other systems, organisations or communities." }
560
+ - { kind: boundary, source: asserted,
561
+ claim: "The internal and technical counterpart of Competitor Profile, which is market-facing. Absence invites reinvention." }
562
+
563
+ rollout-and-phasing:
564
+ - { kind: heuristic, source: asserted,
565
+ claim: "Pilot, beta and general availability; migration steps; kill criteria per phase." }
566
+ - { kind: heuristic, source: asserted,
567
+ claim: "Enterprise implementation practice treats this as a core deliverable section. Product briefs include it only when release risk warrants." }
568
+
569
+ sequence-and-foreclosure:
570
+ - { kind: convention, source: bezos-doors,
571
+ claim: "Sort the steps by whether they can be walked back. A step you can reverse is a two-way door and deserves speed; a step you cannot is a one-way door and deserves deliberation. Applying the heavy process to everything is as costly a mistake as applying the light one to the irreversible." }
572
+ - { kind: heuristic, source: asserted,
573
+ claim: "Name what each step forecloses, not merely what it enables. An order that closes no doors is a preference, not a sequence." }
574
+ - { kind: empty, source: asserted,
575
+ claim: "Honestly empty means every step is independently reversible in any order — in which case say so, because that is the licence to move fast." }
576
+
577
+ open-questions:
578
+ - { kind: heuristic, source: asserted,
579
+ claim: "Each wants an owner and a resolution path. An unowned question is a risk mislabelled." }
580
+ - { kind: heuristic, source: asserted,
581
+ claim: "Shrinking across drafts is the health signal. Growing means discovery is not done." }
582
+
583
+ system-boundary-and-context:
584
+ - { kind: convention, source: c4,
585
+ claim: "C4 level 1: the system, its users, and the external systems it exchanges with." }
586
+ - { kind: heuristic, source: asserted,
587
+ claim: "The boundary is a security and ownership decision, not just a drawing choice." }
588
+
589
+ components-and-responsibilities:
590
+ - { kind: convention, source: c4,
591
+ claim: "C4 container and component altitude. One responsibility per component is the test." }
592
+ - { kind: pitfall, source: asserted,
593
+ claim: "Keep to the artifact's altitude — component detail inside a context diagram is the split signal." }
594
+ - { kind: boundary, source: asserted,
595
+ claim: "Components run and own behaviour. The named categories the system reasons with are Canonical Model." }
596
+
597
+ data-flows-and-integrations:
598
+ - { kind: heuristic, source: asserted,
599
+ claim: "Flows name the contract — API, event, file — and the contract's owner." }
600
+ - { kind: heuristic, source: asserted, when: { authority: [approve, statutory] },
601
+ claim: "In regulated and privacy contexts flows are compliance surface. Annotate data classification — personally identifiable information, protected health information — where it applies." }
602
+
603
+ canonical-model:
604
+ - { kind: convention, source: canonical,
605
+ claim: "The names are load-bearing: stable identifiers the space's own logic consumes." }
606
+ - { kind: heuristic, source: asserted,
607
+ claim: "The element holds the model, not the instances. Bulk enumeration beyond what makes the model legible is product content, not documentation." }
608
+ - { kind: heuristic, source: asserted,
609
+ claim: "Takes its host's phase — behaviour-defining sets in a design document, schema-bound catalogues in an architecture overview. Promoted to a standalone document it would fail the one-phase rule." }
610
+
611
+ artifacts:
612
+
613
+ product-strategy-canvas:
614
+ - { kind: heuristic, source: asserted,
615
+ claim: "A fluid type, so the core and situational split is genuine — unlike a fixed-format canvas, where standardisation is the block set." }
616
+
617
+ business-model-canvas:
618
+ - { kind: convention, source: bmc,
619
+ claim: "A fixed-format canvas is all-core by definition: the standardised block set is the artifact." }
620
+
621
+ lean-canvas:
622
+ - { kind: convention, source: lean-canvas,
623
+ claim: "A one-page adaptation of the Business Model Canvas for ventures under extreme uncertainty." }
624
+
625
+ competitor-analysis:
626
+ - { kind: boundary, source: asserted,
627
+ claim: "Sales battlecards are the externalised descendant of this artifact's content. Keep evidence separate from spin." }
628
+
629
+ opportunity-assessment:
630
+ - { kind: convention, source: product-brief,
631
+ claim: "Problem-focused, one to two pages, and it precedes any PRD." }
632
+
633
+ risk-assessment:
634
+ - { kind: convention, source: risk-register,
635
+ claim: "The risk register is standard across PMBOK, PRINCE2 and ISO Guide 73 — a record of information about identified risks." }
636
+
637
+ design-doc:
638
+ - { kind: convention, source: ubl,
639
+ claim: "Canonical sections: context and scope, goals and non-goals, the actual design, alternatives considered, cross-cutting concerns. Skip the document when the solution is unambiguous." }
640
+ - { kind: convention, source: hashicorp,
641
+ claim: "Most large projects start with a PRD to define the problem, followed by an RFC to propose a solution." }
642
+ - { kind: convention, source: oxide,
643
+ claim: "The request-for-discussion is the same document family, inspired by the IETF's RFC series." }
644
+ - { kind: pitfall, source: sdd,
645
+ claim: "Not to be confused with the Solution Design Document, an enterprise-implementation deliverable that is architecture-phase by the Conclusion Test." }
646
+
647
+ brand-identity-guide:
648
+ - { kind: convention, source: brand-guide,
649
+ claim: "The standard form travels under several names — brand guidelines, brand book, style guide — with contested boundaries between them." }
650
+ - { kind: boundary, source: asserted,
651
+ claim: "The brand book's strategy half — values, personality, purpose — belongs to Product Vision and Positioning Statement by the split rule. This type takes only the rules for expressing it, visual and verbal alike." }
652
+ - { kind: convention, source: design-md,
653
+ claim: "A machine-readable form of this type now exists, written for whoever renders the identity — a person or a coding agent alike. It carries the visual rules and no writing rules." }
654
+ - { kind: pitfall, source: asserted,
655
+ claim: "Instructions for revising the document are not part of the document. That is a process, and it belongs wherever the process is owned." }
656
+ - { kind: refresh, source: asserted,
657
+ claim: "Stale when an adopted token or mark changes. A guide describing renderings nobody ships any more misleads more confidently than a missing one." }
658
+
659
+ scenario-walkthrough:
660
+ - { kind: convention, source: scenario-walkthrough,
661
+ claim: "The key path scenario walks the primary pathways as user actions with product responses, deliberately concrete where a context scenario stays high-level." }
662
+ - { kind: pitfall, source: asserted,
663
+ claim: "Distinct from three unrelated walkthroughs: the live usability exercise, ATAM's quality-attribute review, and the inspection meeting." }
664
+
665
+ success-metrics:
666
+ - { kind: convention, source: north-star,
667
+ claim: "The North Star Metric and the input metrics that drive it." }
668
+
669
+ architecture-overview:
670
+ - { kind: convention, source: c4,
671
+ claim: "C4 levels 1 and 2 — system context and containers." }
672
+
673
+ system-context-diagram:
674
+ - { kind: convention, source: c4,
675
+ claim: "C4 level 1 exactly. Component detail inside it is the split signal toward the Architecture Overview." }
676
+
677
+ decision-brief:
678
+ - { kind: convention, source: daci,
679
+ claim: "Exactly one named decider. Without one, a brief produces discussion rather than a decision." }
680
+ - { kind: convention, source: daci, when: { authority: [approve, statutory] },
681
+ claim: "Beside the decider, list who contributes and who is only informed: contributors give input, those informed do not. Neither decides." }
682
+ - { kind: convention, source: spade,
683
+ claim: "The framing carries a date and the reason for that date. A brief with no deadline is a discussion document wearing a decision's clothes." }
684
+ - { kind: convention, source: dq,
685
+ claim: "Quality is judged before the outcome is known, on the frame, the alternatives, the information, the criteria and trade-offs, the reasoning, and the commitment to act — and is no better than the weakest of them." }
686
+ - { kind: convention, source: spade,
687
+ claim: "Finish with a commitment step: until the choice is voiced it is not taken." }
688
+ - { kind: convention, source: spade, when: { authority: [approve, statutory] },
689
+ claim: "Agreement obtained privately and never voiced does not bind, and the decision reopens the first time it meets friction." }
690
+ - { kind: boundary, source: asserted,
691
+ claim: "Distinct from the Decision Record, which it feeds: the brief exists to make one choice by a date, and stops mattering once it is made. Criteria and rejected options do live work only before the decision; afterwards they are history." }
692
+ - { kind: boundary, source: asserted,
693
+ claim: "Distinct from the Opportunity Assessment, which asks whether to pursue one thing at all, and from the Design Doc, which offers one approach to react to. This one picks among several." }
694
+ - { kind: refresh, source: asserted,
695
+ claim: "It goes stale the moment the decision is taken. Keeping it live invites re-litigating a settled choice against criteria that have since moved." }
696
+
697
+ decision-record:
698
+ - { kind: convention, source: adr,
699
+ claim: "One decision per record — context, decision, status, consequences — with status moving proposed to accepted to deprecated or superseded." }
700
+ - { kind: convention, source: azure-waf,
701
+ claim: "The set of records is an append-only log. An accepted record is not edited; a changed decision is a new record that supersedes the old one, with the two linked, so the history of the thinking survives the change of direction." }
702
+ - { kind: heuristic, source: asserted,
703
+ claim: "Not every decision earns a record. Time-separation or irreversibility earns one; headcount and spend do not." }
704
+ - { kind: convention, source: iso-42010,
705
+ claim: "ISO 42010 weighs a decision by impact and cost of change: many stakeholders affected, expensive to enforce, costly to reverse, non-obvious reasoning, major expenditure. Only one of those is about architecture." }
706
+ - { kind: convention, source: nygard-any,
707
+ claim: "The form is not architecture-specific and never was. The same record shape serves a pricing, hiring or procurement decision; what changes with the domain is which decisions merit a record and what the record points at." }
708
+ - { kind: boundary, source: adr-boundary,
709
+ claim: "A decision record that grows into a design guide has stopped being a decision record." }
710
+ - { kind: refresh, source: asserted,
711
+ claim: "It goes stale when its reversal condition is met, not on a schedule — and a record whose reversal condition can no longer be evaluated is already stale." }