You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Five reliability defects sit flat and unlabeled in the backlog with no shared scope owner: agent fallback failures surface as generic errors with no actionable detail (#335), validate_model_identifier accepts doubled provider prefixes like google-gla:google-gla:gemini-… which then 404 at the provider (#334 — a confirmed root cause of one #335 failure leg), the Showcase page white-screens on LAN HTTP because crypto.randomUUID is undefined outside secure contexts (#332, frontend/src/components/demo/RunHistoryStrip.tsx:75), ModelFamily lives in app/features/forecasting/schemas.py forcing documented lazy-import workarounds across the registry boundary (#268, 6 import sites), and a model_exogenous re-forecast returns a 0.0 delta regardless of price assumptions (#237, root cause unverified — wiring looks correct at app/features/scenarios/feature_frame.py:155). Baseline: .flow/state.md (2026-06-11), brainstorm Round 3.
Approach
Pure hardening inside existing slices — no new router, no new slice, no new runtime dependency, no schema change except what #268's relocation requires (import-path moves only, no DB migration). Each epic lands as an ordinary fix//refactor/ branch through the standard validation gates. #334 lands first (Foundation) because it removes one class of #335 failures and changes the failure surface the #335 error-classification work tests against. #237 is gated investigate-first: a reproduction test decides wiring-bug vs zero-learned-elasticity before any fix is committed. Explicitly NOT changing: observability stack (none, by design), agent approval surface (agent_require_approval untouched), pgvector/FastAPI/SQLAlchemy versions.
Summary
Five reliability defects sit flat and unlabeled in the backlog with no shared scope owner: agent fallback failures surface as generic errors with no actionable detail (#335),
validate_model_identifieraccepts doubled provider prefixes likegoogle-gla:google-gla:gemini-…which then 404 at the provider (#334 — a confirmed root cause of one #335 failure leg), the Showcase page white-screens on LAN HTTP becausecrypto.randomUUIDis undefined outside secure contexts (#332,frontend/src/components/demo/RunHistoryStrip.tsx:75),ModelFamilylives inapp/features/forecasting/schemas.pyforcing documented lazy-import workarounds across the registry boundary (#268, 6 import sites), and amodel_exogenousre-forecast returns a 0.0 delta regardless of price assumptions (#237, root cause unverified — wiring looks correct atapp/features/scenarios/feature_frame.py:155). Baseline:.flow/state.md(2026-06-11), brainstorm Round 3.Approach
Pure hardening inside existing slices — no new router, no new slice, no new runtime dependency, no schema change except what #268's relocation requires (import-path moves only, no DB migration). Each epic lands as an ordinary
fix//refactor/branch through the standard validation gates. #334 lands first (Foundation) because it removes one class of #335 failures and changes the failure surface the #335 error-classification work tests against. #237 is gated investigate-first: a reproduction test decides wiring-bug vs zero-learned-elasticity before any fix is committed. Explicitly NOT changing: observability stack (none, by design), agent approval surface (agent_require_approvaluntouched), pgvector/FastAPI/SQLAlchemy versions.Decomposition
validate_model_identifier(config + core settings paths) with regression tests — linked as sub-issueModelFamilytoapp/shared/, retire the lazy-import workarounds at the 6 mapped import sites, prove alembic cold-boot clean — linked as sub-issueOut of scope (explicit)
/agents/stream— reason: already fixed and merged (PR fix(agents): non-streaming fallback for Ollama agent chat #343, issue fix(agents): Agent Chat streaming fails on Ollama (400 'invalid message content type: <nil>') #342)._llm_key_present()skipping Ollama in the demo pipeline — reason: already fixed and merged (PR fix(api): showcase agent step runs on local Ollama (no API key needed) #341, issue fix(api): showcase agent step skips on local Ollama (no API key needed) #340).pending_actionloss on model misbehavior/retry exhaustion — reason: already fixed and merged (PRs fix(agents): persist pending_action for gated tool calls #337/fix(agents,ui): Ollama chat HITL — null-content, pending-approval salvage, and approval report #345, issues fix(agents): persist pending_action for gated tool calls #336/fix(agents): Ollama chat HITL — sanitize null content and preserve pending approval #344/fix(ui): surface approved-action execution report for all outcomes #346).feature_frame_versionV≥3 clamp in ops/registry — reason: already fixed and merged (PR fix(api): honor feature_frame_version >= 3 in ops + registry #339, issue fix(ops,registry): honor feature_frame_version >= 3 (stop clamping to {1,2}) #338).docs/_base/ARCHITECTURE.md§ Observability,product-vision.md).Success criteria
PATCH /config/aiandSettingsboot reject any model id whose model_name contains a provider prefix (a:b:c) with a clear 422 / startup error; unit tests cover both validation paths (fix(config): reject doubled provider prefixes in agent model ids #334 closed)/agents/streamemit a classified, actionable error (model-not-found / quota / auth) instead of a generic failure; route test covers ≥2 failure legs (fix(agents): surface fallback model failures with actionable details #335 closed)/showcasecompletes a full run over plain-HTTP LAN origin without white-screen; UUID fallback util has a vitest (fix(ui): avoid crypto.randomUUID crash on LAN HTTP showcase #332 closed)ModelFamilyimports resolve fromapp/shared/; zero lazy-import NOTE comments reference the forecasting↔registry ModelFamily cycle;alembic upgrade headcold-boots clean in CI migration-check (refactor(forecast,registry): move ModelFamily to shared/core to break slice cycle #268 closed)model_exogenousre-forecast; the verdict (wiring fix or elasticity/seeder explanation) is implemented or documented in the issue (fix(forecast): model_exogenous re-forecast is inert to price assumptions (0.0 delta) #237 closed)showcase_richdemo pipeline runs green end-to-end after E6Risks
docs/_base/ARCHITECTURE.md) is the specTracking
docs/flow-pack-methodology.md+ working state.flow/state.md(Round 3,.flow/brainstorm-log.md)