Skip to content

History / SPEC 009 Valuation Engine

Revisions

  • Add SPEC-021 Personal Deployment, PRD §8.8 and milestone M9 The product will not be released: it runs on its owner's laptop against their real assets. Requested as "local as staging"; specified as personal production, because the instance holds the only copy of manual entries, wallets, allocations and typed rates. 37 business rules, 23 acceptance criteria, 13 logged decisions, and a mandatory-versus-skipped resource inventory. No hosting was ever being paid for -- no VPS exists and deploy.yml's deploy job is skipped by preflight. Four defects found while specifying it become part of the work, because the deployment is unsafe without them: tests can wipe real data startTestDatabase reuses any DATABASE_MIGRATION_URL; reset.ts TRUNCATEs through it, runtime_state included the image cannot migrate runner stage has no src/, tsx is a devDependency; deploy.yml's migration step has never executed compose cannot run locally DOMAIN required, https AUTH_URL, Postgres and Caddy published on every interface a missed close is lost close capture is irreversible; laptops sleep The refusal marker is database-level, not a runtime_state row: reset.ts truncates that table, so a row marker would be erased by the operation it guards against (DL-021-13). Amendments: PRD §8.8 (FR-8.51-8.74), M9, traceability row, FR-8.34 note SPEC-016 BR-016-09 cadence superseded for this deployment SPEC-002 backup.retain_count, personal.catchup_max_days SPEC-002/003/008/009/016/018 Required by SPEC-021 Coverage: 302 requirements, 0 uncovered. Template: 21/21. Links: 0 broken.

    @rafaelfqueiroz rafaelfqueiroz committed Sep 13, 2026
  • Add SPEC-020 User Onboarding, extracted from SPEC-005 Onboarding was already specified as PRD F2.1 and owned by SPEC-005, so this extracts and expands it rather than filling a gap. 31 business rules, 21 acceptance criteria, 8 logged decisions. The flow spans auth, import, fixed income and wallets; leaving it inside a spec about parsing three file formats made that spec responsible for four others' surfaces. SPEC-020 owns sequence, gating, progress and empty states; step mechanics stay with their owning specs. Two things it does not do, both deliberate: stores almost nothing -- every step's completion is a query, for the same reason positions derive from the ledger. One persisted column, users.onboarding_dismissed_at, because a dismissal is the only onboarding fact that is not derivable. ships no screenshots of investidor.b3.com.br -- R2 already says B3 changes things, and the redesign that breaks a parser silently invalidates a screenshot, which then walks the user to a control that moved. Project-authored diagrams with a visible "verified as of" date, re-checked whenever a parser changes. Two things the request named that did not exist: there is no CSV path (xlsx only; CSV is out of scope in SPEC-005) and there is no registration data to complete (BR-001-05 caps personal data at what Google supplies). "Required" now means the gates that actually block a correct portfolio -- unread fixed-income rates and unclassified movement types -- surfaced in the existing "Needs attention" queue. Amendments: SPEC-005 cedes FR-2.1-2.3 and the guided-onboarding AC SPEC-001 hands off to SPEC-020 rather than SPEC-005 PRD F10 (FR-11.1-11.22), milestone M8, R1 mitigation updated, F2.1 marked as owned elsewhere with its IDs kept stable M8 is scheduled ahead of further feature work: R1 rates import friction High/High and names guided onboarding as its mitigation, with >70% signup-to-first-import as the exit criterion. Coverage: 278 requirements, 0 uncovered. Template compliance: 20/20.

    @rafaelfqueiroz rafaelfqueiroz committed Sep 12, 2026
  • Add SPEC-017/018/019 and the amendments they force Three features specified: wallet balancing, buy/sell opportunity, wallet goals. 80 business rules, 52 acceptance criteria, 24 logged decisions. None of them is additive-only, so the reversals are recorded where the original decision lives rather than left to contradict it silently: PRD Q6 answered yes after being open since the PRD was written SPEC-015 target allocation removed from Out of Scope; DL-015-03 superseded in part -- the advice risk is mitigated by requiring every threshold to originate with the user, not by omitting the feature. BR-015-06 stands. SPEC-010 BR-010-02 promoted from descriptive to calculated SPEC-004 consent basis extended to opportunity and goal email SPEC-002 four config keys added SPEC-008 unchanged -- rules are held-assets-only, so DL-008-06 and the quote ceiling stand untouched PRD gains F7 (FR-7.x), F8 (FR-9.x) and F9 (FR-10.x), milestone M7, and three traceability rows. FR-8.x is skipped deliberately: section 8 owns that range and renumbering it would invalidate citations in four specs. Coverage check: 256 requirements, 0 uncovered. Template compliance: 19/19 specs at 5/5 sections.

    @rafaelfqueiroz rafaelfqueiroz committed Aug 25, 2026
  • Publish PRD and 16 specifications PRD and specs become the wiki's source of truth for product documents. Engineering guidelines remain in the repository alongside the code. Adds Home index, sidebar navigation and a spec template page.

    @rafaelfqueiroz rafaelfqueiroz committed Aug 12, 2026