Use this prompt when a team is finalizing an Architecture Decision Record (ADR) and needs to surface implicit assumptions before the decision is approved and implemented. The primary job-to-be-done is risk reduction: unstated assumptions are a leading cause of architectural regret because they turn into broken contracts, unexpected constraints, and costly reversals when proven false. The ideal user is an engineering lead, architect, or technical decision maker who has a draft ADR with a clear decision, options, and trade-offs, but recognizes that the team's shared context may contain blind spots. The prompt requires a draft ADR as input, along with any relevant system context, constraints, and stakeholder notes.
Prompt
ADR Assumption Documentation Prompt

When to Use This Prompt
Identify when the ADR Assumption Documentation Prompt adds value, who should use it, and when it's the wrong tool.
This prompt is not a substitute for the ADR itself. Do not use it to generate the decision, options, or rationale from scratch—use the ADR Generation Prompt Template for that. It is also not a general risk assessment tool; if you need a full risk register with likelihood and impact scoring, use the ADR Risk Assessment Prompt instead. Avoid this prompt when the decision is trivial, the system context is fully known and static, or the team has no authority to validate the surfaced assumptions. The output is an assumption log, not a decision document, and it requires follow-up: each assumption must be assigned an owner, a validation method, and an expiration condition before the ADR is accepted.
After running this prompt, review the assumption log with the full team. Flag any assumption that would invalidate the decision if proven false. Assign owners and deadlines for validation. If the log surfaces assumptions that require changes to the decision, options, or constraints, return to the ADR draft and revise before proceeding. The goal is not to document assumptions for documentation's sake—it is to prevent decisions from being built on foundations that haven't been checked.
Use Case Fit
Where the ADR Assumption Documentation Prompt works, where it fails, and the operational conditions required before you rely on it in a decision workflow.
Good Fit: Pre-Decision Clarity
Use when: a decision is still under active debate and the team needs to surface hidden beliefs before committing. The prompt excels at extracting implicit assumptions from design docs, meeting notes, and draft ADRs. Guardrail: run the prompt before the options-enumeration phase, not after the decision is already emotionally locked in.
Bad Fit: Post-Hoc Rationalization
Avoid when: the decision is already implemented and the team needs justification documentation. The prompt will generate plausible-sounding assumptions that match the chosen path, reinforcing confirmation bias rather than exposing real uncertainty. Guardrail: if the ADR status is already 'Accepted' or 'Implemented,' use the ADR Review Prompt instead.
Required Inputs
What you must provide: a draft problem statement, known constraints, stakeholder list, and any existing design artifacts. The prompt cannot invent domain-specific assumptions from thin air. Guardrail: if you cannot articulate at least three known constraints, the prompt will produce generic assumptions that add noise rather than clarity.
Operational Risk: False Confidence
What to watch: the prompt can produce well-structured assumption logs that look authoritative even when the underlying assumptions are unvalidated. Teams may treat the output as a checklist to tick rather than a set of hypotheses to test. Guardrail: every assumption must have an explicit owner and validation deadline before the ADR can move to 'Accepted.'
Operational Risk: Hidden Assumption Blindness
What to watch: the prompt identifies assumptions visible in the provided context but cannot surface assumptions the team doesn't know they're making—cultural defaults, architectural dogma, or 'that's how we've always done it' beliefs. Guardrail: pair the prompt output with a structured challenge session where an external reviewer or adversarial prompt probes for missing categories.
Integration Point: Decision Gate
What to watch: the assumption log is useful only if it feeds into a decision gate. Without enforcement, teams will generate assumptions and then ignore them. Guardrail: wire the output into your ADR approval workflow. Block 'Accepted' status until every high-severity assumption has a validated owner and expiration condition recorded in the decision record.
Copy-Ready Prompt Template
A reusable prompt template for extracting and documenting the assumptions embedded in an architecture decision before it is finalized.
This template is designed to be dropped into a prompt harness or used directly in a model playground. It forces the model to surface implicit assumptions—the unstated beliefs that, if proven false, would invalidate the decision. The output is a structured assumption log with validation criteria, owners, and expiration conditions. Adapt the placeholders to match your ADR format, risk tolerance, and review workflow.
textYou are an architecture reviewer specialized in identifying hidden assumptions in technical decisions. Your task is to extract, document, and assess every assumption embedded in the provided architecture decision record (ADR) draft. ## INPUT [ADR_DRAFT] ## ADDITIONAL CONTEXT [PROJECT_CONTEXT] [STAKEHOLDER_LIST] [CONSTRAINT_LIST] ## INSTRUCTIONS 1. Read the ADR draft and identify every assumption—explicit or implicit—that the decision depends on. 2. For each assumption, determine what would happen if it were false. If the decision would still stand, it is not a critical assumption. 3. Classify each assumption by type: Technical, Business, Organizational, Market, or Regulatory. 4. Assign a criticality rating: Critical (decision invalid if false), High (significant rework required), Medium (adjustment needed), Low (minor impact). 5. For Critical and High assumptions, propose a validation method and an owner. 6. Identify any missing assumptions—beliefs that should be stated but are absent from the draft. ## OUTPUT SCHEMA Return a JSON object with the following structure: { "decision_id": "string", "assumptions": [ { "id": "ASM-001", "statement": "string (clear, falsifiable statement)", "type": "Technical | Business | Organizational | Market | Regulatory", "criticality": "Critical | High | Medium | Low", "source": "explicit | implicit | missing", "if_false_impact": "string (concrete consequence)", "validation_method": "string | null (required for Critical and High)", "owner": "string | null (role or name)", "expiration_condition": "string | null (event that would trigger re-validation)" } ], "missing_assumptions_summary": "string (summary of gaps found)", "overall_risk_assessment": "string (assessment of assumption health for this decision)" } ## CONSTRAINTS - Every assumption statement must be falsifiable. Avoid vague language like "the system will perform well." - Do not invent assumptions that are not present or logically required by the ADR. - If the ADR contains no assumptions, state that explicitly and explain why that is itself a risk. - For regulated contexts, flag assumptions that touch compliance, data residency, or auditability. - Limit the output to 20 assumptions maximum. Prioritize by criticality. ## RISK LEVEL [RISK_LEVEL: low | medium | high] - If RISK_LEVEL is high, require human review before the assumption log is accepted. - If RISK_LEVEL is high, add a "reviewer_notes" field to each Critical assumption.
Adaptation guidance: Replace [ADR_DRAFT] with the full text of the decision record. Use [PROJECT_CONTEXT] to inject system diagrams, team structure, or business constraints that the ADR author assumed but did not state. [STAKEHOLDER_LIST] helps the model identify organizational assumptions about who owns what. [CONSTRAINT_LIST] provides explicit boundaries (budget, timeline, compliance) so the model can detect when the ADR silently violates a known constraint. The [RISK_LEVEL] placeholder controls whether the output includes reviewer notes and whether the harness should block automated acceptance. For CI/CD integration, parse the criticality field and fail the pipeline if any Critical assumption lacks a validation_method or owner.
Prompt Variables
Required and optional inputs for the ADR Assumption Documentation Prompt. Each placeholder must be populated before the prompt is sent to the model. Missing or poorly validated inputs are the most common cause of incomplete assumption logs.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[DECISION_TITLE] | Identifies the architectural decision under review | Adopt PostgreSQL as primary OLTP store | Required. Must be a non-empty string under 200 characters. Reject if generic or missing context. |
[DECISION_CONTEXT] | Provides the problem statement, constraints, and known facts driving the decision | We need a relational database for multi-region writes with sub-50ms p99 latency. Team has 3 years of PostgreSQL experience. Budget capped at $5k/month. | Required. Must be at least 100 characters. Validate that it contains constraints, not just a problem statement. Missing constraints produce weak assumption coverage. |
[STAKEHOLDER_ROLES] | Lists the roles or personas whose assumptions need to be surfaced | Backend Lead, DBA, Security Engineer, Product Manager | Required. Must be a comma-separated list of at least 2 roles. Generic roles like 'team' or 'everyone' should be rejected. Each role should represent a distinct perspective. |
[EXISTING_ARCHITECTURE_NOTES] | Optional field for existing documentation, diagrams, or prior ADRs that inform assumptions | Current system uses MySQL 8.0 with read replicas. See ADR-042 for prior database selection criteria. | Optional. If provided, must be under 5000 characters to avoid context dilution. Null allowed. If null, the model will flag missing context as a risk. |
[ASSUMPTION_CATEGORIES] | Defines the categories of assumptions to surface, preventing blind spots | Performance, Security, Cost, Operability, Team Capability, Vendor Stability | Required. Must be a comma-separated list of at least 4 categories. Validate against a known taxonomy. Missing categories like 'Security' or 'Operability' should trigger a warning. |
[EXPIRATION_CONDITIONS] | Specifies when assumptions should be revalidated or flagged as stale | Before production deployment, Quarterly review, On major version upgrade | Required. Must include at least one time-based or event-based trigger. Null or 'never' should be rejected. This prevents assumptions from becoming unexamined facts. |
[OUTPUT_FORMAT] | Defines the schema for the assumption log output | JSON array with fields: assumption, category, owner, confidence, validation_method, expiration, risk_if_false | Required. Must be a valid schema description. Default to the recommended schema if not specified. Validate that the schema includes owner, confidence, and expiration fields. |
[CONFIDENCE_THRESHOLD] | Sets the minimum confidence level for assumptions to be considered acceptable without further validation | 0.7 | Optional. Must be a float between 0.0 and 1.0. Defaults to 0.7 if not specified. Assumptions below this threshold should be flagged for immediate validation. |
Implementation Harness Notes
How to wire the ADR Assumption Documentation Prompt into an application or review workflow.
This prompt is designed to be integrated into a structured Architecture Decision Record (ADR) workflow, not used as a one-off chat interaction. The primary integration point is immediately after a draft ADR is written and before it enters peer review. The harness should extract the draft ADR text, the original problem context (meeting notes, design docs, incident reports), and a list of known organizational constraints, then pass them as [DRAFT_ADR], [SOURCE_CONTEXT], and [ORGANIZATIONAL_CONSTRAINTS] respectively. The model's output—a structured assumption log—should be treated as a review artifact that is attached to the ADR, not as a replacement for human judgment. The assumption log becomes a living document that the team revisits when any listed assumption's expiration condition is triggered.
For application wiring, implement a validation layer that parses the model's JSON output and checks for required fields: assumption_id, statement, validation_criteria, owner, expiration_condition, and impact_if_false. If any assumption object is missing a required field, or if the impact_if_false field does not contain a severity classification (BLOCKING, HIGH, MEDIUM, LOW), trigger a retry with a more explicit error message appended to the [CONSTRAINTS] input. Log every assumption extraction run with the ADR version, the model used, the raw output, and the validation result. For high-risk domains such as security architecture or compliance-critical systems, route the assumption log to a human reviewer queue before it is accepted. The reviewer should confirm that no hidden assumptions were missed and that the severity classifications are accurate.
Model choice matters here. Use a model with strong reasoning capabilities (such as GPT-4o, Claude 3.5 Sonnet, or Gemini 1.5 Pro) because the task requires counterfactual thinking—identifying what is not stated but must be true. Smaller or faster models often miss implicit assumptions or produce shallow validation criteria. Do not use this prompt with a model that lacks structured output support; the assumption log must be machine-readable for downstream tooling. If your ADR workflow includes a CI/CD gate, integrate the assumption log's validation score as a quality check. For example, block ADR merge if any BLOCKING assumption lacks a named owner or if the total count of unowned assumptions exceeds a threshold. Finally, store the assumption log in a queryable format (such as a tagged field in your ADR repository) so that teams can search for all assumptions that will expire within a given timeframe or that depend on a specific external system.
Expected Output Contract
Defines the structure, types, and validation rules for the assumption log generated by the ADR Assumption Documentation Prompt. Use this contract to parse, validate, and integrate the output into downstream systems or review workflows.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
assumption_log | Array of Objects | Top-level key must be an array. Schema validation must pass. If empty, flag for human review as it indicates a potential failure to extract assumptions. | |
assumption_log[].id | String (kebab-case) | Must match pattern | |
assumption_log[].statement | String | Must be a single, declarative sentence. Length must be between 20 and 500 characters. Cannot be a question or a conditional 'if-then' statement. | |
assumption_log[].category | Enum: [Technical, Business, User, Compliance, Dependency, Timeline] | Must be one of the specified enum values. Case-sensitive. Reject unknown categories. | |
assumption_log[].owner_role | String | Must identify a specific role (e.g., 'Staff Security Engineer'), not a generic title (e.g., 'Engineer') or a person's name. Null not allowed. | |
assumption_log[].validation_method | String | Must describe a concrete, verifiable action (e.g., 'Run load test', 'Review SOC 2 report'). Cannot be a vague statement like 'Ask the team'. Max 200 characters. | |
assumption_log[].expiration_condition | String | Must describe a specific, observable trigger (e.g., 'Before production release', 'When user count exceeds 10k'). Cannot be a date. Max 200 characters. | |
assumption_log[].risk_if_false | Enum: [Blocker, High, Medium, Low] | Must be one of the specified enum values. If 'Blocker', the |
Common Failure Modes
What breaks first when documenting assumptions with an LLM and how to guard against it.
Hallucinated Constraints
What to watch: The model invents plausible but false technical constraints, system limits, or regulatory requirements that the team never stated. Guardrail: Require every assumption to be tagged with a source (e.g., [STATED], [INFERRED], [UNVERIFIED]) and flag all [INFERRED] and [UNVERIFIED] assumptions for mandatory human review before the ADR is accepted.
Assumption Over-Confidence
What to watch: The model presents assumptions as settled facts without uncertainty language, making weak assumptions appear as strong constraints. Guardrail: Add a confidence field (High/Medium/Low) to every assumption in the output schema. Reject or flag any assumption marked High confidence that lacks a linked source or explicit stakeholder confirmation.
Missing Negative Assumptions
What to watch: The model only documents what is assumed to be true, ignoring critical assumptions about what is not present (e.g., 'no rate limiting exists', 'no data retention policy applies'). Guardrail: Include a dedicated prompt instruction to enumerate 'Absence Assumptions'—things assumed not to exist or not to apply. Add a post-generation check that counts absence assumptions and warns if the count is zero for non-trivial decisions.
Stakeholder Blind Spots
What to watch: The model generates assumptions from a single perspective (e.g., backend engineering) and misses assumptions that security, compliance, or product teams would immediately flag. Guardrail: Append a stakeholder rotation instruction that asks the model to re-examine the decision from the perspective of Security, Compliance, Operations, and Product. Flag assumptions that would be contested by any of these roles.
Expiration and Staleness Neglect
What to watch: Assumptions are documented without expiration conditions, so they live forever in the ADR even after the underlying reality changes. Guardrail: Require every assumption to include an expiration_trigger field (e.g., 'Expires when: user count exceeds 10,000' or 'Review by: Q3 2025'). Add a validation rule that rejects assumptions with no expiration condition.
Implicit Scope Creep
What to watch: The model documents assumptions that are actually design decisions in disguise, blurring the line between 'what we believe to be true' and 'what we have chosen to do.' Guardrail: Add a classification step that labels each statement as Assumption or Decision. Flag any Assumption that contains action verbs like 'will use', 'shall implement', or 'must deploy' for reclassification as a decision.
Evaluation Rubric
Use this rubric to test the quality of the ADR Assumption Documentation output before merging it into the decision record. Each criterion targets a specific failure mode common in assumption extraction.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Assumption Completeness | All implicit constraints from [CONTEXT] are surfaced as explicit assumptions | Assumptions list is empty or contains only obvious restatements of the decision | Compare output against a human-prepared list of 5+ known hidden assumptions from the same [CONTEXT] |
Validation Criteria Specificity | Every assumption includes a falsifiable validation condition | Validation field contains vague phrases like 'check if true' or 'confirm with team' without a specific test | Parse each assumption's validation field; reject if no measurable condition or data source is named |
Owner Assignment | Every assumption has a named role or individual owner | Owner field is null, 'TBD', or 'team' for more than one assumption | Schema check: owner field must be non-null and match a role from the provided [STAKEHOLDER_LIST] |
Expiration Condition | Every assumption includes a deadline or trigger event for re-evaluation | Expiration field is null or set to 'never' without documented justification | Schema check: expiration field must contain a date, milestone, or event trigger |
Hidden Assumption Detection | At least one assumption is flagged as 'previously unstated' with a confidence score below 0.8 | All assumptions are marked as 'explicitly stated' with confidence 1.0 | Count assumptions with confidence < 0.8; if zero, the prompt likely missed implicit constraints |
Invalidation Impact | Each assumption describes what breaks if the assumption proves false | Impact field contains generic text like 'decision may need review' without specific consequences | Parse impact field; reject if it does not name at least one specific ADR section, option, or constraint that would be invalidated |
Source Traceability | Every assumption cites the specific source passage or stakeholder statement it was derived from | Source field is null or contains only a document title without a section or quote reference | Schema check: source field must contain a non-null reference string; spot-check 3 assumptions against [CONTEXT] for hallucinated sources |
Output Schema Compliance | Output is valid JSON matching the [OUTPUT_SCHEMA] with all required fields present | Output is missing required fields, contains extra untyped fields, or fails JSON parse | Automated schema validation against the provided JSON Schema; reject on any validation error |
Enabling Efficiency, Speed & Accuracy
Intelligent Analysis, Decision & Execution
We build AI systems for teams that need search across company data, workflow automation across tools, or AI features inside products and internal software.
Talk to Us
Search across company data
Give teams answers from docs, tickets, runbooks, and product data with sources and permissions.
Useful when people spend too long searching or get different answers from different systems.

