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.
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.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent sprint | Sprint 25 |
| Now | Nothing. |
| Waiting on | Nothing. |
| Next | Nothing. |
| Last touched | 2026-08-04 |
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.
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. |
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.