Skip to content

REMOVED and RENAMED entries written with * or + bullets are silently ignored #1799

Description

@dwin-gharibi

The REMOVED bullet form and the RENAMED FROM:/TO: form only recognise the
- list marker. CommonMark also allows * and +, which render identically.
An entry written with either of those matches nothing, so the removal or rename
silently never happens — with no error, no warning, and a success exit code.

Reproduction

Main spec has Invoice Generation and Late Fees. Delta:

## REMOVED Requirements

* `### Requirement: Late Fees`

## ADDED Requirements
### Requirement: Dunning Notices
The system SHALL send a dunning notice when an invoice is 7 days overdue.

#### Scenario: Invoice overdue
- **WHEN** an invoice is 7 days overdue
- **THEN** a dunning notice is sent
openspec validate chg --json   # "valid": true, "issues": []
openspec archive chg --yes     # exit 0, "Totals: + 1, ~ 0, - 0, → 0"

Expected

Late Fees removed, or an error saying the REMOVED entry was not understood.

Actual

- 0 removals. Late Fees is still in openspec/specs/billing/spec.md, and the
change has been archived as complete.

Marker REMOVED RENAMED
- works works
* silent no-op silent no-op
+ silent no-op silent no-op

Impact

The main spec keeps a requirement that was supposed to be deleted, so it now
misdescribes the system, and the delta that would explain the discrepancy has
moved to changes/archive/. * is valid CommonMark, is emitted by several
formatters, and is already accepted by this project's own task-line parser.

Mitigating: the documented example in skills/openspec-sync-specs/SKILL.md uses
-, so an author copying it directly is not affected.

Environment

  • OpenSpec 1.12.0 (reproduced on the published npm package and on a build of
    main @ e062b95)
  • Node v22.23.2, Linux

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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