Write real Purpose sections for five archived specs #128

Merged
ullrich merged 1 commit from openspec-purposes into main 2026-09-07 15:41:01 +00:00
Owner

#104 bumps @fission-ai/openspec 1.10.0 → 1.12.0 and fails CI on five specs:

✗ spec/activity-sport-type
✗ spec/activity-stats
✗ spec/journal-elevation-profile
✗ spec/profile-stats
✗ spec/profile-weekly-distance
Totals: 76 passed, 5 failed (81 items)

Not a regression in the tool. 1.12 added a check for a Purpose section that is still the sentence openspec archive writes, and CI's pnpm openspec validate --all --strict promotes that warning to a failure. All five carried the placeholder verbatim:

TBD - created by archiving change <name>. Update Purpose after archive.

So the check is right and the specs were wrong — five capabilities had shipped with no statement of what they are for. Suppressing the warning or holding the bump would both preserve that.

What each Purpose now says

Written from each spec's own requirements, stating what the capability is for rather than restating the requirement list:

spec the point of it
activity-sport-type what the sport type governs downstream — pace vs speed, icon, federated payload — and that unknown stays unset rather than guessed
activity-stats one stat row shared by every surface, plus the two judgement calls it encodes (pace vs speed by sport; moving time when GPX timestamps can't support it)
journal-elevation-profile locating a climb on the map rather than reading a number, and that ascent/descent belong to the stat row above rather than here
profile-stats what a profile answers without opening entries, and that every figure is viewer-scoped
profile-weekly-distance the shape of recent training, and why the axis is deliberately contiguous so gaps read as gaps

Verified under both versions

validate --all --strict --no-interactive:

  • 1.12: 81 passed, 0 failed
  • 1.10: 81 passed, 0 failed

So this lands on main independently and unblocks #104 without holding the bump.

#104 bumps `@fission-ai/openspec` 1.10.0 → 1.12.0 and fails CI on five specs: ``` ✗ spec/activity-sport-type ✗ spec/activity-stats ✗ spec/journal-elevation-profile ✗ spec/profile-stats ✗ spec/profile-weekly-distance Totals: 76 passed, 5 failed (81 items) ``` **Not a regression in the tool.** 1.12 added a check for a Purpose section that is still the sentence `openspec archive` writes, and CI's `pnpm openspec validate --all --strict` promotes that warning to a failure. All five carried the placeholder verbatim: ``` TBD - created by archiving change <name>. Update Purpose after archive. ``` So the check is right and the specs were wrong — five capabilities had shipped with no statement of what they are for. Suppressing the warning or holding the bump would both preserve that. ### What each Purpose now says Written from each spec's own requirements, stating what the capability is *for* rather than restating the requirement list: | spec | the point of it | |---|---| | `activity-sport-type` | what the sport type governs downstream — pace vs speed, icon, federated payload — and that unknown stays unset rather than guessed | | `activity-stats` | one stat row shared by every surface, plus the two judgement calls it encodes (pace vs speed by sport; moving time when GPX timestamps can't support it) | | `journal-elevation-profile` | locating a climb on the map rather than reading a number, and that ascent/descent belong to the stat row above rather than here | | `profile-stats` | what a profile answers without opening entries, and that every figure is viewer-scoped | | `profile-weekly-distance` | the shape of recent training, and why the axis is deliberately contiguous so gaps read as gaps | ### Verified under both versions `validate --all --strict --no-interactive`: - **1.12**: 81 passed, 0 failed - **1.10**: 81 passed, 0 failed So this lands on `main` independently and unblocks #104 without holding the bump.
Write real Purpose sections for five archived specs
Some checks failed
CI / Security Scan (pull_request) Successful in 51s
CI / Dockerfile Package Check (pull_request) Successful in 16s
CI / Checks (pull_request) Failing after 6m30s
CI / E2E Tests (pull_request) Has been skipped
CI / Visual Tests (pull_request) Successful in 1m53s
CI / Journal Image Smoke Test (pull_request) Successful in 26m4s
b0195a0811
#104 bumps @fission-ai/openspec 1.10.0 -> 1.12.0 and fails CI on five specs:

  ✗ spec/activity-sport-type
  ✗ spec/activity-stats
  ✗ spec/journal-elevation-profile
  ✗ spec/profile-stats
  ✗ spec/profile-weekly-distance
  Totals: 76 passed, 5 failed (81 items)

Not a regression in the tool. 1.12 added a check for a Purpose section that is
still the sentence `openspec archive` writes, and `pnpm openspec validate --all
--strict` promotes that warning to a failure. All five carried the placeholder
verbatim:

  TBD - created by archiving change <name>. Update Purpose after archive.

So the check is right and the specs were wrong: five capabilities had shipped
with no statement of what they are for. Suppressing the warning or holding the
bump would both preserve that.

Each Purpose is written from the spec's own requirements, and says what the
capability is for rather than restating the requirement list:

  activity-sport-type        what the sport type governs downstream — pace vs
                             speed, icon, federated payload — and that unknown
                             stays unset rather than guessed
  activity-stats             one stat row shared by every surface, plus the two
                             judgement calls it encodes (pace vs speed by sport,
                             moving time when GPX timestamps cannot support it)
  journal-elevation-profile  locating a climb on the map rather than reading a
                             number, and that ascent/descent belong to the stat
                             row above rather than here
  profile-stats              what a profile answers without opening entries, and
                             that every figure is viewer-scoped
  profile-weekly-distance    the shape of recent training, and why the axis is
                             deliberately contiguous so gaps read as gaps

Verified `validate --all --strict --no-interactive` under BOTH versions:
81 passed, 0 failed on 1.12 and on 1.10. So this lands on main independently and
unblocks #104 without holding the bump.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01W9K6hHEZx5aqyWZKHNrxsD
ullrich force-pushed openspec-purposes from b0195a0811
Some checks failed
CI / Security Scan (pull_request) Successful in 51s
CI / Dockerfile Package Check (pull_request) Successful in 16s
CI / Checks (pull_request) Failing after 6m30s
CI / E2E Tests (pull_request) Has been skipped
CI / Visual Tests (pull_request) Successful in 1m53s
CI / Journal Image Smoke Test (pull_request) Successful in 26m4s
to 657ff0b654
Some checks failed
CD Staging / Build & Push Docker Images (pull_request) Has been skipped
CD Staging / Build & Push Docker Images-1 (pull_request) Has been skipped
CD Staging / Deploy Staging (pull_request) Has been skipped
CD Staging / Deploy PR Preview (pull_request) Has been skipped
CD Staging / Tear Down PR Preview (pull_request) Has been skipped
CI / Security Scan (pull_request) Has been cancelled
CI / Dockerfile Package Check (pull_request) Has been cancelled
CI / Checks (pull_request) Has been cancelled
CI / Visual Tests (pull_request) Has been cancelled
CI / E2E Tests (pull_request) Has been cancelled
CI / Journal Image Smoke Test (pull_request) Has been cancelled
2026-09-07 14:54:45 +00:00
Compare
ullrich force-pushed openspec-purposes from 657ff0b654
Some checks failed
CD Staging / Build & Push Docker Images (pull_request) Has been skipped
CD Staging / Build & Push Docker Images-1 (pull_request) Has been skipped
CD Staging / Deploy Staging (pull_request) Has been skipped
CD Staging / Deploy PR Preview (pull_request) Has been skipped
CD Staging / Tear Down PR Preview (pull_request) Has been skipped
CI / Security Scan (pull_request) Has been cancelled
CI / Dockerfile Package Check (pull_request) Has been cancelled
CI / Checks (pull_request) Has been cancelled
CI / Visual Tests (pull_request) Has been cancelled
CI / E2E Tests (pull_request) Has been cancelled
CI / Journal Image Smoke Test (pull_request) Has been cancelled
to c9f6671d07
All checks were successful
CI / Security Scan (pull_request) Successful in 43s
CI / Dockerfile Package Check (pull_request) Successful in 18s
CI / Checks (pull_request) Successful in 2m40s
CI / Visual Tests (pull_request) Successful in 1m40s
CI / Journal Image Smoke Test (pull_request) Successful in 8m7s
CI / E2E Tests (pull_request) Successful in 5m44s
Cancel superseded CI / Cancel in-flight CI (pull_request) Successful in 15s
2026-09-07 14:54:58 +00:00
Compare
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
trails-cool/trails!128
No description provided.