4.3 KiB
4.3 KiB
phase, slug, status, nyquist_compliant, wave_0_complete, created
| phase | slug | status | nyquist_compliant | wave_0_complete | created |
|---|---|---|---|---|---|
| 5 | data-layer-full-fidelity | draft | false | false | 2026-09-18 |
Phase 5 — Validation Strategy
Per-phase validation contract for feedback sampling during execution.
Test Infrastructure
| Property | Value |
|---|---|
| Framework | Go stdlib testing + testify (assert/require) + testcontainers-go modules/postgres v0.44.0 |
| Config file | none — plain func TestX(t *testing.T); TestMain pattern per lagoon/postgres_test.go and fonoteka.go/parity |
| Quick run command | go vet ./... && go test ./... -short (run in the repo the task writes to) |
| Full suite command | go test ./... in summercms.go and in ../fonoteka.go (real Postgres via testcontainers) |
| Estimated runtime | ~20 s quick, ~120 s full |
Sampling Rate
- After every task commit: Run
go vet ./... && go test ./... -short - After every plan wave: Run
go test ./...in both repos - Before
/gsd:verify-work: Full suite green in both repos, including the D-02 schema-diff test - Max feedback latency: 120 seconds
Per-Task Verification Map
Task IDs are filled in by the planner; the requirement → test mapping below is the contract.
| Task ID | Plan | Wave | Requirement | Threat Ref | Secure Behavior | Test Type | Automated Command | File Exists | Status |
|---|---|---|---|---|---|---|---|---|---|
| TBD | TBD | TBD | DATA-03 | — | Cascading soft delete runs in one transaction | integration | go test ./plugins/golem15/fonoteka/... -run TestCollectionBeforeDeleteCascadesAlbums |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | DATA-04 | — | N/A | integration | go test ./plugins/golem15/fonoteka/... -run TestAlbumArtistsOrderRoundTrip |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | DATA-05 | — | Untranslatable rule fails loudly; 422 map Laravel-shaped | unit + integration | go test ./lagoon/... -run TestValidate |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | DATA-06 | TBD | Unknown / server-owned keys never persisted | integration (fuzz) | go test ./lagoon/... -run TestFill and go test ./plugins/golem15/fonoteka/... -run TestAlbumWriteServiceFillFuzz |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | DATA-07 | TBD | Ciphertext at rest, redacted marshal, plaintext only via Reveal(); money never float64 |
unit + integration | go test ./lagoon/... -run TestEncrypted; go test ./plugins/golem15/fonoteka/models/... -run TestMoneyString |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | DATA-08 | — | Force delete removes blobs only after commit | unit + integration | `go test ./lagoon/attach/... -run 'TestThumbFilename | TestFileLifecycle'` | ❌ W0 |
| TBD | TBD | TBD | DATA-09 | — | N/A | integration | go test ./parity/... -run TestSchemaMatchesPHPSnapshot |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | DATA-10 | — | N/A | unit | go test ./lagoon/... -run TestPaginate |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | DATA-11 | — | N/A | integration | go test ./plugins/... -run TestCrossPluginCallback |
❌ W0 | ⬜ pending |
| TBD | TBD | TBD | CLI-03 | — | Rollback touches only the named plugin's history | integration | go test ./cmd/summer/... -run TestRollbackScopedToPlugin |
❌ W0 | ⬜ pending |
Status: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky
Wave 0 Requirements
fonoteka.go/parity/testdata/php_schema_snapshot.sql— committed D-02 golden snapshot of the PHP final schemalagoon/fill_test.go,lagoon/validate_test.go,lagoon/encrypted_test.go,lagoon/paginate_test.go— tests for the newlagoonprimitiveslagoon/attach/package (File model, blob wiring,Thumb()) — does not exist yet- Existing test infra (
lagoon/postgres_test.goTestMain,fonoteka.go/parityTestMain) is reused, not rebuilt
Manual-Only Verifications
All phase behaviors have automated verification.
Validation Sign-Off
- All tasks have
<automated>verify or Wave 0 dependencies - Sampling continuity: no 3 consecutive tasks without automated verify
- Wave 0 covers all MISSING references
- No watch-mode flags
- Feedback latency < 120s
nyquist_compliant: trueset in frontmatter
Approval: pending