Sprint 21

Table of Contents

This page documents a sprint (Sprint 21) of ORE Studio. It captures the sprint's mission, current status, and the stories that compose it. For the surrounding context — version goals, sprint order, and product identity — see Version 0.

Mission

Commission the ores.refdata entity library: finish currency and country, and start the twelve entities that were never touched in sprint 20 — with the hard constraint that no new tooling stories enter the sprint unless they directly unblock a commission task.

Status

Field Value
State DONE
Parent version Version 0
Previous Sprint 20
Start 2026-06-12
End (expected) 2026-06-19
End (actual) 2026-07-02
Now Closed.
Waiting on Nothing.
Next Open sprint 22.
Release Notes Added at end of sprint.
Last touched 2026-07-02

Stories

For the definitions of the themes see Themes.

Agile

Story State Start End Description
Open sprint 21 DONE 2026-06-12 2026-06-12 Scaffold sprint 21, move 24 postponed stories, wire manifest, update vcpkg.

Product

Epic: ores.refdata Commissioning

Commission all ores.refdata entities across every access layer: verify Qt UI end-to-end post-NATS migration (list window, detail window, history, delete, eventing), implement or verify shell and CLI commands (list, add, remove), document each entity in the user manual, and file backlog captures for Wt and HTTP gaps. One story per entity. Carried from sprint 20.

Story State Start End Description
Commission: country DONE     Verify Qt + shell + CLI (existing); manual; Wt/HTTP captures.

FaceStudio

Story State Start End Description
Accumulate face dataset DONE 2026-06-11 2026-07-02 Build the external/facestudio/ seed catalog; fix accumulation script; wire into seeder.

Market data generation

Story State Start End Description
Consistent synthetic market data generation: approach analysis DONE 2026-06-25 2026-06-25 Survey three academic papers; catalogue ORE asset-class data requirements; produce a developer-ready approach document for consistent, evolvable synthetic market data.
PoC: synthetic market data generation — FX spot vertical slice DONE 2026-06-25 2026-06-28 Vertical PoC implementing FX spot synthetic data generation end-to-end: GMM generation service, NATS tick publishing, DB write, and live trading-style chart. Success; productionising work re-homed to the stories below.
Synthetic generation configuration and config-driven feeds DONE 2026-06-28 2026-07-02 Producer side: persisted party/tenant-scoped synthetic config in ores.synthetic (container + FX spot sub-config) + CRUD UI; config-driven autonomous generation stamping tenant + source; producer-namespaced tick publishing.
Config-driven synthetic feed generation (per-config series, lifecycle) DONE   2026-07-02 Lift the PoC single-EUR/USD-series feed to config-driven: resolve/create a series per config ORE key, start feeds by config id, run multiple feeds, publish to the synthetic producer namespace. (Scope 2 of the Market Simulator work.)
Market data feed binding, ingestion and official stream DONE   2026-07-02 Authority side: source-agnostic feed-config binding (series ← source channel); ingest loop subscribes, persists (tenant + source) and remaps to the official tenant-scoped stream; CRM derivation seam.
Source-agnostic market data control panel DONE   2026-07-02 Generic Qt control panel to list/start/stop/monitor feeds via the feed-config registry and a source-agnostic control contract, independent of the producer.

Tooling

Epic: Codegen

Codegen drift correction and guardrails: resolve template-production divergence, land safety and CI checks so generated code stays trustworthy. Carried from sprint 20.

Story State Start End Description
Refactor ores.codegen: merge generator.py into codegen/ package DONE 2026-06-26 2026-06-26 Move generator.py into codegen/core.py; remove _import_generator hack; add compass codegen pillar and entity sub-commands.

Epic: Compass

Story State Start End Description
Fix compass review workflow for Claude-based code reviews DONE 2026-06-26 2026-06-26 compass review reply and review resolve break with Claude bot reviews (issue comments, not review threads).
Compass environment improvements: port auto-assignment and fleet env-type display DONE 2026-06-24 2026-06-25 Auto-compute base port during env provision; show full/light type in compass fleet.

Infrastructure

Story State Start End Description
Environment provisioning overhaul DONE 2026-06-14 2026-06-25 GCP-style naming, genesis env, light env type, direct-emacs compass commands, env type through the stack, bootstrap docs.

Documentation

