| 09-backend-admin-authentication-and-schema-pipeline |
11 |
admin |
| permissions |
| navigation |
| settings |
| postgres |
| authorization |
| metadata |
|
| phase |
provides |
| 09-backend-admin-authentication-and-schema-pipeline |
Backend guard, compiled controllers, forms, lists, CRUD, and relations |
|
|
| Exact Fonoteka permission catalog with source role assignments |
| Stable permission-filtered navigation and settings discovery endpoints |
| Localized singleton settings schema plus transactional GET/PUT service |
|
| 09-backend-admin-authentication-and-schema-pipeline |
| phase-10-spa |
| admin-api |
|
| tokens |
tasks |
commits |
| 30000 |
3 |
3 |
|
| added |
patterns |
|
|
| Plugin permission contributions are compiled once and validate every controller, relation, navigation, and settings reference |
| Backend role defaults are merged at principal resolution without mutating role rows |
| Settings replay compares projected values and skips persistence when unchanged |
|
|
| created |
modified |
| cabana/navigation.go |
| cabana/settings.go |
| cabana/metadata_settings_test.go |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_permissions.go |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_navigation.go |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_settings.go |
| ../fonoteka.go/plugins/golem15/fonoteka/models/settings/fields.yaml |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_metadata_test.go |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_settings_test.go |
|
| cabana/registry.go |
| cabana/http.go |
| cabana/auth.go |
| bouncer/context.go |
| pact/capabilities.go |
| ../fonoteka.go/plugins/golem15/fonoteka/admin.go |
|
|
| Developer receives all seven source-declared Fonoteka permissions; publisher receives no implicit Fonoteka grant and superuser retains framework bypass |
| Backend principals carry an explicit domain marker, preventing a frontend principal with matching identifiers or grants from entering Cabana |
| Missing singleton GET returns schema defaults without creating a row; first valid PUT creates ID 1 and identical replay leaves updated_at unchanged |
|
| Pattern: filter metadata entries before constructing response values so denied labels and targets never serialize |
| Pattern: compile settings writable fields as the intersection of schema scalars, model columns, and Fillable |
|
|
| id |
description |
requirement |
verification |
human_judgment |
| D1 |
The exact permission catalog is unique, role-assigned, reference-valid, wildcard-aware, and restricted to backend principals. |
AUTH-08 |
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_metadata_test.go#TestAdminMetadataPermissions |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_metadata_test.go#TestAdminMetadataFiltering |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_metadata_test.go#TestAdminMetadataRejectsFrontendPrincipal |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D2 |
Navigation and settings discovery preserve source metadata, stable ordering, localization keys, non-null empty arrays, and whole-entry permission filtering. |
AUTH-08 |
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_metadata_test.go#TestAdminMetadataNavigation |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_metadata_test.go#TestAdminMetadataSettingsList |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_metadata_test.go#TestAdminMetadataFiltering |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D3 |
Fonoteka settings expose a localized required schema and side-effect-free missing read followed by singleton creation and idempotent replay. |
ADMIN-05 |
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_settings_test.go#TestAdminSettingsSchema |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_settings_test.go#TestAdminSettingsMissingRead |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_settings_test.go#TestAdminSettingsIdempotentUpdate |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D4 |
Settings PUT is permission-first, schema-projected, Fill/Validate-backed, transactional, and rolls back invalid required or typed values. |
ADMIN-05 |
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_settings_test.go#TestAdminSettingsPermissionOrder |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_settings_test.go#TestAdminSettingsProjection |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_settings_test.go#TestAdminSettingsValidation |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_settings_test.go#TestAdminSettingsRollback |
pass |
|
|
false |
|
|
1h 15m |
2026-09-26 |
complete |