Skip to content

Commit abb551f

Browse files
committed
docs(openspec): carry every scenario, because a delta replaces
The MODIFIED delta restated the signature envelope requirement but carried only one of its three scenarios, so `Version is read before parameters` and `Signatures compare as whole strings` would have been deleted from the standing spec by a change whose proposal calls itself strictly additive. Measured rather than reasoned about: archiving the change and diffing the result shows `openspec archive` rewrites the requirement to exactly what the delta contains. It is a replacement, not a patch, and an omitted scenario is dropped silently. Re-run with the scenarios restored, all four survive. Recorded as task 2.3 so the next MODIFIED delta in this repository does not learn it the same way.
1 parent 3c007c8 commit abb551f

2 files changed

Lines changed: 13 additions & 0 deletions

File tree

  • openspec/changes/signature-coverage-statement

‎openspec/changes/signature-coverage-statement/specs/cli-rule-reconciliation/spec.md‎

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,17 @@ teams hold the same binding as a private assumption.
2525
- **WHEN** the CLI computes a signature for a rule file's bytes using algoVersion 1
2626
- **THEN** the signature SHALL be the string `1;h=sha-256;d=<hex>` for that file's normalized bytes
2727

28+
#### Scenario: Version is read before parameters
29+
30+
- **WHEN** the CLI parses a signature string
31+
- **THEN** it SHALL read the algoVersion as the substring before the first `;`
32+
- **AND** SHALL NOT rely on the `key=value` parameter syntax to determine the version
33+
34+
#### Scenario: Signatures compare as whole strings
35+
36+
- **WHEN** the CLI compares two signatures for equality
37+
- **THEN** it SHALL compare the full envelope strings, not the bare digests
38+
2839
#### Scenario: A v1 signature covers the engine's rule file
2940

3041
- **WHEN** a runtime rule carries a signature at algoVersion 1

‎openspec/changes/signature-coverage-statement/tasks.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ One PR. A single requirement gains two sentences.
1313
- [x] 2.1 Confirm no source change is implied. **Verified**: `ALGO_VERSION` is 1 (`rule-hash.ts:14`), `signRuleFile` reads one path and hashes it (`rule-hash.ts:116`), `run-set.ts:41` signs `rule.checkFile` once per rule, and `ENGINE_LAYOUTS` gives every engine exactly one `ruleFile` (`<id>.yml` for sg and vale, `check.ts` for runtime) so the statement generalises rather than special-casing runtime
1414
- [x] 2.2 Confirm the statement matches what the service does. **Confirmed by the generator team**, who declined-and-accepted in the same round: "a v1 signature covers the engine's ruleFile, multi-file signing would be v2" is recorded in their half of the cross-team document as settled, not proposed
1515

16+
- [x] 2.3 Carry every existing scenario into the MODIFIED delta. **A delta is a replacement, not a patch**: measured by archiving this change and diffing the result, `openspec archive` rewrites the requirement to exactly what the delta contains, so `Version is read before parameters` and `Signatures compare as whole strings` were dropped from the standing spec until they were restated here
17+
1618
## 3. Close out
1719

1820
- [ ] 3.1 Archive the change

0 commit comments

Comments
 (0)