This prompt is for engineering leads and architects who need to transition an existing Architecture Decision Record (ADR) through its lifecycle states: proposed, accepted, deprecated, or superseded. The primary job-to-be-done is producing a structured, auditable status change record that captures the rationale for the transition, an impact assessment on downstream systems and teams, and notification guidance for affected stakeholders. The ideal user is a technical decision maker who already has an approved or previously recorded ADR and a clear, defensible reason for changing its state—such as new evidence, a shift in organizational strategy, or the adoption of a replacement decision.
Prompt
ADR Status Update Prompt Template

When to Use This Prompt
Defines the job-to-be-done, ideal user, required context, and boundaries for the ADR Status Update prompt.
Use this prompt when your ADR repository enforces a state machine and you need a consistent, machine-readable record of every transition. The prompt includes validation logic to reject invalid transitions, such as moving directly from proposed to deprecated without an intermediate accepted or rejected state. It assumes you can provide the existing ADR content, the target state, and the triggering context. Do not use this prompt to generate a new ADR from scratch; use the ADR Generation Prompt Template for that. Do not use it to compare multiple architectural options; use the ADR Comparison Prompt for Trade-Off Analysis instead. This prompt is specifically scoped to lifecycle state changes and the documentation required to make those changes traceable.
Before using this prompt, ensure you have the current ADR text, its current state, and a clear understanding of why the state must change. The output will include a structured status change record, an impact matrix for downstream systems and teams, and a notification plan. If the transition is high-risk—such as deprecating a decision that underpins critical infrastructure—the prompt will flag the need for human review and stakeholder sign-off. After generating the status update, the next step is to commit the record to your ADR repository, notify the identified stakeholders, and update any dependent decision records that reference the changed ADR.
Use Case Fit
Where the ADR Status Update prompt works, where it fails, and what you must provide before using it in a real workflow.
Good Fit: Lifecycle State Changes
Use when: an existing ADR needs to move from Proposed to Accepted, Deprecated, Superseded, or another valid lifecycle state. The prompt excels at producing a structured status change record with rationale and impact assessment. Guardrail: always provide the current state and target state explicitly; the prompt's state machine validation depends on accurate input.
Bad Fit: Creating New ADRs
Avoid when: you need to generate a new ADR from scratch. This prompt assumes an existing decision record and focuses on state transitions. Guardrail: use the ADR Generation Prompt Template for initial creation, then apply this prompt when the decision evolves.
Required Inputs
What you must provide: the ADR identifier, current lifecycle state, target state, reason for the change, and any new evidence or context that triggered the update. Guardrail: missing rationale produces a status change record that fails audit review. Always include the 'why' behind the transition.
Operational Risk: Invalid Transitions
What to watch: the model may accept invalid state transitions (e.g., Proposed to Superseded without first being Accepted) if the state machine rules are not enforced in the prompt or application layer. Guardrail: embed explicit transition rules in the prompt and validate the output against a state machine before persisting the change.
Operational Risk: Stale Notification Guidance
What to watch: the prompt may suggest notification recipients who are no longer on the team or miss newly affected stakeholders. Guardrail: treat the notification guidance as a draft. Route through a human reviewer who knows current team composition before sending.
Operational Risk: Incomplete Impact Assessment
What to watch: the model may overlook downstream ADRs, dependent systems, or migration steps affected by the status change. Guardrail: pair this prompt with the ADR Dependency Mapping Prompt to surface affected decisions before finalizing the status update.
Copy-Ready Prompt Template
A reusable prompt template for generating a structured ADR status change record with state machine validation, impact assessment, and notification guidance.
The prompt below produces a status change record for an Architecture Decision Record (ADR). It enforces valid state transitions, requires rationale for the change, assesses the impact on downstream decisions and affected teams, and generates notification guidance. Replace every square-bracket placeholder with concrete values before sending the prompt to the model. The template is designed to be wired into a CI/CD pipeline, a documentation workflow, or an ADR management tool where lifecycle tracking is required.
textYou are an architecture documentation specialist responsible for maintaining the integrity of an ADR repository. Your task is to generate a structured ADR status change record. ## INPUT - Current ADR: [ADR_TITLE] - Current ADR Status: [CURRENT_STATUS] - Proposed New Status: [PROPOSED_STATUS] - Change Rationale (raw notes): [RATIONALE_NOTES] - Affected Systems or Components: [AFFECTED_SYSTEMS] - Stakeholders to Notify: [STAKEHOLDER_LIST] - Related ADR References: [RELATED_ADRS] - Change Author: [AUTHOR_NAME] - Change Date: [CHANGE_DATE] ## CONSTRAINTS - Valid status transitions are: - Proposed -> Accepted - Proposed -> Rejected - Proposed -> Superseded - Accepted -> Deprecated - Accepted -> Superseded - Deprecated -> Superseded - If [PROPOSED_STATUS] is not a valid transition from [CURRENT_STATUS], respond with an error object and do not generate a status change record. - The rationale must reference specific evidence, events, or new information that triggered the change. Do not accept vague justifications like "team decided" without supporting detail. - Impact assessment must cover: downstream ADRs that reference this decision, systems that depend on the architecture described, and teams that must adjust their work. - Notification guidance must specify which stakeholders need what level of detail (full record vs. summary vs. awareness-only). ## OUTPUT_SCHEMA Return a JSON object with this structure: { "status_change_record": { "adr_title": "string", "previous_status": "string", "new_status": "string", "transition_valid": true, "rationale_summary": "string (2-4 sentences capturing the core reason)", "detailed_rationale": "string (full explanation with evidence references)", "impact_assessment": { "downstream_adrs_affected": ["string"], "systems_affected": ["string"], "teams_affected": ["string"], "migration_required": true, "migration_notes": "string (if migration_required is true, describe what changes are needed)" }, "notification_plan": [ { "stakeholder": "string", "detail_level": "full_record | summary | awareness_only", "communication_channel": "string (e.g., PR comment, Slack, email, ADR review meeting)" } ], "superseded_by": "string | null (ADR reference if status is Superseded)", "author": "string", "date": "string" } } If the transition is invalid, return: { "error": { "type": "invalid_transition", "current_status": "string", "proposed_status": "string", "allowed_transitions_from_current": ["string"], "message": "string (explaining why the transition is not allowed and suggesting valid alternatives)" } } ## RISK_LEVEL Medium. Incorrect status changes can cause teams to act on deprecated decisions or miss critical updates. Always validate the transition before generating the record.
Adaptation guidance: If your ADR tooling uses different status labels, update the valid transitions list in the CONSTRAINTS block. If you need the output in Markdown instead of JSON for a documentation site, replace the OUTPUT_SCHEMA with a Markdown template. For high-compliance environments, add a [REVIEWER] placeholder and require a second human sign-off before the status change is applied. The impact assessment fields can be expanded to include cost estimates, timeline impacts, or risk registers if your organization tracks those dimensions.
What to do next: After generating the status change record, validate the JSON output against the schema before persisting it. If the transition is invalid, surface the error to the user with the allowed transitions listed. For accepted records, trigger the notification plan—post comments on related ADRs, notify affected teams via the specified channels, and update any dashboards or indexes that track ADR status. Do not silently apply status changes without confirmation when the RISK_LEVEL is Medium or higher.
Prompt Variables
Inputs required for the ADR Status Update prompt to reliably validate transitions, generate impact assessments, and produce notification guidance. Wire these variables into your application before calling the model.
| Placeholder | Purpose | Example | Validation Notes |
|---|---|---|---|
[ADR_ID] | Unique identifier for the target ADR | ADR-0042 | Must match repository pattern. Check: regex match against org ADR naming convention. Fail if null or empty. |
[CURRENT_STATE] | Verified current status of the ADR before transition | accepted | Must be a valid state from the defined state machine. Check: enum match against ['proposed','accepted','deprecated','superseded']. Fail if null. |
[TARGET_STATE] | Desired next status for the ADR | deprecated | Must differ from [CURRENT_STATE]. Check: valid transition per state machine rules (e.g., 'accepted' to 'proposed' is invalid). Fail on invalid or self-transition. |
[CHANGE_RATIONALE] | Explanation for why the status change is requested | Replaced by new event-sourcing pipeline in ADR-0089 | Must be non-empty string with minimum 20 characters. Check: length > 20. Fail if empty or contains only filler text. |
[AUTHOR_ID] | Identifier of the person or system requesting the change | Must match org identity format. Check: regex for email or username pattern. Fail if null. | |
[IMPACTED_SYSTEMS] | List of systems, services, or teams affected by this status change | ['payment-service','checkout-api','billing-dashboard'] | Must be a valid JSON array of strings. Check: JSON parse success, array length >= 1. Allow empty array only if [TARGET_STATE] is 'proposed'. |
[NOTIFICATION_CHANNELS] | Target channels for communicating the status change | ['slack-architects','email-adr-subscribers'] | Must be a valid JSON array of strings. Check: JSON parse success. Fail if null. Warn if empty when [TARGET_STATE] is 'deprecated' or 'superseded'. |
[PREVIOUS_ADR_RELATION] | Relationship to a superseding or related ADR, if applicable | superseded-by:ADR-0089 | Required if [TARGET_STATE] is 'superseded'. Check: format matches 'superseded-by:ADR-XXXX' or 'related-to:ADR-XXXX'. Allow null for other transitions. |
Implementation Harness Notes
How to wire the ADR Status Update prompt into an application with validation, state machine enforcement, and safe deployment checks.
The ADR Status Update prompt is designed to be called programmatically, not just used in a chat interface. It expects structured inputs—current status, target status, rationale, and impact assessment—and must return a valid status change record. The primary integration point is a function that assembles the prompt, calls the model, validates the output against the ADR state machine, and either writes the update or rejects the transition. This prompt should be wired into your ADR management tool, CI/CD pipeline, or documentation workflow where status changes trigger notifications, dependency checks, and audit log entries.
State machine validation is the critical harness component. Before calling the model, validate that the requested transition is legal. A proposed ADR can move to accepted, rejected, or deprecated. An accepted ADR can move to deprecated or superseded. A rejected ADR should not transition without explicit override. Implement this as a pre-flight check in your application code—do not rely on the model to enforce it. After receiving the model's output, validate the returned previous_status and new_status fields match the expected transition. If the model hallucinates an invalid transition, retry once with a stronger constraint in the prompt, then escalate for human review if the second attempt also fails. Log every transition attempt, including rejected ones, for auditability.
Output validation should check structure, not just status. Parse the model's JSON response and verify required fields: adr_id, previous_status, new_status, rationale_summary, impact_assessment, affected_adrs, notification_targets, and superseded_by (when applicable). Use a JSON Schema validator in your application layer. If the output fails schema validation, feed the validation errors back into a repair prompt rather than silently accepting malformed data. Human approval gating is recommended for transitions that affect accepted or superseded ADRs, or any transition where the impact assessment flags breaking changes. Route these to a review queue before the status change is committed.
Model choice and temperature matter. Use a model with strong instruction-following and JSON output capabilities (GPT-4o, Claude 3.5 Sonnet, or equivalent). Set temperature to 0 or near-zero to maximize consistency in status field values and rationale structure. If your ADR repository is large, consider providing only the relevant subset of dependent ADRs in the [DEPENDENT_ADRS] placeholder rather than the entire repository, to keep context manageable and reduce hallucination risk. Do not use this prompt with small or local models that struggle with structured output and multi-field consistency—the state machine enforcement is too brittle for unreliable JSON generation.
Wire notifications from the output, not from the prompt. The model returns a notification_targets array with suggested audiences and channels. Your application should read this field and trigger actual notifications through your existing systems (Slack, email, webhook). Never give the model direct access to notification-sending tools. The affected_adrs field should trigger automated checks: if any listed ADR has a conflicting status or dependency, flag it for human review before the update is finalized. Version the prompt template alongside your ADR schema. When you add new statuses or fields, update both the prompt and the validation harness in the same change, and run regression tests against known transition examples before deploying.
Expected Output Contract
Fields, format, and validation rules for the JSON output produced by the ADR Status Update Prompt. Use this contract to parse, validate, and store the status change record.
| Field or Element | Type or Format | Required | Validation Rule |
|---|---|---|---|
adr_id | string | Must match the pattern | |
previous_status | enum string | Must be one of: | |
new_status | enum string | Must be one of: | |
transition_valid | boolean | Must be | |
rationale_summary | string | Must be 50-500 characters. Reject if empty, shorter than 50, or longer than 500 characters. | |
impact_assessment | object | Must contain | |
notification_recipients | array of strings | Each entry must be a valid email address or team slug matching | |
timestamp | ISO 8601 string | Must be a valid ISO 8601 UTC datetime. Reject if unparseable or in the future beyond a 5-minute clock-skew tolerance. |
Common Failure Modes
What breaks first when generating ADR status updates and how to guard against it.
Invalid State Transitions
What to watch: The model proposes a transition that violates the ADR lifecycle state machine (e.g., moving from 'Draft' directly to 'Deprecated' without 'Accepted'). This happens when the prompt lacks explicit transition rules or the model hallucinates a plausible but invalid path. Guardrail: Embed the allowed transition map directly in the prompt as a strict constraint. Validate the output against a state machine schema before accepting it. Reject and retry with a specific error message if the transition is invalid.
Rationale Drift from Original Decision
What to watch: The status update misrepresents the original decision's context, options, or rationale, effectively rewriting history. This occurs when the model over-summarizes or the prompt does not anchor the update to the source ADR text. Guardrail: Require the source ADR content as a mandatory input. Instruct the model to quote or explicitly reference the original decision statement and rationale before adding the update. Use a grounding check to flag contradictions.
Missing Impact Assessment
What to watch: The update records the status change but omits the downstream impact on dependent systems, teams, or other ADRs. This produces a technically valid but operationally useless record. Guardrail: Make the 'Impact Assessment' section a required output field. Include a checklist of impact dimensions (dependent ADRs, system migrations, team notifications) in the prompt. Validate that the section is non-empty and contains specific, actionable items.
Vague or Non-Actionable Notification Guidance
What to watch: The prompt generates generic notification advice like 'notify stakeholders' without specifying who, what channel, or what information to include. This leaves the communication burden entirely on the author. Guardrail: Instruct the model to produce a structured notification plan with specific audiences, suggested channels, and key messages tailored to the status change. Validate that the output contains at least one concrete audience-action pair.
Superseding Without Traceability
What to watch: When an ADR is superseded, the update fails to create a bidirectional link between the old and new records. The repository loses traceability, making it impossible to reconstruct the decision lineage. Guardrail: Require explicit 'Supersedes' and 'Superseded By' fields in the output schema. Validate that these fields contain valid ADR identifiers when the status is 'Superseded'. Implement a post-generation check that the referenced ADRs exist in the repository.
Overconfident Deprecation Without Migration Path
What to watch: The model confidently marks an ADR as 'Deprecated' without describing how existing implementations should migrate or what the sunset timeline is. This creates operational risk for teams still relying on the deprecated decision. Guardrail: Add a conditional constraint: if the target status is 'Deprecated', the output MUST include a 'Migration Path' or 'Sunset Plan' section. Validate this section exists and contains a timeline or step-by-step removal plan before accepting the output.
Evaluation Rubric
Criteria for testing the ADR Status Update Prompt Template before integrating it into a CI/CD pipeline or ADR management tool. Each criterion validates a specific aspect of the prompt's output against the state machine and documentation requirements.
| Criterion | Pass Standard | Failure Signal | Test Method |
|---|---|---|---|
Valid State Transition | Output proposes a transition allowed by the ADR state machine (e.g., Proposed->Accepted, Accepted->Deprecated). | Output proposes an invalid transition (e.g., Deprecated->Proposed) or fails to identify the current state. | Run 10 test cases covering all valid and 5 invalid transitions. Assert 100% accuracy on valid transitions and 100% rejection of invalid ones. |
Rationale Completeness | Status change rationale references a specific trigger (e.g., team vote, new evidence, system decommissioning) and explains why the change is appropriate now. | Rationale is generic (e.g., 'it is time'), missing, or only restates the new status without explaining the trigger. | Evaluate 5 outputs manually. Check for presence of a trigger event and a causal link to the new status. Pass if 4/5 meet the standard. |
Impact Assessment Coverage | Output lists affected systems, teams, downstream ADRs, or operational procedures with specific names or references. | Impact section is empty, contains only generic statements like 'some teams may be affected', or misses a known downstream dependency from the ADR graph. | Provide a mock ADR with 3 known dependencies. Assert the output identifies all 3 by name or reference. Use a script to parse the output and check for substring matches. |
Notification Guidance Specificity | Output suggests specific roles or channels for notification (e.g., 'Notify #platform-eng via Slack', 'Update the API Gateway team's sprint board'). | Notification guidance is missing, says 'notify stakeholders' without specifying who, or suggests notifying teams unaffected by the change. | Parse the output for a list of notification targets. Assert the list is non-empty and contains at least one specific role or channel name. Fail if the list is empty or contains only the word 'stakeholders'. |
Schema Compliance | Output is valid JSON matching the expected ADR Status Update schema with all required fields present and correctly typed. | Output is not valid JSON, is missing required fields (e.g., | Validate the raw model output against a JSON Schema definition using a test harness. Assert the validation passes without errors. |
Traceability to Original ADR | Output correctly references the target ADR by its unique identifier and includes a link or path to the original document. | Output references the wrong ADR ID, omits the reference entirely, or uses a title instead of a unique identifier when an ID is required. | Provide an input with a specific ADR ID. Assert the output contains that exact ID string in the designated |
Handling of Ambiguous Input | When the current status is unclear or conflicting, the output asks for clarification rather than guessing or defaulting to a common status. | Output assumes a status (e.g., defaults to 'Proposed') without noting the ambiguity or asking for confirmation. | Provide an input with conflicting status signals (e.g., title says 'Accepted' but body describes a proposal). Assert the output contains a clarification question or an explicit note of the ambiguity. |
Deprecation Guidance Quality | When transitioning to 'Deprecated' or 'Superseded', the output includes a migration path or a pointer to the replacement ADR. | Deprecation output lacks a migration path, suggests deletion without a replacement, or fails to mention the superseding ADR ID. | Test with 2 inputs targeting 'Deprecated' status. Assert both outputs contain either a migration instruction or a reference to a replacement ADR ID. Use keyword matching for 'migrate', 'replacement', or 'superseded by'. |
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 a simplified state machine. Drop the notification guidance section and reduce the output schema to only status_change, rationale, and impact_summary. Accept free-text status transitions without strict enum validation.
code[ADR_ID]: [INPUT] [CURRENT_STATUS]: [INPUT] [PROPOSED_STATUS]: [INPUT] [CHANGE_RATIONALE]: [INPUT] Generate a status change record with: - status_change: {from, to, timestamp} - rationale: 2-3 sentence summary - impact_summary: affected systems or teams
Watch for
- Invalid state transitions (e.g., deprecated → proposed) without guardrails
- Missing impact assessment when the ADR affects multiple teams
- Overly brief rationale that doesn't explain why the status changed

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