Decision-Linked Development (DLD) — a workflow for recording, linking, and maintaining development decisions alongside code. Skills for planning, recording, implementing, auditing, and documenting decisions via @decision annotations.
68
Quality
68%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
You are scanning the codebase for drift between decision records and code annotations. This helps catch situations where code evolved but decisions weren't updated.
Shared scripts:
../dld-common/scripts/common.shSkill-specific scripts:
scripts/find-annotations.sh
scripts/update-audit-state.shCheck that dld.config.yaml exists at the repo root. If not, tell the user to run /dld-init first and stop.
Run the find-annotations script:
bash scripts/find-annotations.shThis outputs lines in the format <file>:<line>:<DL-NNN>, one per annotation occurrence.
Read all DL-*.md files in the records subdirectory (decisions/records/). For each, note:
Perform these drift checks:
Annotations in code that reference non-existent decision IDs. These indicate decisions that were deleted or IDs that were mistyped.
Annotations referencing decisions with status deprecated or superseded. Code is still tied to a decision that's no longer active.
Decision records whose references list code paths that no longer exist in the repository. Use file existence checks.
If decisions/.dld-state.yaml exists and has an audit.commit_hash, find files that:
@decision annotationsFirst, verify the commit is reachable:
git cat-file -t <commit_hash> 2>/dev/nullIf the commit is unreachable (e.g., after a rebase or shallow clone), skip this check and note it in the report:
Note: Previous audit commit
<hash>is not reachable in current history. Skipping changed-file detection. This can happen after a rebase or shallow clone.
If the commit is reachable:
git diff --name-only <commit_hash>..HEADCross-reference this list with annotated files. Files that changed but whose associated decisions weren't updated may indicate undocumented drift.
accepted decisions that have code references in their frontmatter but no corresponding @decision annotations found in the code. The references claim code is linked, but the annotations are missing.
Present findings grouped by severity:
## Audit Report
### Issues Found
#### Orphaned Annotations
- `src/billing/vat.ts:42` references `DL-099` — decision does not exist
#### Stale References
- **DL-012** references `src/billing/old-vat.ts` — file does not exist
#### Deprecated/Superseded References
- `src/auth/login.ts:15` references `DL-003` (status: superseded by DL-012)
#### Modified Annotated Files (since last audit)
- `src/billing/vat.ts` — modified, contains `@decision(DL-012)`. Review if decision needs updating.
### Summary
- **X** orphaned annotations
- **Y** stale references
- **Z** annotated files modified since last audit
### Suggested Remediation
- Fix orphaned annotation at `src/billing/vat.ts:42` — update to correct ID or remove
- Update DL-012 references — remove `src/billing/old-vat.ts`
- Review `src/billing/vat.ts` changes — consider `/dld-decide` if behavior changedIf no issues are found:
## Audit Report
No drift detected. All annotations reference valid, accepted decisions. All decision references point to existing code.After the audit completes (regardless of findings):
bash scripts/update-audit-state.shAudit complete. N issue(s) found.
Next steps:
- Fix any orphaned or stale references identified above
/dld-decide— record new decisions for undocumented changes/dld-snapshot— regenerate the spec projection/dld-status— view overall decision log state