OpenProgram Docs

Engineering improvement backlog#

Cross-workstream completion, unmerged implementations and delivery sequencing belong in Implementation status and handoff. This page contains unresolved proposals that need a decision before scheduling. Validate each candidate against current source before implementation; old counts and audit dates are not current evidence. Remove an item when its decision is incorporated into its canonical design.

Provider metadata errors#

Review error handling for corrupt provider.json data in providers/_provider_meta.py. Distinguish corrupt content from missing data so an empty provider list does not conceal a parsing failure.

Frontend state consolidation#

The state-layer proposal retains follow-up work to remove legacy window.* state entries, including W.currentSessionId, window.conversations, W.isRunning and window.__sessionStore. Audit current usage rather than relying on old occurrence counts. Untyped window.dispatchEvent events are part of the same review.

The WebSocket layer in apps/web/lib/net/use-ws.ts also rebroadcasts store frames through untyped CustomEvents. Evaluate this together with legacy state retirement, since it creates a second state propagation path alongside the store.

Modules with multiple responsibilities#

Re-measure module size and responsibility boundaries when scheduling this work. Candidates include openprogram/agentic_programming/runtime.py, openprogram/store/session/session_store.py, openprogram/agentic_programming/call_state.py, openprogram/auth/cli.py and openprogram/programs/_runtime.py. Vendored yoga-layout and ink runtime code under apps/cli/src/runtime/ is outside this refactoring proposal.

Regression review checklist#

The former repository issue snapshot mixes previously corrected behavior, unverified observations and feature proposals. It is consolidated here as a verification checklist, not a claim that every item is currently broken. Reproduce against current source and the public UI before creating an implementation task; record completion in the relevant canonical design.

Area Behavior to verify Source or entry
Rewind Web submits the confirmed apply phase with the plan hash and idempotency key; missing results show an actionable state ws_actions/chat.py, _rewind.py, message-actions.tsx, slash-commands.ts
Command delivery A closed WebSocket does not count as a successful command or clear the draft wsSend, composer submit
Slash commands Opening / does not unexpectedly execute compact; missing /skill names and /task prompts are rejected with feedback slash-commands.ts
Command menu Closing animation does not consume Return or block history Up/Down; required arguments remain editable selectSlashCommand, composer key handlers
Session requirement Commands without a session give feedback instead of silently clearing input Composer and slash commands
Compaction Busy, suggested, completed, failed and no-op states are visible; compact precedes snip where required; reactive compact/snip events also receive UI feedback loop_runner.py, reactive.py, chat-handlers.ts
Context history Compaction retains old turns and the DAG head; snip changes only the next request history; summary expansion needs visible verification Context details and chat transcript
Help and doctor Help exposes and focuses the command menu; doctor has an intentional result presentation with and without a session /help, /doctor
Overlapping controls The jump-to-latest control and slash menu remain usable at their actual positions Chat UI; overlap must be observed, not inferred only from z-index
Attachments Unsupported or oversized files produce explicit feedback image-attach.ts
Desktop startup The window appears with its intended layout instead of visibly resizing from the corner Installed desktop App
CLI resume The CLI resume argument reaches the Ink runtime with the intended session apps/cli/python/openprogram_cli/_impl/ink.py, apps/cli/src/index.tsx
SSO, speech and plugin isolation Documentation distinguishes implemented methods/providers from unimplemented entries; community plugin execution matches its isolation contract auth/methods/sso.py, tts.py, plugins/sandbox.py, plugin loader
Function recovery Same-frame resume is distinguished from creating a sibling retry; indirect call cycles are addressed by the documented recursion policy ws_actions/chat.py, agentic_programming/call_state.py
Function metadata Dynamic metadata and literal source declarations follow the documented form contract Function forms and metadata documentation
Distribution Linux desktop artifacts, upgrade failure recovery, manual workflow publication and sandbox behavior gates match the supported installation documentation Installation, source upgrades and Workflow publishing
Command registry Duplicate names across registries have a defined lookup order and an unambiguous menu runCommand and command menu

Idle automatic compaction remains a product decision, not an assumed bug. Environment-variable discovery is not a substitute for the documented AuthStore boundary. External issue counts and earlier snapshot commit IDs are not evidence of current correctness.

Last updated · 2026-10-10