Automate internal workflows
Use AI to route work, draft outputs, trigger actions, and keep approvals and logs in place.
Useful when repetitive work moves across multiple tools and teams.

Add AI to products and internal tools
Build assistants, guided actions, or decision support into the software your team or customers already use.
Useful when AI needs to be part of the product, not a separate tool.
Adapt This Prompt
How to adapt
Use the base prompt with lighter validation. Focus on surfacing assumptions quickly rather than enforcing strict schema compliance. Accept free-text assumption lists and manually review them before feeding into the ADR.
- Remove the [OUTPUT_SCHEMA] constraint and ask for a bulleted list of assumptions instead.
- Drop the [EXPIRATION_CONDITIONS] field to reduce friction during early exploration.
- Use a simpler instruction: "List every assumption this decision depends on. For each, note what would happen if it's wrong."
Watch for
- Missing schema checks leading to inconsistent assumption formats across team members.
- Overly broad instructions that produce vague assumptions like "the system will be reliable" without testable criteria.
- Assumptions that are actually requirements or constraints masquerading as assumptions.

About the author
Prasad Kumkar
CEO & MD, Inference Systems
Prasad Kumkar is the CEO & MD of Inference Systems and writes about AI systems architecture, LLM infrastructure, model serving, evaluation, and production deployment. Over 5+ years, he has worked across computer vision models, L5 autonomous vehicle systems, and LLM research, with a focus on taking complex AI ideas into real-world engineering systems.
His work and writing cover AI systems, large language models, AI agents, multimodal systems, autonomous systems, inference optimization, RAG, evaluation, and production AI engineering.
Partnered with leading AI, data, and software stack.
How We Work
Custom AI workflows for your Business
One-fit-all AI don't work for modern businesses. At Inferensys, we aim to understand your business & custom requirements; which we use to define most efficient agentic workflows, the data, and the tools for your business.
01
Review the use case
We understand the task, the users, and where AI can actually help.
Read more02
Pick the right approach
We define what needs search, automation, or product integration.
Read more03
Build the first useful version
We implement the part that proves the value first.
Read more04
Improve from there
We add the checks and visibility needed to keep it useful.
Read moreThe first call is a practical review of your use case and the right next step.
Talk to Us