You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Drift audit 2026-05-04 produced this remediation plan via REPORT.md § "Recommended drift-detection automation" (lines 204-264). The next move per the detecting-drift-in-ai-repos skill is to decompose findings into composable signals so future audits run continuously.
This epic is filed but not gating. Per FINAL-PLAN.md line 7, the drift:* taxonomy is not a precondition for any #226…#247 issue. Per the drift skill's cold-start protocol, audit findings the team chooses NOT to fix immediately get a wontfix issue (existing label) so day-one of the future nightly doesn't refile them — that ceremony is now #248e-1.
WHAT (epic checklist)
Tracking-only epic. Each child is a separate PR delivered in shadow mode for 5-10 firings before being verdict-capable. Per REPORT.md line 278: cap narrative drift at IMPORTANT during shadow rollout.
PRE-REQ chain: #248a → all others. No downstream child fires until the label taxonomy lands.
#248a — drift:* label taxonomy. Labels: drift:spec, drift:plan, drift:dependency, drift:infra, drift:docs, drift:label, drift:test, drift:automated, drift:aging, drift:escalated, drift:acknowledged. Reuse existing wontfix instead of drift:wont-fix. PRE-REQ for every child below.
#248b-1 — Bot rubric: canary-phrase grep on narrative-doc diffs. Path: ~/.claude/skills/reviewing-as-julianken-bot/SKILL.md. Scans README/CLAUDE.md/AGENTS.md/docs/* for: vercel, Vercel Blob, BLOB_READ_WRITE_TOKEN, Transaction Pooler, npm run, Phase 1 (current), All rights reserved. IMPORTANT cap, full shadow. PRE-REQ: #248a.
#248b-2 — Bot rubric: CONTENT_MODEL.md cross-check on src/collections/ diffs. Flags field-list mismatches. IMPORTANT cap, shadow. PRE-REQ: #248a.
#248b-3 — Bot rubric: auto-label agentic-design-patterns on PRs touching src/(data|app)/agentic-design-patterns/. Zero FP risk; ships verdict-capable on day one. PRE-REQ: #248a.
#248c — Workflow: check-required-contexts. Compares .mergify.ymlcheck-success + branch-protection contexts to emitted name: fields in .github/workflows/*.yml. Fails CI if drifted. Prevents chore(ci): add missing E2E shard contexts to .mergify.yml #225-class regressions. PRE-REQ: #248a.
#248d — Workflow: canary-phrase-guard. ESLint-style grep over tracked narrative files; fails CI on canary matches. Canary list lives in workflow YAML. PRE-REQ: #248a.
#248e-1 — Cold-start ceremony. File wontfix issues for SUGGESTION-tier deferrals from this audit so day-one of #248e-2 doesn't refile them. (Replaces former [Audit log] Drift audit 2026-05-04 — deferred items #249 placeholder.) PRE-REQ: #248a.
#248e-2 — Nightly extractor: shell script + signals + dedup. Deterministic only, no LLM. Signals: Dependabot PRs >7d open; issues in active epic without epic's labels; migrations without paired .json snapshots; doc files with passed Next Audit: dates; components without paired tests; literal vercel in tracked files (excluding ADP example bodies). Includes exclusion list for the tool's own artifacts. Ships and bakes before #248e-3. PRE-REQ: #248a, #248e-1.
#248e-3 — LLM dispatch synthesizer. Gated on signal severity from #248e-2. Single issue per cycle. Synthesizer failure doesn't poison signal data. PRE-REQ: #248e-2.
DONE WHEN
All eight children land and complete at least one shadow-mode firing cycle without producing >3 false-positive issues per week. Plus: kill-review reminder issue filed (see below).
Kill review reminder
Per drift skill § 5, the kill metric requires both a quantified threshold AND a calendar trigger.
Trigger: within 24h of #248e-2 first nightly fire, file a follow-up issue with label 60-day-followup and target date = merge_date(#248e-2) + 60d. Template:
gh issue create --repo julianken/detached-node \
--title "Drift Detection v1 — kill-metric review (60d)" \
--label "60-day-followup" \
--body "Review window: $(date -v+60d +%Y-%m-%d). Compute closed-as-fixed/closed-total over the prior calendar month for issues labeled drift:*. If <40%, kill #248b-* and #248e-3; keep #248c/#248d/#248e-2."
Falsifiability statement
Pay-for-itself: 22 BLOCKERs from REPORT.md remediated within 30 days; future pivots produce <5 net-new BLOCKER prose-drift findings 30 days post-pivot; Dependabot ai-sdk PR closure rate >80%.
Waste: kill-metric trips; team disables nightly within 3 months; BLOCKERs recur on same artifacts after one full fix cycle.
OUT OF SCOPE
Filing children as standalone issues now (do that only when ready to ship each).
WHY
Drift audit 2026-05-04 produced this remediation plan via
REPORT.md§ "Recommended drift-detection automation" (lines 204-264). The next move per thedetecting-drift-in-ai-reposskill is to decompose findings into composable signals so future audits run continuously.This epic is filed but not gating. Per
FINAL-PLAN.mdline 7, thedrift:*taxonomy is not a precondition for any #226…#247 issue. Per the drift skill's cold-start protocol, audit findings the team chooses NOT to fix immediately get awontfixissue (existing label) so day-one of the future nightly doesn't refile them — that ceremony is now #248e-1.WHAT (epic checklist)
Tracking-only epic. Each child is a separate PR delivered in shadow mode for 5-10 firings before being verdict-capable. Per
REPORT.mdline 278: cap narrative drift at IMPORTANT during shadow rollout.PRE-REQ chain: #248a → all others. No downstream child fires until the label taxonomy lands.
#248a —
drift:*label taxonomy. Labels:drift:spec,drift:plan,drift:dependency,drift:infra,drift:docs,drift:label,drift:test,drift:automated,drift:aging,drift:escalated,drift:acknowledged. Reuse existingwontfixinstead ofdrift:wont-fix. PRE-REQ for every child below.#248b-1 — Bot rubric: canary-phrase grep on narrative-doc diffs. Path:
~/.claude/skills/reviewing-as-julianken-bot/SKILL.md. Scans README/CLAUDE.md/AGENTS.md/docs/* for:vercel,Vercel Blob,BLOB_READ_WRITE_TOKEN,Transaction Pooler,npm run,Phase 1 (current),All rights reserved. IMPORTANT cap, full shadow. PRE-REQ: #248a.#248b-2 — Bot rubric: CONTENT_MODEL.md cross-check on
src/collections/diffs. Flags field-list mismatches. IMPORTANT cap, shadow. PRE-REQ: #248a.#248b-3 — Bot rubric: auto-label
agentic-design-patternson PRs touchingsrc/(data|app)/agentic-design-patterns/. Zero FP risk; ships verdict-capable on day one. PRE-REQ: #248a.#248c — Workflow:
check-required-contexts. Compares.mergify.ymlcheck-success+ branch-protection contexts to emittedname:fields in.github/workflows/*.yml. Fails CI if drifted. Prevents chore(ci): add missing E2E shard contexts to .mergify.yml #225-class regressions. PRE-REQ: #248a.#248d — Workflow:
canary-phrase-guard. ESLint-style grep over tracked narrative files; fails CI on canary matches. Canary list lives in workflow YAML. PRE-REQ: #248a.#248e-1 — Cold-start ceremony. File
wontfixissues for SUGGESTION-tier deferrals from this audit so day-one of #248e-2 doesn't refile them. (Replaces former [Audit log] Drift audit 2026-05-04 — deferred items #249 placeholder.) PRE-REQ: #248a.#248e-2 — Nightly extractor: shell script + signals + dedup. Deterministic only, no LLM. Signals: Dependabot PRs >7d open; issues in active epic without epic's labels; migrations without paired
.jsonsnapshots; doc files with passedNext Audit:dates; components without paired tests; literalvercelin tracked files (excluding ADP example bodies). Includes exclusion list for the tool's own artifacts. Ships and bakes before #248e-3. PRE-REQ: #248a, #248e-1.#248e-3 — LLM dispatch synthesizer. Gated on signal severity from #248e-2. Single issue per cycle. Synthesizer failure doesn't poison signal data. PRE-REQ: #248e-2.
DONE WHEN
All eight children land and complete at least one shadow-mode firing cycle without producing >3 false-positive issues per week. Plus: kill-review reminder issue filed (see below).
Kill review reminder
Per drift skill § 5, the kill metric requires both a quantified threshold AND a calendar trigger.
Metric:
closed-as-fixed / closed-total < 40%over a calendar month → kill LLM-driven rules (#248e-3, #248b-*), keep deterministic checks (#248c, #248d, #248e-2).Trigger: within 24h of #248e-2 first nightly fire, file a follow-up issue with label
60-day-followupand target date =merge_date(#248e-2) + 60d. Template:Falsifiability statement
Pay-for-itself: 22 BLOCKERs from REPORT.md remediated within 30 days; future pivots produce <5 net-new BLOCKER prose-drift findings 30 days post-pivot; Dependabot ai-sdk PR closure rate >80%.
Waste: kill-metric trips; team disables nightly within 3 months; BLOCKERs recur on same artifacts after one full fix cycle.
OUT OF SCOPE
PRE-REQS
None for the epic itself. Internal chain: #248a precedes all other children.