Outstanding Decisions

Unresolved design decisions with milestone deadlines and current recommendations.

When a decision is resolved, it becomes an ADR in adr/ and is removed from this page.

IDDecisionNeeded byRecommendation
OD-01Task template storage format. Code-defined templates (Python dataclasses registered at startup) or data-defined templates (JSON workflows in DB)?Milestone 2Code-defined templates: simpler, fully typed, no runtime eval risk. Redeploy required to add templates.
OD-02Approval notification channel. How does the operator learn that an Approval is pending?Milestone 3Polling first (GET /approvals); push via originating channel as enhancement.
OD-03LLM prompt versioning. If the routing prompt changes, which version produced a given RoutingDecision?Before LLM fallback is enabledStore prompt_version (hash of prompt template) on RoutingDecision.
OD-04Secrets store upgrade path. When and how to integrate OS keyring or Vault?When Fernet file is insufficientUpgrade to OS keyring via the keyring library first; Vault as a later option. Both are drop-in swaps via the SecretsStore protocol. See ops/secrets.
OD-05Event and audit retention. How long to keep raw events, audit events, and tool call records?~3 months after first deploymentPer-table configurable retention_days; tiered archival to file/S3 as a later option.
OD-06Multi-step task definition API. How does the planner specify steps when creating a Task?First real multi-step workflowTaskTemplate as a registered Python dataclass with a list of StepDefinition names and input mappings.
OD-07Quiet hours policy management. How does the operator create and manage quiet hours policies?Milestone 4 or first watcher deploymentConfig file only for the initial implementation; API-managed quiet_hours_policies table as a later enhancement.