Skip to content

clock-weather-widgets: the clock and weather requirements share two scenario titles, collapsing four scenarios to two addressable slugs #112

Description

@rubenvdlinde

Summary

Two gate-19 refs in openspec/specs/clock-weather-widgets/spec.md are addressable by only one anchor each while describing two different widgets. Same defect class as doriath#215 / .github#354; also confirmed in larpingapp today.

The collision

 6: ### Requirement: REQ-CLOCK-001 Register client-side clock widget
10: #### Scenario: Widget appears in discovery
17: #### Scenario: Registration via IManager
...
68: ### Requirement: REQ-WEATHER-001 Register weather widget with server-side fetch
72: #### Scenario: Widget appears in discovery
78: #### Scenario: Registration via IManager

The clock widget and the weather widget declare the same two scenario titles, so both collapse to:

clock-weather-widgets::widget-appears-in-discovery
clock-weather-widgets::registration-via-imanager

These are not near-duplicates — the weather widget has a server-side fetch and an API key that must never reach the browser, the clock widget has no backend endpoint at all (REQ-CLOCK-001 says so explicitly). One anchor covering both is a materially wrong credit.

How it surfaced

--mode report does not de-duplicate; --mode gate does. On development @ 5c7fde7:

mode uncovered
--mode report 130 rows
--mode gate (and CI) 128 distinct

The 2-row gap is the collision.

Fix

Rename so each scenario names its widget (e.g. "Clock widget appears in discovery" / "Weather widget appears in discovery").

⚠️ A rename changes the slug. Any @e2e / @spec anchor pointing at the old ref must move in the same change — a dangling anchor is not reported as an error by gate-19.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions