A recorded product decision, the what, why, and context behind a strategic or tactical choice.
A decision is a choice a team has committed to, recorded with the context that forced it and the consequences it accepts. The interesting part is the commitment. An idea floated in a meeting is not a decision; a decision is the moment the option space collapses to one and the team agrees to live with what follows. Most teams make hundreds of these and remember almost none, which is why the same arguments resurface every quarter.
The modern discipline of recording decisions comes from Michael Nygard's 2011 essay Documenting Architecture Decisions. He proposed the Architecture Decision Record (ADR): a short document capturing one decision, its context, the choice made, and its consequences. The format barely changed in the decade since, and Martin Fowler later endorsed it as the standard way to give future maintainers the why behind a system, not only the what. Nygard's insightInsightUser ResearchA synthesised finding from researchView reference → was that the act of writing clarifies the thinking, and the record outlives the people who made it.
Around the same time, Jeff Bezos gave the field a complementary lens. In his 2015 letter to Amazon shareholders he split decisions into two types. Type 1 decisions are one-way doors: consequential, hard or impossible to reverse, so they deserve slow and careful deliberation. Type 2 decisions are two-way doors: changeable, so they should be made fast, ideally by individuals or small groups. His warning was that organisations drift toward treating every Type 2 decision as Type 1 as they grow, which kills speed.
The two ideas answer different questions. Nygard tells you how to record a decision; Bezos tells you how much process a decision deserves before you make it. A mature team uses both: classify reversibility first, then write the record at a depth that matches the stakes. The live debate now centres on decay. ADRs rot when superseded decisions are not linked to the ones that replaced them. The record then becomes a graveyard, when its value depends on staying a connected chain of reasoning.
A fintech team is choosing how to store ledger data. Postgres is familiar; a purpose-built ledger database promises stronger guarantees but locks them into a vendor. They classify it as a one-way door, because a ledger migration after launch would be ruinous, and spend two weeks on it. The decision record names the context (regulatory audit requirements, expected transaction volume of 4 million per day), the choice (Postgres with an append-only schema), the alternatives rejected, and one explicit consequence: they accept slower analytical queries and will revisit if read latency exceeds 200ms at scale. Eighteen months later a new engineer asks why they did not use the ledger database. The record answers in ninety seconds, and the argument does not reopen.
In the Unified Product Graph, a decision sits in the strategy region as a first-class node that products and structures point back to. Strategic pillarsStrategic PillarStrategyA foundational principle that guides decisionsView reference →, products, design systemsDesign SystemDesign SystemThe root design system entityView reference →, and bounded contextsBounded ContextEngineeringA DDD bounded context defining a service boundaryView reference → all link through edges such as Productdecided viaDecisionhierarchy, product_decided_via_decisionStrategic Pillardecided viaDecisionhierarchy, strategic_pillar_decided_via_decisionDesign Systemdecided viaDecisionsemantic, and design_system_decided_via_decisionBounded Contextdecided viaDecisionhierarchy, so any artefact can be traced to the reasoning that shaped it. Evidence flows in through bounded_context_decided_via_decisionExperiment Runinformed decisionDecisioncross-domain, closing the loop between what was tested and what was chosen. The cost side is explicit too: experiment_run_informed_decision_decisionDecisionincursTechnical Debt Itemcausal records the debt a choice knowingly took on, which turns the ADR's "consequences" field into a queryable liability rather than a forgotten footnote.decision_incurs_technical_debt_item
Type-specific fields on BaseNode
layerstringDomain layer. `engineering` = Architecture Decision Record (ADR). `design` = Design Decision Record. The layer field replaces separate `architecture_decision` and `design_decision` types.
contextstringBackground and problem statement that prompted the decision
options_consideredstring[]Required. Evaluated alternatives. A decision without considered alternatives is incomplete.
rationalestringWhy the chosen option was selected over the alternatives
datestringISO date the decision was made or last meaningfully updated.
decision_outcomestringOutcome text. What was decided. Separate from `rationale` (which explains why).
consequencesstringKnown positive and negative consequences. Mirrors MADR's "Consequences" section.
decision_makersstring[]People who made the decision. Mirrors MADR's "Deciders" field.
decision_driversstring[]Forces, constraints, and goals that shaped the decision. Mirrors MADR's "Decision Drivers" section. @example ["must work offline", "team has no Go expertise", "cost < $500/mo"]
superseded_bystringReference to the superseding decision, if any.
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
5 phases — initial: proposed · template: APPROVAL
26 edge types connected to this entity.
product_decided_via_decisionstrategic_pillar_decided_via_decisionbounded_context_decided_via_decisionteam_decides_decisiondecision_incurs_technical_debt_itemexperiment_run_informed_decision_decisiondesign_system_decided_via_decisionmodel_comparison_informs_decisionagent_session_creates_decisiondocument_describes_decisionproduct_decided_via_decision_hierarchydecision_references_decisiondecision_references_decisioncompliance_requirement_constrains_decisionworkspace_produced_decisiondecision_superseded_by_decisiondecision_superseded_by_decisiondecision_affects_design_componentdecision_affects_screendecision_informs_decisiondecision_informs_decisionlearning_informs_decisiondesign_question_resolved_by_decisiondecision_selects_design_conceptobservation_informs_decisionapi_contract_records_decision2 frameworks use this entity type.