Inferensys

Prompt

ADR Status Update Prompt Template

A practical prompt playbook for using ADR Status Update Prompt Template in production AI workflows.
Developer doing prompt engineering on laptop, prompt variations visible on screen, casual coding session.
PROMPT PLAYBOOK

When to Use This Prompt

Defines the job-to-be-done, ideal user, required context, and boundaries for the ADR Status Update prompt.

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.

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.

PRACTICAL GUARDRAILS

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.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

PROMPT PLAYBOOK

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.

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

IMPLEMENTATION TABLE

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.

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

PROMPT PLAYBOOK

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.

IMPLEMENTATION TABLE

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

adr_id

string

Must match the pattern ADR-[0-9]{4}. Reject if missing or malformed.

previous_status

enum string

Must be one of: Proposed, Accepted, Deprecated, Superseded. Reject if not in the allowed set.

new_status

enum string

Must be one of: Proposed, Accepted, Deprecated, Superseded. Reject if equal to previous_status or if the transition is invalid per the state machine.

transition_valid

boolean

Must be true. If false, the output must be discarded and the prompt retried with the invalid transition error message.

rationale_summary

string

Must be 50-500 characters. Reject if empty, shorter than 50, or longer than 500 characters.

impact_assessment

object

Must contain affected_adrs (array of ADR IDs), affected_systems (array of strings), and migration_required (boolean). Reject if any key is missing or affected_adrs contains invalid IDs.

notification_recipients

array of strings

Each entry must be a valid email address or team slug matching team:[a-z-]+. Reject if any entry fails validation.

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.

PRACTICAL GUARDRAILS

Common Failure Modes

What breaks first when generating ADR status updates and how to guard against it.

01

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.

02

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.

03

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.

04

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.

05

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.

06

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.

IMPLEMENTATION TABLE

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.

CriterionPass StandardFailure SignalTest 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., new_status, rationale), or contains fields with incorrect data types.

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 adr_id field. Use an exact string match in the test.

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

ADAPTATION OPTIONS

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