skill: office-hours

type: architecture

key: own-ledger-month-entity

insight: Each month is a self-contained entity that clones from previous. No live connections between months. Edits are month-scoped. This is the core architectural decision for the entire data model.

source: user-stated


type: preference

key: own-ledger-dark-muted-checkboxes

insight: User strongly prefers dark/muted styling for unchecked checkboxes. Bright white browser defaults are distracting on dark themes.


type: pattern

key: own-ledger-cc-payment-solver

insight: User applies modular priority rules to credit card payments: higher priority gets min+fixed addon, lower priority gets min+capped, remainder after buffer goes to priority card. This is a constraint solver that should be a pure function.


skill: plan-eng-review

key: own-ledger-opening-balance-zero

insight: Opening balance defaults to $0 on new months, NOT carried from previous month remaining. User says untracked charges between months make carry-forward inaccurate. This simplifies month cloning and makes months truly independent.


key: own-ledger-bill-is-paid

insight: BillDefinition needs is_paid:bool field. Was missing from original design doc. Cloned bills must have is_paid=false in new month. MISC SPEND items stay active when cloned.


key: own-ledger-freeform-editable

insight: Freeform CC bill amounts are NOT read-only. User can click-to-edit to override computed amount. Clearing the field reverts to CC solver computed value. Uses existing amount_override mechanism.


key: own-ledger-cc-remainder-split

insight: CC payment remainder should split evenly among ALL receives_remainder=true cards, not break after first. Leftover cent from integer division goes to highest priority card.


type: operational

key: own-ledger-spike-first

insight: Implementation order for this project: spike inline editing on Flutter desktop Windows FIRST before building data model. Flutter desktop text editing at 34px rows has known issues. If it fails, need to explore alternatives before investing in full scaffold.

source: inferred


skill: plan-design-review

key: own-ledger-priority-shapes

insight: Bill priority indicators use shapes not just colors: green circle (normal), yellow diamond (late/pending), red square (urgent). User specified this for accessibility without making dots larger.


key: own-ledger-first-time-wizard

insight: First-time experience is a 4-step guided wizard: month+opening balance, paycheck setup, add bills, then dashboard. Only runs when no months exist in DB. User chose wizard over empty-state hints.


key: own-ledger-gear-replaces-ellipsis

insight: Settings nav is a gear icon in the top bar. Replaces the ellipsis menu from the original wireframe. User explicitly said no reason for both to coexist.


key: spike-scope-boundary

insight: Spike scope should be explicitly communicated upfront and enforced. When user feedback shifts from validating the spike question to designing the real UI, stop and redirect. The spike is throwaway code - polishing it is building twice.

source: observed