Story State Start End Description
Knowledge graph housekeeping DONE 2026-06-12 2026-06-15 Ongoing bucket for small doc and knowledge-graph fixes spotted during normal work.

Hotfixes

Story State Start End Description
Fix readme badges DONE 2026-06-12 2026-06-12 Replace broken dynamic PRs badge; fix stale Sprint-20 → Sprint-21 badge.
Hotfix: sccache wrapper breaks Windows builds DONE 2026-06-25 2026-06-25 sccache_wrapper.sh is set as CMAKE_CXX_COMPILER_LAUNCHER on all platforms but .sh scripts are not valid Win32 executables; all Windows CI jobs fail with 'CreateProcess: %1 is not a valid Win32 application'.
Hotfix: base32 alphabet uses string-literal paren-init rejected by Apple libc++ DONE 2026-06-25 2026-06-26 std::array<char,33> was initialised with a string literal via parentheses, which GCC/libstdc++ accepted as an extension but Apple libc++ (Xcode 15.4) rejects. The bug was dormant because sccache had the TU cached; the SCCACHE_BASEDIR change in PR #1294 invalidated the cache, forcing a full recompile that exposed the error.
Hotfix: macOS debug CPack packaging fails with Xcode 16 strip regression DONE 2026-06-26 2026-06-27 CPack Bundle packaging on macOS debug CI fails because CPACK_STRIP_FILES is set unconditionally in build/cpack/CMakeLists.txt and Xcode 16.2 strip crashes when the LC_DYLD_EXPORTS_TRIE export trie grows larger than the original after pruning in ores.refdata.service.
Fix Qt party_type build: request.type renamed to code/codes DONE 2026-06-28 2026-06-28 Qt party_type lib failed to build after the party_type messaging codegen rename: PartyTypeMdiWindow, PartyTypeDetailDialog and PartyTypeHistoryDialog still assigned request.type, but delete_party_type_request now uses codes (vector) and get_party_type_history_request uses code. Fixed in PR #1357.
Hotfix: market_fixing entity carries audit columns absent from lean SQL schema DONE 2026-07-02 2026-07-02 market_fixing domain type, entity, mapper, generator, json_io, handler and service carry version/modified_by/performed_by/change_reason_code/change_commentary fields that ores_marketdata_market_fixings_tbl intentionally omits, causing INSERT failures (column "version" does not exist).

Achievements

Milestones worth capturing as they happen, so the release notes at sprint close have the evidence to hand. Add a dated ** subheading per milestone, with any screenshot via [[proj:assets/images/<file>.png]].

Captures

Real captures filed during this sprint that have not been pulled into a story as tasks — listed here purely for visibility into what the sprint surfaced. Each is an inbox capture (compass capture); triage them at the health review (promote to a story, move to next, or discard).

Capture Tags Description
Rename or split the project glossary documentation, knowledge_graph The glossary is really an agile glossary; rename it or split into focused Zettelkasten documents per domain.
Define what a product vision is before stating ORE Studio's documentation, identity Add a brief conceptual definition of product vision to product_identity.org before the ORE Studio-specific statement; source from MASD methodology doc.
Illustrative org-roam links in doc bodies break the site build documentation, org_roam, ci Bare id-link placeholder syntax in prose fails the site build; use code spans for examples; consider a lint check.

Health Review

# Date Day Overall Task
1 2026-06-29 day 17 RED Health review 1 — sprint 21 close analysis
2 2026-07-02 day 20 RED Health review 2 — sprint 21 close analysis

Charts

Charts generated via compass sprint charts. See Sprint health charts for what each chart measures, its purpose, and how to read it.

PRs & Commits per Day

Dual-axis bar chart. PRs (left axis) and commits (right axis) per day. A high commits-to-PR ratio may indicate scope creep.

prs_commits.png

Daily Line Churn

Lines added (green) and deleted (red) per day. Building work produces mostly additions; refactoring produces a mix. Days with no churn may indicate blockers.

line_churn.png

PR Cycle Time

Hours from PR open to merge, one bar per PR. Long bars indicate review bottlenecks. Generated only when PR data is available.

pr_cycle.png

Cumulative Stories Done

Line chart tracking stories marked DONE during the sprint. Steady upward slope is healthy; plateauing signals a stall.

stories_done.png

Retrospective

(Filled at sprint close.)

Release Notes

See release_notes.org for the full narrative.

Emacs 29.3 (Org mode 9.6.15)