| 09-backend-admin-authentication-and-schema-pipeline |
12 |
admin |
| security |
| postgres |
| openapi |
| authorization |
| acceptance |
|
| phase |
provides |
| 09-backend-admin-authentication-and-schema-pipeline |
Backend guard, controllers, schemas, CRUD, relations, permissions, and settings |
|
|
| Route-derived Phase 9 security matrix across guard, cabana, and the assembled app |
| Fresh PostgreSQL admin migration rollback that preserves other histories |
| Fail-closed phase gate and committed admin OpenAPI contract |
|
|
| tokens |
tasks |
commits |
| 18000 |
3 |
4 |
|
| added |
patterns |
|
|
| The mounted admin route table is the permission matrix; a new handler without the backend guard fails the gate |
| OpenAPI admin paths are generated from cabana annotations and checked against that same route list |
| PostgreSQL stages fail when a TestPhase09 test is skipped or matches nothing |
|
|
| created |
modified |
| bouncer/backend_guard_test.go |
| cabana/security_coverage_test.go |
| cabana/admin_openapi.go |
| cabana/phase09_contract_test.go |
| scripts/check-phase9.sh |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_phase09_security_test.go |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_phase09_e2e_test.go |
| .planning/phases/09-backend-admin-authentication-and-schema-pipeline/09-SECURITY-REVIEW.md |
|
| lagoon/backend_admin_migrations_test.go |
| ../fonoteka.go/scripts/check-openapi.sh |
| ../fonoteka.go/docs/openapi.json |
| ../fonoteka.go/plugins/golem15/fonoteka/controllers/genre_controller.go |
| .planning/phases/09-backend-admin-authentication-and-schema-pipeline/09-VALIDATION.md |
|
|
| Admin OpenAPI annotations live in cabana/admin_openapi.go so swag can see them; TestPhase09PermissionMatrix keeps that list equal to service.mount |
| Migration rollback is proven on a dedicated database. The shared assembled test database is not rolled back |
|
| scripts/check-phase9.sh is the only phase acceptance command |
|
| AUTH-08 |
| ADMIN-01 |
| ADMIN-02 |
| ADMIN-03 |
| ADMIN-04 |
| ADMIN-05 |
|
| id |
description |
requirement |
verification |
human_judgment |
| D1 |
Frontend and backend tokens cannot cross guards, secrets, refresh, blacklist, or password-reset cutoff. |
AUTH-08 |
| kind |
ref |
status |
| unit |
bouncer/backend_guard_test.go#TestPhase09GuardIsolation |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D2 |
Every mounted admin route is inventoried, protected routes carry the backend guard, and denial happens before handler work. |
ADMIN-02 |
| kind |
ref |
status |
| unit |
cabana/security_coverage_test.go#TestPhase09PermissionMatrix |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_phase09_security_test.go#TestPhase09SecurityRoutes |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D3 |
Mass assignment, identifier injection, pivot forgery, auth-log redaction, and hook rollback fail closed. |
ADMIN-04 |
| kind |
ref |
status |
| integration |
cabana/security_coverage_test.go#TestPhase09SecurityCoverage |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D4 |
Fresh PostgreSQL migration, rollback, and re-migrate keep framework and plugin histories independent and reseed roles. |
AUTH-08 |
| kind |
ref |
status |
| integration |
lagoon/backend_admin_migrations_test.go#TestPhase09MigrationsFreshRollback |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D5 |
Assembled acceptance covers login replay, five controllers, settings, relations, locale, empty/single/adjacent pages, and concurrent reads. |
ADMIN-01 |
| kind |
ref |
status |
| e2e |
plugins/golem15/fonoteka/admin_phase09_e2e_test.go#TestPhase09AssembledAcceptance |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D6 |
Committed OpenAPI lists every D-09 route with 401 responses and BackendBearer on protected operations. |
ADMIN-05 |
| kind |
ref |
status |
| unit |
cabana/phase09_contract_test.go#TestPhase09ContractInventory |
pass |
|
|
false |
|
|
3h |
2026-09-27 |
complete |