This is the record of an abcd-managed repository

abcdBetav0.16.2 · 2026-11-06

Development record

2026-09-25 — iss-2608291814575788 (the opt-in gitleaks augmentation reaches `history.Capture` alone) is answered by inverting the import edge, not by folding the adapter into `internal/adapter/scanner` as the record proposes: `internal/adapter/gitleaks` imports the scanner for its `Finding` type, so the fold is an import cycle. The scanner declares `type Augmenter interface { Available() error; Scan(text, file string) []Finding }` and an option `WithAugmenter(Augmenter)`; the gitleaks adapter keeps importing the scanner and is wired at the composition root (`cmd/abcd`, or the core constructor that already reads the opt-in), so the scanner never imports gitleaks. `ScanText` and `ScanBundle` append the augmenter's findings and deduplicate on file, line and span. `ErrConfiguredNotFound` becomes one state with one consequence per consumer: launch fails closed (an `Unscanned` reason, and `HardFails` incremented), while capture, history and memory write and record the gap in their receipt. It is built in its own lane of about 150 lines, not in the scanner-cluster fix round, so the record carries a v0.10.0 deferral naming this ruling. Technical ruling by the orchestrator of autonomous run A, on the design the scanner-cluster review set out (its item 4); recorded by the implementer of lane scanner, fix round 1.

decisiondcn-2609250000000025

2026-09-25 — iss-2608291814575788 (the opt-in gitleaks augmentation reaches history.Capture alone) is answered by inverting the import edge, not by folding the adapter into internal/adapter/scanner as the record proposes: internal/adapter/gitleaks imports the scanner for its Finding type, so the fold is an import cycle. The scanner declares type Augmenter interface { Available() error; Scan(text, file string) []Finding } and an option WithAugmenter(Augmenter); the gitleaks adapter keeps importing the scanner and is wired at the composition root (cmd/abcd, or the core constructor that already reads the opt-in), so the scanner never imports gitleaks. ScanText and ScanBundle append the augmenter's findings and deduplicate on file, line and span. ErrConfiguredNotFound becomes one state with one consequence per consumer: launch fails closed (an Unscanned reason, and HardFails incremented), while capture, history and memory write and record the gap in their receipt. It is built in its own lane of about 150 lines, not in the scanner-cluster fix round, so the record carries a v0.10.0 deferral naming this ruling. Technical ruling by the orchestrator of autonomous run A, on the design the scanner-cluster review set out (its item 4); recorded by the implementer of lane scanner, fix round 1.

Frontmatter

iddcn-2609250000000025
typedecision
date2026-09-25

mentions1