conductor/ROADMAP.md

304 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Conductor Unified Roadmap to v0.1.0
## Purpose
This is the master index of completed and remaining work for Conductor v0.1.0. It supersedes the older numbered-step roadmap and legacy task inventory while reconciling `MVP_SCOPE.md` and `SLICE1.md` through `SLICE8.md`.
The slice files remain the detailed implementation plans. When an older list conflicts with the approved MVP boundary or current acceptance evidence, this document follows `MVP_SCOPE.md`, the slice files, and recorded manual acceptance in that order.
## Status Legend
- [x] Implemented and accepted, or a completed product decision.
- [ ] Remaining v0.1.0 work.
- **Partial** means useful work has passed, but the slice-level release gate is not complete.
- **Post-MVP** means deliberately excluded from v0.1.0.
## Slice Summary
| Slice | Function | Status | Remaining gate |
| --- | --- | --- | --- |
| [Slice 1](SLICE1.md) | MVP GUI components | Complete | None |
| [Slice 2](SLICE2.md) | Visual configuration | Complete | None |
| [Slice 3](SLICE3.md) | Authentication and secrets | Complete | None |
| [Slice 4](SLICE4.md) | Proxy security and observability | Complete | None |
| [Slice 5](SLICE5.md) | Validation and error handling | Complete | None |
| [Slice 6](SLICE6.md) | Testing and release validation | Complete | None |
| [Slice 6a](SLICE6a.md) | Editor information density and progressive disclosure | Complete | None |
| [Slice 7](SLICE7.md) | MVP scope decision and requirement governance | Complete | None |
| [Slice 8](SLICE8.md) | Documentation and release packaging | Partial | Unified roadmap complete; broader documentation ownership, reconciliation, guides, and release packaging remain |
## 1. MVP GUI Components
### Slice 1 — Complete
- [x] Implement all eleven schema-supported MVP components in the palette, canvas, property editor, Preview, bindings, diagnostics, examples, and tests.
- [x] Keep interactive values in ephemeral runtime state and canonical properties in project JSON.
- [x] Complete manual canvas, Preview, JSON synchronization, save/load, and regression acceptance.
### Slice 2 — Remaining property and presentation work
- [x] Complete the audited component-specific property controls and basic styling controls required by the MVP specification.
- [x] Manually confirm JSON Viewer defaults, Table column widths, required inputs, and basic appearance authoring in Visual Editor and Preview.
- [x] Make the white Preview page/canvas background grow with runtime-rendered output, including Tables that exceed their configured design-time height.
- [x] Manually confirm the rebuilt Preview background expands and contracts with runtime-populated Table content.
### Post-MVP
- [ ] Add tabs, modal dialogs, date pickers, file uploads, charts, and progress indicators.
- [ ] Add reusable themes and component libraries.
- [ ] Add editable Table cells, sorting, filtering, pagination, CSV import/export, row actions, and multi-selection.
Table pagination requires a separate client-side versus server-side design discussion and is not a v0.1.0 release requirement.
## 2. Visual Configuration Workflows
### Slice 2 — Implemented and accepted increments
- [x] Create, edit, duplicate, test, and reference-safely delete anonymous REST actions through the UI.
- [x] Edit action method, URL, headers, query parameters, path parameters, and body templates in canonical `project.actions`.
- [x] Configure Button `onClick` action events visually.
- [x] Insert component and variable request values into executed request templates.
- [x] Create, edit, and delete canonical top-level response bindings.
- [x] Target supported component properties and declared runtime variables.
- [x] Create and edit typed variable declarations and defaults.
- [x] Configure page `onLoad` actions and execute them once per Preview initialization.
- [x] Warn before deleting referenced actions, variables, and components while preserving intentionally broken references for diagnostics.
- [x] Keep Visual Editor, JSON Editor, persistence, and Preview runtime state separated correctly for the accepted increments.
These items replace the older roadmap's pending Steps 19 and 20. They are not new remaining work.
### Slice 2 — Remaining release work
- [x] Run and record the final workflow-launcher acceptance without hand-editing JSON.
- [x] Run and record the final dependent-data acceptance, including initial Dropdown population.
- [x] Mark the five Slice 2 acceptance criteria complete after those workflows pass.
- [x] Retain and document the fixed 30-second backend request timeout for v0.1.0; defer a bounded canonical per-action timeout to proxy-policy work.
- [x] Correct action and response-binding diagnostics so page `onLoad` counts as a valid trigger and the UI uses clear component-or-page-event wording.
- [x] Manually confirm the corrected Actions & Bindings view no longer reports false untriggered-action or binding warnings for page `onLoad`.
- [x] Manually accept the implemented Actions & Bindings information-architecture improvements for clearer action, binding, and variable cards, hierarchy, spacing, and summaries.
- [x] Finish Slice 2's consolidated tests, examples, documentation reconciliation, and explicit sign-off.
### Slice 2a — Request-reference usability
- [x] Implement contextual component and variable suggestions in template-capable request fields, including after typing `{{`.
- [x] Suggest common REST header names while preserving arbitrary custom header names.
- [x] Align the guided request destination with request keys and the value source with request values.
- [x] Complete proportional manual acceptance.
- [x] Obtain explicit final Slice 2a sign-off.
### Post-MVP
- [ ] Add controlled action chaining or orchestration only after a new canonical design and scope decision.
- [ ] Add advanced transforms, JSONPath or another expression language, conditions, branches, parallel actions, loops, retries, and general workflow graphs.
The older roadmap placed controlled action orchestration in v0.1.0. That conflicts with `MVP_SCOPE.md` and `SLICE2.md`, which explicitly avoid turning Conductor into a workflow engine. It is therefore post-MVP unless the product owner deliberately changes the approved release boundary.
## 3. Authentication and Secrets
### Slice 3 — Design and storage
- [x] Define the MVP threat assumptions and secret-reference model.
- [x] Select and document the server-side secret storage and deployment mechanism.
- [ ] Define secret ownership, creation, replacement, deletion, missing-reference, and restart behavior.
- [x] Add safe secret create, update, lookup, and delete APIs.
- [x] Ensure canonical project JSON, exports, project CRUD responses, and browser state use opaque references rather than credential values.
### Slice 3 — Authentication execution
- [x] Preserve Anonymous execution.
- [x] Implement Basic authentication injection.
- [x] Implement Bearer token injection.
- [x] Implement API-key header injection.
- [x] Implement API-key query-parameter injection.
- [x] Reject missing or incompatible credential references with structured errors.
### Slice 3 — Redaction and validation
- [x] Redact credentials from logs, errors, diagnostics, history, Inspector output, proxy responses, and URLs.
- [x] Test all five modeled authentication modes with controlled endpoints.
- [x] Confirm secrets never appear in saved JSON, exports, browser-visible traffic, frontend state, or unsanitized logs.
- [x] Verify Docker secret provisioning and restart behavior.
- [x] Complete proportional manual secret lifecycle, compatible-selection, execution, redaction, and deletion-safety acceptance.
- [x] Obtain explicit final Slice 3 sign-off.
OAuth 2.0, IBM Cloud IAM, mTLS, and arbitrary authentication scripts remain post-MVP.
## 4. Proxy Security and Observability
### Slice 4 — Destination and request policy
- [x] Document the proxy threat model and default-deny boundaries.
- [x] Define permitted schemes, origins, hosts, ports, and explicit internal-host exceptions.
- [x] Block unsafe local, link-local, metadata-service, and unapproved destinations.
- [x] Revalidate DNS results and redirect targets at every boundary.
- [x] Permit only HTTP and HTTPS.
- [x] Allowlist forwarded headers and strip dangerous or hop-by-hop headers.
- [x] Add request-size, response-size, redirect, and execution-time limits.
- [x] Standardize safe proxy errors and malformed-response behavior.
### Slice 4 — Sanitized execution history
- [x] Persist timestamp, project/action identity, method, sanitized URL, status, duration, outcome, sanitized error, and bounded response-preview metadata.
- [x] Mask authorization headers, passwords, tokens, API keys, cookies, credential-resolution details, and sensitive query values.
- [x] Add an execution-history view with recent executions, action/status filtering, useful errors, and no backend stack traces.
- [x] Decide retention, persistence, restart, and clear-history behavior.
- [x] Add successful, failed, redirect, timeout, size-limit, SSRF, redaction, and regression coverage, with socket-level scenarios retained in the separate proportional manual gate.
- [x] Verify proxy policy through Docker Compose.
- [x] Complete proportional manual policy, safe-error, execution-history, filtering, lifecycle, and redaction acceptance.
- [x] Obtain explicit final Slice 4 sign-off. Granted by the user on 2026-08-03 with the exact wording: “I grant explicit final Slice 4 sign-off.”
Enterprise SIEM integration, RBAC, and enterprise audit retention remain post-MVP.
## 5. Validation and Error Handling
### Slice 5 — Canonical validation and persistence
- [x] Inventory validation behavior across JSON Apply, create, update, load, save, and Preview.
- [x] Centralize backend schema validation and use it at every persistence boundary.
- [x] Reject invalid projects without partial database updates.
- [x] Add supported schema-version and compatibility behavior.
- [x] Decide how invalid stored JSON is handled and whether v0.1.0 needs migrations.
- [x] Verify explicit `null`, missing values, empty arrays, and empty objects round-trip correctly.
- [x] Confirm backend default projects are canonical and schema-valid.
### Slice 5 — Semantic validation and diagnostics
- [x] Validate duplicate IDs/names and dangling action, component, variable, event, and binding references.
- [x] Validate component-specific properties and response-binding target compatibility.
- [x] Standardize backend error codes, paths, severities, and response shapes.
- [x] Surface actionable errors consistently in Visual Editor, Actions & Bindings, JSON Editor, Inspector, and Preview.
- [x] Add Preview loading, empty, upstream-error, mapping-error, retry/recovery, and stale-error behavior for all supported targets.
- [x] Preserve unsaved edits when validation or network operations fail.
- [x] Clear stale Secrets lifecycle error feedback after a later successful create, replace, or delete operation.
- [x] Reconcile schema descriptions and examples with canonical top-level `project.bindings`.
- [x] Reconcile free-form binding triggers with the triggers the runtime actually supports.
- [x] Unify and document the path-parameter interpolation contract.
- [x] Prevent new uses of deprecated `action.responseMapping`, inert `ComponentEvent.inputMap`, and unused component-level binding shapes.
- [x] Resolve, remove, document, or explicitly defer every modeled-but-unexecuted field, including `Binding.transform`.
- [x] Strengthen `project.settings` TypeScript typing to match the schema.
- [x] Decide whether backend-supported project deletion requires a v0.1.0 UI control.
- [x] Review deletion confirmations, keyboard accessibility, component disabled/hidden behavior, and Inspector/runtime diagnostic agreement.
- [x] Add malformed, semantic, version, rollback, and recovery regression tests.
## 6. Testing and Release Validation
### Slice 6 — Completed baseline work
- [x] Document and validate the Node 20/npm 10 toolchain.
- [x] Establish frontend, backend, schema, build, and Docker validation commands.
- [x] Validate all current valid and intentionally invalid examples.
- [x] Produce successful frontend and backend builds.
- [x] Verify Docker Compose startup, health, restart, CRUD, and persistence at recorded checkpoints.
### Slice 6 — Remaining automated coverage
- [x] Define the release-critical test layers and coverage boundary.
- [x] Complete frontend component, property-editor, action, event, binding, variable, and Preview tests.
- [x] Add backend health, CRUD, schema-validation, proxy-input, authentication, security, and persistence tests.
- [x] Add proxy integration tests for success, upstream errors, malformed responses, redirects, limits, and timeouts.
- [x] Add canonical-document persistence round-trip tests.
- [x] Add maintainable end-to-end tests for project load, execution, response mapping, dashboard selection, save, reload, and failure recovery; visual authoring remains in the proportional manual gate.
- [x] Resolve the TypeScript 4.9 / `@types/node` incompatibility so the standalone frontend TypeScript check passes, or update the supported toolchain deliberately.
- [x] Run the final security regression suite after Slices 35.
### Slice 6 — Six required MVP workflows
- [x] Workflow Launcher: visually build, execute, save, reload, and rerun a request/response UI.
- [x] Dependent Data: populate a component from an API and use its selected value to update another component with usable loading, empty, and failure states.
- [x] Read-Only Dashboard: populate a Table, select a row, show details, refresh, and handle errors.
- [x] Authenticated Request: execute all five authentication modes without exposing credentials.
- [x] JSON Editing and Persistence: validate/apply JSON, synchronize the Visual Editor, and round-trip without structural or behavioral loss.
- [x] Failure Handling: show actionable request/mapping errors without corrupting canonical state or losing unsaved work.
### Slice 6 — Deterministic demonstration and release gate
- [x] Build a deterministic local demonstration project using Label, Text Input, Dropdown, Button, JSON Viewer, and Table.
- [x] Populate Dropdown and Table data, use selected/runtime values in later requests, and display both focused and full responses.
- [x] Use a controlled local mock server with known success, error, Dropdown, and Table responses; do not depend on public HTTPBin-style services.
- [x] Demonstrate save, backend restart, reload, and rerun through automation; proportional human confirmation remains in the workflow gate.
- [x] Run clean-source installation, all automated suites, schema matrix, production builds, Docker integration, restart, backup, and restoration checks.
- [x] Confirm through automated regression and credential-pattern scan that runtime state is never persisted and the repository contains no credentials or generated data.
- [x] Record commands, counts, artifacts, limitations, defects, and accepted risks.
- [x] Confirm no unresolved critical or high-severity defects remain.
- [x] Pass the published final acceptance checklist in `SLICE6_MANUAL_TEST.md`.
Controlled orchestration is not required in the v0.1.0 demonstration. Execution history is included only if Slice 4 retains it as a release requirement.
## 7. MVP Scope and Requirement Governance
### Slice 7 — Completed decisions
- [x] Exclude IBM Bob, watsonx, and other AI dependencies from v0.1.0.
- [x] Require all five modeled authentication modes for v0.1.0.
- [x] Approve the six acceptance workflows in `MVP_SCOPE.md`.
- [x] Keep advanced orchestration and future UI capabilities outside the MVP boundary.
### Slices 68 — Completed consistency work
- [x] Make `MVP_SCOPE.md`, requirements, architecture, tasks, roadmap, and slice terminology consistent.
- [x] Ensure every v0.1.0 requirement maps to a slice and a validation criterion.
- [x] Clearly label all deferred capabilities post-MVP.
- [x] Remove or resolve every open question that could materially change the release boundary.
- [x] Produce a definitive Slice 6 release checklist and record product-owner approval.
## 8. Documentation, Packaging, and Release
### Slice 8 — Documentation ownership and reconciliation
- [x] Create and link a unified v0.1.0 roadmap grouped by function and slice.
- [x] Designate `docs/` as the authoritative specification location.
- [x] Remove exact duplicate root requirements, architecture, and future-idea documents after verifying links and replacements.
- [x] Reconcile requirements and architecture with the approved MVP scope.
- [ ] Update schema and response-mapping documentation to match canonical runtime behavior.
- [ ] Reconcile `ROADMAP.md`, `CODEX.md`, and all slice handoffs as implementation progresses.
### Slice 8 — User and operator documentation
- [ ] Update README prerequisites, commands, and documentation index.
- [ ] Publish installation, Docker Compose, first-project, Visual Editor, JSON Editor, component, REST Action, template, variable, binding/event, and troubleshooting guides.
- [ ] Publish authentication, secret provisioning, redaction, proxy policy, security, known-limitations, and deployment guidance.
- [ ] Document SQLite backup, persistence, recovery, upgrade, and schema-version policy.
### Slice 8 — Developer documentation
- [ ] Publish architecture, canonical model, frontend state, runtime state, binding flow, proxy flow, database, test structure, mock-server, and contribution documentation.
- [ ] Publish verified build, test, Docker, and release commands.
- [ ] Publish the final acceptance checklist with links to evidence.
- [ ] Check internal links, paths, examples, and documented commands.
### Slices 6 and 8 — v0.1.0 packaging
- [ ] Review examples, demo, open issues, deferred work, and release criteria.
- [ ] Complete fresh-clone validation and final Docker images.
- [ ] Prepare release notes and update version references.
- [ ] Commit the release documentation and code.
- [ ] Tag `v0.1.0` and push the release commit and tag.
## Post-MVP Backlog
- [ ] Multi-page application authoring and advanced page management.
- [ ] OAuth 2.0, IBM Cloud IAM, mTLS, and custom authentication scripts.
- [ ] OpenAPI import and generated forms/actions.
- [ ] Reusable templates, themes, and component libraries.
- [ ] Version history, Git integration, and team collaboration.
- [ ] Role-based access control and enterprise audit retention.
- [ ] Tabs, modals, date pickers, file uploads, charts, and progress indicators.
- [ ] Table sorting, filtering, pagination, editing, CSV import/export, row actions, and multi-selection.
- [ ] Advanced response transforms and expression languages.
- [ ] Action chaining, conditions, branches, parallelism, loops, retries, and workflow graphs.
- [ ] Provider-neutral AI editing or chat assistance.
- [ ] Richer variable-management UI beyond the MVP declaration/default editor.
## Reconciliation Notes
- Older Step 19 (REST Action Manager) and Step 20 (Binding and Event Editor) are represented by accepted Slice 2 work, not remaining milestones.
- Older Step 21 maps to Slice 3.
- Older Step 23 maps to Slice 4.
- Older Step 24 maps to Slice 6, minus the conflicting orchestration requirement.
- Older Step 25 is divided among Slices 4, 5, and 6.
- Older Step 26 maps primarily to Slice 8, with the final validation gate in Slice 6.
- Older audit findings that are already resolved—page `onLoad` execution and the schema/runtime component mismatch—must not remain listed as pending.
- The older roadmap's completed persistence checkpoint records working functional round trips; comprehensive automated persistence round-trip coverage remains a Slice 6 release task.
- Slice 7's status is complete because its product decisions were approved. Its unchecked cross-document consistency criteria are carried forward under Slices 6 and 8 rather than treated as a new scope decision.
- Passing an incremental automated suite does not complete a slice. Manual acceptance and final release gates remain separately recorded.