Tracking issue for the codebase survey (README review + full source survey). Ordered by priority; lower issue number roughly tracks higher priority. Relationships note where one issue fixes or unblocks another (GitHub shows the reverse links on each referenced issue).
P0 - launch-critical correctness
P1 - error honesty, robustness, key bugs
P2 - engineering health, scale, triage model
perf: AWS refresh blocks the draw loop and the phased progress UI is dead #24 Refresh blocks the draw loop; dead phase UI
perf: findings/cost-savings refresh fetches ~11 services sequentially #25 Sequential fetches should be concurrent (needs perf: AWS refresh blocks the draw loop and the phased progress UI is dead #24 )
feat: cache service inventories with a TTL, keyed by profile+region (fast navigation) #26 Inventory cache TTL keyed by profile+region -> closes bug: cost cache is a single global file, not keyed by profile or region (cross-account leak) #15
perf: N+1 serial describe calls for target-group health and SQS attributes #27 N+1 serial describes
reliability: configure SDK retry/backoff and timeouts for large accounts #28 No retry/backoff (compounds perf: N+1 serial describe calls for target-group health and SQS attributes #27 )
tech-debt: replace per-service match arms with a service trait/registry #29 Service trait/registry -> fixes the match drift + SQS gap
tech-debt: extract a shared list-view table/scroll/selection helper #30 Shared list-table helper -> unblocks tech-debt: give each view its own selection/scroll state (or clamp centrally) #31 , feat: in-view resource search/filter and column sorting #39 , ux: manage long-value truncation and standardize empty states #40 , tech-debt: small cleanups (duplicated table widths, misspelled model file, magic item count) #44
tech-debt: give each view its own selection/scroll state (or clamp centrally) #31 Per-view selection state (via tech-debt: extract a shared list-view table/scroll/selection helper #30 )
tech-debt: consolidate the three clients_for_region copies and the two aggregation reducers #32 Consolidate clients_for_region + aggregation (home for bug: global (multi-region) EC2/RDS/Lambda fetches ignore the selected AWS profile #11 /bug: cross-region describe rebuilds SDK config without the active profile #12 )
tech-debt: drive numeric shortcuts and help from the command registry (single source) #33 Shortcuts+help from one registry (folds in bug: numeric view-switch keys fire while an overlay is open, and key guards are inconsistent #23 )
tech-debt: refactor rebuild_findings into a rule registry #34 rebuild_findings rule registry (enables test: add coverage for finding rules, model predicates, cost parsing, and region/profile logic #38 )
feat: carry resource tags/ownership on all service models #35 Tags on all models -> unblocks feat: per-client tag focus filter across service views #8 and feat: add high-signal services and findings (S3, IAM, EBS/EIP/snapshots, RDS security, ECS incidents) #42
feat: expand the Finding model for a real triage queue (id, pivot, cost, severity, dedup/snooze) #36 Expand Finding model (id/pivot/cost/severity/dedup/snooze); relates bug: findings are recomputed from stale cross-service data and mislabeled with the current region #13 - partial : stable id and severity scale done, cost done for the 2 rules a list price can answer; executable pivot and acknowledge/snooze remain
reliability: version and validate the persisted config; stop silently wiping preferences #37 Config schema version + validation
test: add coverage for finding rules, model predicates, cost parsing, and region/profile logic #38 Test coverage (after tech-debt: refactor rebuild_findings into a rule registry #34 , feat: expand the Finding model for a real triage queue (id, pivot, cost, severity, dedup/snooze) #36 ) - premise restated: the suite grew from 3 to 140 tests, but model predicates and cost parsing are still untested
P3 - UX and product backlog, cleanups
feat: in-view resource search/filter and column sorting #39 In-view search/filter/sort (via tech-debt: extract a shared list-view table/scroll/selection helper #30 ) - partial : row filter done, column sorting remains
ux: manage long-value truncation and standardize empty states #40 Truncation + empty-state UX (via tech-debt: extract a shared list-view table/scroll/selection helper #30 )
bug: footer key hints drift from real handlers; SelectSshKey overlay scroll arms are no-ops #41 Footer hint drift + overlay no-op arms (via tech-debt: drive numeric shortcuts and help from the command registry (single source) #33 )
feat: add high-signal services and findings (S3, IAM, EBS/EIP/snapshots, RDS security, ECS incidents) #42 High-signal services & findings: S3, IAM, EBS/EIP/snapshots, RDS security, ECS (via feat: carry resource tags/ownership on all service models #35 )
bug: ECS overview shows placeholder CPU/memory values #43 ECS placeholder CPU/memory
tech-debt: small cleanups (duplicated table widths, misspelled model file, magic item count) #44 Small cleanups (via tech-debt: extract a shared list-view table/scroll/selection helper #30 )
Spawned from this epic
Key dependency chains
feat: cache service inventories with a TTL, keyed by profile+region (fast navigation) #26 closes bug: cost cache is a single global file, not keyed by profile or region (cross-account leak) #15 (unified profile/region-keyed cache)
tech-debt: extract a shared list-view table/scroll/selection helper #30 unblocks tech-debt: give each view its own selection/scroll state (or clamp centrally) #31 , feat: in-view resource search/filter and column sorting #39 , ux: manage long-value truncation and standardize empty states #40 , tech-debt: small cleanups (duplicated table widths, misspelled model file, magic item count) #44
feat: add an in-UI error/notification surface (eprintln is invisible in the alternate screen) #16 unblocks bug: list fetchers turn any error into an empty, success-looking table #17 , bug: Cost Explorer errors render as $0 spend and a flat chart #18 , bug: region discovery silently collapses to us-east-1 on failure #19
tech-debt: replace per-service match arms with a service trait/registry #29 + tech-debt: drive numeric shortcuts and help from the command registry (single source) #33 remove the per-service / per-key drift class (incl. SQS d/o gap, bug: numeric view-switch keys fire while an overlay is open, and key guards are inconsistent #23 )
feat: carry resource tags/ownership on all service models #35 unblocks feat: per-client tag focus filter across service views #8 (existing tag-filter issue) and feat: add high-signal services and findings (S3, IAM, EBS/EIP/snapshots, RDS security, ECS incidents) #42
tech-debt: refactor rebuild_findings into a rule registry #34 enables test: add coverage for finding rules, model predicates, cost parsing, and region/profile logic #38 ; tech-debt: consolidate the three clients_for_region copies and the two aggregation reducers #32 is the home for bug: global (multi-region) EC2/RDS/Lambda fetches ignore the selected AWS profile #11 /bug: cross-region describe rebuilds SDK config without the active profile #12
Status note
The #31 line above reads "per-view selection state", but that issue centralized
selection clamping into the shared list helper rather than storing selection per
view. Remembering a selection across navigation is #71 , which is still open.
Tracking issue for the codebase survey (README review + full source survey). Ordered by priority; lower issue number roughly tracks higher priority. Relationships note where one issue fixes or unblocks another (GitHub shows the reverse links on each referenced issue).
P0 - launch-critical correctness
P1 - error honesty, robustness, key bugs
P2 - engineering health, scale, triage model
P3 - UX and product backlog, cleanups
Spawned from this epic
refresh.rs(carved out of tech-debt: replace per-service match arms with a service trait/registry #29, which covered row actions only)Key dependency chains
Status note
The #31 line above reads "per-view selection state", but that issue centralized
selection clamping into the shared list helper rather than storing selection per
view. Remembering a selection across navigation is #71, which is still open.