Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion openspec/changes/gate-123-sig-floor/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,11 @@ For each floored check the head misses:
| missed (only possible via the file) | worse | FAIL: it erodes a floor development already breaks |
| missed | not worse | inherited: printed, not counted |

A check that disappears from the head (its language left the measured scope) fails, because nothing proves it is still met. A pull request that removes a check from the floor file fails as well.
A check that disappears from the head (its language left the measured scope) fails, because nothing proves it is still met, unless the same pull request changes `sigrid.yaml` (Ruben, 2 November 2026). An explicit scope change may take checks out of the floor and out of the floor file in that pull request. A check the base no longer measures either left in an earlier pull request and is not judged again.

A pull request that removes a check that is still measured from the floor file fails, with or without a `sigrid.yaml` change.

Without a floor file the gate is NOT APPLICABLE before it loads a tool or resolves a base, so a missing tool never turns an app without a floor into SKIPPED (wiring).

Inherited breaches exist only after an admin merge past a red gate. They do not fail unrelated pull requests, in line with the inherited-debt rule; development fixes them forward.

Expand Down
17 changes: 17 additions & 0 deletions openspec/changes/gate-123-sig-floor/specs/gate-sig-floor/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,20 @@ The gate SHALL measure exactly what gate 122 measures, including the app's `sigr
- **GIVEN** `sigrid.yaml` excludes `lib/Generated/`
- **WHEN** a pull request adds a 74-line unit there
- **THEN** the gate passes

### Requirement: A check leaves the floor only through sigrid.yaml

A floored check the head no longer measures SHALL fail the gate, unless the same change edits `sigrid.yaml` or `sigrid.yml`, or the base does not measure it either. A change that edits `sigrid.yaml` MAY remove the checks it takes out of scope from the floor file. Removing a check that is still measured SHALL fail.

#### Scenario: A language leaves without a scope change

- **GIVEN** the floor lists `javascript unit_size >15`
- **WHEN** a pull request deletes the app's only JavaScript file
- **THEN** the gate fails with `javascript unit_size >15: no longer measured`

#### Scenario: An exclude in sigrid.yaml

- **WHEN** a pull request adds `.*/src/.*` to `sigrid.yaml` and removes the JavaScript checks from the floor file
- **THEN** the gate passes and reports the checks as having left the scope through sigrid.yaml
- **AND** the next pull request is not judged on them

2 changes: 1 addition & 1 deletion openspec/changes/gate-123-sig-floor/tasks.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@

## 4. Adoption

- [ ] 4.1 One pull request per fleet app with `.github/sig-floor.json` from its development head, together with `hydra-gates-sig-blocking: true`
- [x] 4.1 One pull request per fleet app with `.github/sig-floor.json` from its development head, together with `hydra-gates-sig-blocking: true`
Loading