Skip to content

fix(openspec): retarget @spec tags of archived changes to canonical spec paths#12

Merged
rubenvdlinde merged 1 commit into
developmentfrom
wip/spec-anchor-cleanup-2026-07-24
Jul 23, 2026
Merged

fix(openspec): retarget @spec tags of archived changes to canonical spec paths#12
rubenvdlinde merged 1 commit into
developmentfrom
wip/spec-anchor-cleanup-2026-07-24

Conversation

@rubenvdlinde

Copy link
Copy Markdown
Contributor

Repairs 88 broken @spec references introduced by this session's archive steps.

The problem

openspec archive moves openspec/changes/<slug>/specs/… into openspec/changes/archive/<date>-<slug>/…. Any @spec tag pointing at the change directory therefore becomes an unresolved anchor the moment its change is archived. Gate-46 (spec-anchor-existence) flags them.

The fix

All 88 occurrences across 17 files retargeted to the canonical openspec/specs/<capability>/spec.md, for live-data-tile-widget, conditional-visibility-editor and clock-weather-widgets. #fragment suffixes preserved verbatim — only the path before .md changed. Diff is exactly 88 insertions / 88 deletions, all text substitutions in docblocks; no logic touched.

gate-46: 513 → 427 unresolved anchors. gate-16 stays PASS, 268 frontend tests green, php -l clean on all 8 touched PHP files.

Follow-up (not in this PR)

The same rot exists in long-standing legacy debt — ~253 more occurrences across ~60 files, from changes archived in earlier waves. Seven of those slugs have an obvious canonical target and could be fixed the same mechanical way (dashboard-public-share 57, dashboard-acknowledgements 40, dashboard-kiosk-mode 34, role-based-content 24, dashboard-quota-limits 13, nc-dashboard-widget-proxy 6, adopt-apphost 4); the rest reference only tasks.md with no single canonical file. Filed separately rather than expanding this PR.

Rule for future waves: annotate @spec openspec/specs/<capability>/spec.md, never a change dir.

…pec paths

Archiving moves openspec/changes/<slug>/specs/... into
openspec/changes/archive/<date>-<slug>/..., so every @SPEC tag pointing at a
change dir becomes an unresolved gate-46 anchor. Retargets all 88 occurrences
for live-data-tile-widget, conditional-visibility-editor and
clock-weather-widgets to their canonical openspec/specs/<capability>/spec.md.
Fragments preserved verbatim.

gate-46: 513 -> 427 unresolved anchors. gate-16 stays PASS; 268 frontend tests
green; php -l clean on all touched files.
@rubenvdlinde
rubenvdlinde merged commit 312741c into development Jul 23, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant