Multi-currency: documentation and rollout readiness - #59
Open
ItsThompson wants to merge 8 commits into
Open
Conversation
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 15, 2026 22:49
6f9bcb4 to
5fbc53c
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
3 times, most recently
from
August 15, 2026 23:22
197a23c to
993c0f9
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
2 times, most recently
from
August 15, 2026 23:53
14f3a78 to
9b5c9de
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 16, 2026 14:53
9b5c9de to
bf66863
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 16, 2026 15:17
bf66863 to
7a57fae
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 16, 2026 15:45
7a57fae to
870d7e4
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
2 times, most recently
from
August 18, 2026 23:36
5ca47db to
d40a819
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 18, 2026 23:45
d40a819 to
24102a4
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 18, 2026 23:51
24102a4 to
012ff51
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 19, 2026 06:30
012ff51 to
2616899
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 19, 2026 19:05
2616899 to
1d3eb44
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 20, 2026 13:48
1d3eb44 to
01541f4
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 20, 2026 14:58
01541f4 to
816085f
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 20, 2026 15:10
816085f to
7647a69
Compare
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 20, 2026 16:05
7647a69 to
484d957
Compare
- Add reportingCurrency to TrendPoint, HealthScore, and HealthScoreTrendPoint fixtures and mocks - Add previousReportingCurrency and comparable to the HistoricalComparison mock - Remove a duplicate transactionCurrency property in the correction form test
ItsThompson
force-pushed
the
mc/07-docs-and-rollout
branch
from
August 20, 2026 17:59
484d957 to
aa95dbb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Updated project documentation so it describes the shipped multi-currency model instead of the previous single-currency design. All docs now name the FX Service and its internal gRPC boundaries, period reporting currency, expense money snapshots, the startup backfill, pro-rata captured snapshots, the enriched export schema, FX configuration, FX metrics and alert thresholds, and the legacy
currencyalias removal.What changed
Documentation
docs/architecture.md: added FX Service to the node topology, dependency edges, service responsibilities, network-isolation table, and design decisions. Updated expense, finance, and datarights responsibilities and the expense/pro-rata data-flow sequence diagrams. Stated that the gateway has no/api/fxprefix.docs/data-model.md: added the multi-currency model overview, periodreporting_currencywith future-scoped default settings, expense money snapshots and the startup backfill, pro-rata captured snapshots with failure reasons, the shared currency catalog, and historical migration semantics. Added FX Service to the database ownership table.docs/api.md: added the Multi-Currency Fields and Compatibility section: reporting and transaction currency, the legacycurrencyalias removal, period context behavior, correction currency behavior, pro-rata period fields, and FX error responses. Updated the expenses/finance endpoint sections and the error-category table.docs/data-export.md: replaced legacy expense and period columns with the shipped transaction/reporting snapshot columns. Addedreporting_currencytobudget_periods.csvand currency precision formatting rules. Updated formatting helpers toformatMinorUnits.docs/monitoring.md: added the FX Service metrics table,export_currency_formatting_fallback_total, and an FX/multi-currency alert-context section with wired-vs-defined status.docs/development.md: added FX Service to key variable groups.Configuration
.env.example: addedOPEN_EXCHANGE_RATES_APP_ID,FX_PROVIDER_TIMEOUT,FX_PROVIDER_RETRY_COUNT,FX_CACHE_MAX_AGE, andFX_SERVICE_ADDRwithout real secrets.docker-compose.yml: added a comment abovefx-serviceidentifying it as an internal-only compute service with no browser route and no gateway prefix.docker-compose.dev.yml: added an internal-only pointer comment referencing the main compose file.Tests
docker compose config --quiet: compose configuration validated.just test-monitoring: all three prometheus rule files valid, both promtool rule tests passed.git diff --check: clean, no whitespace errors.Notes
ServiceDownis active today forfx-service(inherited via its scrape target).FX_SERVICE_ADDRis documented in.env.examplebut remains hardcoded indocker-compose.yml, matching the existing convention for all service addresses.References