Status Every decision with the requirements derived from it, whether code implements them, and whether tests verify them.
Generated on every build from DESIGN.md and kibi’s coverage of its requirements. A requirement counts as built when a kibi symbol implements it, and as tested when a test is linked to it. kibi’s requirements report shows each requirement with its evidence.
45% 12% 33% 10% Decisions by status Built and tested [27] Partly built [7] Not built [20] No requirement in kibi [6] 45% 12% 33% 10% Decisions by status Built and tested [27] Partly built [7] Not built [20] No requirement in kibi [6] 2. Scope# Decision Summary Requirements Built Tested Status D-1 The first iteration is M0 only: tracker and Polish imports, with no AI models and no agents. 0 0 0 No requirement in kibi D-31 M0 has no time-box. 0 0 0 No requirement in kibi D-5 The core is licensed AGPL-3.0, the plugin contracts and SDK Apache-2.0, and contributions carry a DCO sign-off. 0 0 0 No requirement in kibi
3.1 System of record and views# Decision Summary Requirements Built Tested Status D-2 OpenFief’s own core is the system of record for transactions, tax lots and valuations. 2 0 1 Not built D-3 M0 ships two view plugins: a very simple built-in UI as the default, and Ghostfolio auto-push. 2 0 0 Not built D-4 The Ghostfolio plugin runs a reconcile loop. 3 0 0 Not built D-64 How the Ghostfolio plugin syncs, given how Ghostfolio behaves: 4 0 0 Not built D-6 OpenFief’s public API is read-only REST/JSON with an OpenAPI spec, versioned /v1, covering accounts, transactions, tax lots, holdings and … 4 1 3 Partly built D-50 The read API (D-6) is defined in protobuf with HTTP annotations, like the plugin contracts (D-11). 1 1 1 Built and tested D-30 The built-in UI draws two charts in M0: allocation (by asset class, currency, broker or sleeve) and value over time, which starts at … 2 1 2 Partly built
3.2 Getting data in# Decision Summary Requirements Built Tested Status D-7 Reading of GR-3: connectors get data from each institution by whatever works (a broker API where one exists, files or other means … 1 1 1 Built and tested D-8 The core project ships only connectors that comply with the institution’s terms. 1 0 0 Not built D-9 M0 data paths: XTB through uploaded xStation export files; treasury bonds through manual lot entry (series, quantity, purchase date) with … 3 1 2 Partly built D-22 Prices come from a market-data connector plugin where the user brings the API key (D-51); IBKR Flex prices serve as a cross-check. 2 0 0 Not built D-51 The first market-data connector uses EODHD. 1 0 0 Not built D-23 Accounts are seeded from each broker’s current lot-level positions (opening lots), with transactions from go-live. 2 2 2 Built and tested D-24 XTB in M0 covers real stocks and ETFs only. 3 0 0 Not built
3.3 Ledger and valuation# Decision Summary Requirements Built Tested Status D-18 The source of truth is an append-only, versioned transaction log. 5 5 5 Built and tested D-19 Double-entry postings across cash, position, fee, withholding-tax and FX accounts. 1 1 1 Built and tested D-20 Every amount keeps its original currency. 4 3 4 Partly built D-62 Totals, charts and the model comparison are shown in the reporting currency: a setting whose default comes from the jurisdiction pack, PLN … 1 0 0 Not built D-21 Prices are end of day in M0. 1 1 1 Built and tested D-25 Which bond value counts in totals is configurable; the default is net-if-redeemed-today (after the early-redemption fee and Belka tax, no … 2 2 2 Built and tested D-33 Besides D-19’s accounts, each account has an equity ledger account per currency: the counterpart for deposits, withdrawals and opening lots. 2 2 2 Built and tested D-34 Selling part of a lot rounds the consumed cost to two decimal places, half-even, and the lot keeps the exact remainder, so consumed plus … 3 3 3 Built and tested D-35 An instrument needs an ISIN with a valid check digit plus a venue symbol. 2 2 2 Built and tested D-36 Valuations are stored rows derived from the transaction log, prices, FX rates and index readings, and can be rebuilt from them at any time. 10 9 9 Partly built D-37 Where a treasury bond’s issue letter and the issuer’s published daily interest tables or worked examples disagree, OpenFief follows the … 3 3 3 Built and tested
3.4 Model portfolio# Decision Summary Requirements Built Tested Status D-52 The model portfolio is optional and off by default; while it is off, it appears nowhere in the UI or the read API. 2 0 0 Not built D-53 The model’s performance is a backtest: its value is computed from end-of-day prices as far back as every target has data, rebalanced to the … 2 0 0 Not built D-54 M0 shows the historical max drawdown of the model and of each target: the worst fall from a peak to a later trough over its whole history, … 1 0 0 Not built D-61 Next to the model, the portfolio’s line is its time-weighted return: daily returns from valuations, chained across deposits and … 1 0 0 Not built
3.5 Runtime and plugins# Decision Summary Requirements Built Tested Status D-10 OpenFief is Kubernetes-oriented: it is built for, and deployed on, Kubernetes. 0 0 0 No requirement in kibi D-11 The core is written in Go. 3 1 3 Partly built D-12 Any conformant Kubernetes cluster; no reference platform. 0 0 0 No requirement in kibi D-13 An operator manages plugins through a Plugin custom resource, from M0. 1 1 1 Built and tested D-55 The operator manages plugin workloads only and never touches money. 1 0 0 Not built D-14 PostgreSQL via CloudNativePG, and no NATS in M0. 0 0 0 No requirement in kibi D-15 The operator is namespace-scoped: a Role in the openfief namespace only. 1 1 1 Built and tested D-16 Plugin permissions are split into the Plugin resource (what the vendor requests) and a PluginGrant (what the user approved). 3 3 3 Built and tested D-17 Plugin images must be pinned by digest, and their signatures are verified with cosign. 1 1 1 Built and tested D-32 Plugin egress goes through an egress proxy built on Stripe’s Smokescreen, embedded as a Go library. 5 5 5 Built and tested D-63 The egress proxy embeds Smokescreen through BuildProxy inside OpenFief’s own HTTP server; StartWithConfig would exit the process on … 2 2 2 Built and tested
3.6 Plugin distribution and installation# Decision Summary Requirements Built Tested Status D-42 A plugin’s manifest is embedded in its image, as a label on the image config. 1 1 1 Built and tested D-43 One catalog, a file in this repository released with the product, lists the first-party and verified plugins. 2 1 1 Partly built D-44 A verified plugin is one whose version the author reviewed: its catalog entry pins the publisher’s signed image digest and the publisher’s … 1 1 1 Built and tested D-45 The operator trusts three kinds of signer: OpenFief’s CI, the publishers pinned in the catalog, and signers the owner adds. 1 1 1 Built and tested D-46 Plugins are installed with the openfief CLI. 2 0 0 Not built D-47 Plugin upgrades are always manual, even when the permissions are unchanged. 1 0 0 Not built D-48 Each install is a separately named instance with its own config, secrets, grant and egress allow-list. 1 1 1 Built and tested D-49 The core calls connectors: a connector serves a Connect service for syncing and for importing files, and the core owns the schedules, … 3 3 3 Built and tested D-56 The operator verifies every plugin image’s signature itself before deploying it, so a Plugin applied through GitOps or plain kubectl … 2 2 2 Built and tested D-57 An image without a valid signature from a trusted signer is never deployed, and there is no override. 1 1 1 Built and tested D-58 Uninstalling an instance deletes its workload, grant, secrets and egress allow-list. 1 0 1 Not built
3.7 Security: tracking and imports# Decision Summary Requirements Built Tested Status D-26 People log in with passkeys (WebAuthn), built in. 2 0 0 Not built D-27 Plugins authenticate to the core with projected ServiceAccount tokens (audience openfief-core). 2 2 2 Built and tested D-59 Only the core may call a plugin. 1 1 1 Built and tested D-28 OpenFief ships no Ingress and no tunnel. 3 0 1 Not built D-60 OpenFief installs with no hostname. 2 0 0 Not built D-29 Credentials are Kubernetes Secrets, fed by whatever the user already runs (External Secrets Operator, Vault, SOPS and so on). 2 2 2 Built and tested
Other requirements# Requirements that come from the development rules or from agents’ own modeling rather than from one decision, grouped by the area in their ID.
Area Requirements Built Tested AUTO 6 2 2 connector 1 1 1 core 6 6 6 demo 7 7 7 docs 6 4 4 ibkrflex 6 6 6 identity 5 5 5 ingest 16 16 16 kernel 5 5 5 ledger 28 28 28 operator 10 10 10 pl 7 7 7 plugins 33 32 33 portfolio 6 6 6 sdk 7 7 7 tooling 22 17 21 valuation 22 22 22 views 12 11 12
Generated from the repository at build time; it cannot go stale.