aidokitv1.0 rc

Conformance levels

Three levels — Minimum, Standard, Strict — declared in every adapter and stack-pack manifest, verified by a harness in @aidokit/core.

Level comparison

Each level is a strict superset of the one below. Capabilities accumulate.

flowchart LR classDef min fill:#fffbeb,stroke:#b45309,color:#78350f; classDef std fill:#eff6ff,stroke:#2563eb,color:#0f172a; classDef str fill:#f0fdf4,stroke:#15803d,color:#14532d; subgraph M ["Minimum — MUST"] direction TB M1[3 verbs emitted] M2[6 roles, capability-scoped] M3[watchdog stops armed] M4[manifest + deterministic emit] end subgraph S ["Standard — MUST + SHOULD"] direction TB S1[+ subagents] S2[+ repair caps] S3[+ monitoring stream] S4[+ 5 output styles] end subgraph X ["Strict — MUST + SHOULD + MAY"] direction TB X1[+ workspace isolation] X2[+ 7th role: Frontend-Browser-Tester] X3[+ structured artifact schemas] end M --> S --> X class M min class S std class X str

Figure 1. Conformance is additive. Declared > verified is a CI failure.

The levels

LevelWhat it includesSuitable for
Minimum All MUST requirements from the contract. CLIs with basic prompt-driven workflows.
Standard recommended default Minimum + all SHOULD requirements. Most teams. Subagents, repair caps, monitoring stream.
Strict Standard + all MAY requirements promoted to expected. Teams wanting full discipline. Workspace isolation, output styles, seventh role.

What each level guarantees

Minimum (~24 MUST checks for adapters)

Standard (Minimum + ~8 SHOULDs)

Strict (Standard + MAYs promoted)

How verification works

Every adapter and stack-pack package ships a conformance.test.ts:

typescript
import { runAdapterConformance } from '@aidokit/core';
import { adapter } from '../src/index.js';

test(`${adapter.manifest.name} conforms to declared level`, async () => {
  const report = await runAdapterConformance(adapter, adapter.manifest.conformance);
  expect(report.overall).toBe('pass');
});

The harness:

  1. Reads the declared level from manifest.conformance.
  2. Resolves the check set for that level (inclusive of lower levels).
  3. Invokes each emit method against synthetic ProjectContext fixtures.
  4. Applies pass / fail criteria; collects evidence.
  5. Reports per-check and overall pass | fail.
CI gate Adapters and stack packs cannot publish if conformance fails. Declared-greater-than-verified is a CI failure, not a footnote.

v1.0 declared levels

PackageDeclaredNotes
@aidokit/adapter-claude-codeStrictSeven roles + five output styles.
@aidokit/adapter-codexMinimumNo hook mechanism; gap documented.
@aidokit/adapter-copilotMinimumNo hook mechanism; partial MCP; gap documented.
@aidokit/stack-pack-node-tsStandard
@aidokit/stack-pack-node-jsStandard
@aidokit/stack-pack-pythonStandard
@aidokit/stack-pack-reactStandard
@aidokit/stack-pack-goStandard

Project-level conformance

Your project picks its target level in .aido/adapter.md:

yaml
---
adapter: claude-code
conformanceTarget: standard
specVersion: '2.0'
---

The target MUST be the installed adapter's declared level. A Strict project requires an adapter that declares Strict.

aidokit doctor — drift detection

At install time the CLI writes .aido/conformance-snapshot.json. aidokit doctor re-runs a subset of the harness and compares against the snapshot, reporting drift:

shell
$ npx aidokit doctor
✓ Node.js 20.11.0
✓ Claude Code 2.1.34
✓ Adapter: claude-code@0.1.0 (Strict conformance)
✓ All 18 skills present
✗ MCP scoping mismatch: 'context7' missing from researcher role
   Fix:  aidokit mcp scope context7 --add-role researcher

1 failure, 0 warnings

Recovery from common drift

FailureRecovery
Adapter version mismatchaidokit sync
Skill file deletedaidokit sync --skills
Hook scripts lost execute permissionaidokit sync --scripts or chmod +x
MCP scoping divergenceaidokit mcp scope <id> --set-roles <list>
Adapter no longer claims declared levelaidokit doctor --strict; upgrade or replace adapter