# Current work September 10 consumer dogfood: reinforce that classification and relationships are optional. Zero/nil/empty associations already work in `cms`/`cmssqlite`; new regressions explicitly cover independent optional fields, publishing unclassified content, and clearing classification without rewriting history. The reproduced policy GET-modify-POST defect belongs to Gamertan's HTTP adapter, not the shared package. Its fix stays in that consumer. No dependency upgrade or new package release is needed for these documentation/test additions. Verified: `go test -race ./cms ./cmssqlite` passes. Preserve unrelated auth work in the separate `web-dev` checkout; it is not part of this slice. ## CMS classification and relationships Implement `cms` and `cmssqlite` primitives for Gamertan's existing typed content: named flat taxonomies, stable terms with rename history, immutable revision associations, explicit publication and bidirectional related-content queries. Keep authorization, audits, application schemas, templates and commerce policy with their callers. Writes join caller-owned SQLite transactions. Implemented: validated values, explicit schema, caller-owned transactions, immutable associations, publication pointers, term aliases and public readers. Verified: focused race tests for scope isolation, conflicts, draft/public transitions, retirement, rename collisions, pagination and rollback. Gamertan's consumer HTTP regressions now exercise real content/catalog/case-study routing, draft isolation, restore, role/CSRF checks and unchanged catalog data. Consolidated evidence: the full package race suite passed; association fuzzing passed 698,275 executions. Dependency/module and license checks passed. Vet has only the existing vendored COSE diagnostic documented by `scripts/verify.sh`. The consumer's full Go suite and native trusted-TLS editor checks passed. The consolidated `scripts/verify.sh` passed, including all 126 allowlisted public-export paths, exported-package compilation, full tests/race, the existing vet diagnostic exception, dependency/license checks and the starter build. Published: `v0.1.0-preview.27`, commit `d991ad4`. The consumer now pins the published module without a workspace replacement in its release checks; its full Go/vet, focused race, package and trusted-TLS browser checks pass. No remaining package implementation work or unrelated auth changes in this slice. Status: implemented, verified, published and adopted. Consumer deployment remains separately recorded in its repository. Release history stays in CHANGELOG; publication is confirmed by the remote tag, not a checkbox here.