remove unnecessary todo items
This commit is contained in:
parent
378c0d0e84
commit
354a7e7799
1 changed files with 0 additions and 83 deletions
83
TODO.md
83
TODO.md
|
|
@ -39,9 +39,6 @@ ranking; unlabeled items are "someday, if the mood strikes."
|
||||||
market return vs contributions" annotation would clarify how
|
market return vs contributions" annotation would clarify how
|
||||||
much of the trajectory was the model being right vs new money
|
much of the trajectory was the model being right vs new money
|
||||||
arriving on schedule.
|
arriving on schedule.
|
||||||
- Mosaic mode: overlay multiple as-of starting points on one chart
|
|
||||||
("show me 1Y, 3Y, 5Y, 10Y projections all at once") so the user
|
|
||||||
can see how the projection envelope tightened as data came in.
|
|
||||||
- **Better composition basis for imported-only as-of.** Today
|
- **Better composition basis for imported-only as-of.** Today
|
||||||
the imported-only path uses today's allocations scaled by
|
the imported-only path uses today's allocations scaled by
|
||||||
`imported_liquid / today_total_liquid`. That's the simplest
|
`imported_liquid / today_total_liquid`. That's the simplest
|
||||||
|
|
@ -70,38 +67,6 @@ ranking; unlabeled items are "someday, if the mood strikes."
|
||||||
faithfulness one notch. Pick whichever has the highest
|
faithfulness one notch. Pick whichever has the highest
|
||||||
payoff vs. complexity when this gets revisited.
|
payoff vs. complexity when this gets revisited.
|
||||||
|
|
||||||
## `--export-chart` follow-ups - priority LOW
|
|
||||||
|
|
||||||
V1 of `--export-chart <PATH>` shipped for `quote`, `projections`
|
|
||||||
(bands, `--convergence`, and `--return-backtest` modes), and
|
|
||||||
`history`. Two adjacent surfaces still don't have PNG export:
|
|
||||||
|
|
||||||
- **`projections --vs <DATE>`.** No chart at all in this mode
|
|
||||||
(text-only delta table); `--export-chart` rejected at parse
|
|
||||||
time. Could grow a side-by-side bands comparison chart, but
|
|
||||||
that's a feature of its own - not just an export plumbing job.
|
|
||||||
- **Theme overrides at export time.** Today the export always
|
|
||||||
uses `theme.default_theme`. A `--theme <PATH>` flag at export
|
|
||||||
time would let users render with their configured theme or a
|
|
||||||
presentation-friendly one. Out of scope for V1; gate when
|
|
||||||
someone asks for it.
|
|
||||||
|
|
||||||
## Refactor: trim `src/format.zig` once Money / Date have absorbed their helpers - priority LOW
|
|
||||||
|
|
||||||
`src/format.zig` is still a ~1600-line grab-bag, but the money- and
|
|
||||||
date-shaped helpers that used to live there have been moved out:
|
|
||||||
money formatting now lives in `src/Money.zig` (with `{f}` /
|
|
||||||
`whole()` / `trim()` / `signed()` / `padRight(N)` / `padLeft(N)`),
|
|
||||||
date formatting lives in `src/Date.zig` (with `{f}` /
|
|
||||||
`padRight(N)` / `padLeft(N)`), and the braille sparkline chart now
|
|
||||||
lives in `src/charts/braille.zig`. What's left in `format.zig` is
|
|
||||||
the genuinely-format-domain stuff: return formatters, allocation
|
|
||||||
notes, signed-percent rendering.
|
|
||||||
|
|
||||||
If the file ever grows enough to be annoying again, consider
|
|
||||||
renaming to `src/render.zig` to better describe what's left.
|
|
||||||
Not blocking - file it as cleanup if and when it bites.
|
|
||||||
|
|
||||||
## Investigate: detailed 401(k) contributions data source
|
## Investigate: detailed 401(k) contributions data source
|
||||||
|
|
||||||
Found a more detailed contributions screen on at least one
|
Found a more detailed contributions screen on at least one
|
||||||
|
|
@ -130,46 +95,6 @@ opts ESPP/HSA accounts into cash-based attribution.
|
||||||
Related: ESPP-style accrual blind spot in the "Audit: manual-check
|
Related: ESPP-style accrual blind spot in the "Audit: manual-check
|
||||||
accounts mechanism" section above.
|
accounts mechanism" section above.
|
||||||
|
|
||||||
## Torn SRF files from server sync (root cause unknown)
|
|
||||||
|
|
||||||
**Status:** Root cause still unidentified. We have mitigations and
|
|
||||||
diagnostics in place that keep torn responses from corrupting the
|
|
||||||
cache, but we don't yet know *why* responses arrive torn. Until we
|
|
||||||
have a root cause, this is not resolved - it's mitigated.
|
|
||||||
|
|
||||||
Mitigations landed so far:
|
|
||||||
|
|
||||||
- `syncFromServer` (`src/service.zig`) validates responses via
|
|
||||||
`cache.Store.looksCompleteSrf` before `writeRaw`. Torn HTTP bodies
|
|
||||||
(empty, missing `#!srfv1` header, or no trailing newline) are
|
|
||||||
rejected with a warn-level log and NOT written to cache.
|
|
||||||
- HTTP responses are checked for an `ETag` sha256 header; on mismatch
|
|
||||||
we retry the request once before giving up and falling back to the
|
|
||||||
provider.
|
|
||||||
- Read-path self-heal: on SRF parse failure during read, the cache
|
|
||||||
entry is invalidated so a subsequent refresh can repair without
|
|
||||||
user intervention.
|
|
||||||
- Diagnostics: richer error capture around the sync path. So far,
|
|
||||||
HTTP transit is the dominant source of torn responses - but that's
|
|
||||||
an observation, not a root cause.
|
|
||||||
|
|
||||||
**Remaining work:**
|
|
||||||
|
|
||||||
- Identify root cause. Candidates to investigate: proxy/load-balancer
|
|
||||||
behavior, HTTP keepalive reuse, partial reads on the server side,
|
|
||||||
client-side buffer handling. The etag retry tells us whether the
|
|
||||||
problem is per-request or persistent; dig into the diagnostics
|
|
||||||
output when the next occurrence is captured.
|
|
||||||
- Once root cause is known, decide whether the current mitigations
|
|
||||||
are sufficient or whether a targeted fix is needed. The
|
|
||||||
mitigations may end up being the whole answer, but we can't
|
|
||||||
conclude that without understanding the underlying cause.
|
|
||||||
|
|
||||||
(Content-Length validation was considered and rejected: once the
|
|
||||||
server starts compressing response bodies, Content-Length reflects
|
|
||||||
the compressed byte count, not the decoded payload, so it's not a
|
|
||||||
reliable integrity check.)
|
|
||||||
|
|
||||||
## On-demand server-side fetch for new symbols
|
## On-demand server-side fetch for new symbols
|
||||||
|
|
||||||
Currently the server's SRF endpoints (`/candles`, `/dividends`, etc.) are pure
|
Currently the server's SRF endpoints (`/candles`, `/dividends`, etc.) are pure
|
||||||
|
|
@ -330,14 +255,6 @@ taxonomy.
|
||||||
The following items are acknowledged but not prioritized. Listed here
|
The following items are acknowledged but not prioritized. Listed here
|
||||||
so they don't get lost; pick up opportunistically.
|
so they don't get lost; pick up opportunistically.
|
||||||
|
|
||||||
### UX
|
|
||||||
|
|
||||||
- **CLI options command UX.** The `options` command auto-expands only
|
|
||||||
the nearest monthly expiration and lists others collapsed. Reconsider
|
|
||||||
the interaction model - e.g. allow specifying an expiration date,
|
|
||||||
showing all monthlies expanded by default, or filtering by strategy
|
|
||||||
(covered calls, spreads).
|
|
||||||
|
|
||||||
### Audit
|
### Audit
|
||||||
|
|
||||||
- **Audit large-lot threshold tuning.** `src/commands/audit.zig` uses
|
- **Audit large-lot threshold tuning.** `src/commands/audit.zig` uses
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue