Story: Close systemic codegen gaps

Table of Contents

This page documents a story in Sprint 25. It captures the goal, current status, acceptance criteria, and the tasks that compose it.

Goal

(Describe the user-visible outcome this story delivers.)

Status

Field Value
State BACKLOG
Parent sprint Sprint 25
Now Not yet started.
Waiting on Nothing.
Next Break the story into tasks.
Last touched 2026-08-06

Acceptance

Tasks

Task State Start End Description
Codegen leaves new entities unwired: RLS policies and the create/drop aggregators BACKLOG     No template in ores.codegen emits ENABLE ROW LEVEL SECURITY/CREATE POLICY for entities with :has_tenant_id: true, and generated per-table SQL is never linked into the component's hand-maintained *_create.sql/_drop.sql aggregator (the \ir include list) – both are manual steps every entity author has to remember, and both were missed while adding the CRM config tables.
Codegen the history-provider registrar wiring BACKLOG     refdata's registrar.cpp is a monolithic hand-maintained file of near-identical register_history_provider() blocks per entity; this should be a codegen archetype instead.

Decisions

Out of scope

Emacs 29.3 (Org mode 9.6.15)