Sprint 17
Table of Contents
This page documents a sprint (Sprint 17) 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
Harden the codebase's quality baseline: complete Windows/MSVC portability, migrate symbol visibility, enforce strict service table isolation, remediate SQL codegen drift, and land new features (workspace, DQ publish, ORE conventions import, ORE roundtrip) while porting the entire documentation history to the v2 cybernetic information architecture.
Status
| Field | Value |
|---|---|
| State | DONE |
| Parent version | Version 0 |
| Previous | Sprint 16 |
| Start | 2026-04-18 |
| End (expected) | 2026-05-22 |
| Now | Sprint closed 2026-05-23. |
| Waiting on | Nothing. |
| Next | Sprint 18 |
| Release Notes | Release notes |
| Capture | capture.org |
| Last touched | 2026-05-21 |
Achievements
- Workspace feature landed: bitemporal schema, service, UI, codegen propagation, and Data Workshop.
- ORE conventions import: seven convention types via codegen; CLI import Phase 3 complete.
- ORE domain roundtrip command with baseline and all four ORE XML document types.
- Symbol visibility migrated project-wide (
-fvisibility=hidden, export macros, plugin isolation). - MSVC C1202 constexpr depth resolved; Windows portability completed.
- All hand-crafted SQL replaced by codegen; SQL codegen drift closed.
- v2 documentation architecture: sprints 01–16 ported; site theme and GitHub Pages live.
Stories
For the definitions of the themes see Themes.
Infrastructure
| Story | State | Start | End | Description |
|---|---|---|---|---|
| Windows portability fixes | DONE | 2026-04-18 | 2026-04-22 | WiX limits, libpq link, OpenSSL, PostgreSQL CMake target, vcpkg Qt feature. |
| MSVC C1202 constexpr depth fixes | DONE | 2026-05-05 | 2026-05-21 | Trade struct decomposition + constexpr limit raises across all TUs. |
| Symbol visibility migration | DONE | 2026-05-14 | 2026-05-21 | -fvisibility=hidden; export macros; plugin isolation; static CLI/shell libs. |
| Strict service table isolation | DONE | 2026-05-14 | 2026-05-16 | SECURITY DEFINER validators; IAM party cache; dead DML grant removal. |
| Refdata tenant_id strong-type migration | DONE | 2026-05-20 | 2026-05-20 | 11 party domain types migrated to utility::uuid::tenant_id. |
Product
| Story | State | Start | End | Description |
|---|---|---|---|---|
| FX forward E2E and equity per-type migration | DONE | 2026-04-22 | 2026-05-01 | FX forward ORE import wired end-to-end; equity per-type tables completed. |
| ORE conventions import | DONE | 2026-04-22 | 2026-05-11 | Seven convention types via codegen; deposit_convention; CLI import Phase 3. |
| ORE domain roundtrip | DONE | 2026-05-07 | 2026-05-08 | Roundtrip command + baseline + all four ORE XML document types. |
| Import/export cleanup | DONE | 2026-05-02 | 2026-05-06 | Composite legs, pure parser, batch fetches, export_result wrappers. |
| Workflow engine hardening | DONE | 2026-05-15 | 2026-05-19 | Package renames, error reporting, pg_notify fix, shutdown latency. |
| Workspace | DONE | 2026-05-19 | 2026-05-20 | Bitemporal schema, service, UI, codegen propagation, Data Workshop. |
| DQ publish pattern | DONE | 2026-05-19 | 2026-05-20 | Publish-from-DQ wizard; async PublishDatasetsDialog; IAM logging. |
| Compute and GLEIF | DONE | 2026-04-18 | 2026-04-28 | GLEIF bundle wiring; per-triplet packages; per-platform uploads. |
| Qt UI polish | DONE | 2026-04-20 | 2026-05-20 | JWT URL discovery, currency combos, login filter, menu simplification. |
Tooling
| Story | State | Start | End | Description |
|---|---|---|---|---|
| SQL codegen drift remediation | DONE | 2026-05-14 | 2026-05-17 | All remaining hand-crafted SQL replaced; profile dispatch fixed. |
Documentation
| Story | State | Start | End | Description |
|---|---|---|---|---|
| PlantUML and modeling refresh | DONE | 2026-05-19 | 2026-05-20 | Generation script + bulk diagram refresh + component docs to v2. |
| v2 documentation architecture | DONE | 2026-04-18 | 2026-05-20 | Port sprints 01-16 to v2; site theme; GitHub Pages. |
Agile
| Story | State | Start | End | Description |
|---|---|---|---|---|
| Sprint 17 housekeeping | DONE | 2026-04-18 | 2026-05-18 | vcpkg, ccache-action, get-cmake, setup-clang bumps. |
Charts
Charts generated via sprint_charts cmake target.
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.
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.
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.
Cumulative Stories Done
Line chart tracking stories marked DONE during the sprint. Steady upward slope is healthy; plateauing signals a stall.
Retrospective
What went well
- Windows portability work from sprint 16 paid forward: the MSVC C1202 root fix (trade struct decomposition) landed cleanly and the 14 hotfixes that preceded it are all now reversed or cleaned up.
- Symbol visibility migration (
-fvisibility=hidden) landed across the entire codebase in one sprint, including plugin isolation phase 1 that broke two cross-plugin compile-time dependencies. - Strict service table isolation completed: SECURITY DEFINER validators, NAMEDATALEN cleanup, IAM party cache via NATS (replacing direct cross-service DB reads), and dead DML grant removal — the service boundary is now enforced at every layer.
- SQL codegen drift fully closed: every hand-crafted SQL file that had a live codegen model is now generated.
- Workspace, DQ publish, and ORE conventions import all landed without regressions.
- Entire documentation history (sprints 01-16) ported to v2 cybernetic information architecture in a single sprint.
What hurt
- MSVC C1202 consumed 14 PRs over three weeks. The root fix (struct decomposition) was found on day 17; the intermediate workarounds (TU splits, constexpr limit raises) had to be progressively undone.
- Symbol visibility surfaced 7 additional PRs of export macro fixes and plugin isolation work that wasn't anticipated in the plan.
- Qt UI polish story spanned the full sprint (2026-04-20 to 2026-05-20) — it was a catch-all for unrelated improvements that would benefit from its own story discipline next time.
- Strict service isolation plan was correct but execution required 3 separate cross-service decoupling PRs (#744, #745, #746) in rapid succession, which made review harder.
What changed
- Symbol visibility is enforced globally; all shared libraries are compiled
with
-fvisibility=hidden. - IAM no longer holds cross-service DB grants on refdata party tables; it uses a NATS-backed in-process cache instead.
- All SQL schema files are generated from codegen models; no hand-crafted SQL remains where a model exists.
- Workspace entity is live: bitemporal schema, service, UI, and Data Workshop tab.
- DQ publish is end-to-end via the workflow engine.
- ORE conventions are importable end-to-end (seven types, CLI Phase 3).
- Documentation is fully v2 — all sprint retrospectives, stories, and component overviews ported.