arckit-conformance
$
npx mdskill add tractorjuice/arc-kit/arckit-conformanceVerify architecture decisions match current implementation.
- Detects gaps between approved ADRs and deployed code.
- Requires mandatory PRIN and ADR files to operate.
- Analyzes design drift and technical debt patterns.
- Outputs structured conformance reports with specific errors.
SKILL.md
.github/skills/arckit-conformanceView on GitHub ↗
---
name: arckit-conformance
description: "Assess architecture conformance — ADR decision implementation, cross-decision consistency, design-principles alignment, architecture drift, technical debt, and custom constraint rules"
---
## User Input
```text
$ARGUMENTS
```
## Goal
Generate a systematic **Architecture Conformance Assessment** that checks whether the *decided* architecture (ADRs, principles, approved designs) matches the *designed/implemented* architecture (HLD, DLD, DevOps artifacts). This command fills the gap between `$arckit-health` (quick metadata scan) and `$arckit-analyze` (deep governance across all dimensions) by focusing specifically on **decided-vs-designed conformance**, architecture drift, and architecture technical debt (ATD).
**This is a point-in-time assessment** — run at key project gates or after major design changes to track conformance over time.
## Prerequisites
### Architecture Principles (MANDATORY)
a. **PRIN** (Architecture Principles, in `projects/000-global/`) (MUST exist):
- If NOT found: ERROR "Run $arckit-principles first to define governance standards for your organization"
### Architecture Decision Records (MANDATORY)
b. **ADR** (Architecture Decision Records, in `projects/{project-dir}/decisions/`) (MUST exist):
- If NOT found: ERROR "Run $arckit-adr first — conformance assessment requires at least one accepted ADR"
### Project Artifacts (RECOMMENDED)
More artifacts = better conformance assessment:
- **REQ** (Requirements) in `projects/{project-dir}/` — Requirements to cross-reference
- `projects/{project-dir}/vendors/{vendor}/hld-v*.md` — High-Level Design
- `projects/{project-dir}/vendors/{vendor}/dld-v*.md` — Detailed Low-Level Design
- **HLDR** (HLD Review) in `projects/{project-dir}/reviews/` — Design review findings
- **DLDR** (DLD Review) in `projects/{project-dir}/reviews/` — Detailed review findings
- **PRIN-COMP** (Principles Compliance) in `projects/{project-dir}/` — Prior compliance assessment
- **TRAC** (Traceability Matrix) in `projects/{project-dir}/` — Requirements traceability
- **RISK** (Risk Register) in `projects/{project-dir}/` — Risk context for exceptions
- **DEVOPS** (DevOps Strategy) in `projects/{project-dir}/` — CI/CD and deployment patterns
### Custom Constraint Rules (OPTIONAL)
c. `.arckit/conformance-rules.md` in the project root (if exists):
- Contains user-defined ArchCNL-style constraint rules
- Format: Natural language rules with MUST/MUST NOT/SHOULD/SHOULD NOT keywords
- Example: "All API services MUST use OAuth 2.0 for authentication"
- Example: "Database connections MUST NOT use plaintext credentials"
**Note**: Assessment is possible with minimal artifacts (principles + ADRs), but accuracy improves significantly with HLD/DLD and review documents.
## Operating Constraints
**Non-Destructive Assessment**: Do NOT modify existing artifacts. Generate a new conformance assessment document only.
**Evidence-Based Assessment**: Every finding must cite specific file:section:line references. Avoid vague statements like "design addresses this" — be specific.
**Honest Assessment**: Do not inflate conformance scores. FAIL is better than false PASS. Untracked technical debt should be surfaced, not hidden.
**Architecture Principles Authority**: The architecture principles (`ARC-000-PRIN-*.md` in `projects/000-global/`) are non-negotiable. Any design that contradicts principles is automatically a FAIL.
**ADR Decision Authority**: Accepted ADR decisions are binding. Designs that ignore or contradict accepted decisions are non-conformant.
## Execution Steps
> **Note**: Before generating, scan `projects/` for existing project directories. For each project, list all `ARC-*.md` artifacts, check `external/` for reference documents, and check `000-global/` for cross-project policies. If no external docs exist but they would improve output, ask the user.
### 0. Read the Template
**Read the template** (with user override support):
- **First**, check if `.arckit/templates/conformance-assessment-template.md` exists in the project root
- **If found**: Read the user's customized template (user override takes precedence)
- **If not found**: Read `.arckit/templates/conformance-assessment-template.md` (default)
> **Tip**: Users can customize templates with `$arckit-customize conformance`
### 1. Validate Prerequisites
**Check Architecture Principles**:
- Look for `ARC-000-PRIN-*.md` in `projects/000-global/`
- If NOT found: ERROR "Architecture principles not found. Run $arckit-principles first."
**Check ADRs**:
- Look for `ARC-*-ADR-*.md` files in `projects/{project-dir}/decisions/`
- If NONE found: ERROR "No ADRs found. Run $arckit-adr first — conformance assessment requires at least one accepted ADR."
### 1b. Read external documents and policies
- Read any **external documents** listed in the project context (`external/` files) — extract audit findings, compliance gaps, certification evidence, remediation plans
- Read any **enterprise standards** in `projects/000-global/external/` — extract enterprise compliance frameworks, cross-project conformance benchmarks
- If no external docs exist but they would improve the assessment, note this as an assessment limitation
- **Citation traceability**: When referencing content from external documents, follow the citation instructions in `.arckit/references/citation-instructions.md`. Place inline citation markers (e.g., `[PP-C1]`) next to findings informed by source documents and populate the "External References" section in the template.
### 2. Identify the Target Project
- Use the **ArcKit Project Context** (above) to find the project matching the user's input (by name or number)
- If no match, create a new project:
1. Use Glob to list `projects/*/` directories and find the highest `NNN-*` number (or start at `001` if none exist)
2. Calculate the next number (zero-padded to 3 digits, e.g., `002`)
3. Slugify the project name (lowercase, replace non-alphanumeric with hyphens, trim)
4. Use the Write tool to create `projects/{NNN}-{slug}/README.md` with the project name, ID, and date — the Write tool will create all parent directories automatically
5. Also create `projects/{NNN}-{slug}/external/README.md` with a note to place external reference documents here
6. Set `PROJECT_ID` = the 3-digit number, `PROJECT_PATH` = the new directory path
### 3. Load All Relevant Artifacts
Read the following artifacts. Do NOT read entire files — extract relevant sections for each conformance check.
**Architecture Principles** (`projects/000-global/ARC-000-PRIN-*.md`):
- Extract ALL principles dynamically (name, statement, rationale, implications)
**ADRs** (`projects/{project-dir}/decisions/ARC-*-ADR-*.md`):
- For EACH ADR, extract: title, status (Accepted/Superseded/Deprecated/Proposed), decision text, context, consequences (positive and negative), related ADRs
- Track supersession chains (which ADR supersedes which)
**Design Documents** (if exist):
- `projects/{project-dir}/vendors/{vendor}/hld-v*.md` — Architecture overview, technology stack, patterns, components
- `projects/{project-dir}/vendors/{vendor}/dld-v*.md` — Detailed implementation, API specs, infrastructure
**Review Documents** (if exist):
- `ARC-*-HLDR-*.md` in `reviews/` — HLD review conditions, findings
- `ARC-*-DLDR-*.md` in `reviews/` — DLD review conditions, findings
**Other Artifacts** (if exist):
- `ARC-*-REQ-*.md` — Requirements for traceability
- `ARC-*-PRIN-COMP-*.md` — Prior principles compliance (for trend comparison)
- `ARC-*-TRAC-*.md` — Traceability matrix
- `ARC-*-RISK-*.md` — Risk register (for exception context)
- `ARC-*-DEVOPS-*.md` — DevOps strategy (for technology stack drift check)
**Custom Rules** (if exist):
- `.arckit/conformance-rules.md` in the project root
### 4. Execute Conformance Checks
Run ALL 12 conformance checks. Each check produces a PASS/FAIL/NOT ASSESSED status with evidence.
---
#### Check ADR-IMPL: ADR Decision Implementation (Severity: HIGH)
For EACH ADR with status "Accepted":
1. Extract the **Decision** section text
2. Search HLD and DLD for evidence that the decision is implemented
3. Check that the technology/pattern/approach chosen in the ADR appears in the design
4. **PASS**: Design documents reference or implement the ADR decision
5. **FAIL**: Decision is accepted but not reflected in design documents
6. **NOT ASSESSED**: No HLD/DLD available to check against
**Evidence format**: `ADR "Title" (file:line) → HLD Section X (file:line) — [IMPLEMENTED/NOT FOUND]`
---
#### Check ADR-CONFL: Cross-ADR Consistency (Severity: HIGH)
1. Compare all Accepted ADRs for contradictions:
- Technology choices that conflict (e.g., ADR-001 chooses PostgreSQL, ADR-005 chooses MongoDB for same purpose)
- Pattern choices that conflict (e.g., ADR-002 mandates event-driven, ADR-007 mandates synchronous API calls for same integration)
- Scope overlaps where decisions disagree
2. **PASS**: No contradictions found between accepted ADRs
3. **FAIL**: Contradictions identified — list conflicting ADR pairs with specific conflicts
**Evidence format**: `ADR-001 (file:line) CONFLICTS WITH ADR-005 (file:line) — [description]`
---
#### Check ADR-SUPER: Superseded ADR Enforcement (Severity: MEDIUM)
1. Identify all Superseded ADRs
2. Check that HLD/DLD does NOT reference patterns/technologies from superseded decisions
3. Check that the superseding ADR's decision IS reflected instead
4. **PASS**: No residue from superseded decisions found in design
5. **FAIL**: Design still references superseded decision patterns/technologies
**Evidence format**: `Superseded ADR "Title" (file:line) — residue found in HLD Section X (file:line)`
---
#### Check PRIN-DESIGN: Principles-to-Design Alignment (Severity: HIGH)
For EACH architecture principle:
1. Extract the principle statement and implications
2. Search HLD/DLD for design elements that satisfy or violate the principle
3. Apply **binary pass/fail** constraint checking (unlike principles-compliance which uses RAG scoring):
- Does the design VIOLATE this principle? → FAIL
- Does the design SATISFY this principle? → PASS
- Insufficient evidence to determine? → NOT ASSESSED
4. This is a **hard constraint check**, not a maturity assessment
**Note**: This differs from `$arckit-principles-compliance` which provides RAG scoring with remediation plans. This check is a binary gate: does the design conform or not?
**Evidence format**: `Principle "Name" — HLD Section X (file:line) [SATISFIES/VIOLATES] — [description]`
---
#### Check COND-RESOLVE: Review Condition Resolution (Severity: HIGH)
1. Read HLD/DLD review documents (HLDR, DLDR)
2. Look for conditions — typically flagged as "APPROVED WITH CONDITIONS", "CONDITIONAL", "CONDITIONS", or specific condition markers
3. For each condition found:
- Search for evidence of resolution in subsequent artifacts or updated designs
- Check if condition has been addressed in a newer version of the reviewed document
4. **PASS**: All review conditions have resolution evidence
5. **FAIL**: Unresolved conditions found — list each with its source and status
**Evidence format**: `Condition "[text]" (file:line) — [RESOLVED in file:line / UNRESOLVED]`
---
#### Check EXCPT-EXPIRY: Exception Register Expiry (Severity: HIGH)
1. Search for exception registers in principles-compliance assessment, risk register, and review documents
2. Look for patterns: "Exception", "EXC-", "Approved exception", "Waiver", "Exemption"
3. For each exception found, check if the expiry date has passed (compare to today's date)
4. **PASS**: No expired exceptions found (or no exceptions exist)
5. **FAIL**: Expired exceptions found that haven't been renewed or remediated
**Evidence format**: `Exception "EXC-NNN" (file:line) — expired [DATE], [REMEDIATED/STILL ACTIVE]`
---
#### Check EXCPT-REMEDI: Exception Remediation Progress (Severity: MEDIUM)
1. For each active (non-expired) exception found:
- Check if a remediation plan exists
- Check if there's evidence of progress toward remediation
- Check if remediation timeline is realistic given remaining time to expiry
2. **PASS**: All active exceptions have remediation plans with evidence of progress
3. **FAIL**: Exceptions missing remediation plans or showing no progress
**Evidence format**: `Exception "EXC-NNN" — remediation plan [EXISTS/MISSING], progress [EVIDENCE/NONE]`
---
#### Check DRIFT-TECH: Technology Stack Drift (Severity: MEDIUM)
1. Extract technology choices from ADRs (databases, frameworks, languages, cloud services, tools)
2. Extract technology references from HLD, DLD, and DevOps strategy
3. Compare: do the technologies in design documents match ADR decisions?
4. Look for technologies appearing in design that were NOT decided via ADR (undocumented technology adoption)
5. **PASS**: Technology stack in design matches ADR decisions
6. **FAIL**: Technologies in design don't match ADR decisions, or undocumented technologies found
**Evidence format**: `Technology "[name]" — ADR (file:line) says [X], Design (file:line) uses [Y]`
---
#### Check DRIFT-PATTERN: Architecture Pattern Drift (Severity: MEDIUM)
1. Extract architecture patterns from ADRs and HLD (microservices, event-driven, REST, CQRS, etc.)
2. Check DLD for consistent pattern application across all components
3. Look for components that deviate from the chosen pattern without an ADR justifying the deviation
4. **PASS**: Patterns consistently applied across all design artifacts
5. **FAIL**: Inconsistent pattern application found
**Evidence format**: `Pattern "[name]" chosen in ADR/HLD (file:line) — DLD component [X] (file:line) uses [different pattern]`
---
#### Check RULE-CUSTOM: Custom Constraint Rules (Severity: Variable)
1. Read `.arckit/conformance-rules.md` if it exists
2. For each rule defined:
- Parse the rule (natural language with MUST/MUST NOT/SHOULD/SHOULD NOT)
- Search design artifacts for evidence of compliance or violation
- Assign severity based on keyword: MUST/MUST NOT → HIGH, SHOULD/SHOULD NOT → MEDIUM
3. **PASS**: Rule satisfied with evidence
4. **FAIL**: Rule violated — cite specific violation
5. **NOT ASSESSED**: Insufficient artifacts to check rule
6. If no custom rules file exists: mark as NOT ASSESSED with note "No custom rules defined"
**Evidence format**: `Rule "[text]" — [SATISFIED/VIOLATED] at (file:line)`
---
#### Check ATD-KNOWN: Known Technical Debt (Severity: LOW)
1. Catalogue acknowledged architecture technical debt from:
- **ADR negative consequences**: "Consequences" sections listing accepted downsides
- **Risk register accepted risks**: Risks accepted as trade-offs (ACCEPT treatment)
- **Review conditions**: Deferred items from HLD/DLD reviews
- **Workarounds**: Temporary solutions documented in design
- **Scope reductions**: Quality/features removed for timeline/budget
2. Classify each debt item into ATD categories:
- DEFERRED-FIX: Known deficiency deferred to later phase
- ACCEPTED-RISK: Risk consciously accepted as trade-off
- WORKAROUND: Temporary solution deviating from intended pattern
- DEPRECATED-PATTERN: Superseded pattern not yet migrated
- SCOPE-REDUCTION: Quality/feature removed for timeline/budget
- EXCEPTION: Approved principle exception with expiry
3. **PASS**: Known debt is documented and tracked (this check always passes if debt is acknowledged)
4. **NOT ASSESSED**: No artifacts available to catalogue debt
**Evidence format**: `ATD-NNN: "[description]" — Category: [category], Source: (file:line)`
---
#### Check ATD-UNTRACK: Untracked Technical Debt (Severity: MEDIUM)
1. Look for potential architecture technical debt NOT explicitly acknowledged:
- Technologies in design but not in ADR decisions (ad-hoc adoption)
- TODO/FIXME/HACK/WORKAROUND markers in design documents
- Inconsistencies between HLD and DLD suggesting shortcuts
- Design elements contradicting principles without an exception
- Review findings not addressed in subsequent versions
2. **PASS**: No untracked debt detected
3. **FAIL**: Potential untracked debt identified — list items for team review
**Evidence format**: `Potential ATD: "[description]" found at (file:line) — not documented in any ADR/risk/exception`
---
### 5. Calculate Conformance Score
**Scoring**:
- Count PASS, FAIL, NOT ASSESSED for each check
- Calculate overall conformance percentage: `(PASS count / (PASS + FAIL count)) × 100`
- Exclude NOT ASSESSED from the denominator
**Deviation Tier Assignment** — for each FAIL finding, assign a tier based on result + severity:
- 🔴 RED: FAIL + HIGH severity — escalate immediately, blocks next gate
- 🟡 YELLOW: FAIL + MEDIUM severity — negotiate remediation within 30 days, include fallback
- 🟢 GREEN: FAIL + LOW severity — acceptable deviation, document and monitor
**Tier-Specific Response Requirements**:
- For each 🔴 RED finding: explain the architecture risk, propose an alternative approach, recommend escalation to architecture board/CTO
- For each 🟡 YELLOW finding: provide specific remediation steps + timeline, include a fallback position if remediation is deferred
- For each 🟢 GREEN finding: document the deviation rationale, set a review date, no blocking action required
**Overall Recommendation**:
- **CONFORMANT**: All checks PASS (or NOT ASSESSED), no FAIL findings
- **CONFORMANT WITH CONDITIONS**: No RED findings, YELLOW/GREEN findings have remediation plans, conformance >= 80%
- **NON-CONFORMANT**: Any RED finding, or conformance < 80%
### 6. Generate Document
Use the document ID `ARC-{PROJECT_ID}-CONF-v{VERSION}` (e.g., `ARC-001-CONF-v1.0`).
Before writing the file, read `.arckit/references/quality-checklist.md` and verify all **Common Checks** plus the **CONF** per-type checks pass. Fix any failures before proceeding.
**Use the Write tool** to save the document to `projects/{project-dir}/ARC-{PROJECT_ID}-CONF-v{VERSION}.md`.
Populate the template with all conformance check results, following the structure defined in the template.
**IMPORTANT**: Use Write tool, not output to user. Document will be 500-2000 lines depending on the number of ADRs, principles, and findings.
**Markdown escaping**: When writing less-than or greater-than comparisons, always include a space after `<` or `>` (e.g., `< 3 seconds`, `> 99.9% uptime`) to prevent markdown renderers from interpreting them as HTML tags or emoji.
### 7. Show Summary to User
Display concise summary (NOT full document):
```text
✅ Architecture conformance assessment generated
📊 **Conformance Summary**:
- Overall Score: [X]% ([CONFORMANT / CONFORMANT WITH CONDITIONS / NON-CONFORMANT])
- Checks Passed: [X] / [Y]
- Checks Failed: [X]
- Not Assessed: [X]
[IF RED findings:]
🔴 **RED — Escalate** ([N]):
- [Check ID]: [Brief description]
[List all RED findings]
[IF YELLOW findings:]
🟡 **YELLOW — Negotiate** ([N]):
- [Check ID]: [Brief description]
[List all YELLOW findings]
[IF GREEN findings:]
🟢 **GREEN — Acceptable** ([N]):
- [Check ID]: [Brief description]
[List all GREEN findings]
[IF ATD items found:]
📦 **Architecture Technical Debt**: [X] known items, [Y] potential untracked items
📄 **Document**: projects/{project-dir}/ARC-{PROJECT_ID}-CONF-v{VERSION}.md
🔍 **Recommendation**:
[CONFORMANT]: ✅ Architecture conforms to decisions and principles
[CONFORMANT WITH CONDITIONS]: ⚠️ No critical deviations — [N] YELLOW findings need remediation by [date]
[NON-CONFORMANT]: ❌ [N] RED findings require escalation before proceeding
**Next Steps**:
1. Review detailed findings in the generated document
2. [IF RED findings:] Escalate critical deviations to architecture board immediately
3. [IF YELLOW findings:] Agree remediation plans or fallback positions within 30 days
4. [IF ATD items:] Review technical debt register with architecture board
5. [IF custom rules missing:] Consider creating `.arckit/conformance-rules.md` for project-specific rules
6. Schedule next conformance check at [next gate/phase]
```
## Post-Generation Actions
After generating the assessment document:
1. **Suggest Follow-up Commands**:
```text
📋 **Related Commands**:
- $arckit-principles-compliance - Detailed RAG scoring of principle compliance
- $arckit-analyze - Comprehensive governance gap analysis
- $arckit-traceability - Requirements traceability matrix
- $arckit-health - Quick metadata health check
```
2. **Track in Project**:
Suggest adding remediation actions to project tracking:
- Create backlog items for FAIL findings
- Schedule architecture technical debt review
- Set next conformance check date
## Important Notes
- **Markdown escaping**: When writing less-than or greater-than comparisons, always include a space after `<` or `>` (e.g., `< 3 seconds`, `> 99.9% uptime`) to prevent markdown renderers from interpreting them as HTML tags or emoji
More from tractorjuice/arc-kit
- architecture-workflowThis skill should be used when the user asks how to start an architecture project, which ArcKit commands to run and in what order, what workflow to follow, getting started, new project setup, guide me through, or what comes next.
- arckit-adrDocument architectural decisions with options analysis and traceability
- arckit-ai-playbookAssess UK Government AI Playbook compliance for responsible AI deployment
- arckit-analyzePerform comprehensive governance quality analysis across architecture artifacts (requirements, principles, designs, assessments)
- arckit-at-bvergg[COMMUNITY] Generate Austrian public procurement documentation aligned with Bundesvergabegesetz 2018 — Oberschwellen/Unterschwellen determination, ANKÖ publication, BVergGVS secondary rules, and BVwG review pathway
- arckit-at-dsgvo[COMMUNITY] Assess Austrian DSG / DSGVO obligations — Datenschutzbehörde patterns, §§12–13 DSG special provisions, image processing (§12 DSG), and Austrian enforcement practice
- arckit-at-nisg[COMMUNITY] Assess Austrian NISG obligations (BGBl. I Nr. 94/2025) — AT transposition of NIS2, BKA (GovCERT) / BMI (SPOC) reporting, KSÖ coordination, and Austrian sectoral rules for Essential/Important entities
- arckit-atrsGenerate Algorithmic Transparency Recording Standard (ATRS) record for AI/algorithmic tools
- arckit-aws-researchResearch AWS services and architecture patterns using AWS Knowledge MCP for authoritative guidance
- arckit-azure-researchResearch Azure services and architecture patterns using Microsoft Learn MCP for authoritative guidance