Inferensys

Prompt

ADR Superseding Prompt Template

A practical prompt playbook for generating a superseding Architecture Decision Record that references the original, explains what changed, and captures migration implications.
Architect reviewing LLM integration architecture on laptop, system diagrams visible, modern technical office setup.
PROMPT PLAYBOOK

When to Use This Prompt

Define the job, reader, and constraints for superseding an existing Architecture Decision Record.

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.

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.

PRACTICAL GUARDRAILS

Use Case Fit

Where the ADR Superseding Prompt works well, where it breaks down, and the operational preconditions required before you run it.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

PROMPT PLAYBOOK

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.

text
You 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.

IMPLEMENTATION TABLE

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.

PlaceholderPurposeExampleValidation 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.

PROMPT PLAYBOOK

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.

IMPLEMENTATION TABLE

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 ElementType or FormatRequiredValidation 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

PRACTICAL GUARDRAILS

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.

01

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.

02

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.

03

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.

04

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."

05

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.

06

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

IMPLEMENTATION TABLE

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.

CriterionPass StandardFailure SignalTest 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.

ADAPTATION OPTIONS

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
Prasad Kumkar

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.