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.

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

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.

Emacs 29.1 (Org mode 9.6.6)