feat(ci): sprint 9 gauntlet — golden targets + checklist schema (#486, #497) #33

Closed
jpmschweitzer wants to merge 0 commits from ci into main
Owner

Summary

  • make golden-diff + make golden-update targets (#486) — developer workflow for golden file comparison and regeneration, uses .cache/golden/ for safe diffing
  • Gauntlet checklist YAML schema (#497) — JSON Schema with 7 condition types evaluable from ObserverSnapshot, per-room checklists for 3 rooms + cross-room checks, make checklist-validate and make checklist-generate targets
  • DEVOPS.md updated with Golden File Management and Gauntlet Checklists sections

Test plan

  • make golden-diff exits 0 on unchanged golden file
  • make golden-update regenerates and stages golden file
  • make checklist-validate passes on all 4 checklist files (19 conditions)
  • make checklist-generate prints per-room condition summary
  • Checklist YAML validates against JSON Schema
## Summary - `make golden-diff` + `make golden-update` targets (#486) — developer workflow for golden file comparison and regeneration, uses .cache/golden/ for safe diffing - Gauntlet checklist YAML schema (#497) — JSON Schema with 7 condition types evaluable from ObserverSnapshot, per-room checklists for 3 rooms + cross-room checks, `make checklist-validate` and `make checklist-generate` targets - DEVOPS.md updated with Golden File Management and Gauntlet Checklists sections ## Test plan - [ ] `make golden-diff` exits 0 on unchanged golden file - [ ] `make golden-update` regenerates and stages golden file - [ ] `make checklist-validate` passes on all 4 checklist files (19 conditions) - [ ] `make checklist-generate` prints per-room condition summary - [ ] Checklist YAML validates against JSON Schema
jpmschweitzer added 2 commits 2026-02-18 10:45:16 +01:00
Golden targets: make golden-diff shows color diff if simulation output
changed, make golden-update regenerates and stages for review.

Checklist schema: JSON Schema for 7 condition types evaluable from
ObserverSnapshot. Per-room YAML checklists for 3 Gauntlet rooms plus
cross-room checks. Validation script + make checklist-validate/generate.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

Review: ci -> main (PR #33, type: code)

Hoshe (Code Quality): REQUEST_CHANGES

Golden-diff target has a file-corruption risk on cargo failure. Checklist validator not wired into pre-PR gate.

# File Severity Issue
1 Makefile:golden-diff warning Cargo test failure leaves golden file modified — restore step never runs if Make halts
2 Makefile:pre-pr warning checklist-validate not included in pre-pr-content — broken checklists pass undetected
3 checklist.schema.json:condition_id warning Schema says "unique within this checklist" but validator enforces global uniqueness — mismatch will surprise authors
4 tooling/validate-checklist:load_schema suggestion No error handling if schema file is missing — raw traceback instead of useful message

Tyre (Architecture): REQUEST_CHANGES

Clean schema design aligned with D-030. Two enforcement gaps need fixing before merge.

# File Severity Issue
1 Makefile:pre-pr-content warning checklist-validate not wired into pre-PR content gate — regressions pass silently
2 Makefile:golden-diff warning Restore logic unsafe on cargo build failure — golden file left corrupted on disk
3 tooling/validate-checklist:check_id_uniqueness suggestion Global ID uniqueness enforced but no naming convention documented — fragile at scale
4 content/gauntlet/cross_room_checks.yaml suggestion No discriminator field between per-room and cross-room checklist types
5 Makefile:setup-tooling suggestion jsonschema and yaml Python packages not checked in setup target

Verdict: CHANGES REQUESTED

## Review: ci -> main (PR #33, type: code) ### Hoshe (Code Quality): REQUEST_CHANGES Golden-diff target has a file-corruption risk on cargo failure. Checklist validator not wired into pre-PR gate. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | Makefile:golden-diff | warning | Cargo test failure leaves golden file modified — restore step never runs if Make halts | | 2 | Makefile:pre-pr | warning | `checklist-validate` not included in `pre-pr-content` — broken checklists pass undetected | | 3 | checklist.schema.json:condition_id | warning | Schema says "unique within this checklist" but validator enforces global uniqueness — mismatch will surprise authors | | 4 | tooling/validate-checklist:load_schema | suggestion | No error handling if schema file is missing — raw traceback instead of useful message | ### Tyre (Architecture): REQUEST_CHANGES Clean schema design aligned with D-030. Two enforcement gaps need fixing before merge. | # | File | Severity | Issue | |---|------|----------|-------| | 1 | Makefile:pre-pr-content | warning | `checklist-validate` not wired into pre-PR content gate — regressions pass silently | | 2 | Makefile:golden-diff | warning | Restore logic unsafe on cargo build failure — golden file left corrupted on disk | | 3 | tooling/validate-checklist:check_id_uniqueness | suggestion | Global ID uniqueness enforced but no naming convention documented — fragile at scale | | 4 | content/gauntlet/cross_room_checks.yaml | suggestion | No discriminator field between per-room and cross-room checklist types | | 5 | Makefile:setup-tooling | suggestion | `jsonschema` and `yaml` Python packages not checked in setup target | ### Verdict: CHANGES REQUESTED
jpmschweitzer added 2 commits 2026-02-18 11:03:14 +01:00
- golden-diff restores committed file even on cargo test failure
- Wire checklist-validate into pre-pr-content gate
- Fix schema description: condition IDs are globally unique, not
  per-file; document room_id prefix naming convention
- Add schema file missing error handling in validate-checklist
- Add scope discriminator field (per_room/cross_room) to schema
- Check pyyaml and jsonschema packages in setup-tooling

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
Owner

Re-Review: ci -> main (PR #33, type: code) — Post-Fix

Hoshe (Code Quality): APPROVE

All 4 original items verified as FIXED. No new issues.

# Original Item Status
1 Golden-diff restore never runs on failure FIXED — single shell group, unconditional restore
2 checklist-validate missing from pre-pr FIXED — added to pre-pr-content
3 Schema/validator uniqueness scope mismatch FIXED — description updated to "globally unique"
4 Missing schema file error handling FIXED — load_schema checks existence, exits cleanly

Tyre (Architecture): APPROVE

All 5 original items verified as FIXED. Minimal, surgical fix commit.

# Original Item Status
1 checklist-validate not in pre-PR gate FIXED
2 Golden-diff unsafe restore FIXED — single shell block with rc capture
3 No naming convention for global IDs FIXED — schema description updated
4 No discriminator for cross-room files FIXED — scope field added
5 Python packages not checked in setup FIXED — import checks added

Verdict: APPROVED

## Re-Review: ci -> main (PR #33, type: code) — Post-Fix ### Hoshe (Code Quality): APPROVE All 4 original items verified as FIXED. No new issues. | # | Original Item | Status | |---|--------------|--------| | 1 | Golden-diff restore never runs on failure | FIXED — single shell group, unconditional restore | | 2 | `checklist-validate` missing from pre-pr | FIXED — added to `pre-pr-content` | | 3 | Schema/validator uniqueness scope mismatch | FIXED — description updated to "globally unique" | | 4 | Missing schema file error handling | FIXED — `load_schema` checks existence, exits cleanly | ### Tyre (Architecture): APPROVE All 5 original items verified as FIXED. Minimal, surgical fix commit. | # | Original Item | Status | |---|--------------|--------| | 1 | `checklist-validate` not in pre-PR gate | FIXED | | 2 | Golden-diff unsafe restore | FIXED — single shell block with rc capture | | 3 | No naming convention for global IDs | FIXED — schema description updated | | 4 | No discriminator for cross-room files | FIXED — `scope` field added | | 5 | Python packages not checked in setup | FIXED — `import` checks added | ### Verdict: APPROVED
jpmschweitzer closed this pull request 2026-02-18 11:08:19 +01:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: jpmschweitzer/settled-reach#33