Skip to content

Roadmap

This roadmap maps 1:1 with tracked work in GitHub Issues. It outlines the evolution of finfocus while strictly adhering to the technical guardrails in CONTEXT.md.

v0.3.5 released 2026-03-30.

  • Implement EstimateCost RPC consumer (remove stub) (#847) [M]
  • Implement BatchCost RPC consumer for multi-resource queries (#846) [L]
  • Resource History Store with Layered Cost Attribution (#934) [L]
  • Resource History Store — Code Review Follow-ups (from #934 PR review)
    • Fix double-prefixing in StackContext.Hash (#966) [S]
    • Extract correct URN hash segment in filterFullyExpiredURNs (#968) [S]
    • Capture analyzer resource properties and extract tags into history (#955) [S]
    • Populate tags in convertDescriptorsToHistoryState (#956) [S]
    • Copy tags in convertEngineStateToHistoryState (#957) [S]
    • Return success indicator from detectHistoryStackContext (#958) [S]
    • Reuse loaded config in overview initHistoryFromConfig calls (#959) [S]
    • Use pointer type for HistoryConfig.RetentionDays (#960) [S]
    • Only ignore missing-file errors in GetProjectName (#961) [S]
    • Track newest entry per URN hash in GetDeletedResources (#962) [S]
    • Set enabled=false on BoltStore.Close (#963) [S]
    • Merge tag timestamps instead of overwriting in upsertTags (#964) [S]
    • Fix newTestEntryWithTime to ensure FirstSeen <= LastSeen (#965) [S]
    • Escape delimiters in BuildTagKey (#967) [S]

Near-Term Vision (v0.3.x - Forecasting & Profiles)

Section titled “Near-Term Vision (v0.3.x - Forecasting & Profiles)”
  • Overview Performance Pipeline (deferred from v0.3.2)
    • Parallelize plugin opening in Registry.Open() (#693) [M]
    • Start plugin loading concurrently with data loading (#692) [M]
    • Parallelize stack export and pulumi preview (#691) [M]
  • Overview TUI Quality (deferred from v0.3.2)
    • Show phase progress lines sequentially and add preview phase (#714) [M]
    • Refactor overview to compute-once-render-many architecture (#853) [L]
  • Pricing Transparency (follow-up to #465 research)
    • Plugin-provided GetPricingSpec as fallback before local YAML specs (#638) [L]
    • Enrich cost estimate with GetPricingSpec discovery data (#637) [M]
    • Add --explain flag to cost projected for pricing transparency (#636) [M]
    • Add --show-breakdown and --show-confidence flags to cost commands (#685) [M]
  • Contextual Profiles (“Dev Mode”) (#368) [L]
    • CLI: Implement --profile flag (e.g., dev, prod) to pass hints to plugins
    • Configuration: Allow default profile definition in finfocus.yaml
    • Spec ready: UsageProfile enum (PROD/DEV/BURST) available in finfocus-spec v0.5.5 — core-only implementation
  • Scale Testing
    • Pulumi TypeScript scalability fixture for E2E performance testing (#658) [M]
  • Spec v0.5.7 Features
    • All v0.5.7 consumer items promoted to Immediate Focus
  • Time-Series Forecasting Enhancement
    • Enhance cost estimate with ARIMA + driver-based forecasting (#539) [L]
  • Forecasting & Projections (“Cost Time Machine”) (#364) [L]
    • Projection Math Engine (Linear/Exponential extrapolation)
    • TUI: ASCII Line Chart visualization for 6-12 month forecasts
    • Status: Spec primitives available (GrowthType/GrowthRate)

Future Vision (v0.4.0+ - Notifications, Integrations & Backlog)

Section titled “Future Vision (v0.4.0+ - Notifications, Integrations & Backlog)”
  • Governance Overrides (“YOLO Mode”) (#365) [M]
    • CLI: Implement --yolo / --force flag to bypass budget gates
    • UX: “Warning Mode” UI styles for bypassed runs
    • Blocked: Requires BypassReason enum in finfocus-spec (not yet defined)
  • External Notifications
    • Webhook and email notifications for budget alerts (#220) [L]
    • Note: Requires external service integration to maintain core statelessness per CONTEXT.md boundaries
  • Recommendation Lifecycle Enhancements (spec-first)
    • Add include_dismissed field to GetRecommendationsRequest (#545) [S]
    • Add GetRecommendationHistory RPC to CostSourceService (#546) [M]
  • Cost Time Machine (depends on #548)
    • Phase 1 — MVP: cost history collect + view --plain with asciigraph and bbolt storage (#549) [L]
    • Phase 2 — Interactive TUI: ntcharts TimeSeriesLineChart with pan/zoom, provider split, budget overlay (#550) [L]
    • Phase 3 — Export & Sparklines: JSON/CSV/NDJSON export + inline sparkline indicators (#551) [M]
    • Cost history diff: resource-level change attribution (#554) [L]
    • Prune & retention policy (#555) [M]
    • Mixed-currency snapshot handling (#556) [M]
    • CI/CD automation recipes (documentation) (#553) [S]
  • Cache Architecture Improvements
    • Add optional LRU in-memory cache layer to complement BoltStore (#495) [M]
  • TUI Lazy Loading & Error Recovery (#483) [L] Deferred from TUI Phase 7
  • Plugin integrity verification strategy (#164) [M]
  • Accessibility options (—no-color, —plain, high contrast) (#224) [M]
  • Configuration validation with helpful error messages (#223) [M]
  • Plugin Generator Enhancements (Deprioritized — solo plugin dev)
    • Update Plugin Generator Templates for spec v0.5.x (#248) [M]
    • Generate Docker support files (#456) [S]
    • Generate documentation templates (#457) [S]
    • Add GetPluginInfo and Supports to calculator template (#458) [S]
    • Add health endpoint to generated main.go (#459) [S]
    • Enhanced Makefile template with new targets (#460) [S]
    • Add new CLI flags for generation control (#461) [S]
    • Generate standardized GitHub workflow files (#462) [S]
    • Generate .golangci-lint.yml configuration (#493) [S]
  • Use registry-based plugin install for cross-repo integration tests (#517) [M]
  • Plugin developer upgrade command for SDK migrations (#270) [L] — Research
  • Dependency Visualization (“Blast Radius”) (#366) [L]
    • TUI: Interactive Dependency Tree view (consuming Lineage Metadata)
    • Cross-Repo: Consumes CostAllocationLineage/ParentResourceID from finfocus-spec
  • Spot Market Advisor (#367) [L]
    • TUI: Highlight Spot savings in Cyan; show Risk Icon
    • Display “Savings vs On-Demand” percentage
    • Cross-Repo: Requires PricingTier/SpotRisk enums in finfocus-spec; CE plugin implements DescribeSpotPriceHistory
  • Carbon Footprint Estimation
    • Carbon footprint estimation plugin using Cloud Carbon Footprint methodology (#688) [L]
  • Mixed-Currency Aggregation Strategy (MCP Alignment)
    • Objective: Implement core-level grouping for multi-currency stacks to support the finfocus-mcp Mixed-Currency Research.
    • Technical Approach: Enhance CostResult aggregation logic to preserve currency codes and provide structured groupings for downstream consumers (CLI, TUI, MCP).
    • Success Criteria: Orchestrator returns grouped results by currency when multi-region/multi-currency resources are encountered.
  • Markdown “Cost-Change” Report & CI/CD Bridge
    • Objective: Enable automated PR feedback by providing a Git-native visualization of cost deltas.
    • Technical Approach: Implement a new OutputFormatter that translates CostResult maps into GFM (GitHub Flavored Markdown) using collapsible <details> tags for per-resource breakdowns.
    • Anti-Guess Boundary: The engine MUST NOT calculate the delta itself if it isn’t already provided by the input source; it strictly formats data returned by the orchestration layer.
    • Success Criteria: A valid GFM document is generated that renders correctly in a GitHub comment using only data from the CostResult array.
  • Pulumi Cloud API Integration (depends on #934)
    • Pulumi Cloud API Integration for Historical State Snapshots (#935) [L]
  • Agent Skills (co-located, tool-dependent)
    • plugin-manage — Discover, install, update, validate, and troubleshoot finfocus plugins via gRPC protocol (#911) [M]
    • finfocus-diagnose — Debug plugin connectivity, config resolution, BoltDB cache issues, and zero-cost results (#913) [M]
    • finfocus-budget — Configure, monitor, and troubleshoot budget thresholds with scoped rules, health tracking, and CI/CD exit codes (#914) [M]
    • Format: Agent Skills spec (SKILL.md + references/), installable via npx skills add rshade/finfocus -s <name>
    • Generic cost workflow skills (cost-check, cost-drift, cost-optimize, budget-setup) live in rshade/agent-skills as multi-tool skills — see Split-Tier Placement consensus
  • Cost Diff View
    • Add cost diff view to cost projected command (#576) [M]
  • Overview Command Enhancements (follow-ups from #578)
    • Add --output json support to finfocus overview (#579) [M]
    • Add --force-color and --no-color flags to overview command (#641) [S]
    • Interactive pre-flight confirmation prompt for overview command (#642) [S]
    • Warning column and OverviewWarning type (#643) [M]
    • Test coverage for overview enrichment and CLI to 80%+ (#645) [L]
    • Overview command documentation with screenshots (#646) [M]
  • Config Refactoring
    • Thread budget flag overrides explicitly instead of mutating global config singleton (#808) [M]
  • Platform Reliability
    • Reimplement plugin installer lock for Windows reliability (#573) [M]
  • Stateless Cost-Policy Linting
    • Objective: Prevent accidental cost overruns by flagging resources that exceed organizational informational thresholds.
    • Technical Approach: Compare the Monthly field of a CostResult against a static threshold defined in a local policy.yaml.
    • Anti-Guess Boundary: This is a comparison-only feature; the core MUST NOT attempt to “optimize” or “suggest remediation” for the resource configuration.
    • Success Criteria: The CLI produces a “Policy Violated” diagnostic when a plugin-returned cost exceeds the user-defined threshold.
  • Add --state-only flag to skip pulumi preview (#690) [M] (Completed 2026-03-31)
  • Clarify budget status visibility in overview output modes (#855) [S] (Completed 2026-03-31)
  • Agent Skills (Batch) (Completed 2026-03-27)
    • finfocus-install — Automated CLI and plugin setup (#909) [M]
    • finfocus-analyzer-setup — Pulumi Analyzer integration (#910) [S]
    • finfocus-routing — Intelligent plugin routing configuration (#912) [S]
  • Update aws-public plugin to install router by default (#895) [S] (Completed 2026-03-26)
  • Consume expires_at caching hints from plugin cost responses (#845) [M] (Completed 2026-03-26)
  • Recognize PLUGIN_CAPABILITY_BATCH_COST in capability routing and plugin list (#848) [S] (Completed 2026-03-10)
  • Show property changes in overview detail view (#852) [M] (Completed 2026-03-03)
  • Upgrade finfocus-spec from v0.5.6 to v0.5.7 (#844) [S] (Completed 2026-03-02)
  • Add config routes list and config routes test CLI commands (#687) [M] (Completed 2026-03-02)
  • Bubble Tea v2 Upgrade (Completed 2026-03-01)
    • Upgrade to Bubble Tea v2, Lip Gloss v2, Bubbles v2 (#552)
    • Upgrade charmbracelet dependencies to v2 (detailed migration plan) (#827)
  • False-positive drift for resources created mid-month in overview (#760)
  • Implement GetPricingSpec and EstimateCost methods on RecorderPlugin (#734)
  • Short flags (-s, -f, -a) for overview command (#644)
  • Overview TUI Quality Fixes (Completed 2026-02-28)
    • State guards missing for init-only TUI messages in overview model (#717)
    • Audit enriched count inaccurate on early TUI exit (#720)
    • Extract progress constant and add goroutine comment in overview (#721)
  • TUI & Engine Fixes (Completed 2026-02-28)
    • Extend table separator line to terminal width in overview TUI (#718)
    • classifyError should handle context.Canceled and context.DeadlineExceeded (#726)
  • BoltDB Cache Stability (post-#674 migration fixes)
    • BoltStore.Set returns nil when disabled, inconsistent with other methods (#682)
  • Analyzer Quality Fixes (Completed 2026-02-27)
    • Eliminate duplicate ResolvePolicyPackDir call in RunChecks (#822)
    • AnalyzeStack stack summary always shows $0.00 (0 resources analyzed) (#746)
    • --force reinstall does not sync policy pack binary, leaving it stale (#754)
    • analyzer install should setup policy pack directory for --policy-pack workflow (#755)
    • analyzer install should print PATH setup instructions post-install (#756)
    • Add finfocus analyzer check command for setup verification (#757)
  • compact() leaves store unusable if reopen fails after rename (#681)
  • CLI tests leak real ~/.finfocus config causing JSON parse failures (#809)
  • Integration Test Coverage (Completed 2026-02-24)
    • Add TUI interactive mode integration tests (#735)
    • Add cache system integration tests (#736)
    • Add concurrency and performance regression tests (#738)
    • Add project-local config and config precedence tests (#739)
    • Add analyzer concurrency and partial failure tests (#740)
    • Resolve nightly build tag fragmentation (#741)
    • Add plugin resilience and crash recovery tests (#742)
  • Wait for enrichment goroutine before plugin cleanup in overview (#716)
  • Overview Enrichment & Budget Display (Completed 2026-02-22/23)
    • Display budget status and health in overview command (#744)
    • Add cost caching to speed up enrichment in overview (#745)
    • detectErr unconditionally overrides --yes flag for isStateOnly in overview (#762)
    • Verify defensive copy independence in DataReadyMsg handler (#722)
  • CLI & Change Detection Fixes (Completed 2026-02-22)
    • FINFOCUS_HIDE_ALIAS_HINT should use presence-based check, not value-based (#783)
    • Recognize .tsx, .jsx, and go.work as Pulumi source files in change detection (#787)
  • CI & Code Quality Housekeeping (Completed 2026-02-22)
    • SBOM action fails to attach to releases — missing contents:write permission (#698)
    • Fix test data quality issues across cache test files (#683)
    • Clean up duplicate doc comments and extract placeholder helper (#684)
    • Fix analyzer-setup.md — PATH requirement and Pulumi.yaml analyzer configuration (#758)
  • Test Infrastructure Sweep (Completed 2026-02-22)
    • Fix always-skipped integration tests (#737)
    • cli_helper global log suppression masks plugin errors in integration tests (#743)
    • Make TestGetProjectedCost_PartialData order-independent (#788)
    • Fix vacuous exit code 0 test in budget_scoped_test.go (#786)
    • Close plugin clients in TestNewClient_Success and TestClient_APIUsage (#785)
    • stubHome should clear FINFOCUS_HOME for hermetic config tests (#784)
    • Deduplicate env setup and fix fragile assertion in plugin_validate_test.go (#782)
    • Consolidate 5 TestGetPluginInfo_* tests into table-driven (#776)
    • Remove duplicate flat tests in pulumi_plan_test.go, merge into table-driven (#775)
    • Consolidate 4 near-identical cost projected tests into table-driven (#774)
  • Batch Bug Fixes (Completed 2026-02-22)
    • Investigate intermittent $0.00 projected costs in TUI overview (#723)
    • Recorder plugin returns nil summary on GetRecommendations, flooding diagnostics (#747)
    • Analyzer JSON logs appear in pulumi preview Diagnostics section (#748)
    • Analyzer install creates double-v version directory (#749)
    • Registry ListPlugins silently skips directory-level symlinks (#750)
    • AnalyzerPlugin.Enabled config field is dead code — never read (#751)
    • FINFOCUS_PLUGIN_DIR env var documented but not implemented (#752)
    • plugins.dir config key documented but excluded from YAML parsing (#753)
  • Test Quality Improvements (Completed 2026-02-22)
    • Consolidate duplicate flat LoadPulumiPlan tests into table-driven suites (#791)
    • Add require.NotNil guard in TestLoadPulumiPlan_ComplexInputs (#790)
    • Remove duplicate TestApplyChangesToRows_NilMap in overview_merge_test.go (#789)
  • Post-v0.3.1 Fixes (Completed 2026-02-21)
    • feat(tui): splash screen — figlet banner, phase checklist, passphrase prompt (#728)
    • Parallelize per-row enrichment sub-calls (#694)
    • Use lipgloss styles in renderInitializingView for consistency (#719)
    • fix: applyPassphraseEnv uses process-wide os.Setenv (not concurrency-safe) (#761)
    • fix: replace hardcoded “730h/mo” footnote with engine.HoursPerMonth constant (#763)
    • fix: TestDetectChanges_StatErrorSkipsFile fails on Windows (no symlink privilege guard) (#764)
    • fix: missing .Ctx(ctx) on log calls in changedetect.go loses trace_id propagation (#765)
    • fix: “Recs” table column width too narrow for N(-M) dismissed format (#766)
    • Docs: Document that routing config does not apply in analyzer/policy-pack mode (#759)
  • v0.3.1: Overview Performance & Docs Audit (Released 2026-02-18)
    • Add timing instrumentation to overview command (#695)
    • Launch TUI immediately with phase progress feedback (#689)
    • Fix resolveCacheDir global fallback places cache.db in wrong directory (#680)
    • Add provider/resource_type assertions to tag enrichment tests (#686)
    • Documentation audit fixes for v0.3.0 features, plugin SDK, security (#702#710)
  • Install UX & Integrity (Completed 2026-02-16)
    • Install script (curl | sh) (#599)
    • Checksum verification for plugin installation (#601)
  • Scale, Performance & Caching (Completed 2026-02-16)
    • --jobs flag and timing output for cost commands (#602)
    • Projected cost caching (#600)
    • Benchmark PR reporting with benchstat regression detection (#657)
    • Extract Cache interface and refactor FileStore (#541)
    • Add caching to GetActualCost with 1-hour TTL (#542)
    • Add caching to GetProjectedCost with SHA-based keys (#543)
    • Transition persistent cache from JSON to BoltDB (bbolt) (#674) (Completed 2026-02-16)
  • CLI Polish & Code Quality (Completed 2026-02-16)
    • Policy-compatible cost output (#604)
    • Consolidate recommendation count and format helpers (DRY) (#610)
    • Isolate auto-detection tests with temp directories (#605)
  • Router Wiring & Resource Filtering (Completed 2026-02-14)
    • Wire router into cost commands for region-aware plugin selection (#590)
    • Filter pulumi:providers:* synthetic resources from cost plugin routing (#582)
    • Filter Pulumi component resources from cost plugin routing (#583)
    • Reorder router provider-based region check after feature matching (#616)
  • Config, CLI & Refactoring (Completed 2026-02-14)
    • Split project-local and user-global .finfocus/ directories (#548)
    • Neo-friendly CLI fixes (#611)
    • Add Stack field to CostFlags struct (#612)
    • Add .Ctx(ctx) and structured log fields across packages (#613)
  • Scale & Testing (Completed 2026-02-14)
    • Scale benchmarks for cost commands (#607)
    • Add negative test for waitForPluginBindWithFallback (#608)
  • Unified Overview & Analyzer Install (Completed 2026-02-14)
    • Add finfocus overview command — unified cost dashboard with TUI (#578)
    • finfocus analyzer install/uninstall commands (#597)
    • Fix state_test.go wantVersion skip and delegation fragility (#606)
  • GetPricingSpec Research & Code Quality (Completed 2026-02-14)
    • Evaluate GetPricingSpec RPC usage in core (#465)
    • Support GCP zone normalization in normalizeToRegion (#615, PR #631)
    • Wrap errors from MapResources, MapStateResources, and resolveOverviewData (#609)
    • Use comma-ok idiom for altMap assertions (#603, PR #630)
    • CodeRabbit follow-up cleanup from auto-detect PR (#589)
    • Deep copy CostBreakdown in appendActualCostResults to prevent source mutation (#614)
    • Phantom $0 results from empty plugin responses (#595)
    • Recorder plugin should not declare ACTUAL_COSTS capability (#596, PR #628)
  • Bug Fixes & Stability (Completed 2026-02-14)
    • Fall back to filesystem discovery for plugin removal (#592, PR #621)
    • Auto-create log directory before opening log file (#591, PR #618)
    • Move EnsureLogDir() after debug/env overrides (#617)
  • Pulumi Auto-Detection (Completed 2026-02-13)
    • Automatic Pulumi project detection for cost commands (#581, PR #586)
  • TUI & Documentation Polish (Completed 2026-02-13)
    • Display recommendations in resource detail view for cost projected/actual (#575)
    • Document aws-public projected cost gaps for diff support (#577)
  • v0.3.0: Intelligence & Analysis (Completed)
    • Add cost estimate command for scenario modeling (#463, PR #538)
    • Docs formatting & validation.go fix (PR #507 follow-up) (#533)
    • Recommendation dismissal and lifecycle management (#464, PR #557)
  • v0.2.6: Routing & Budget Enhancements (Released 2026-02-02)
    • Intelligent Multi-Plugin Routing with feature-based plugin selection (#410, PR #507)
    • Flexible budget scoping (per-provider, per-type, per-tag) (#221, PR #509)
    • Sustainability metrics integration in Engine & TUI (#302)
    • GreenOps carbon emission equivalency calculations (#303, PR #515)
    • Tag-based budget filtering (#532, PR #535)
  • v0.2.5: Testing & Stability (Released 2026-01-30)
    • Multi-region E2E testing support (#185, PR #485)
    • Pagination and NDJSON streaming for CI/CD integration (#225, PR #488)
    • Exit codes for budget threshold violations (#219)
    • Budget health calculation & threshold alerting (#267, PR #494)
    • Provider filtering & summary aggregation for Budgets (#263, PR #494)
  • v0.2.4: Final Polish (Released 2026-01-21)
    • Dynamic Data Recording via Integration Plans (#275)
    • Harden Nightly Analysis Workflow security and reliability (#325)
    • Documentation for TUI features, budgets, and recommendations (#226)
    • Budget status display in CLI (#217, PR #466)
  • v0.2.1-v0.2.3: Polish & DX Improvements (Released 2026-01-17 through 2026-01-19)
    • Add --estimate-confidence flag for actual cost transparency (#333)
    • Implement GetPluginInfo consumer-side requirements (#376)
    • Parallel plugin metadata fetching in plugin list command (#408)
    • Cross-Repository Integration Test Workflow (#236)
    • Upgrade cost commands to enhanced TUI (#218)
    • Plugin robustness: strict mode, config handlers, metadata fallback (#435, #434, #432, #431)
    • Fallback to latest stable version when asset missing (#430)
    • Budget filtering and summary aggregation logic (#446)
    • Replace manual assertions with testify (#429)
    • Plugin installer: remove old versions during install (#237)
    • E2E test for actual cost command (#334)
    • Set up AWS test account and infrastructure (#181)
    • Fuzzing seeds, benchmarks, and validation improvements (#326)
    • Documentation updates (#182, #349-#353, #454)
  • v0.2.0: State-Based Costs & Plugin Maturity (Released 2026-01-16)
    • State-based actual cost estimation for cost actual (#380, #382)
    • Plugin info and dry-run discovery (#398)
    • Ecosystem rebrand to FinFocus (#415)
  • v0.1.3-v0.1.4: Analyzer & Recommendations (Released 2025-12-27 through 2026-01-10)
    • Core Analyzer implementation (#245, #229)
    • E2E testing with Pulumi Automation API (#177, #238)
    • Comprehensive E2E tests for Analyzer integration (#228)
    • Add recommendations to analyzer diagnostics (#321)
    • Shared TUI package with Bubble Tea (#222, #258)
    • E2E and Conformance test reliability fixes (#323)
    • AWS fallback scope and non-deterministic output fixes (#324)
  • v0.1.0-v0.1.2: Foundation & Observability (Released 2025-11-26 through 2025-12-03)
    • Initial CLI & gRPC Plugin System (#163, #15)
    • Standardized SDK & Interceptors (#188, #189, #191)
    • Zerolog Integration & Structured Logging (#170, #206)
    • Engine Test Coverage Completion (#202, #207)
    • Plugin Ecosystem Maturity (#201, #215)
    • Support for Supports() gRPC handler (#160, #165)
    • CLI Filter Flag (#203)
    • Test Infrastructure Hardening (#200)
Featurespeccoreaws-publicaws-ce
Cost Time MachineGrowthTypehistory collect/viewGrowthHintHistorical
YOLO ModeBypassReason (missing)—yolo flagN/AN/A
Blast RadiusLineageImpact TreeParent/childN/A
GreenOps ReceiptCarbonFootprintConverterCCF MathN/A
Spot Market AdvisorPricingTierCyan styleN/ASpotHistory
Dev ModeUsageProfile (v0.5.5)—profileBurstableIOPS warn
What-If AnalysisEstimateCostcost estimatePropertyDeltaN/A
Rec LifecycleDismissRecommendationdismiss/snoozeDismissN/A
Auto-DetectN/Apulumi detectN/AN/A
Resource FilterN/Aprovider/component filterN/AN/A
Pricing TransparencyGetPricingSpec—explain + fallbackPricingSpecN/A

Sourced from CONTEXT.md — these are architectural hard no’s.

  • No Direct Cloud API Calls: The core engine MUST NOT call cloud provider pricing or usage APIs directly. All provider-specific logic belongs in plugins.
  • Minimal Persistent State: The tool is primarily stateless. Local persistence (config, dismissed.json, history DBs) is user-initiated and optional — never required for core command execution.
  • Read-Only Infrastructure: FinFocus MUST NOT perform pulumi up, pulumi destroy, or any operation that modifies cloud state. It reads infrastructure definitions only.
  • No Baked-in Provider Logic: The core engine MUST NOT contain hardcoded logic for specific cloud services. This logic is strictly delegated to plugins or YAML specs.
  • No Financial Accounting: The tool handles cost estimation and projection. It is NOT a ledger, invoice matching system, or tax calculation engine.