docs(spec-022): BR-022-42 and DL-022-26 — chart date axes read pt-BR months (#251)
PRD F11 gains FR-12.36.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs(spec-022): approve the M10 adjustment frames and their rules
Thirteen UI gaps reported after #203–#214. Owner decisions recorded as
DL-022-16..24: Dashboard label, text-left/numbers-right tables with
fixed column widths and truncation, Configurações two-row tabs,
"Valor estimado"/"Custo estimado" labels, "Valor aplicado" vs
"Aportes líquidos", one form layout, Transações fit, chart currency,
and the approved frames.
BR-022-01/16/18/32 amended; BR-022-36..40 added; PRD F11 gains
FR-12.31..35; SPEC-013 BR-013-04 names "Aportes líquidos". The frames
are rendered on SPEC-022-Prototype in both themes.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs(spec-022): navy brand replaces teal
The #202 prototype review rejected the teal: in context it read as
Status Invest at any lightness or chroma. After three rounds of
options the owner chose a navy brand on near-neutral graphite surfaces.
BR-022-28, its acceptance criterion and PRD FR-12.25 now name a navy
brand, and the in-progress status may never share the brand's hue.
DL-022-05 is amended in place and records the rejected alternatives.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
docs(spec-022): interface design and navigation (M10)
Add SPEC-022 and PRD F11 (FR-12.1–12.30): five-destination navigation
splitting current state (Portfólio) from performance over time
(Relatórios), account menu with sign-out, value masking, tabbed page
structure, paginated tables, teal brand in first-class light and dark
themes, and an owner-approved prototype before any migration.
SPEC-005 gains BR-005-20f (ignore an unclassified row with a reason)
and BR-005-26a (open discrepancies measured against the current
ledger), with DL-005-31/32. PRD gains M10 and a traceability row;
the spec index and sidebar list SPEC-022.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SPEC-008 BR-008-09/30/31: official and historical closes come from B3's COTAHIST (DL-008-13, #171, #144)
brapi's free plan serves three months of history, so #144's 2024 subscription
closes are unreachable, and its 17:05 live quote is ~30 min delayed, so the
close written to history was an intraday price (#171). COTAHIST is B3's own
public record, no credentials. BR-008-31 records B3's consumption policy
(historical data for informational charts and tables only). SPEC-021
BR-021-29 and PRD §4 / FR-8.72 follow.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
SPEC-007/008/014, PRD §4: split ratios confirmed by B3's factor; fraction auctions by origin (#113)
- SPEC-007 BR-007-04a: a split/grupamento ratio is derived from the position
before the event and B3's stated quantity, applied only when it matches
B3's published factor. BR-007-04b: a split/grupamento fraction sold at
auction is a sale. BR-007-05a: a bonificação fraction leaves the position
at unchanged total cost and its cash is a provento. DL-007-08/09.
- SPEC-008 BR-008-29: B3's public listed-companies factor, credential-free,
shared, confirmation only. DL-008-11.
- SPEC-014 BR-014-01: fifth provento type, leilão de frações. DL-014-08.
- PRD §4: the factor source in the automatic data-sources table; no new FR.
Owner decisions, 2026-09-15, after research on #113.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.
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.
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.
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.
Updated Product (markdown)