Story: Fix codegen template drift
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 |
|---|---|---|---|---|
| Update history field mapper codegen template to use provenance_fields constants | BACKLOG | cpp_history_field_mapper.cpp.mustache hardcodes audit-column labels ("Modified By", etc.) as string literals, but currency_history_field_mapper.cpp on main uses the shared ores::history::domain::provenance_fields constants instead – the template needs to be updated to match and every entity's generated mapper regenerated. | ||
| Compound-key is_uuid gating drops trailing columns in Qt/service templates | BACKLOG | cpp_protocol.hpp.mustache and cpp_service.cpp.mustache gate their delete/history/save is_uuid branch on primary_key.is_uuid alone, which reflects only the first key column. A future compound key whose leading column is UUID would silently drop every subsequent key column from these structs/validations. Not exercised today (subject_area's key is two text columns). Raised in PR #1691 review round 1. Fix: make the is_uuid branches loop primary_key.columns like cpp_domain_type_mapper.cpp.mustache already does. | ||
| has_pagination knob is a silent-failure footgun in the Qt client model template | BACKLOG | The codegen knob gating real offset/limit pagination in a Client entity Model.cpp defaults to off with no compile-time or runtime signal when unset, letting 61 entities silently truncate lists at 100 rows behind fully-functional-looking pagination controls. | ||
| Junction codegen template follow-ups | BACKLOG | Four codegen template issues for junction entities: path/namespace mismatch between generated and live code, current_timestamp version-collision in insert triggers, messaging handler generated without matching service, and eventing facets produce incomplete output. |