This prompt is for architects and engineering leads who need to formally replace or update an existing Architecture Decision Record (ADR) with a new decision. The job-to-be-done is producing a superseding ADR that explicitly references the original decision, explains what changed and why, and captures the migration implications for affected systems and teams. This is not a prompt for creating a net-new ADR from scratch, nor for making minor amendments or status updates to an existing record. Use it when the original decision is no longer valid and must be fully replaced by a new architectural choice.
Prompt
ADR Superseding Prompt Template

When to Use This Prompt
Define the job, reader, and constraints for superseding an existing Architecture Decision Record.
The ideal user has the original ADR text, the new decision context, and an understanding of which downstream ADRs, services, or teams are affected by the change. Required inputs include: the original ADR (full text or structured record), the new decision and its rationale, the trigger for the change (e.g., new constraints, failed assumptions, technology evolution), and a list of affected downstream ADRs or systems. Do not use this prompt when the original decision is still valid but needs a status update, when you are drafting a brand-new decision with no predecessor, or when the change is a minor clarification rather than a substantive reversal or replacement. For those cases, use the ADR Status Update Prompt Template or the standard ADR Generation Prompt Template instead.
The output is a complete superseding ADR that includes a traceability section linking to the original, a clear statement of what changed, and a migration impact assessment. Because superseding an ADR can invalidate downstream decisions and trigger implementation rework, this workflow requires human review before the new ADR is accepted. The prompt alone is not a substitute for architectural judgment. After generating the draft, validate that all referenced ADRs still exist, that the rationale for superseding is sound, and that affected teams are notified. If the change affects systems in production, pair this prompt with the ADR Dependency Mapping Prompt to assess the full blast radius before finalizing.
Use Case Fit
Where the ADR Superseding Prompt works well, where it breaks down, and the operational preconditions required before you run it.
Good Fit: Explicit Replacement
Use when: an existing ADR must be formally replaced by a new decision that changes the architecture. Guardrail: the prompt requires a link or ID to the original ADR and a clear statement of what changed. Do not use it for net-new decisions where no prior ADR exists.
Bad Fit: Undocumented Drift
Avoid when: the system has already drifted from the original ADR without documentation. Risk: the superseding ADR will describe a clean transition that never happened, creating false audit trails. Guardrail: require a current-state assessment before generating the superseding document.
Required Inputs
What you need: the original ADR ID or full text, the new decision statement, the reason for superseding, and a list of affected downstream ADRs. Guardrail: missing any of these inputs produces an ADR that cannot be traced or audited. Validate inputs before prompting.
Operational Risk: Cascading Invalidation
Risk: superseding one ADR silently invalidates decisions that depended on it. Guardrail: the prompt must include a dependency check step that flags downstream ADRs requiring review. Pair this prompt with the ADR Dependency Mapping Prompt before finalizing.
Operational Risk: Rationalization Masking
Risk: the model produces a plausible-sounding rationale for the change that does not match the real reason. Guardrail: require the human author to provide the actual rationale as a required input field. The prompt should restate, not invent, the reason for superseding.
Variant: Partial Superseding
Use when: only specific sections of the original ADR change while the rest remains valid. Guardrail: add a [CHANGED_SECTIONS] input that explicitly lists which parts are superseded. The output must preserve unchanged sections verbatim with clear provenance markers.
Copy-Ready Prompt Template
A reusable prompt with square-bracket placeholders for generating a superseding ADR that references the original, explains what changed, and captures migration implications.
This prompt template is designed to produce a complete superseding Architecture Decision Record (ADR) when an existing decision must be replaced or updated. It forces the model to reference the original ADR explicitly, explain the trigger for change, document what is different, and capture the migration path. The template uses square-bracket placeholders that you replace with your specific context before sending the prompt to a model. Every placeholder is required unless marked optional—omitting one will degrade the output quality.
textYou are an experienced software architect writing a superseding Architecture Decision Record (ADR). Your task is to produce a new ADR that explicitly replaces an existing one. ## Inputs - Original ADR to supersede: [ORIGINAL_ADR_TEXT] - Reason for superseding (trigger, new evidence, constraint change): [SUPERSEDING_REASON] - New decision and context: [NEW_DECISION_DETAILS] - Affected downstream ADRs or systems (optional): [AFFECTED_DOWNSTREAM] - Migration notes or breaking changes (optional): [MIGRATION_NOTES] - ADR template format to follow: [ADR_TEMPLATE_FORMAT] ## Output Schema Produce a superseding ADR with these sections: 1. **Superseding Header**: ADR number, title, status (Supersedes [ORIGINAL_ADR_ID]), date, and authors. 2. **Supersession Statement**: A clear statement that this ADR supersedes [ORIGINAL_ADR_ID]. Include the original ADR's title and date for traceability. 3. **Change Trigger**: What changed—new evidence, constraint shift, incident, or re-evaluation—that made the original decision no longer correct. 4. **Context**: The current problem context, constraints, and stakeholders. Note what context differs from the original ADR. 5. **Decision**: The new decision, stated clearly and unambiguously. 6. **What Changed from Original**: A structured comparison table or list showing what is different from the original ADR and why each change matters. 7. **Options Considered**: Alternatives evaluated for this new decision, including the original decision as one option. Include trade-offs. 8. **Migration Implications**: Breaking changes, migration steps, deprecation timeline, and affected systems or downstream ADRs. 9. **Consequences**: Positive and negative consequences of adopting this new decision. 10. **Downstream Impact**: Which ADRs, systems, or teams need to be notified or updated. 11. **References**: Link to the original ADR, related ADRs, and evidence sources. ## Constraints - Never claim the original ADR was wrong without explaining why it was correct at the time and what changed. - If [AFFECTED_DOWNSTREAM] is provided, explicitly address each affected ADR or system. - If [MIGRATION_NOTES] is provided, incorporate them into the Migration Implications section. - Use the format specified in [ADR_TEMPLATE_FORMAT]. If none is provided, use the standard Michael Nygard ADR format. - Mark any sections where information is missing with "[TO BE COMPLETED]" rather than fabricating content. - Preserve traceability: every claim about the original ADR must be verifiable from [ORIGINAL_ADR_TEXT].
To adapt this template, replace each square-bracket placeholder with your actual content. The [ORIGINAL_ADR_TEXT] should contain the full text of the ADR being superseded—do not summarize it yourself. The [SUPERSEDING_REASON] is the most critical field; it must explain why the change is happening now, not just what the new decision is. If you do not have downstream ADR information, remove the [AFFECTED_DOWNSTREAM] placeholder and the corresponding constraint, but keep the Downstream Impact section with a note that downstream analysis is pending. For high-stakes architectural changes, always route the generated ADR through human review before marking the original as superseded in your ADR repository.
Prompt Variables
Required and optional inputs for the ADR Superseding Prompt Template. Each placeholder must be populated with concrete, traceable data before the prompt is executed. Missing or vague inputs are the most common cause of weak superseding ADRs.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[ORIGINAL_ADR_TEXT] | Full text of the ADR being superseded, including all sections and metadata. | ADR-0012: Use PostgreSQL for event store | Must be a complete ADR document. Parse check: contains Title, Status, Context, Decision, and Consequences sections. Null not allowed. |
[SUPERSEDING_RATIONALE] | Clear explanation of why the original decision is being replaced or updated. | PostgreSQL write throughput ceiling reached; team capability shifted to managed Kafka. | Must contain at least one concrete trigger event or changed condition. Vague rationales like 'requirements changed' should be rejected. Null not allowed. |
[NEW_DECISION_STATEMENT] | The new architectural decision that replaces the original. | Use Kafka for the event store with PostgreSQL as the projection store. | Must be a single, unambiguous decision statement. Schema check: starts with 'Use', 'Adopt', 'Avoid', or 'Deprecate'. Null not allowed. |
[AFFECTED_DOWNSTREAM_ADRS] | List of ADR identifiers that depend on or are constrained by the original decision. | ["ADR-0014", "ADR-0019", "ADR-0023"] | Must be a JSON array of ADR IDs. Each ID must exist in the ADR repository. Empty array allowed if no downstream ADRs are affected. Null allowed if unknown, but triggers a review flag. |
[MIGRATION_IMPLICATIONS] | Description of what teams, systems, or processes must change as a result of the new decision. | Event ingestion service must be rewritten; read models must be rebuilt from Kafka topics. | Must include at least one concrete migration action. Vague statements like 'teams will adapt' should be flagged. Null allowed only if the decision has zero operational impact, which requires explicit justification. |
[CONSTRAINT_CHANGES] | Any new constraints introduced or old constraints removed by the new decision. | Added: must support exactly-once semantics. Removed: relational query requirement on raw events. | Each constraint must be a single sentence with a clear subject. Parse check: each line starts with 'Added:' or 'Removed:'. Null allowed if constraints are unchanged. |
[SUPERSEDED_DATE] | ISO 8601 date when the original ADR is superseded. | 2025-03-15 | Must be a valid ISO 8601 date string (YYYY-MM-DD). Must be on or after the original ADR's acceptance date. Null not allowed. |
[AUTHOR_AND_APPROVERS] | Names or identifiers of the author and at least one approver for the superseding ADR. | {"author": "jane-architect", "approvers": ["tl-payments", "sre-lead"]} | Must be a JSON object with author and approvers array. Approvers array must contain at least one entry. Schema check: author and each approver must match a valid team member identifier. Null not allowed. |
Implementation Harness Notes
How to wire the ADR Superseding Prompt into an application or workflow with validation, retries, and traceability.
The ADR Superseding Prompt is not a one-shot generation tool; it is a stateful operation that mutates your decision log. The implementation harness must enforce that the original ADR exists, capture the relationship between the old and new records, and prevent orphaned references. Wire this prompt into your ADR management system—whether that is a git repository of markdown files, a documentation site, or an internal tool—so that every superseding record includes a validated backlink to the original ADR and a forward reference in the original indicating it has been superseded.
The harness should perform pre-generation validation: confirm the [ORIGINAL_ADR_ID] exists in the repository, extract its current status (accepted, proposed, deprecated), and reject the operation if the original is already superseded or deprecated unless an explicit force flag is set. After the model generates the new ADR, run post-generation checks: verify the supersedes field matches the input ID, confirm all required sections are present (context, decision, rationale, migration implications), and check that the new ADR does not duplicate the original's content verbatim. For high-risk architectural changes, route the generated ADR to a human review queue before it is committed. Log the model, prompt version, and validation results for auditability.
Model choice matters here. Use a model with strong instruction-following and long-context handling because the prompt must process the full original ADR plus any downstream ADRs that reference it. If your ADR repository is large, implement a retrieval step that fetches only the original ADR and ADRs that explicitly reference it, rather than stuffing the entire repository into context. For retry logic, if validation fails on missing sections or malformed references, re-prompt once with the specific validation errors injected into [CONSTRAINTS]. If the second attempt fails, escalate to a human author with the partial output and error details. Do not silently accept a superseding ADR that breaks the reference chain.
Expected Output Contract
Fields, format, and validation rules for the superseding ADR output. Use this contract to validate model output before merging into the ADR repository.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
superseding_adr_id | string (kebab-case) | Must match pattern [a-z0-9-]+; must not collide with existing ADR IDs in the target repository | |
superseded_adr_id | string (kebab-case) | Must reference an existing ADR ID in the repository; parse check against known ADR index | |
title | string (plain text) | Must be 10-200 characters; must not duplicate the superseded ADR title verbatim; must include a change signal word such as 'Revised', 'Superseded', or 'Replaced' | |
status | enum: Proposed | Accepted | Deprecated | Superseded | Must be 'Accepted' for the new ADR; superseded ADR status must be updated to 'Superseded' in a separate transaction | |
change_summary | string (markdown paragraph) | Must be 50-500 words; must explicitly state what changed, why it changed, and what new evidence or constraints triggered the change | |
migration_implications | array of strings (markdown) | Must contain at least 1 item; each item must describe a concrete migration action, affected system, or breaking change; null items not allowed | |
affected_downstream_adrs | array of strings (ADR IDs) | If present, each ID must exist in the repository; empty array allowed; null allowed if no downstream impact is known | |
rationale | string (markdown, 2-5 paragraphs) | Must reference the original ADR rationale and explain why it no longer holds; must cite new constraints, data, or incidents; approval required if rationale is under 100 words |
Common Failure Modes
Superseding an ADR introduces unique risks beyond standard generation. The model must correctly link to the original, explain the delta, and avoid creating contradictory or orphaned records. These are the most common failure modes and how to prevent them.
Weak or Missing Link to Original ADR
What to watch: The model generates a new ADR without explicitly referencing the original's ID, title, or version. This breaks the traceability chain and makes the repository's history unreliable. Guardrail: Require the original ADR ID and title as mandatory inputs. Add a post-generation validation check that the Supersedes field is populated and matches a valid existing record.
Rationale Drift from Original Decision
What to watch: The model fabricates a new rationale without explaining why the previous decision's context, constraints, or trade-offs are no longer valid. This makes the supersession look arbitrary. Guardrail: Include a dedicated Change Rationale section in the output schema. Use a second-pass LLM-as-judge check to verify the new rationale explicitly addresses the original ADR's Decision and Context sections.
Orphaned Downstream Dependencies
What to watch: The model supersedes ADR-A but fails to identify or flag ADR-B and ADR-C that were predicated on ADR-A's original decision. This creates an inconsistent architecture state. Guardrail: Provide a list of dependent ADRs as input context. Instruct the model to output an Impacted ADRs array. Add a human review gate for any downstream ADRs flagged as potentially invalidated.
Incomplete Migration or Rollback Plan
What to watch: The model describes the new decision but omits practical steps for migrating from the old state or rolling back if the new decision fails. This leaves teams without an operational path. Guardrail: Add a required Migration Implications section to the output schema. Use a checklist validator to ensure the output contains concrete steps, not just abstract statements like "teams should migrate."
Hallucinated Version History
What to watch: The model invents previous versions, dates, or authors for the original ADR that don't exist in the source of truth. This corrupts the audit trail. Guardrail: Ground the prompt with the exact metadata of the original ADR (version, date, status, authors). Constrain the model to only reference provided metadata. Use a strict diff against the original record to catch fabricated fields.
Status State Machine Violation
What to watch: The model marks the original ADR as "Superseded" but leaves the new ADR in a "Draft" state, or vice versa. This breaks the lifecycle governance of the ADR repository. Guardrail: Define the valid state transitions in the prompt constraints. Add a post-generation validation rule: if a new ADR is created, the original must transition to "Superseded" and the new one must be "Proposed" or
Evaluation Rubric
Criteria for testing the quality of a superseding ADR before it is approved. Use this rubric in automated eval harnesses or manual peer review to ensure the new decision correctly references, replaces, and improves upon the original ADR.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Original ADR Reference | Superseding ADR explicitly cites the [ORIGINAL_ADR_ID] and [ORIGINAL_ADR_TITLE] in its header or context section. | Missing reference to the original ADR or citation of an incorrect, unrelated ADR. | Parse output for [ORIGINAL_ADR_ID] string; assert presence in the first 200 tokens. |
Change Rationale | Superseding ADR includes a dedicated 'Change Rationale' or 'Supersession Reason' section explaining why the original decision is being replaced. | Section is absent, contains only generic text like 'updated', or fails to mention any specific trigger (new data, incident, strategy shift). | LLM-as-judge check: does the rationale reference a concrete event or new constraint? Score 1-5, pass at >=4. |
Decision Traceability | The new decision statement explicitly states how it differs from the original decision in [ORIGINAL_ADR_CONTENT]. | The new decision is a verbatim copy of the old one, or the delta is unstated, forcing the reader to diff manually. | Semantic similarity check between old and new decision text; fail if cosine similarity > 0.95 without an explicit delta statement. |
Downstream Impact Assessment | Superseding ADR lists affected downstream ADRs from [DEPENDENT_ADR_LIST] and notes whether each requires review, update, or is unaffected. | No mention of downstream ADRs, or a generic statement like 'no impact' without enumerating the known dependents. | Parse output for a structured list; assert count of mentioned ADR IDs >= length of [DEPENDENT_ADR_LIST]. |
Migration Guidance | Superseding ADR contains actionable migration steps or a clear statement that no migration is required, with justification. | Vague hand-waving like 'teams should adapt' without concrete steps, or migration section is entirely missing. | Schema check: 'Migration_Plan' field is present and non-null. If null, 'Migration_Rationale' field must be present. |
Status Lifecycle Compliance | Superseding ADR sets its own status to 'Proposed' or 'Accepted' and explicitly marks the [ORIGINAL_ADR_ID] status as 'Superseded'. | New ADR status is missing, or the original ADR status is not explicitly declared as superseded in the text. | Regex check for 'Status: Superseded' in proximity to [ORIGINAL_ADR_ID] within the output. |
Options Re-evaluation | Superseding ADR re-evaluates the options from the original ADR or introduces new options, rather than assuming the old option set is still valid. | The 'Options Considered' section is a copy-paste from the original ADR without any new analysis or commentary. | Diff check against [ORIGINAL_ADR_OPTIONS]; fail if the text block is identical. Pass if at least one new option or updated evaluation is present. |
Consequence Honesty | Superseding ADR honestly acknowledges the cost or friction of changing the decision, including any reversal of previous commitments. | Overly positive framing that ignores the operational cost of undoing a prior decision, or no mention of negative consequences at all. | LLM-as-judge check for presence of at least one negative consequence or admitted cost; score 1 if absent, pass at 1. |
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 template with lighter validation. Drop the migration impact section and downstream ADR checks. Focus on capturing the core decision change and rationale.
code[ORIGINAL_ADR_ID]: [ADR-001] [NEW_DECISION]: [Replace in-memory cache with Redis] [RATIONALE]: [Performance requirements exceed in-memory limits]
Watch for
- Missing reference to the original ADR ID
- Overly broad rationale without specific trigger for superseding
- No explicit statement that the original is deprecated

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