cc-os/openspec/changes/archive/2026-07-03-add-os-adr-plugin/specs/adr-migration/spec.md

3.7 KiB
Raw Blame History

adr-migration

ADDED Requirements

Requirement: Shape detection with a fallback

The migration tooling SHALL mechanically detect existing ADR-like content and classify it into the surveyed shapes — numbered per-file directories, dated single files, monolithic multi-decision files, prose embedded in other docs — plus an unrecognized fallback classification. Unrecognized content SHALL be reported for manual handling, never auto-converted.

Scenario: Known shape detected

  • WHEN detection runs on a project with a monolithic multi-decision file
  • THEN the file is classified as monolithic and its individual decisions are enumerated as migration units

Scenario: Unknown shape falls back safely

  • WHEN detection encounters ADR-like content matching no known shape
  • THEN it is classified unrecognized and listed in the report without any conversion attempt

Requirement: Mechanical/LLM field-mapping boundary

During conversion, fields that are structurally unambiguous in the source (Status and Date from frontmatter or clear headings; title; ID assignment; source provenance) SHALL be filled mechanically. Only interpretive fields (Consequences, Alternatives rejected, monolithic-file decision splitting) MAY be LLM-filled, and every LLM-filled field SHALL be flagged. The migration SHALL never invent a Decision or Context field absent from the source — such fields SHALL carry an explicit not-stated-in-source marker and lower the file's confidence.

Scenario: Unambiguous field filled mechanically

  • WHEN a source ADR has a Status: Accepted heading and a date
  • THEN the converted file's status and date are set without any LLM call

Scenario: Missing core field is not invented

  • WHEN a source decision has no discernible Context
  • THEN the converted Context section contains a not-stated-in-source marker and the file is flagged low-confidence

Requirement: Single uncertainty-flagging mechanism

Migration uncertainty SHALL be surfaced through exactly one mechanism: a migration_confidence: low|medium|high frontmatter field per converted file, plus one migration report file (docs/adr/migration-report.md) summarizing per-file confidence, the source-to-new mapping, and the overall low-confidence flag rate. Scattered inline uncertainty comments SHALL NOT be used.

Scenario: Report aggregates confidence

  • WHEN a migration completes
  • THEN the report lists every converted file with its confidence, its source location, and the overall flag rate

Requirement: Non-destructive, dual-existence conversion

Migration SHALL only write new files under docs/adr/; existing ADR content SHALL never be deleted, moved, or edited by the migration. Removal of the old system SHALL happen only as an explicit, separate, user-approved step offered after the migration report exists.

Scenario: Old system untouched

  • WHEN a migration run completes
  • THEN every pre-existing ADR source file is byte-identical to its pre-migration state

Scenario: Deletion requires explicit approval

  • WHEN the user has not explicitly approved old-system removal
  • THEN no tooling path deletes the old content, and the removal offer appears only after the report is available for review

Requirement: Pilot gate before broad rollout

The migration SHALL be piloted on 23 real surveyed projects, and the low-confidence flag rate SHALL be measured against an explicit threshold recorded at pilot time before the heuristics are treated as good enough for wider rollout.

Scenario: High flag rate blocks rollout

  • WHEN a pilot run's low-confidence rate exceeds the recorded threshold
  • THEN the heuristics are tightened and the pilot re-run before migrating further projects