Story: Entity classification and drift baseline: ores.dq
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.
1. Goal
Bring ores.dq to the same proven state as the ores.refdata pilot: every codegen-eligible entity (discovered once, under projects/ores.dq/modeling – the dq and dq-cpp catalogue entries share the same modeling_dir and no longer have a live legacy-JSON split, so this is one survey, not two) bound to a profile or recorded as a genuine no-match, zero-diff regeneration verified, and any real gap the check surfaces fixed rather than skipped. Once trusted, dq and dq-cpp are added to the CI regeneration-drift check so this component can never silently drift again.
2. Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 25 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-08-04 |
3. Acceptance
- Every ores.dq entity is bound to a matching Variability Profile, or recorded as a genuine no-match with a documented reason (per the pilot's Notes precedent).
- Every rebound entity is regenerated and diffed against its pre-rebind checked-in output; zero diff is the pass condition, and any non-zero diff is fixed (profile catalogue, matching logic, or a real pre-existing template/model bug), not worked around.
- Full local build clean, validate_schemas.sh green, full ctest suite green after regeneration.
- check_component_drift.py –components is extended to include dq and dq-cpp, and the refdata-codegen-drift CI job (.github/workflows/pr.yml) is updated so future PRs touching ores.dq fail on any regeneration drift.
- The superseded ad hoc task 'Apply safe drift to dq-cpp' (doc/agile/versions/v0/sprint_25/refactor_codegen_cpp/task_apply_safe_drift_dq.org) is marked ABANDONED, pointing here.
- The known starting-point wrinkles already recorded for dq-cpp (service_find_by_uuid/service_find_by_code on dataset_bundle; HexPrefix model typo) are resolved as part of reaching zero drift, not left outstanding.
4. Tasks
| Task | State | Start | End | Description |
|---|---|---|---|---|
| Bind ores.dq entities to profiles; verify zero-diff regen | DONE | 2026-08-04 | 2026-08-08 | Implement profile binding for ores.dq's org-mode entity set (dq and dq-cpp catalogue entries share the same modeling_dir), rebind every matching entity, regenerate, and confirm byte-identical output, following the ores.refdata pilot method exactly. |
5. Decisions
- Consolidated all ores.dq-owned entities' Qt layer into a single
ores.qt.dqplugin rather than continuing to grow the interimores.qt.data_managementstepping-stone plugin – DQ entities belong in the DQ plugin, no exceptions, to keep variability under control.ores.qt.data_managementis deleted entirely as a result. - Migrated the 4 lookup_entity holdouts (lei_entity, lei_relationship, report_definition, synthetic_fx_spot_config) onto domain_entity rather than patching lookup_entity's C++ generation further – lookup_entity is being retired, not maintained (per task DDBD522D's earlier, explicitly-abandoned attempt at the latter).
- History browsing for every newly-commissioned entity routes through
the generic
HistoryDialogplus the shared history/diff registries, not new hand-written per-entity dialogs.