standup
Standup — 2026-07-03
**July 3, 2026** [#287](https://github.com/caseproof/memberintel/pull/287) shipped the platform applicability axis (Phase 1).
Daily standup for 2026-07-03. What shipped:
July 3, 2026
#287 shipped the platform applicability axis (Phase 1). ADR-0028 now carries a platform amendment: memberpress controlled vocab in taxonomy.py, the ingest validator parsing it into brain_entries.metadata, and the AI-review gate’s Rule 2 rewritten from “flag all platform language” to “allow when platform:-tagged, flag on universal playbooks / vendor mismatch / out-of-vocab.” The four held MemberPress playbooks — default-to-annual-billing, founder-key-person-risk, content-dripping-for-retention, seat-based-group-expansion — are tagged, approved, and published to staging via auto-ingest. No retrieval behavior change; profile_boost.py is untouched. Phase 2 (profile detection + boost) is gated on a non-MemberPress operator arriving.
#286 surfaces draft playbooks in the Brain admin. New playbook_drafts Postgres table (metadata-only pointer; body stays in git), ingest reconciling it alongside brain_entries, a read-only GET /api/v1/admin/brain/drafts endpoint behind require_cf_access_admin, and a Drafts tab in the admin with GitHub deep-links per row.
CI pipeline for playbooks completed: #282 auto-ingests approved playbooks to staging on merge; #283 adds an advisory AI content-review gate that posts Claude findings as a PR comment on any playbooks/** diff. #274 added 30 entries covering underserved archetypes (donation-nonprofit, offline-service, association, certification, hybrid-ascension, paid-community, course-academy).
Two scope decisions were recorded and saved as reviews: innovations#188 (Brain Content Editor) resolved that git-backed playbook bodies stay read-only in-UI — the ingest reconciler clobbers any UI edits, so full authoring is a data-loss bug, not a governance preference. innovations#190 (trigger_conditions field) was rejected as proposed; the concern becomes an eval task under the ADR-0028 gate.
Notable. #278 caught a real staging 500 on the entry-performance scheduler’s first live run: jsonb_array_elements errors on a JSON scalar sources value — COALESCE(..., '[]') only guards SQL NULL. Fix guards with jsonb_typeof(m.sources) = 'array'. Unit fixtures had always used array sources; staging data didn’t.
Window: 2026-07-02T13:00
→ 2026-07-03T13:38.011Z · Sources: memberintel @ 4690cc5, memberpress-intel @ 0a2a290