| 09-backend-admin-authentication-and-schema-pipeline |
10 |
admin |
| cabana |
| relations |
| winter-yaml |
| postgres |
| permissions |
| transactions |
|
| phase |
provides |
| 09-backend-admin-authentication-and-schema-pipeline |
Compiled form/list schemas, permission gates, CRUD, and bulk services |
|
|
| Complete Collection form/list assets and registered permission-gated controller |
| Typed relation schemas plus stable linked and candidate queries |
| Transactional, scoped, idempotent explicit pivot link and unlink endpoints |
|
| 09-backend-admin-authentication-and-schema-pipeline |
| admin-api |
| phase-10-spa |
|
| tokens |
tasks |
commits |
| 30000 |
3 |
5 |
|
| added |
patterns |
|
|
| Plugin-owned relation contracts provide target, pivot, foreign-key, column, exclusion, and hook metadata |
| Legacy public schema columns map explicitly to physical related-model columns without changing the API contract |
|
|
| created |
modified |
| cabana/relation.go |
| cabana/relation_test.go |
| ../fonoteka.go/plugins/golem15/fonoteka/controllers/collections/config_relation.yaml |
|
| cabana/http.go |
| cabana/query.go |
| cabana/registry.go |
| pact/capabilities.go |
| ../fonoteka.go/plugins/golem15/fonoteka/controllers/collections_admin_controller.go |
| ../fonoteka.go/plugins/golem15/fonoteka/admin_collections_test.go |
|
|
| Collection editor pivot knowledge remains plugin-owned; Cabana compiles and executes only finite typed relation metadata |
| The source schema's logical username column maps to the current user model's email column for list and relation operations |
| Candidate eligibility is active users excluding the owner and already-linked users; link revalidates the same scope transactionally |
|
| Pattern: relation mutations normalize identifiers, lock the parent, revalidate candidates, and explicitly write model-owned pivots in one transaction |
| Pattern: idempotent relation replay neither duplicates nor restamps an existing pivot |
|
| ADMIN-01 |
| ADMIN-02 |
| ADMIN-03 |
| ADMIN-04 |
|
| id |
description |
requirement |
verification |
human_judgment |
| D1 |
The complete Collection form/list schema compiles, preserves source order and permissions, and replaces the PHP partial with a typed relation-manager field. |
ADMIN-01 |
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminForm |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminListCRUD |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D2 |
Linked and candidate relation queries return stable non-null arrays and exclude owner, inactive, and already-linked users at the database boundary. |
ADMIN-03 |
| kind |
ref |
status |
| unit |
cabana/relation_test.go#TestRelationSchema |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminRelationEdges |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminCrossScope |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D3 |
Permissioned link/unlink mutations reject forged payloads, stamp model-owned pivot fields, converge under replay/concurrency, and remain transactionally scoped. |
ADMIN-03 |
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminRelationPermissions |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminLink |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminForgedPivot |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminConcurrent |
pass |
|
|
false |
|
| id |
description |
requirement |
verification |
human_judgment |
| D4 |
Collection CRUD and bulk operations retain validation, lifecycle, rollback, duplicate-normalization, and permission behavior on PostgreSQL. |
ADMIN-04 |
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminListCRUD |
pass |
|
| kind |
ref |
status |
| integration |
plugins/golem15/fonoteka/admin_collections_test.go#TestCollectionsAdminBulk |
pass |
|
|
false |
|
|
2h 20m |
2026-09-26 |
complete |