docs: remove obsolete roadmap and planning docs
This commit is contained in:
@@ -6,36 +6,25 @@ This file applies to the entire repository.
|
|||||||
|
|
||||||
## Read First
|
## Read First
|
||||||
|
|
||||||
Before starting substantial work, read the roadmap that matches the task:
|
Before starting substantial work, read the source-of-truth docs that match the task:
|
||||||
|
|
||||||
- implementation work: [docs/implementation-roadmap.md](/home/kurihada/project/ai-workflow-skill/docs/implementation-roadmap.md)
|
- implementation and repository-structure work: [docs/architecture.md](/home/kurihada/project/ai-workflow-skill/docs/architecture.md), [docs/skill-workspace-monorepo.md](/home/kurihada/project/ai-workflow-skill/docs/skill-workspace-monorepo.md)
|
||||||
- inbox Markdown test-plan work: [docs/tests/inbox/ROADMAP.md](/home/kurihada/project/ai-workflow-skill/docs/tests/inbox/ROADMAP.md)
|
- inbox Markdown test-plan work: [docs/tests/inbox/ROADMAP.md](/home/kurihada/project/ai-workflow-skill/docs/tests/inbox/ROADMAP.md)
|
||||||
- execution-trace workflow: [docs/roadmaps/README.md](/home/kurihada/project/ai-workflow-skill/docs/roadmaps/README.md)
|
|
||||||
|
|
||||||
## Roadmap Update Rule
|
## Documentation Update Rule
|
||||||
|
|
||||||
Updating the relevant roadmap is part of the definition of done.
|
Updating the relevant source-of-truth documentation is part of the definition of done.
|
||||||
|
|
||||||
Do not finish a task and leave its roadmap stale.
|
Do not finish a task and leave its documentation stale.
|
||||||
|
|
||||||
Required behavior:
|
Required behavior:
|
||||||
|
|
||||||
- if you complete or materially change implementation progress, update [docs/implementation-roadmap.md](/home/kurihada/project/ai-workflow-skill/docs/implementation-roadmap.md) in the same change
|
- if you complete or materially change implementation behavior, architecture, runtime ownership, or product structure, update the relevant source-of-truth docs in the same change
|
||||||
- if you add, remove, or materially revise inbox Markdown test cases or test-plan documents, update [docs/tests/inbox/ROADMAP.md](/home/kurihada/project/ai-workflow-skill/docs/tests/inbox/ROADMAP.md) in the same change
|
- if you add, remove, or materially revise inbox Markdown test cases or test-plan documents, update [docs/tests/inbox/ROADMAP.md](/home/kurihada/project/ai-workflow-skill/docs/tests/inbox/ROADMAP.md) in the same change
|
||||||
- when a test-plan document is created, update document progress
|
- when a test-plan document is created, update document progress
|
||||||
- when a test case is written, update authored-case tracking and pending backlog
|
- when a test case is written, update authored-case tracking and pending backlog
|
||||||
- when a planned item is no longer needed, mark it as removed or deferred instead of silently dropping it
|
- when a planned item is no longer needed, mark it as removed or deferred instead of silently dropping it
|
||||||
|
|
||||||
For substantial multi-step work, also keep an execution roadmap under [docs/roadmaps/active/](/home/kurihada/project/ai-workflow-skill/docs/roadmaps/active/) while the work is in progress, then move it to [docs/roadmaps/archive/](/home/kurihada/project/ai-workflow-skill/docs/roadmaps/archive/) when the work is complete.
|
|
||||||
|
|
||||||
Required behavior for execution roadmaps:
|
|
||||||
|
|
||||||
- before starting substantial multi-step work, create or adopt one roadmap file under [docs/roadmaps/active/](/home/kurihada/project/ai-workflow-skill/docs/roadmaps/active/)
|
|
||||||
- write the intended task as checklist items and keep them updated as work progresses
|
|
||||||
- if work is unfinished, blocked, or paused, leave the roadmap in `active/` with current status and next step
|
|
||||||
- when all checklist items are complete, add a completion summary and move the file to `archive/` in the same change
|
|
||||||
- use stable slug filenames and prefer one roadmap file per workstream rather than one file per tiny action
|
|
||||||
|
|
||||||
## Inbox Test-Plan Specific Rule
|
## Inbox Test-Plan Specific Rule
|
||||||
|
|
||||||
For `docs/tests/inbox/`:
|
For `docs/tests/inbox/`:
|
||||||
@@ -53,7 +42,7 @@ For `skills/`:
|
|||||||
- keep each skill self-contained around `SKILL.md`; add `agents/openai.yaml` and bundled assets only when they directly support real invocation
|
- keep each skill self-contained around `SKILL.md`; add `agents/openai.yaml` and bundled assets only when they directly support real invocation
|
||||||
- if a skill depends on an executable or other runtime asset, prefer bundling the required artifact with the skill instead of relying on ad hoc rebuild instructions as the primary workflow
|
- if a skill depends on an executable or other runtime asset, prefer bundling the required artifact with the skill instead of relying on ad hoc rebuild instructions as the primary workflow
|
||||||
- when updating an existing skill, keep `SKILL.md`, `agents/openai.yaml`, and bundled assets consistent with each other
|
- when updating an existing skill, keep `SKILL.md`, `agents/openai.yaml`, and bundled assets consistent with each other
|
||||||
- if you add or materially change a project skill, update [docs/implementation-roadmap.md](/home/kurihada/project/ai-workflow-skill/docs/implementation-roadmap.md) in the same change
|
- if you add or materially change a project skill, update the relevant source-of-truth docs in the same change
|
||||||
|
|
||||||
## Frontend UI Reuse
|
## Frontend UI Reuse
|
||||||
|
|
||||||
|
|||||||
@@ -149,8 +149,7 @@ Do not put these into `orch`:
|
|||||||
- [orch-cli.md](/home/kurihada/project/ai-workflow-skill/docs/orch-cli.md): leader-facing scheduler and task graph control plane
|
- [orch-cli.md](/home/kurihada/project/ai-workflow-skill/docs/orch-cli.md): leader-facing scheduler and task graph control plane
|
||||||
- [worktree-execution.md](/home/kurihada/project/ai-workflow-skill/docs/worktree-execution.md): strict worktree model for code-writing task attempts
|
- [worktree-execution.md](/home/kurihada/project/ai-workflow-skill/docs/worktree-execution.md): strict worktree model for code-writing task attempts
|
||||||
- [council-review.md](/home/kurihada/project/ai-workflow-skill/docs/council-review.md): user-facing three-reviewer brainstorm and voting workflow
|
- [council-review.md](/home/kurihada/project/ai-workflow-skill/docs/council-review.md): user-facing three-reviewer brainstorm and voting workflow
|
||||||
- [implementation-roadmap.md](/home/kurihada/project/ai-workflow-skill/docs/implementation-roadmap.md): handoff-oriented implementation order and next steps
|
- [skill-workspace-monorepo.md](/home/kurihada/project/ai-workflow-skill/docs/skill-workspace-monorepo.md): repository structure, package ownership, and skill workspace layout
|
||||||
- [blog-project-example.md](/home/kurihada/project/ai-workflow-skill/docs/blog-project-example.md): concrete example using both layers
|
|
||||||
|
|
||||||
## Skills
|
## Skills
|
||||||
|
|
||||||
|
|||||||
@@ -1,281 +0,0 @@
|
|||||||
# Blog Project Example
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
This document simulates how a leader should use `orch` and how workers should use `inbox` for a blog MVP.
|
|
||||||
|
|
||||||
Assumptions:
|
|
||||||
|
|
||||||
- stack: `Next.js + PostgreSQL + Prisma`
|
|
||||||
- features: public blog pages, admin login, post CRUD, tags, basic tests
|
|
||||||
- leader owns planning, architecture, dependency decisions, and final integration
|
|
||||||
|
|
||||||
## Task Graph
|
|
||||||
|
|
||||||
The leader decomposes the work into these tasks:
|
|
||||||
|
|
||||||
- `T1`: project skeleton and base wiring
|
|
||||||
- `T2`: data model and migrations
|
|
||||||
- `T3`: auth and API contract
|
|
||||||
- `T4`: backend post and tag APIs
|
|
||||||
- `T5`: admin UI
|
|
||||||
- `T6`: public blog UI
|
|
||||||
- `T7`: QA and acceptance
|
|
||||||
- `T8`: final integration and user-facing handoff
|
|
||||||
|
|
||||||
Dependencies:
|
|
||||||
|
|
||||||
- `T2` depends on `T1`
|
|
||||||
- `T3` depends on `T2`
|
|
||||||
- `T4` depends on `T3`
|
|
||||||
- `T5` depends on `T3`
|
|
||||||
- `T6` depends on `T3`
|
|
||||||
- `T7` depends on `T4`, `T5`, and `T6`
|
|
||||||
- `T8` depends on `T7`
|
|
||||||
|
|
||||||
## Who Uses What
|
|
||||||
|
|
||||||
- leader uses the `orch` skill and `orch` CLI
|
|
||||||
- workers use the `inbox` skill and `inbox` CLI
|
|
||||||
- `orch` is the leader's main interface
|
|
||||||
- `inbox` is the worker's main interface
|
|
||||||
|
|
||||||
## Simulated Leader Flow
|
|
||||||
|
|
||||||
### 1. Create the Run
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch run init --db .agents/coord.db --run blog_mvp_001 --goal "Build blog MVP" --summary "Public blog plus admin CRUD" --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 2. Register Tasks
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch task add --run blog_mvp_001 --task T1 --title "Project skeleton" --summary "Initialize app structure, env template, and DB wiring" --default-to foundation-worker --json
|
|
||||||
orch task add --run blog_mvp_001 --task T2 --title "Data model and migrations" --summary "Create users, posts, tags, and post_tags schema" --default-to db-worker --json
|
|
||||||
orch task add --run blog_mvp_001 --task T3 --title "Auth and API contract" --summary "Define admin auth flow and CRUD contract" --default-to backend-worker --json
|
|
||||||
orch task add --run blog_mvp_001 --task T4 --title "Backend APIs" --summary "Implement post and tag CRUD" --default-to backend-worker --json
|
|
||||||
orch task add --run blog_mvp_001 --task T5 --title "Admin UI" --summary "Implement login and post management pages" --default-to admin-ui-worker --json
|
|
||||||
orch task add --run blog_mvp_001 --task T6 --title "Public blog UI" --summary "Implement homepage, post detail, and tag page" --default-to frontend-worker --json
|
|
||||||
orch task add --run blog_mvp_001 --task T7 --title "QA and acceptance" --summary "Run smoke tests and verify MVP acceptance" --default-to qa-worker --json
|
|
||||||
orch task add --run blog_mvp_001 --task T8 --title "Final integration" --summary "Leader verifies final system and prepares handoff" --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 3. Register Dependencies
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch dep add --run blog_mvp_001 --task T2 --depends-on T1 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T3 --depends-on T2 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T4 --depends-on T3 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T5 --depends-on T3 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T6 --depends-on T3 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T7 --depends-on T4 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T7 --depends-on T5 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T7 --depends-on T6 --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T8 --depends-on T7 --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 4. Ask What Is Ready
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch ready --run blog_mvp_001 --json
|
|
||||||
```
|
|
||||||
|
|
||||||
Expected result:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ready": ["T1"]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 5. Dispatch `T1`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch dispatch --run blog_mvp_001 --task T1 --to foundation-worker --body "Set up the app skeleton, env.example, Prisma initialization, base routes, and startup instructions." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
The leader does not hand-write `inbox send`. `orch dispatch` does that under the hood.
|
|
||||||
|
|
||||||
If nothing else is actionable after dispatch, the leader should block on `orch wait` instead of sleeping:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch wait --run blog_mvp_001 --for task_blocked,task_done,task_failed --after-event 0 --timeout-seconds 900 --json
|
|
||||||
```
|
|
||||||
|
|
||||||
## Simulated Worker Flow
|
|
||||||
|
|
||||||
### 6. Foundation Worker Polls Inbox
|
|
||||||
|
|
||||||
```bash
|
|
||||||
inbox fetch --db .agents/coord.db --agent foundation-worker --status pending --json
|
|
||||||
inbox claim --db .agents/coord.db --agent foundation-worker --thread thr_t1_attempt1 --lease-seconds 1800 --json
|
|
||||||
inbox update --db .agents/coord.db --agent foundation-worker --thread thr_t1_attempt1 --status in_progress --summary "Initializing project and wiring Prisma" --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 7. Foundation Worker Finishes
|
|
||||||
|
|
||||||
```bash
|
|
||||||
inbox done --db .agents/coord.db --agent foundation-worker --thread thr_t1_attempt1 --summary "Project skeleton complete" --body "Project starts locally, DB wiring exists, and env template is present." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
## Leader Reconciliation Loop
|
|
||||||
|
|
||||||
### 8. Leader Reconciles
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch reconcile --run blog_mvp_001 --json
|
|
||||||
orch ready --run blog_mvp_001 --json
|
|
||||||
```
|
|
||||||
|
|
||||||
Expected result after reconciliation:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ready": ["T2"]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 9. Leader Dispatches `T2`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch dispatch --run blog_mvp_001 --task T2 --to db-worker --body "Create the blog schema with users, posts, tags, and post_tags. Include migration files and keep the schema MVP-scoped." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 10. Worker Gets Blocked
|
|
||||||
|
|
||||||
The database worker discovers a missing product decision.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
inbox update --db .agents/coord.db --agent db-worker --thread thr_t2_attempt1 --status blocked --summary "Need post status values" --payload-json '{"question":"Should MVP support only draft and published, or more states?"}' --json
|
|
||||||
inbox wait-reply --db .agents/coord.db --thread thr_t2_attempt1 --after-event 0 --timeout-seconds 1800 --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 11. Leader Reviews Blocked Work Through `orch`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch reconcile --run blog_mvp_001 --json
|
|
||||||
orch blocked --run blog_mvp_001 --json
|
|
||||||
```
|
|
||||||
|
|
||||||
Expected result:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"blocked": [
|
|
||||||
{
|
|
||||||
"task_id": "T2",
|
|
||||||
"thread_id": "thr_t2_attempt1",
|
|
||||||
"question": "Should MVP support only draft and published, or more states?"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 12. Leader Answers Without Leaving the Scheduler
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch answer --run blog_mvp_001 --task T2 --body "Use only draft and published for the MVP. Do not add archived or soft delete yet." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
`orch answer` writes the response back into the mapped inbox thread.
|
|
||||||
|
|
||||||
### 13. `T2` Completes, Then `T3` Runs
|
|
||||||
|
|
||||||
The worker resumes and finishes through `inbox done`.
|
|
||||||
|
|
||||||
The leader continues the same loop:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch reconcile --run blog_mvp_001 --json
|
|
||||||
orch ready --run blog_mvp_001 --json
|
|
||||||
orch dispatch --run blog_mvp_001 --task T3 --to backend-worker --body "Define admin auth and the API contract for posts and tags. Output the contract as a project artifact and keep UI workers unblocked." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
## Parallel Stage
|
|
||||||
|
|
||||||
### 14. `T3` Finishes and Unblocks `T4`, `T5`, and `T6`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch reconcile --run blog_mvp_001 --json
|
|
||||||
orch ready --run blog_mvp_001 --json
|
|
||||||
```
|
|
||||||
|
|
||||||
Expected result:
|
|
||||||
|
|
||||||
```json
|
|
||||||
{
|
|
||||||
"ready": ["T4", "T5", "T6"]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### 15. Leader Dispatches Three Tasks
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch dispatch --run blog_mvp_001 --task T4 --to backend-worker --body "Implement the post and tag APIs exactly as defined by the contract." --json
|
|
||||||
orch dispatch --run blog_mvp_001 --task T5 --to admin-ui-worker --body "Build the admin login and post management UI against the published API contract." --json
|
|
||||||
orch dispatch --run blog_mvp_001 --task T6 --to frontend-worker --body "Build the public blog pages against the published API contract." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 16. Another Block Arrives
|
|
||||||
|
|
||||||
The admin UI worker asks whether to use a rich text editor.
|
|
||||||
|
|
||||||
```bash
|
|
||||||
inbox update --db .agents/coord.db --agent admin-ui-worker --thread thr_t5_attempt1 --status blocked --summary "Editor choice undecided" --payload-json '{"question":"Should the admin editor use a rich text editor or plain textarea in MVP?"}' --json
|
|
||||||
```
|
|
||||||
|
|
||||||
Leader response:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch reconcile --run blog_mvp_001 --json
|
|
||||||
orch blocked --run blog_mvp_001 --json
|
|
||||||
orch answer --run blog_mvp_001 --task T5 --body "Use a plain textarea in MVP. Avoid adding a rich text dependency in this phase." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
The worker then resumes after `inbox wait-reply` wakes with the leader's answer. No side uses blind `sleep` loops.
|
|
||||||
|
|
||||||
## QA and Follow-Up Fix
|
|
||||||
|
|
||||||
### 17. QA Runs After `T4`, `T5`, and `T6`
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch reconcile --run blog_mvp_001 --json
|
|
||||||
orch ready --run blog_mvp_001 --json
|
|
||||||
orch dispatch --run blog_mvp_001 --task T7 --to qa-worker --body "Verify login, post CRUD, public blog pages, and tag filtering. Return minimal repro steps for any failures." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
### 18. QA Finds a Contract Mismatch
|
|
||||||
|
|
||||||
QA reports that deleting a post returns an unexpected response shape.
|
|
||||||
|
|
||||||
The leader can create a follow-up fix task:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
orch task add --run blog_mvp_001 --task T7a --title "Fix delete post response mismatch" --summary "Align delete response with the published API contract" --default-to backend-worker --json
|
|
||||||
orch dep add --run blog_mvp_001 --task T7a --depends-on T7 --json
|
|
||||||
orch reconcile --run blog_mvp_001 --json
|
|
||||||
orch ready --run blog_mvp_001 --json
|
|
||||||
orch dispatch --run blog_mvp_001 --task T7a --to backend-worker --body "Fix the delete post response so it matches the contract used by QA and admin UI." --json
|
|
||||||
```
|
|
||||||
|
|
||||||
## Final Leader Responsibilities
|
|
||||||
|
|
||||||
The leader still owns:
|
|
||||||
|
|
||||||
- keeping the run coherent
|
|
||||||
- answering blocked questions
|
|
||||||
- deciding scope reductions such as textarea instead of rich text
|
|
||||||
- adding fix tasks after QA
|
|
||||||
- verifying final acceptance before handoff
|
|
||||||
|
|
||||||
The workers do not own those cross-task decisions.
|
|
||||||
|
|
||||||
## What This Example Shows
|
|
||||||
|
|
||||||
- leader planning and dispatch happen through `orch`
|
|
||||||
- worker execution happens through `inbox`
|
|
||||||
- blocked handling stays leader-controlled
|
|
||||||
- `inbox` is the durable bus
|
|
||||||
- `orch` is the actual scheduling surface
|
|
||||||
- leader and workers wait on blocking CLI primitives rather than manual sleeps
|
|
||||||
@@ -1,690 +0,0 @@
|
|||||||
# Implementation Roadmap
|
|
||||||
|
|
||||||
## Purpose
|
|
||||||
|
|
||||||
This document is the handoff-oriented implementation plan for the project. It is intentionally short and execution-focused.
|
|
||||||
|
|
||||||
A new agent should be able to read this file, understand the current project state, and immediately know what to build next without re-deriving the whole design.
|
|
||||||
|
|
||||||
## Current Status
|
|
||||||
|
|
||||||
As of now:
|
|
||||||
|
|
||||||
- architecture and workflow docs are written
|
|
||||||
- CLI surfaces for `inbox`, `orch`, worktree execution, and `council-review` are defined
|
|
||||||
- embedded SQLite schema and migrations exist in code
|
|
||||||
- JSON output shapes are defined for the major flows
|
|
||||||
- Go module and initial command skeletons exist
|
|
||||||
- `inbox` and `orch` both compile
|
|
||||||
- shared SQLite schema initialization exists
|
|
||||||
- `inbox` is implemented end-to-end, including send/fetch/claim/renew/update/reply/done/fail/cancel/list/show/watch/wait-reply
|
|
||||||
- `inbox` supports blocking waits, lease renewal, unread fetches backed by per-agent read cursors, `--body-file`, artifact attachments, and structured JSON errors with stable exit codes
|
|
||||||
- integration tests now cover each implemented inbox command, plus the main inbox workflows, wait/watch flows, artifact persistence, unread behavior, and JSON error contracts
|
|
||||||
- a human-readable inbox command test-plan set has been authored under `docs/tests/inbox/`
|
|
||||||
- a human-readable `orch` test-plan set has now been authored under `docs/tests/orch/`, with a `ROADMAP.md`, shared conventions, workflow scenarios, per-command indexes, and concrete case documents aligned to the current CLI surface, including supplemental coverage for key flag validation, ordering/limit behavior, payload-only answers, cleanup errors, and council report default/error contracts
|
|
||||||
- a reusable Codex skill package for `inbox` now exists under `skills/inbox/`, with a formal `SKILL.md`, `agents/openai.yaml`, and a bundled CLI binary asset
|
|
||||||
- reusable Codex skill packages for `orch` and `council-review` now exist under `skills/orch/` and `skills/council-review/`, both using bundled copies of the `orch` CLI binary asset
|
|
||||||
- an inbox skill forward-test plan directory now exists under `docs/tests/inbox-skill/`, with a shared execution template and multiple scenario cases
|
|
||||||
- an orch skill forward-test plan directory now exists under `docs/tests/orch-skill/`, with a shared execution contract and eight leader-side workflow scenarios
|
|
||||||
- a repo-local replay runner now exists at `scripts/run_orch_skill_forward_tests.sh`, and all eight `docs/tests/orch-skill/` cases now include recorded example runs from bundled-CLI replays captured on `2026-03-19`, including added coverage for dependency-gated ready sequencing, active task cancellation, and payload-only blocked answers
|
|
||||||
- the original five `docs/tests/orch-skill/` cases also include recorded real subagent-forward runs captured on `2026-03-19`, with spawned leader and worker agents using the packaged `skills/orch/` and `skills/inbox/` bundles
|
|
||||||
- a council-review skill forward-test plan directory now exists under `docs/tests/council-review-skill/`, with a shared execution contract and nine council workflow scenarios covering end-to-end flow, unanimous-only defaults, timeout/before-tally errors, explicit minority reporting, invalid report filters, strict tally semantics, malformed reviewer JSON, and target-file inputs
|
|
||||||
- an execution-roadmap workflow now exists under `docs/roadmaps/active/` and `docs/roadmaps/archive/` for agent-level work traces and completion archives
|
|
||||||
- a forward-looking web product monorepo plan now exists under `docs/web-product-monorepo.md`, defining the recommended React frontend, `chi` HTTP service, and the package-owned `operator-api` runtime path for future web work
|
|
||||||
- the Phase 1 web-product skeleton is now in place, including root `pnpm` workspace files, a standalone React app under `apps/web`, an initial OpenAPI/events contract under `api/`, and the package-owned `operator-api` backend runtime
|
|
||||||
- the operator API now serves a minimal read-only web API with `chi`, including `/health`, runs list/detail, run task list, blocked-task list, and thread detail endpoints backed by the existing SQLite state
|
|
||||||
- HTTP tests now cover the initial read-only operator API slice, and the new frontend workspace builds successfully with `pnpm run web:build`
|
|
||||||
- Phase 2 frontend work has now started by bootstrapping `apps/web` with copied-in `cadence-ui` tokens and foundational components for button, input, textarea, dialog, form, tabs, card, badge, and alert, with the shared token stylesheet loaded from the frontend entrypoint
|
|
||||||
- the first real Phase 2 read-only operator UI is now implemented in `apps/web`, including routed runs list, run detail, blocked queue, and thread timeline views backed by the existing operator API, plus Tailwind v4 consumer wiring so the source-owned Cadence UI components render correctly in the app
|
|
||||||
- a repository-level skill workspace monorepo migration plan now exists under `docs/skill-workspace-monorepo.md`, defining the target split between runtime packages under `packages/`, agent-facing skill bundles under `skills/`, support apps under `apps/`, and package-based skill packaging flows
|
|
||||||
- the first migration phase for the skill workspace monorepo is now complete: root `go.work` exists, `pnpm-workspace.yaml` now discovers `packages/*`, empty runtime module roots now exist under `packages/`, and a declarative `scripts/skill-bundles.json` plus `scripts/package_skill_runtimes.sh` scaffold now define package-oriented skill bundle metadata from the repo root
|
|
||||||
- `packages/coord-core` now exists as the first real extracted runtime package, containing shared coordination DB/schema, protocol, and store code, and the active coordination runtimes now import `coord-core` instead of root `internal/db`, `internal/store`, and `internal/protocol`
|
|
||||||
- `packages/inbox-runtime` and `packages/orch-runtime` now exist as package-owned runtimes with their own `cmd/` entrypoints and package-local CLI wiring/tests, and the root skill packaging flow now builds `skills/inbox`, `skills/orch`, and `skills/council-review` from package entrypoints instead of root `cmd/` paths
|
|
||||||
- `packages/operator-api` now exists as the package-owned HTTP/query/web backend runtime, with package-local `cmd/operator-api`, app, query, and HTTP transport code plus passing package-local tests
|
|
||||||
- `packages/repo-memory-runtime` now exists as the package-owned `briefdb` runtime imported from the exploratory prototype, `skills/repo-memory` now exists as an agent-facing skill bundle, and the declarative root packaging flow now builds a bundled `skills/repo-memory/assets/briefdb` binary from the package runtime
|
|
||||||
- a repo-local declarative packaging flow now builds bundled skill CLI assets for `inbox`, `orch`, `council-review`, and `repo-memory`
|
|
||||||
- `orch` now implements `run init/show`, `task add`, `dep add`, `ready`, `dispatch`, `reconcile`, `wait`, `blocked`, `answer`, `retry`, `reassign`, `cancel`, `cleanup`, and `status`
|
|
||||||
- `orch` can create runs, gate tasks through dependencies, dispatch work through `inbox`, reconcile worker thread state back into task state, answer blocked tasks, retry or reassign work, cancel tasks or runs, clean attempt worktrees, and create per-attempt Git worktrees during strict dispatch
|
|
||||||
- `orch dispatch` now supports `--repo-path`, `--workspace-root`, and `--strict-worktree`, auto-enables strict worktree mode for code-like tasks inferred from task metadata, resolves committed base revisions, records workspace metadata on attempts, and writes that metadata into inbox task payloads
|
|
||||||
- `orch wait` now blocks on run-scoped task events and reconciles inbox state while polling so leader waits can wake on worker progress without manual sleep loops
|
|
||||||
- `orch council start` now creates a dedicated council run, persists council target input metadata, and dispatches the three fixed reviewer roles through the existing scheduler
|
|
||||||
- `orch council wait` now blocks until the three reviewer tasks reach terminal states or a timeout is reached
|
|
||||||
- `orch council tally` now parses completed reviewer outputs, persists `council_findings`, groups recommendations into `consensus`, `majority`, and `minority`, and persists `council_groups`
|
|
||||||
- `orch council report` now reads persisted `council_groups`, renders human-readable markdown reports, writes markdown artifacts, and persists final report metadata in `council_reports`
|
|
||||||
- automated integration tests now cover the main `orch` scheduler slice, including dependency gating, dispatch, blocked-answer flow, retry, reassign, cancel, cleanup, strict worktree creation, automatic code-task worktree enablement, dirty-repo rejection rules, wait wake/timeout behavior, and council start/wait/tally/report behavior
|
|
||||||
- additional `orch` command and workflow contract tests now cover the full documented Markdown case set under `docs/tests/orch/`, including `run init/show`, `task add` validation, ready ordering, dispatch attempt/thread contracts, blocked latest-question output, answer payload-only and empty-input rejection, cleanup selector and no-match errors, status summaries, reconcile failed-state mapping, strict-worktree dispatch-to-cleanup, and council report default/error behavior
|
|
||||||
|
|
||||||
This means the project now has a working `orch` core scheduler with automatic worktree selection for code-like tasks, strict worktree-backed dispatch, the main leader-side control loop, and the full v1 council workflow from start through final report generation.
|
|
||||||
|
|
||||||
## Source Of Truth
|
|
||||||
|
|
||||||
Read these docs first:
|
|
||||||
|
|
||||||
- [architecture.md](/home/kurihada/project/ai-workflow-skill/docs/architecture.md)
|
|
||||||
- [inbox-cli.md](/home/kurihada/project/ai-workflow-skill/docs/inbox-cli.md)
|
|
||||||
- [orch-cli.md](/home/kurihada/project/ai-workflow-skill/docs/orch-cli.md)
|
|
||||||
- [worktree-execution.md](/home/kurihada/project/ai-workflow-skill/docs/worktree-execution.md)
|
|
||||||
- [council-review.md](/home/kurihada/project/ai-workflow-skill/docs/council-review.md)
|
|
||||||
- [web-product-monorepo.md](/home/kurihada/project/ai-workflow-skill/docs/web-product-monorepo.md)
|
|
||||||
|
|
||||||
Use this roadmap for implementation order, not for protocol design.
|
|
||||||
|
|
||||||
## Project Goal
|
|
||||||
|
|
||||||
Build a Go-based local agent orchestration stack with:
|
|
||||||
|
|
||||||
- `inbox`: worker-facing durable coordination bus
|
|
||||||
- `orch`: leader-facing scheduler and control plane
|
|
||||||
- strict worktree-backed execution for code-writing task attempts
|
|
||||||
- `council-review`: a user-facing three-reviewer brainstorm workflow implemented on top of `orch`
|
|
||||||
|
|
||||||
## Implementation Principles
|
|
||||||
|
|
||||||
- Do not redesign the protocol unless implementation reveals a real contradiction.
|
|
||||||
- Keep `inbox` and `orch` as separate CLIs or command groups, but share one SQLite file.
|
|
||||||
- Prefer one small working path over broad unfinished scaffolding.
|
|
||||||
- Make JSON output stable early.
|
|
||||||
- Implement the happy path first, then add wait/retry/cleanup.
|
|
||||||
|
|
||||||
## Recommended v1 Order
|
|
||||||
|
|
||||||
## Progress Snapshot
|
|
||||||
|
|
||||||
Current implementation status:
|
|
||||||
|
|
||||||
- `Milestone 1: Go Skeleton` is complete
|
|
||||||
- `Milestone 2: Shared DB Layer` is complete enough for both CLIs
|
|
||||||
- `Milestone 3: Inbox Happy Path` is complete
|
|
||||||
- `Milestone 4: Orch Core Scheduling` is complete for the current non-worktree scheduler scope
|
|
||||||
- `Milestone 5: Strict Worktree Support` is complete
|
|
||||||
- `Milestone 6: Waiting Primitives` is complete
|
|
||||||
- `Milestone 7: Council Review` is complete
|
|
||||||
- `Milestone 8: Web Product Phase 1 Skeleton` is complete
|
|
||||||
- `Milestone 9: Web Product Phase 2 Read-Only Operator UI` is complete for the initial operator surface
|
|
||||||
- `Milestone 10: Skill Workspace Monorepo Migration` is complete
|
|
||||||
|
|
||||||
The council review v1 surface is complete, the first web-product skeleton now exists as a separate monorepo workspace plus read-only HTTP backend slice, the first real operator-facing Phase 2 read-only web views now exist on top of the internal Cadence UI component library, and the repository has now completed the migration into a package-owned skill workspace monorepo for the current runtime set.
|
|
||||||
|
|
||||||
### Milestone 1: Go Skeleton
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- initialize the Go module
|
|
||||||
- choose CLI framework and SQLite driver
|
|
||||||
- create package layout
|
|
||||||
- make empty commands compile
|
|
||||||
|
|
||||||
Recommended shape:
|
|
||||||
|
|
||||||
- `packages/coord-core`
|
|
||||||
- `packages/inbox-runtime`
|
|
||||||
- `packages/orch-runtime`
|
|
||||||
- compatibility shims only at the root if still needed temporarily
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- `go build ./...` succeeds
|
|
||||||
- `inbox --help` works
|
|
||||||
- `orch --help` works
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed
|
|
||||||
|
|
||||||
### Milestone 2: Shared DB Layer
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- create the SQLite connection layer
|
|
||||||
- enable required pragmas
|
|
||||||
- add schema initialization and migration mechanism
|
|
||||||
|
|
||||||
Minimum scope:
|
|
||||||
|
|
||||||
- communication tables for `inbox`
|
|
||||||
- scheduling tables for `orch`
|
|
||||||
- shared `events` table
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- `inbox init` initializes the database
|
|
||||||
- `orch` can open the same database successfully
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed for current inbox needs
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- shared DB open layer exists
|
|
||||||
- required SQLite pragmas are applied
|
|
||||||
- embedded schema files exist
|
|
||||||
- `inbox init` applies schema successfully
|
|
||||||
|
|
||||||
Remaining:
|
|
||||||
|
|
||||||
- decide whether `orch` should gain an explicit DB bootstrap check or continue to rely on `inbox init`
|
|
||||||
|
|
||||||
### Milestone 3: Inbox Happy Path
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- implement worker-facing coordination primitives first
|
|
||||||
|
|
||||||
First commands:
|
|
||||||
|
|
||||||
- `inbox init`
|
|
||||||
- `inbox send`
|
|
||||||
- `inbox fetch`
|
|
||||||
- `inbox claim`
|
|
||||||
- `inbox update`
|
|
||||||
- `inbox reply`
|
|
||||||
- `inbox done`
|
|
||||||
- `inbox fail`
|
|
||||||
- `inbox show`
|
|
||||||
|
|
||||||
Delay if needed:
|
|
||||||
|
|
||||||
- `watch`
|
|
||||||
- `wait-reply`
|
|
||||||
- `cancel`
|
|
||||||
- `list`
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- one thread can be created, claimed, updated, replied to, and completed
|
|
||||||
- all major commands support `--json`
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- `inbox init`
|
|
||||||
- `inbox send`
|
|
||||||
- `inbox fetch`
|
|
||||||
- `inbox claim`
|
|
||||||
- `inbox renew`
|
|
||||||
- `inbox update`
|
|
||||||
- `inbox reply`
|
|
||||||
- `inbox done`
|
|
||||||
- `inbox fail`
|
|
||||||
- `inbox cancel`
|
|
||||||
- `inbox list`
|
|
||||||
- `inbox show`
|
|
||||||
- `inbox watch`
|
|
||||||
- `inbox wait-reply`
|
|
||||||
|
|
||||||
### Milestone 4: Orch Core Scheduling
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- implement run/task/dependency/attempt orchestration on top of `inbox`
|
|
||||||
|
|
||||||
First commands:
|
|
||||||
|
|
||||||
- `orch run init`
|
|
||||||
- `orch task add`
|
|
||||||
- `orch dep add`
|
|
||||||
- `orch ready`
|
|
||||||
- `orch dispatch`
|
|
||||||
- `orch reconcile`
|
|
||||||
- `orch blocked`
|
|
||||||
- `orch answer`
|
|
||||||
- `orch status`
|
|
||||||
|
|
||||||
Delay if needed:
|
|
||||||
|
|
||||||
- `retry`
|
|
||||||
- `reassign`
|
|
||||||
- `cancel`
|
|
||||||
- `cleanup`
|
|
||||||
- `wait`
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- a leader can create a run
|
|
||||||
- add tasks and dependencies
|
|
||||||
- dispatch a task through `orch`
|
|
||||||
- see worker state reflected back after `reconcile`
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed for the current non-worktree scheduling scope
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- `orch run init`
|
|
||||||
- `orch run show`
|
|
||||||
- `orch task add`
|
|
||||||
- `orch dep add`
|
|
||||||
- `orch ready`
|
|
||||||
- `orch dispatch`
|
|
||||||
- `orch reconcile`
|
|
||||||
- `orch wait`
|
|
||||||
- `orch blocked`
|
|
||||||
- `orch answer`
|
|
||||||
- `orch retry`
|
|
||||||
- `orch reassign`
|
|
||||||
- `orch cancel`
|
|
||||||
- `orch cleanup`
|
|
||||||
- `orch status`
|
|
||||||
- CLI integration tests cover dispatch/reconcile, dependency gating, blocked-answer flow, wait wake/timeout, retry, reassign, cancel, cleanup, and non-ready dispatch rejection
|
|
||||||
|
|
||||||
Remaining:
|
|
||||||
|
|
||||||
- none for the current scheduler control surface
|
|
||||||
|
|
||||||
### Milestone 5: Strict Worktree Support
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- ensure code-writing tasks execute in isolated worktrees
|
|
||||||
|
|
||||||
First scope:
|
|
||||||
|
|
||||||
- `orch dispatch` resolves `base_ref`
|
|
||||||
- strict mode fails when the repo is dirty and no explicit base is provided
|
|
||||||
- worktree path and branch name are stored on the attempt
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- a code task dispatch creates a real worktree
|
|
||||||
- the assigned worktree path appears in attempt metadata and inbox payload
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- `orch dispatch` can use `--repo-path` to target a source Git repository without relying on the caller's current working directory
|
|
||||||
- `orch dispatch --strict-worktree` resolves `base_ref` to a concrete commit, defaults to `HEAD` on clean repositories, and rejects dirty repositories when `--base-ref` is omitted
|
|
||||||
- `orch dispatch` auto-selects worktree mode for code-like tasks inferred from existing task metadata such as worker role and acceptance markers
|
|
||||||
- dispatch creates a fresh branch and Git worktree per attempt and persists `base_ref`, `base_commit`, `branch_name`, `worktree_path`, and `workspace_status`
|
|
||||||
- dispatch writes workspace metadata into the inbox task payload for worker runtimes
|
|
||||||
- reconcile now advances `workspace_status` from `created` to `active`, `completed`, or `abandoned` based on thread state
|
|
||||||
- `orch cleanup` removes completed or abandoned worktrees and marks attempt workspace state as `cleaned`
|
|
||||||
- CLI integration tests cover strict worktree creation, auto-enabled worktrees for code-like tasks, explicit-base dispatch on dirty repos, strict dirty-repo rejection, and cleanup
|
|
||||||
|
|
||||||
Remaining:
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
### Milestone 6: Waiting Primitives
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- replace blind polling with blocking CLI waits
|
|
||||||
|
|
||||||
Commands:
|
|
||||||
|
|
||||||
- `orch wait`
|
|
||||||
- `inbox wait-reply`
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- leader can block on new task events
|
|
||||||
- blocked worker can block on reply events
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- `orch wait`
|
|
||||||
- `inbox wait-reply`
|
|
||||||
- `orch wait` reconciles inbox state while polling and wakes on matching run-scoped `task_*` events
|
|
||||||
- CLI integration tests cover wait wake and timeout behavior
|
|
||||||
|
|
||||||
### Milestone 7: Council Review
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- implement the user-facing three-reviewer brainstorming workflow
|
|
||||||
|
|
||||||
First commands:
|
|
||||||
|
|
||||||
- `orch council start`
|
|
||||||
- `orch council wait`
|
|
||||||
- `orch council tally`
|
|
||||||
- `orch council report`
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- one council run can dispatch three reviewers
|
|
||||||
- tally grouped recommendations into `consensus`, `majority`, and `minority`
|
|
||||||
- produce stable JSON and a markdown report artifact
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- council-specific storage now includes run metadata, reviewer assignment rows, reviewer findings/groups tables, persisted council input references, and final report metadata
|
|
||||||
- `orch council start`
|
|
||||||
- `orch council wait`
|
|
||||||
- `orch council tally`
|
|
||||||
- `orch council report`
|
|
||||||
- council start creates a dedicated run, stores council target input metadata, creates reviewer tasks `CR1` through `CR3`, and dispatches the fixed reviewer roles `architecture-reviewer`, `implementation-reviewer`, and `risk-reviewer`
|
|
||||||
- council wait blocks until all three reviewer tasks reach terminal states or timeout
|
|
||||||
- council tally parses structured reviewer outputs from completed reviewer result messages and persists grouped recommendations
|
|
||||||
- council report reads grouped recommendations from persisted `council_groups`, supports `--show` bucket filtering, renders markdown report artifacts, and persists report metadata plus artifact paths
|
|
||||||
- CLI integration tests cover council start dispatch, metadata persistence, council wait wake/timeout behavior, council tally grouping in `normal` and `strict` modes, and council report default/all/JSON rendering behavior
|
|
||||||
|
|
||||||
Remaining:
|
|
||||||
|
|
||||||
- none for the v1 council workflow
|
|
||||||
|
|
||||||
### Milestone 8: Web Product Phase 1 Skeleton
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- create the first durable web-product backbone without replacing the existing CLI workflows
|
|
||||||
|
|
||||||
Add:
|
|
||||||
|
|
||||||
- root `pnpm` workspace files
|
|
||||||
- `apps/web`
|
|
||||||
- `api/openapi.yaml`
|
|
||||||
- `api/events.md`
|
|
||||||
- `packages/operator-api`
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- the repository contains the agreed monorepo skeleton
|
|
||||||
- `orchd` can serve a small read-only HTTP API against the existing database
|
|
||||||
- the frontend workspace builds and can evolve independently in later milestones
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- root `package.json`, `pnpm-workspace.yaml`, and `pnpm-lock.yaml` now define the monorepo JS workspace
|
|
||||||
- `apps/web` now contains a Vite + React + TypeScript + TanStack Router + TanStack Query frontend shell
|
|
||||||
- `packages/operator-api/cmd/operator-api` now opens the shared SQLite database, applies migrations, and serves a `chi` router with graceful shutdown handling
|
|
||||||
- `packages/operator-api/internal/query` now exposes run list/detail, run tasks, blocked-task, and thread-detail read models for the web surface
|
|
||||||
- `packages/operator-api/internal/app` now provides a thin web-service boundary over the new read service
|
|
||||||
- `packages/operator-api/internal/httpapi` now owns HTTP routing, JSON/error helpers, and the initial read-only endpoints
|
|
||||||
- `api/openapi.yaml` now documents the implemented read-only endpoints and response shapes
|
|
||||||
- `api/events.md` now captures the planned SSE contract for the next realtime slice
|
|
||||||
- `go test ./...` covers the new HTTP slice, and `pnpm run web:build` succeeds for the frontend workspace
|
|
||||||
|
|
||||||
Remaining:
|
|
||||||
|
|
||||||
- Phase 2 should turn the frontend shell into actual run, task-board, blocked-queue, and thread-detail pages using the new HTTP contract
|
|
||||||
|
|
||||||
### Milestone 9: Web Product Phase 2 Read-Only Operator UI
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- implement the first real operator-facing read-only web UI on top of the Phase 1 shell and current operator API contract
|
|
||||||
|
|
||||||
Add:
|
|
||||||
|
|
||||||
- copied-in `cadence-ui` primitives and token CSS under `apps/web/src/cadence-ui`
|
|
||||||
- Tailwind v4 consumer setup so the copied-in Cadence UI source renders correctly in the app
|
|
||||||
- routed screens for runs list, run detail, blocked queue, and thread timeline
|
|
||||||
- typed frontend read helpers for the current operator API endpoints
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- `apps/web` imports the shared Cadence token stylesheet from the frontend entrypoint
|
|
||||||
- the Cadence UI source-owned components render correctly inside the consumer app
|
|
||||||
- the first routed read-only operator screens ship against the existing operator API contract
|
|
||||||
- future web screens can compose from `cadence-ui` primitives instead of raw one-off HTML controls
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed for the first read-only operator slice
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- `apps/web/src/cadence-ui/` now contains copied-in Cadence UI tokens plus foundational components for button, input, textarea, dialog, form, tabs, card, badge, and alert
|
|
||||||
- `apps/web/package.json` now includes the required Radix, `react-hook-form`, `motion`, and utility dependencies for the copied-in components
|
|
||||||
- `apps/web/src/main.tsx` now imports `./cadence-ui/tokens/styles.css`
|
|
||||||
- `apps/web` now includes Tailwind v4 consumer wiring in Vite and the global stylesheet so the copied-in Cadence UI utility classes render correctly
|
|
||||||
- `apps/web` now includes a typed frontend read layer for runs, run detail, blocked queue aggregation, and thread detail
|
|
||||||
- `apps/web` now ships routed runs list, run detail, blocked queue, and thread timeline pages using Cadence UI source-owned components for cards, tabs, alerts, inputs, badges, buttons, dialogs, and textareas
|
|
||||||
- the run detail view now includes grouped task boards and blocked-task summaries, while the thread timeline view now shows message payload and artifact metadata inspectors
|
|
||||||
- `pnpm run web:build` succeeds for the new operator UI, and local Vite-to-`orchd` proxy smoke checks confirm the frontend can read the seeded runs, blocked, and thread endpoints through the dev server
|
|
||||||
|
|
||||||
Remaining:
|
|
||||||
|
|
||||||
- add operator write actions such as answer, retry, reassign, and cancel on top of the new read-only screens
|
|
||||||
- add council result/report views and realtime event handling on top of the current routed UI
|
|
||||||
- install additional `cadence-ui` components on demand as the product surface expands
|
|
||||||
|
|
||||||
### Milestone 10: Skill Workspace Monorepo Migration
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- restructure the repository into a true multi-package monorepo whose primary deliverables are skills and skill runtimes
|
|
||||||
|
|
||||||
Add:
|
|
||||||
|
|
||||||
- `packages/` as the source of truth for Go and future runtime implementations
|
|
||||||
- `skills/` as the source of truth for agent-facing skill bundles and bundled assets
|
|
||||||
- a shared coordination kernel package for the `inbox` / `orch` / `orchd` stack only
|
|
||||||
- a package-based skill packaging flow driven by workspace metadata rather than root-path assumptions
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- `inbox`, `orch`, and other runtime-backed skills build from `packages/` rather than root-owned runtime code
|
|
||||||
- root `skills/` bundles package from declarative bundle metadata
|
|
||||||
- root runtime ownership under `cmd/` and `internal/` is removed or reduced to workspace orchestration only
|
|
||||||
- support apps such as `apps/web` remain usable without being treated as the primary deliverable
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- the repository-level migration design is captured in `docs/skill-workspace-monorepo.md`
|
|
||||||
- the target package split now distinguishes `coord-core`, runtime packages, skill bundles, and support apps
|
|
||||||
- the migration plan now defines phased extraction for `coord-core`, `inbox-runtime`, `orch-runtime`, `operator-api`, and `repo-memory-runtime`
|
|
||||||
- root `go.work` now includes the package-owned runtime module roots under `packages/`
|
|
||||||
- `pnpm-workspace.yaml` now includes `packages/*`, and root `package.json` now exposes monorepo bundle planning, validation, and Go package test scripts
|
|
||||||
- initial module roots now exist for `packages/coord-core`, `packages/inbox-runtime`, `packages/orch-runtime`, `packages/operator-api`, and `packages/repo-memory-runtime`
|
|
||||||
- `scripts/skill-bundles.json` now records the first package-oriented skill bundle metadata, including the future `repo-memory` runtime mapping
|
|
||||||
- `scripts/package_skill_runtimes.sh` now provides a declarative bundle plan/validate scaffold that targets package paths rather than hardcoded root runtime paths
|
|
||||||
- `packages/coord-core/db` now owns the shared SQLite open, pragmas, migrations, and coordination schema files
|
|
||||||
- `packages/coord-core/protocol` now owns the shared JSON and CLI error helpers used across the coordination stack
|
|
||||||
- `packages/coord-core/store` now owns the shared inbox, orch, and council store logic plus its coordination-domain tests
|
|
||||||
- package-owned coordination runtimes now depend on `packages/coord-core` instead of root `internal/db`, `internal/store`, or root `internal/protocol`
|
|
||||||
- package-oriented Go validation now runs through the workspace runtime packages, and `packages/coord-core` passes `go test ./...`
|
|
||||||
- `packages/inbox-runtime/cmd/inbox` plus `packages/inbox-runtime/internal/cli/inbox` now provide a package-owned inbox runtime and pass `go test ./...`
|
|
||||||
- `packages/orch-runtime/cmd/orch` plus `packages/orch-runtime/internal/cli/orch` now provide a package-owned orch runtime and pass `go test ./...`
|
|
||||||
- `scripts/skill-bundles.json` now marks `inbox`, `orch`, and `council-review` as ready package-backed bundles
|
|
||||||
- `scripts/package_skill_runtimes.sh package` now builds and installs `skills/inbox/assets/inbox`, `skills/orch/assets/orch`, and `skills/council-review/assets/orch` from package entrypoints
|
|
||||||
- the legacy `scripts/package_skill_clis.sh` entrypoint now delegates to the declarative package-oriented packaging flow instead of hardcoding root `cmd/` paths
|
|
||||||
- `packages/operator-api/cmd/operator-api` plus `packages/operator-api/internal/{app,httpapi,query}` now provide a package-owned web backend runtime and pass `go test ./...`
|
|
||||||
- `packages/repo-memory-runtime/cmd/briefdb` plus its package-local `internal/brief` and `internal/store` now provide a package-owned repo-memory runtime and pass `go test ./...`
|
|
||||||
- `skills/repo-memory/` now exists with `SKILL.md`, `agents/openai.yaml`, and a bundled `assets/briefdb` binary produced by the declarative packaging flow
|
|
||||||
- `docs/tests/repo-memory-skill/` now exists with a README plus an initial forward-test case covering search-before-add and durable entry retrieval through the bundled skill
|
|
||||||
- legacy root runtime implementation directories under `internal/` have been removed now that package-owned runtimes and package-backed skill bundles are in place
|
|
||||||
- legacy root `cmd/` compatibility shims have also been removed, so package-owned runtimes under `packages/*/cmd/*` are now the only maintained Go entrypoints
|
|
||||||
|
|
||||||
Remaining:
|
|
||||||
|
|
||||||
- none for the current migration slice
|
|
||||||
- optional follow-up: archive or delete the external `../tmp/briefdb` prototype once the imported runtime is treated as the sole maintained source
|
|
||||||
|
|
||||||
## Immediate Next Task
|
|
||||||
|
|
||||||
If a new agent is taking over now, the next concrete step should be:
|
|
||||||
|
|
||||||
1. treat `Milestone 10: Skill Workspace Monorepo Migration` as complete for the current runtime set and keep new runtime work inside `packages/` plus `skills/` rather than recreating root-owned implementations
|
|
||||||
2. resume product-facing work on top of the new workspace, beginning with the next highest-priority feature slice rather than more repository reshuffling
|
|
||||||
3. keep the authored skill forward-test plans under `docs/tests/*-skill/` synchronized as new skills or runtime-backed bundles are added
|
|
||||||
4. optionally archive or delete the external `../tmp/briefdb` prototype after confirming no remaining workflow depends on it
|
|
||||||
|
|
||||||
The inbox implementation and its human-readable test-plan set are already in place, `orch` supports the main scheduler loop plus the complete council start/wait/tally/report workflow, the web product now has its first real operator-facing read surfaces, and the repository now uses package-owned runtimes plus agent-facing skill bundles as its primary structure, so the next step should be feature work and incremental new skill additions on top of that workspace rather than further structural churn.
|
|
||||||
|
|
||||||
## Recommended Driver Choices
|
|
||||||
|
|
||||||
Current recommendation:
|
|
||||||
|
|
||||||
- CLI framework: `Cobra`
|
|
||||||
- SQLite driver: pure-Go driver
|
|
||||||
|
|
||||||
Reason:
|
|
||||||
|
|
||||||
- command surfaces are already command-group heavy
|
|
||||||
- pure-Go SQLite keeps distribution simpler
|
|
||||||
|
|
||||||
## Suggested Early Tests
|
|
||||||
|
|
||||||
Completed so far:
|
|
||||||
|
|
||||||
- schema init test
|
|
||||||
- inbox command-level CLI integration coverage aligned to `docs/tests/inbox/`
|
|
||||||
- inbox workflow lifecycle coverage
|
|
||||||
- orch scheduler lifecycle coverage for run/task/dependency/dispatch/reconcile
|
|
||||||
- orch blocked-question and answer coverage
|
|
||||||
- orch strict worktree creation and dirty-repo policy coverage
|
|
||||||
- orch wait wake and timeout coverage
|
|
||||||
- orch retry, reassign, cancel, and cleanup coverage
|
|
||||||
- orch council start dispatch and persistence coverage
|
|
||||||
- orch council wait wake and timeout coverage
|
|
||||||
- orch council tally grouping coverage
|
|
||||||
- orch council report default markdown, `--show all`, and JSON shape coverage
|
|
||||||
|
|
||||||
Still recommended before the codebase grows too much:
|
|
||||||
|
|
||||||
- worktree path generation test
|
|
||||||
|
|
||||||
## Inbox Test Documentation Roadmap
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- completed for the current inbox CLI surface
|
|
||||||
- command-level and workflow Markdown documents exist under `docs/tests/inbox/`
|
|
||||||
- future updates should revise this section only when new inbox commands or materially new CLI-visible behavior are added
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- make inbox behavior easy for a new agent to understand and convert into automated tests without re-reading all code paths
|
|
||||||
|
|
||||||
Directory layout:
|
|
||||||
|
|
||||||
- `docs/tests/inbox/README.md`
|
|
||||||
- `docs/tests/inbox/_shared/README.md`
|
|
||||||
- `docs/tests/inbox/workflows/README.md`
|
|
||||||
- `docs/tests/inbox/<command>/README.md`
|
|
||||||
- `docs/tests/inbox/<command>/<case-slug>.md`
|
|
||||||
|
|
||||||
Initial command folders:
|
|
||||||
|
|
||||||
- `init`
|
|
||||||
- `send`
|
|
||||||
- `fetch`
|
|
||||||
- `claim`
|
|
||||||
- `renew`
|
|
||||||
- `update`
|
|
||||||
- `reply`
|
|
||||||
- `done`
|
|
||||||
- `fail`
|
|
||||||
- `cancel`
|
|
||||||
- `list`
|
|
||||||
- `show`
|
|
||||||
- `watch`
|
|
||||||
- `wait-reply`
|
|
||||||
|
|
||||||
Documentation rules:
|
|
||||||
|
|
||||||
- organize by folder with a `README.md` entrypoint
|
|
||||||
- command folders use `README.md` as an index only
|
|
||||||
- each command case lives in its own Markdown file named after the case slug
|
|
||||||
- do not use numeric test case IDs
|
|
||||||
- identify command cases by concrete file path
|
|
||||||
- keep one command per directory, plus `workflows/` for cross-command behavior
|
|
||||||
- use `_shared/` for common fixtures, database conventions, exit-code rules, and shared JSON assertions
|
|
||||||
|
|
||||||
Required per-case structure:
|
|
||||||
|
|
||||||
- `用例意义`
|
|
||||||
- `前置条件`
|
|
||||||
- `输入`
|
|
||||||
- `预期输出`
|
|
||||||
- `断言结论`
|
|
||||||
|
|
||||||
Case file naming pattern:
|
|
||||||
|
|
||||||
- `<stable-slug>.md`
|
|
||||||
|
|
||||||
Authoring order:
|
|
||||||
|
|
||||||
1. global conventions in `docs/tests/inbox/README.md`
|
|
||||||
2. shared fixtures and assertion helpers in `docs/tests/inbox/_shared/README.md`
|
|
||||||
3. lifecycle flow in `docs/tests/inbox/workflows/README.md`
|
|
||||||
4. core command docs: `send`, `fetch`, `claim`, `reply`, `done`, `show`
|
|
||||||
5. secondary command docs: `renew`, `update`, `fail`, `cancel`, `list`
|
|
||||||
6. waiting and read-state docs: `watch`, `wait-reply`, unread and mark-read workflow cases
|
|
||||||
|
|
||||||
Definition of done:
|
|
||||||
|
|
||||||
- every implemented inbox command has a dedicated document directory
|
|
||||||
- every documented case contains concrete input and expected output
|
|
||||||
- shared assumptions are centralized instead of copied into each command file
|
|
||||||
- a new agent can pick any case and implement it as an automated test with minimal additional discovery
|
|
||||||
|
|
||||||
## Orch Test Documentation Roadmap
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
- current planned `orch` Markdown test-plan set is authored under `docs/tests/orch/`
|
|
||||||
- global conventions, shared fixtures, workflow scenarios, per-command indexes, and concrete case documents now exist
|
|
||||||
- `docs/tests/orch/ROADMAP.md` now tracks authored counts, document progress, and future additions in the same style used for `docs/tests/inbox/ROADMAP.md`
|
|
||||||
- supplemental command-visible cases now cover high-value gaps in `task add`, `ready`, `answer`, `cleanup`, and `council report`
|
|
||||||
|
|
||||||
Goal:
|
|
||||||
|
|
||||||
- make `orch` behavior easy for a new agent to understand and convert into automated tests or manual validation steps without re-reading all scheduler code paths
|
|
||||||
|
|
||||||
Directory layout:
|
|
||||||
|
|
||||||
- `docs/tests/orch/README.md`
|
|
||||||
- `docs/tests/orch/ROADMAP.md`
|
|
||||||
- `docs/tests/orch/_shared/README.md`
|
|
||||||
- `docs/tests/orch/workflows/README.md`
|
|
||||||
- `docs/tests/orch/<leaf-command>/README.md`
|
|
||||||
- `docs/tests/orch/<leaf-command>/<case-slug>.md`
|
|
||||||
|
|
||||||
Current document model:
|
|
||||||
|
|
||||||
- one folder per implemented leaf command
|
|
||||||
- each command folder uses `README.md` as an index only
|
|
||||||
- workflow cases live in `docs/tests/orch/workflows/README.md`
|
|
||||||
- detailed case backlog and authored-case register are tracked centrally in `docs/tests/orch/ROADMAP.md`
|
|
||||||
|
|
||||||
Next documentation step:
|
|
||||||
|
|
||||||
- keep `docs/tests/orch/ROADMAP.md` synchronized when new `orch` CLI behavior or workflow cases are added, removed, or materially revised
|
|
||||||
|
|
||||||
## Out Of Scope For First Pass
|
|
||||||
|
|
||||||
Do not block v1 on these:
|
|
||||||
|
|
||||||
- advanced auth or permissions
|
|
||||||
- background daemons beyond blocking CLI commands
|
|
||||||
|
|
||||||
## Handoff Notes For Future Agents
|
|
||||||
|
|
||||||
- The design phase is complete enough to start coding.
|
|
||||||
- Avoid reopening major design questions unless implementation forces it.
|
|
||||||
- The repository already has compiling binaries and working schema init.
|
|
||||||
- The inbox test-plan docs are in place; keep them synchronized before and during broad `orch` implementation.
|
|
||||||
- inbox command test-plan folders use `README.md` as an index plus one file per case; keep any further structural changes consistent with the documented rules above.
|
|
||||||
- Preserve the separation:
|
|
||||||
- `inbox` handles communication
|
|
||||||
- `orch` handles scheduling
|
|
||||||
- `council-review` is a workflow on top of `orch`
|
|
||||||
- When writing inbox test docs, use the folder-per-command structure described above and keep cross-command cases inside `docs/tests/inbox/workflows/`.
|
|
||||||
- Treat this file as the implementation entrypoint for new agents.
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# Execution Roadmaps
|
|
||||||
|
|
||||||
## Purpose
|
|
||||||
|
|
||||||
This directory tracks agent execution roadmaps for substantial multi-step work.
|
|
||||||
|
|
||||||
These files are not project-level design roadmaps.
|
|
||||||
They are execution traces that make active work, partial progress, and unfinished state visible to the next agent.
|
|
||||||
|
|
||||||
## Directory Layout
|
|
||||||
|
|
||||||
- `active/`: in-progress, blocked, or paused workstreams
|
|
||||||
- `archive/`: completed workstreams kept for historical traceability
|
|
||||||
- `TEMPLATE.md`: starting point for new roadmap files
|
|
||||||
|
|
||||||
## Workflow
|
|
||||||
|
|
||||||
1. Before starting substantial multi-step work, create or adopt one roadmap file under `active/`.
|
|
||||||
2. Write the intended work as checklist items.
|
|
||||||
3. Update the checklist and status as work progresses.
|
|
||||||
4. If the work pauses or remains unfinished, leave the file in `active/` with the latest next step.
|
|
||||||
5. When the work is complete, add a completion summary and move the file to `archive/`.
|
|
||||||
|
|
||||||
## Naming
|
|
||||||
|
|
||||||
- use stable slug filenames
|
|
||||||
- prefer one roadmap file per workstream
|
|
||||||
- avoid creating a new roadmap file for trivial single-step actions
|
|
||||||
|
|
||||||
Example filename:
|
|
||||||
|
|
||||||
```text
|
|
||||||
docs/roadmaps/active/add-inbox-skill-tests.md
|
|
||||||
```
|
|
||||||
|
|
||||||
## Required Sections
|
|
||||||
|
|
||||||
Each roadmap file should include:
|
|
||||||
|
|
||||||
- `Title`
|
|
||||||
- `Status`
|
|
||||||
- `Owner`
|
|
||||||
- `Started At`
|
|
||||||
- `Goal`
|
|
||||||
- `Scope`
|
|
||||||
- `Checklist`
|
|
||||||
- `Files`
|
|
||||||
- `Decisions`
|
|
||||||
- `Blockers`
|
|
||||||
- `Next Step`
|
|
||||||
- `Completion Summary`
|
|
||||||
|
|
||||||
## Checklist Rule
|
|
||||||
|
|
||||||
- use Markdown checkboxes
|
|
||||||
- break work into concrete verifiable steps
|
|
||||||
- mark completed items with `- [x]`
|
|
||||||
- leave incomplete items visible rather than deleting them silently
|
|
||||||
|
|
||||||
## Relationship To Other Roadmaps
|
|
||||||
|
|
||||||
- use [../implementation-roadmap.md](../implementation-roadmap.md) for project-level implementation state
|
|
||||||
- use [../tests/inbox/ROADMAP.md](../tests/inbox/ROADMAP.md) for inbox test-plan state
|
|
||||||
- use this directory for per-workstream execution tracking
|
|
||||||
@@ -1,50 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `in_progress`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- agent or workstream owner
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `YYYY-MM-DD`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- one or two sentences describing the intended outcome
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- what is in scope
|
|
||||||
- what is explicitly out of scope if needed
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [ ] define the concrete work items
|
|
||||||
- [ ] implement or document the next step
|
|
||||||
- [ ] validate the result
|
|
||||||
- [ ] update any required project-level roadmap
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- list the primary files expected to change
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- record key decisions and why they were taken
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- list current blockers
|
|
||||||
- write `none` if there are no blockers
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- describe the next action another agent should take
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- fill this in when moving the file to `archive/`
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# Add Execution Roadmap Workflow
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- introduce a repository-level execution-roadmap workflow so substantial agent work leaves a durable trace while active and a completion record after archiving
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- update `AGENTS.md` with active/archive roadmap rules
|
|
||||||
- create `docs/roadmaps/README.md`
|
|
||||||
- create `docs/roadmaps/TEMPLATE.md`
|
|
||||||
- create tracked `active/` and `archive/` directories
|
|
||||||
- update `docs/implementation-roadmap.md`
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] define the execution-roadmap workflow and naming rules
|
|
||||||
- [x] update `AGENTS.md` to require active roadmap files for substantial multi-step work
|
|
||||||
- [x] add `docs/roadmaps/README.md`
|
|
||||||
- [x] add `docs/roadmaps/TEMPLATE.md`
|
|
||||||
- [x] create tracked `docs/roadmaps/active/` and `docs/roadmaps/archive/`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `AGENTS.md`
|
|
||||||
- `docs/roadmaps/README.md`
|
|
||||||
- `docs/roadmaps/TEMPLATE.md`
|
|
||||||
- `docs/roadmaps/active/.gitkeep`
|
|
||||||
- `docs/roadmaps/archive/.gitkeep`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- use `docs/roadmaps/active/` and `docs/roadmaps/archive/` rather than a single mixed directory
|
|
||||||
- keep project-level roadmaps separate from per-workstream execution traces
|
|
||||||
- require one roadmap file per substantial workstream rather than one file per tiny action
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- use `docs/roadmaps/TEMPLATE.md` as the starting point for the next substantial multi-step task
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- the repository now has a documented execution-roadmap workflow, tracked directories for active and archived workstreams, and a reusable template for future agents
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Direct Replay Of Council Review Skill Forward Tests
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Execute the documented `docs/tests/council-review-skill/` forward-test scenarios with real subagents and bundled skill assets.
|
|
||||||
- Collect pass/fail outcomes and concrete evidence for the current skill bundle behavior.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Run the current council-review skill test-plan cases against isolated temp DBs.
|
|
||||||
- Use `skills/council-review/` for the leader and `skills/inbox/` for reviewers where the case requires reviewer completion.
|
|
||||||
- Validate outcomes from the main thread with bundled CLI commands.
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review the council-review skill test-plan directory and choose execution order.
|
|
||||||
- [x] Run `council-report-rejects-before-tally-through-bundled-cli`.
|
|
||||||
- [x] Run `council-wait-timeout-through-bundled-cli`.
|
|
||||||
- [x] Run `council-brainstorm-end-to-end-through-bundled-cli`.
|
|
||||||
- [x] Run `council-unanimous-only-default-report-through-bundled-cli`.
|
|
||||||
- [x] Summarize results and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/tests/council-review-skill/README.md`
|
|
||||||
- `docs/tests/council-review-skill/*.md`
|
|
||||||
- `docs/roadmaps/archive/council-review-skill-direct-replay.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Start with the single-agent error/timeout cases to verify the leader skill behavior before spending time on four-agent end-to-end runs.
|
|
||||||
- Keep each case in its own temp directory and DB for isolation.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- If desired, append `Recorded Example Run` sections to the council-review skill case docs using the captured run ids and temp paths from this replay.
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `council-report-rejects-before-tally-through-bundled-cli`: passed on `/tmp/council-skill-report-before-tally.AXZn2p/coord.db`; main-thread replay returned exit code `30` with `invalid_state` and the expected “run council tally first” message.
|
|
||||||
- `council-wait-timeout-through-bundled-cli`: passed on `/tmp/council-skill-wait-timeout.csirvt/coord.db`; main-thread replay returned `woke == false`, `all_complete == false`, and three visible reviewer statuses while `orch status` showed the run still `running`.
|
|
||||||
- `council-brainstorm-end-to-end-through-bundled-cli`: passed on `/tmp/council-skill-e2e.DLaTj6/coord.db`; main-thread validation confirmed `run.status == done`, three reviewer tasks `done`, default report `show == ["consensus","majority"]`, summary counts `1/1/1`, and markdown artifact `/tmp/council-skill-e2e.DLaTj6/.orch/reports/council_skill_001.md`.
|
|
||||||
- `council-unanimous-only-default-report-through-bundled-cli`: passed on `/tmp/council-skill-unanimous.MzF1lp/coord.db`; main-thread validation confirmed `run.status == done`, default report `show == ["consensus"]`, preserved summary counts `1/1/1`, and markdown artifact `/tmp/council-skill-unanimous.MzF1lp/.orch/reports/council_skill_002.md`.
|
|
||||||
- One reviewer agent in the unanimous-only run had an initial thread-id parsing misstep, but it retried through the bundled inbox CLI and finished successfully; the case still passed under independent main-thread validation.
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Replay New Council Review Skill Gap-Fill Cases With Sub-Agents
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Execute the five newly added `docs/tests/council-review-skill/` gap-fill cases with real sub-agents and bundled skill assets.
|
|
||||||
- Capture concrete pass/fail evidence for each case and record the outcome in the workstream trace.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Run the five new `council-review-skill` case docs with sub-agents rather than direct CLI replay alone.
|
|
||||||
- Use `skills/council-review/` for leader roles and `skills/inbox/` for reviewer roles where the case requires reviewer completion.
|
|
||||||
- Validate outcomes from the main thread with bundled CLI commands and temp-path evidence.
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review the relevant roadmap and case docs before execution.
|
|
||||||
- [x] Launch sub-agent runners for the five new council-review skill cases.
|
|
||||||
- [x] Collect final evidence and determine pass/fail for each case.
|
|
||||||
- [x] Update docs or recorded evidence as needed and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/tests/council-review-skill/README.md`
|
|
||||||
- `docs/tests/council-review-skill/council-report-show-all-includes-minority-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-report-rejects-invalid-show-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-tally-strict-keeps-distinct-proposals-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-reviewer-output-invalid-json-fails-tally-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-start-with-target-file-through-bundled-cli.md`
|
|
||||||
- `docs/roadmaps/archive/council-review-skill-gap-fill-real-forward-test.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Use sub-agents as the execution surface because the user explicitly asked for sub-agent-based testing.
|
|
||||||
- Group the five cases into a few parallel runners to balance throughput against coordination overhead.
|
|
||||||
- Prefer the documented forward-test model first; use main-thread validation commands to independently confirm the reported outcome.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- initial double-case runners were too broad: leader sub-agents spent time on repository process discovery instead of immediately running the documented bundled-CLI steps
|
|
||||||
- nested role-agent shell startup needed the narrower `codex exec --dangerously-bypass-approvals-and-sandbox` workaround before the local bundled CLI commands could start reliably
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- Commit or otherwise preserve the recorded real-forward evidence if the user wants the updated case docs saved in Git history.
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- All five newly added `council-review-skill` cases passed under real sub-agent execution with isolated temp DBs and bundled skill assets.
|
|
||||||
- Main-thread validation independently confirmed the critical assertions for `target-file`, `show all`, invalid `--show`, `strict` tally semantics, and malformed-reviewer JSON failure at tally time.
|
|
||||||
- Added `Recorded Real Forward Run` sections to the five case docs with concrete temp paths, run ids, thread ids, and validation summaries.
|
|
||||||
- The final successful runs used narrower role prompts that explicitly forbade repo discovery or roadmap work before executing the bundled CLI workflow steps.
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Expand Council Review Skill Test Plan Coverage
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Add the next batch of high-value `docs/tests/council-review-skill/` forward-test cases to cover important council workflow gaps beyond the initial smoke suite.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Update `docs/tests/council-review-skill/README.md` with the expanded case index.
|
|
||||||
- Add five new council-review skill case documents.
|
|
||||||
- Update `docs/implementation-roadmap.md` to reflect the broader skill test-plan coverage.
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Identify the highest-value uncovered council-review skill scenarios.
|
|
||||||
- [x] Update the council-review skill README case index.
|
|
||||||
- [x] Author the five new case documents.
|
|
||||||
- [x] Update implementation roadmap and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/tests/council-review-skill/README.md`
|
|
||||||
- `docs/tests/council-review-skill/council-report-show-all-includes-minority-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-report-rejects-invalid-show-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-tally-strict-keeps-distinct-proposals-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-reviewer-output-invalid-json-fails-tally-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-start-with-target-file-through-bundled-cli.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/archive/council-review-skill-gap-fill.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Prioritize skill-level scenarios that add real workflow coverage rather than mechanically duplicating every lower-level `orch council` contract.
|
|
||||||
- Focus the gap fill on explicit report filtering, strict tally semantics, malformed reviewer output, and non-prompt target context.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- Capture recorded example runs or direct CLI replays for the new council-review skill cases when execution evidence is needed.
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Expanded `docs/tests/council-review-skill/README.md` so the shared execution contract now explicitly covers target-file fixtures and indexes the five new gap-fill cases.
|
|
||||||
- Added five forward-test case documents covering explicit `--show all` minority reporting, invalid `--show` rejection, strict tally semantics, malformed reviewer JSON at tally time, and target-file council start inputs.
|
|
||||||
- Updated `docs/implementation-roadmap.md` to record that the council-review skill test-plan directory now covers nine workflow scenarios rather than only the initial smoke suite.
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Add Council Review Skill Test Plan Documents
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Add a human-readable forward-test plan directory for the packaged `skills/council-review/` bundle under `docs/tests/`.
|
|
||||||
- Mirror the structure used by `docs/tests/inbox-skill/` and `docs/tests/orch-skill/` while adapting it to the high-level `orch council ...` workflow and reviewer coordination model.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Create `docs/tests/council-review-skill/README.md`.
|
|
||||||
- Author an initial set of `council-review` skill scenario cases as separate Markdown files.
|
|
||||||
- Update implementation progress docs to record the new test-plan directory.
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review `docs/tests/orch-skill/`, `skills/council-review/`, and the current council workflow surface.
|
|
||||||
- [x] Create `docs/tests/council-review-skill/README.md` with shared execution contract and case index.
|
|
||||||
- [x] Author initial `council-review-skill` case documents.
|
|
||||||
- [x] Update implementation roadmap and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/tests/council-review-skill/README.md`
|
|
||||||
- `docs/tests/council-review-skill/council-brainstorm-end-to-end-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-unanimous-only-default-report-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-wait-timeout-through-bundled-cli.md`
|
|
||||||
- `docs/tests/council-review-skill/council-report-rejects-before-tally-through-bundled-cli.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/archive/council-review-skill-test-plan.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Keep `council-review-skill` separate from `orch-skill`, because `council-review` is a distinct project-local skill package with its own user-facing semantics.
|
|
||||||
- Use the same forward-test style as the other skill test-plan directories, but inject `skills/council-review/` only into the leader and `skills/inbox/` into reviewer agents.
|
|
||||||
- Treat shared DB bootstrap through `inbox init` as part of the test-runner setup contract rather than pretending `council-review` owns schema initialization.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- Capture one or more real recorded example runs for the end-to-end and unanimous-only cases after the packaged council-review skill is exercised in practice.
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Added `docs/tests/council-review-skill/README.md` as the shared execution contract and index for council-review skill validation.
|
|
||||||
- Added four initial forward-test scenario documents covering end-to-end brainstorm/report, unanimous-only default reporting, wait timeout, and report-before-tally invalid-state behavior.
|
|
||||||
- Updated `docs/implementation-roadmap.md` to record that the separate `council-review` skill now has a dedicated forward-test plan directory under `docs/tests/council-review-skill/`.
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# Orch Auto Code Worktree
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- automatically select worktree mode for code-like `orch` tasks so leaders do not need to pass worktree flags for common code-writing dispatches
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- extend dispatch-time worktree selection to infer code-like tasks from existing task metadata
|
|
||||||
- keep explicit worktree flags authoritative when provided
|
|
||||||
- add integration tests for automatic worktree enablement and non-code fallback behavior
|
|
||||||
- update the implementation roadmap and archive this workstream when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect current dispatch/worktree code and the remaining roadmap item
|
|
||||||
- [x] implement automatic code-task detection for worktree selection
|
|
||||||
- [x] add integration coverage for auto-enable and non-code fallback
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-auto-code-worktree.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `internal/cli/orch/worktree.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- infer code-like tasks from existing metadata instead of introducing a new required task field in this slice
|
|
||||||
- prioritize explicit worktree flags over automatic detection so users can still force or shape dispatch behavior
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- move to `Milestone 7: Council Review`
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `orch dispatch` now auto-enables strict worktree mode for code-like tasks inferred from existing task metadata when explicit worktree flags are omitted
|
|
||||||
- explicit worktree flags remain authoritative and non-code tasks still fall back to ordinary non-worktree dispatch
|
|
||||||
- integration tests now cover both auto-enabled worktree dispatch and non-code fallback behavior
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# Orch Core Scheduling
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement the first usable `orch` scheduling slice on top of the existing shared SQLite schema and `inbox` transport
|
|
||||||
- deliver a leader workflow that can create a run, add tasks and dependencies, dispatch ready work, reconcile inbox state, and answer blocked tasks
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add `orch` store primitives for runs, tasks, dependencies, attempts, readiness, dispatch, reconcile, blocked lookup, and run status views
|
|
||||||
- add CLI commands for the first Milestone 4 surface
|
|
||||||
- add automated tests for the happy-path scheduler workflow and core state transitions
|
|
||||||
- update the implementation roadmap with the new progress state
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect the current `orch` skeleton, schema, and project roadmaps
|
|
||||||
- [x] implement `orch` store types and DB operations for runs, tasks, dependencies, attempts, and task-state transitions
|
|
||||||
- [x] add CLI commands for `run init`, `run show`, `task add`, `dep add`, `ready`, `dispatch`, `reconcile`, `blocked`, `answer`, and `status`
|
|
||||||
- [x] add automated tests covering run creation, dependency gating, dispatch, blocked-answer flow, and reconcile
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary when the workstream is complete
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/active/orch-core-scheduling.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `cmd/orch/main.go`
|
|
||||||
- `internal/cli/orch/root.go`
|
|
||||||
- `internal/cli/orch/*.go`
|
|
||||||
- `internal/store/orch.go`
|
|
||||||
- `internal/cli/orch/*_test.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- start with the scheduler loop that reuses existing `inbox` behavior rather than attempting worktree orchestration in the same slice
|
|
||||||
- keep JSON response style aligned with `inbox` so both CLIs expose consistent machine-readable contracts
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- start `Milestone 5: Strict Worktree Support` by extending `orch dispatch` to resolve a concrete base commit and create real worktree metadata
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `orch` now has a usable core scheduler loop backed by shared SQLite state and `inbox`
|
|
||||||
- the implemented CLI surface covers `run init/show`, `task add`, `dep add`, `ready`, `dispatch`, `reconcile`, `blocked`, `answer`, and `status`
|
|
||||||
- integration tests now verify dispatch/reconcile lifecycle, dependency gating, blocked-question answers, and non-ready dispatch rejection
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
# Orch Council Report
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement `orch council report` so persisted grouped recommendations can be rendered as a final council report in human-readable markdown and stable JSON output
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add `orch council report` with `--run`, `--show`, and `--json`
|
|
||||||
- read grouped recommendations from persisted `council_groups`
|
|
||||||
- render a markdown report for the requested buckets and persist report metadata if needed by the existing design
|
|
||||||
- add integration coverage for default output, `--show all`, and JSON shape
|
|
||||||
- run `go test ./...`, update the implementation roadmap, and archive this workstream when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect council report requirements, current council store, and CLI/test patterns
|
|
||||||
- [x] implement council report store and CLI command
|
|
||||||
- [x] add integration coverage for default buckets, `--show all`, and JSON output
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-council-report.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/council-review.md`
|
|
||||||
- `internal/store/council.go`
|
|
||||||
- `internal/cli/orch/council.go`
|
|
||||||
- `internal/cli/orch/council_report.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
- `internal/db/schema/007_council_reports.sql`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- keep the scope limited to report rendering on top of existing persisted council data
|
|
||||||
- persist final report metadata in a dedicated `council_reports` table so the last rendered report artifact path can be recovered without re-reading files
|
|
||||||
- place markdown artifacts under a `.orch/reports/` tree rooted next to the active database context so tests and non-default databases do not dirty the repository root
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- added `orch council report` with `--run`, `--show`, and `--json` on top of persisted `council_groups`
|
|
||||||
- report rendering now produces human-readable markdown, writes a markdown artifact, and persists final report metadata in `council_reports`
|
|
||||||
- integration coverage now verifies default `consensus,majority` output, `--show all`, and the JSON response shape
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Add Orch And Council Review Skills With Bundled CLI Assets
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Add project-local skill packages for `orch` and `council-review`.
|
|
||||||
- Add a repeatable packaging flow that builds the `orch` CLI binary and installs it into both skills as bundled assets.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Create `skills/orch/` with `SKILL.md`, `agents/openai.yaml`, and bundled `assets/orch`.
|
|
||||||
- Create `skills/council-review/` with `SKILL.md`, `agents/openai.yaml`, and bundled `assets/orch`.
|
|
||||||
- Add a repo-local packaging script for building and copying the `orch` CLI binary into both skill asset directories.
|
|
||||||
- Update implementation progress docs to reflect the new skill packages and packaging flow.
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review current skill structure, embedded skill drafts, and bundling expectations.
|
|
||||||
- [x] Create `orch` skill package files.
|
|
||||||
- [x] Create `council-review` skill package files.
|
|
||||||
- [x] Add and validate the CLI packaging script.
|
|
||||||
- [x] Build bundled `orch` binaries into both skills and smoke-check them.
|
|
||||||
- [x] Update roadmap docs and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `skills/orch/SKILL.md`
|
|
||||||
- `skills/orch/agents/openai.yaml`
|
|
||||||
- `skills/orch/assets/orch`
|
|
||||||
- `skills/council-review/SKILL.md`
|
|
||||||
- `skills/council-review/agents/openai.yaml`
|
|
||||||
- `skills/council-review/assets/orch`
|
|
||||||
- `scripts/package_skill_clis.sh`
|
|
||||||
- `docs/architecture.md`
|
|
||||||
- `docs/blog-project-example.md`
|
|
||||||
- `docs/inbox-cli.md`
|
|
||||||
- `docs/orch-cli.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/archive/orch-council-skills.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Use one underlying `orch` binary for both skills, because `council` is an `orch` subcommand rather than a separate executable.
|
|
||||||
- Keep each skill self-contained by bundling its own copy of the `orch` binary asset.
|
|
||||||
- Keep the packaging script able to refresh the existing `inbox` skill binary as well, so all bundled CLIs can be rebuilt through one entrypoint.
|
|
||||||
- Standardize on the actual implemented skill name `orch` rather than the older draft term `orchestrator`.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Added `skills/orch/` and `skills/council-review/`, each with `SKILL.md`, `agents/openai.yaml`, and a bundled `assets/orch` binary.
|
|
||||||
- Added `scripts/package_skill_clis.sh` to rebuild bundled skill CLIs for `inbox`, `orch`, and `council-review`.
|
|
||||||
- Built and smoke-checked the new `orch` skill assets with `./skills/orch/assets/orch --help` and `./skills/council-review/assets/orch council --help`.
|
|
||||||
- Updated implementation and reference docs to use the actual `orch` skill name and to record the new skill packages and packaging flow.
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# Orch Council Start
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement the first Milestone 7 slice by adding council input storage and `orch council start`
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- persist council run metadata plus target input references
|
|
||||||
- add `orch council start` to create a council run and dispatch three reviewer tasks
|
|
||||||
- add integration tests for council start dispatch behavior
|
|
||||||
- update the implementation roadmap and archive this workstream when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect council docs, schema, and existing orch dispatch primitives
|
|
||||||
- [x] implement council storage and `orch council start`
|
|
||||||
- [x] add integration coverage for council start
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-council-start.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `internal/db/schema/*.sql`
|
|
||||||
- `internal/store/council.go`
|
|
||||||
- `internal/cli/orch/root.go`
|
|
||||||
- `internal/cli/orch/council*.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- treat `orch council start` as creating a dedicated run id rather than attaching to a pre-existing ordinary run
|
|
||||||
- persist target prompt/file/repo/task references in a separate council input table instead of overloading the existing `runs` table
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- continue Milestone 7 with `orch council wait`, then add tally and report on top of the persisted reviewer data
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- council input references are now persisted separately from council run metadata
|
|
||||||
- `orch council start` creates a dedicated council run, dispatches the three fixed reviewer roles, and records reviewer assignment rows for downstream wait/tally/report steps
|
|
||||||
- integration tests now cover council start dispatch behavior and stored council metadata
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# Orch Council Tally
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement `orch council tally` so completed reviewer outputs can be parsed, grouped, and persisted as council findings and grouped recommendations
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- parse reviewer output JSON from completed council reviewer threads
|
|
||||||
- persist parsed findings into `council_findings`
|
|
||||||
- group recommendations into `consensus`, `majority`, and `minority` buckets and persist them into `council_groups`
|
|
||||||
- add integration tests for normal and strict similarity modes
|
|
||||||
- update the implementation roadmap and archive this workstream when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect council tally docs and current council storage
|
|
||||||
- [x] implement council tally store and CLI command
|
|
||||||
- [x] add integration coverage for normal and strict tally behavior
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-council-tally.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/council-review.md`
|
|
||||||
- `internal/store/council.go`
|
|
||||||
- `internal/cli/orch/council.go`
|
|
||||||
- `internal/cli/orch/council_tally.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- read reviewer outputs from the latest `result` message on each reviewer thread
|
|
||||||
- require reviewer outputs to be valid structured JSON before tallying
|
|
||||||
- use a simple normalized proposal grouping strategy for v1, with `strict` preserving wording differences and `normal` grouping by normalized intent tokens
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- move on to `orch council report`
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `orch council tally` now parses structured reviewer output JSON from completed reviewer result messages
|
|
||||||
- parsed reviewer findings are persisted into `council_findings`, and grouped recommendations are persisted into `council_groups`
|
|
||||||
- tally supports `normal` and `strict` similarity modes and computes `consensus`, `majority`, and `minority` buckets
|
|
||||||
@@ -1,61 +0,0 @@
|
|||||||
# Orch Council Wait
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement `orch council wait` so the leader can block until all three reviewer tasks finish or a timeout is reached
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add council wait status queries and blocking wait behavior on top of existing council reviewer rows
|
|
||||||
- add CLI support for `orch council wait`
|
|
||||||
- add integration tests for wake and timeout behavior
|
|
||||||
- update the implementation roadmap and archive this workstream when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect council wait docs and current council storage
|
|
||||||
- [x] implement council wait store and CLI command
|
|
||||||
- [x] add integration coverage for council wait wake and timeout
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-council-wait.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `internal/store/council.go`
|
|
||||||
- `internal/cli/orch/council.go`
|
|
||||||
- `internal/cli/orch/council_wait.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- treat reviewer completion as all council reviewer tasks reaching terminal task states
|
|
||||||
- reuse the existing `orch wait`/reconcile polling model rather than introducing a separate push mechanism for councils
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- implement `orch council tally` by parsing completed reviewer outputs into `council_findings` and grouping similar proposals
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `orch council wait` now blocks until all council reviewer tasks reach terminal task states or a timeout is reached
|
|
||||||
- wait responses return reviewer task statuses on both wake and timeout paths
|
|
||||||
- integration tests now cover council wait wake and timeout behavior
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
# Orch Markdown Test Cases
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- author the first complete wave of human-readable Markdown test-plan cases for `orch`, using the existing `docs/tests/inbox/` structure and writing style as the reference model
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add concrete command-case Markdown files under `docs/tests/orch/<leaf-command>/`
|
|
||||||
- add concrete workflow cases under `docs/tests/orch/workflows/README.md`
|
|
||||||
- update each affected command index `README.md`
|
|
||||||
- keep `docs/tests/orch/ROADMAP.md` synchronized with authored files, authored-case counts, and remaining backlog
|
|
||||||
- update `docs/implementation-roadmap.md` if the documentation progress materially changes
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create or adopt an execution roadmap for the workstream
|
|
||||||
- [x] inspect representative `inbox` Markdown case files and map `orch` cases from current backlog
|
|
||||||
- [x] author core scheduler command cases and update their indexes
|
|
||||||
- [x] author interactive leader command cases and update their indexes
|
|
||||||
- [x] author council command cases and update their indexes
|
|
||||||
- [x] author workflow cases and synchronize `docs/tests/orch/ROADMAP.md`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-markdown-test-cases.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/tests/orch/ROADMAP.md`
|
|
||||||
- `docs/tests/orch/workflows/README.md`
|
|
||||||
- `docs/tests/orch/<leaf-command>/README.md`
|
|
||||||
- `docs/tests/orch/<leaf-command>/<case-slug>.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- use the existing `docs/tests/inbox/` case structure and tone as the immediate template for `orch`
|
|
||||||
- keep shared index/count integration in the main thread, while delegating disjoint command-directory write scopes to sub-agents
|
|
||||||
- keep `docs/tests/orch/ROADMAP.md` aligned with the richer `docs/tests/inbox/ROADMAP.md` format by tracking individual case files in `Document Progress` and `Authored Case Register`
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- no further step in this workstream; future changes should start from `docs/tests/orch/ROADMAP.md` if new cases are added
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- authored the current planned `orch` Markdown test-plan set across workflow, core scheduler, interactive control, and council command surfaces
|
|
||||||
- synchronized `docs/tests/orch/ROADMAP.md` with real files on disk, authored-case counts, and a completed authored-case register
|
|
||||||
- updated `docs/implementation-roadmap.md` so future agents see `docs/tests/orch/` as an authored test-plan set rather than only a skeleton
|
|
||||||
@@ -1,71 +0,0 @@
|
|||||||
# Orch Markdown Test Gap Fill
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- fill the five highest-priority Markdown test-plan gaps in `docs/tests/orch/` so the current `orch` CLI has better coverage for key flag validation, non-default output behavior, and error contracts
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add or update `docs/tests/orch/task-add/` for invalid `acceptance-json` and invalid `priority`
|
|
||||||
- add or update `docs/tests/orch/ready/` for priority ordering and `--limit`
|
|
||||||
- add or update `docs/tests/orch/answer/` for payload-only or empty-input validation
|
|
||||||
- add or update `docs/tests/orch/cleanup/` for invalid-input or no-matching-work cleanup behavior
|
|
||||||
- add or update `docs/tests/orch/council-report/` for pre-tally/invalid-show/only-unanimous report behavior as needed
|
|
||||||
- keep `docs/tests/orch/ROADMAP.md` and `docs/implementation-roadmap.md` synchronized
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create an execution roadmap for the workstream
|
|
||||||
- [x] add missing `task add` and `ready` cases and update indexes
|
|
||||||
- [x] add missing `answer` and `cleanup` cases and update indexes
|
|
||||||
- [x] add missing `council report` cases and update indexes
|
|
||||||
- [x] synchronize `docs/tests/orch/ROADMAP.md`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-markdown-test-gap-fill.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/tests/orch/ROADMAP.md`
|
|
||||||
- `docs/tests/orch/task-add/README.md`
|
|
||||||
- `docs/tests/orch/task-add/*.md`
|
|
||||||
- `docs/tests/orch/ready/README.md`
|
|
||||||
- `docs/tests/orch/ready/*.md`
|
|
||||||
- `docs/tests/orch/answer/README.md`
|
|
||||||
- `docs/tests/orch/answer/*.md`
|
|
||||||
- `docs/tests/orch/cleanup/README.md`
|
|
||||||
- `docs/tests/orch/cleanup/*.md`
|
|
||||||
- `docs/tests/orch/council-report/README.md`
|
|
||||||
- `docs/tests/orch/council-report/*.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- use focused follow-up case files instead of broad rewrites to keep the current authored set stable
|
|
||||||
- keep shared tracking files in the main thread and delegate only disjoint command directories
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- no further step in this workstream; future follow-up should start from the updated `docs/tests/orch/ROADMAP.md`
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- added 10 supplemental `orch` Markdown test-plan cases covering high-priority gaps in `task add`, `ready`, `answer`, `cleanup`, and `council report`
|
|
||||||
- synchronized the relevant command index `README.md` files, the shared `docs/tests/orch/ROADMAP.md` ledger, and the project-level implementation roadmap
|
|
||||||
- used sub-agents for three disjoint directory slices while keeping shared tracking files in the main thread
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# Orch Markdown Test Plan Skeleton
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- create an inbox-style human-readable Markdown test-plan skeleton for `orch` so future agents can add command and workflow cases without rediscovering the documentation structure
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add `docs/tests/orch/README.md` and `docs/tests/orch/ROADMAP.md`
|
|
||||||
- add shared and workflow entrypoint documents under `docs/tests/orch/`
|
|
||||||
- add one directory per `orch` leaf command with an index `README.md`
|
|
||||||
- update the implementation roadmap and archive this execution roadmap when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] read the existing inbox Markdown test-plan roadmap and directory conventions
|
|
||||||
- [x] define the `orch` leaf-command directory model
|
|
||||||
- [x] add the `docs/tests/orch/` skeleton files and per-command indexes
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-markdown-test-plan-skeleton.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/tests/orch/README.md`
|
|
||||||
- `docs/tests/orch/ROADMAP.md`
|
|
||||||
- `docs/tests/orch/_shared/README.md`
|
|
||||||
- `docs/tests/orch/workflows/README.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- mirror the inbox test-plan structure at the directory and index level, but model `orch` by leaf commands rather than command groups
|
|
||||||
- seed the new roadmap with a concrete pending-case backlog derived from existing `internal/cli/orch/integration_test.go` coverage so later authoring can proceed without rediscovery
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- start writing the highest-value `orch` case documents from the new backlog, beginning with the happy-path scheduler workflow and strict worktree dispatch cases
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- created `docs/tests/orch/` with a top-level `README.md`, `ROADMAP.md`, shared conventions, workflow entrypoint, and one index `README.md` per implemented leaf command
|
|
||||||
- documented the initial `orch` Markdown test-plan model as leaf-command directories instead of command groups
|
|
||||||
- updated the project implementation roadmap so future agents can discover the new `orch` test-plan skeleton from the main handoff document
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# Orch Markdown Test Review
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- review the authored `docs/tests/orch/` command directories and case files for completeness against the current `orch` CLI and identify any missing or weakly specified test-plan coverage
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- inspect each `docs/tests/orch/<leaf-command>/` directory
|
|
||||||
- compare current Markdown cases against the implemented CLI and existing automated integration tests
|
|
||||||
- identify missing command-visible contracts, edge cases, or unclear assertions
|
|
||||||
- summarize findings without expanding scope into unrelated implementation changes
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create an execution roadmap for the review
|
|
||||||
- [x] inspect current `docs/tests/orch/` files and split the review by command area
|
|
||||||
- [x] collect findings for core scheduler command directories
|
|
||||||
- [x] collect findings for interactive leader/control command directories
|
|
||||||
- [x] collect findings for council command directories
|
|
||||||
- [x] summarize whether any command directories need supplemental cases or edits
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-markdown-test-review.md`
|
|
||||||
- `docs/tests/orch/README.md`
|
|
||||||
- `docs/tests/orch/ROADMAP.md`
|
|
||||||
- `docs/tests/orch/<leaf-command>/README.md`
|
|
||||||
- `docs/tests/orch/<leaf-command>/<case-slug>.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- treat this as a review task first: surface gaps before proposing edits
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- none; future follow-up should start from the review findings and add only the missing case files or constraints that were called out
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- completed a read-only coverage review of the authored `docs/tests/orch/` command directories against the current `orch` CLI and automated integration tests
|
|
||||||
- identified the highest-value missing or weakly specified command-visible cases so follow-up authoring can target concrete gaps instead of re-auditing the whole tree
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# Orch Remaining Controls
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement the remaining leader-side scheduler control commands: `retry`, `reassign`, `cancel`, and `cleanup`
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add store and CLI support for retrying failed tasks, reassigning blocked or failed tasks, cancelling a task or full run, and cleaning up attempt worktrees
|
|
||||||
- add integration tests that exercise the new control flows on top of the existing scheduler/worktree implementation
|
|
||||||
- update the implementation roadmap and archive this workstream when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect docs and current attempt/thread/worktree helpers
|
|
||||||
- [x] implement `retry`, `reassign`, `cancel`, and `cleanup` store operations and CLI commands
|
|
||||||
- [x] add integration coverage for the new control flows
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-remaining-controls.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `internal/cli/orch/root.go`
|
|
||||||
- `internal/cli/orch/*.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
- `internal/store/orch.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- `retry` and `reassign` will reuse the existing dispatch pipeline so new attempts keep the same attempt/worktree semantics as normal dispatch
|
|
||||||
- `cleanup` will remove worktree directories and mark attempt workspace state as `cleaned`, but will not delete attempt branches in this slice
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- decide whether worktree mode should be selected automatically for code tasks, then either implement that ergonomics layer or defer it before moving into council workflows
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `orch` now supports the remaining leader-side control commands: `retry`, `reassign`, `cancel`, and `cleanup`
|
|
||||||
- retry and reassign reuse the normal dispatch pipeline, including per-attempt worktree allocation when the previous attempt was worktree-backed
|
|
||||||
- cleanup removes eligible worktree paths and marks attempt workspace state as `cleaned`
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Direct Replay For Orch Skill Cases
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Execute the documented `docs/tests/orch-skill/` scenarios against the bundled `skills/orch/assets/orch` and `skills/inbox/assets/inbox` binaries, capture concrete evidence, and sync the repo docs with the observed results.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add a reusable local runner for the five documented orch-skill scenarios
|
|
||||||
- run the scenarios and capture per-case evidence
|
|
||||||
- update the orch-skill docs with recorded runs and note the execution mode
|
|
||||||
- update the implementation roadmap to reflect the new replay coverage
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review the orch-skill case docs and bundled CLI surfaces.
|
|
||||||
- [x] Add a reusable direct replay runner for the five orch-skill scenarios.
|
|
||||||
- [x] Execute the runner and collect evidence for all five cases.
|
|
||||||
- [x] Update the orch-skill docs with recorded example runs and execution notes.
|
|
||||||
- [x] Update the implementation roadmap and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `scripts/run_orch_skill_forward_tests.sh`
|
|
||||||
- `docs/tests/orch-skill/README.md`
|
|
||||||
- `docs/tests/orch-skill/leader-run-dispatch-reconcile-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-blocked-answer-resume-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/strict-worktree-dispatch-to-cleanup-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-retries-failed-task-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-reassigns-blocked-task-through-bundled-cli.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/archive/orch-skill-direct-replay.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Use direct bundled-CLI replay instead of spawning Codex role agents in this turn, because the current session does not permit sub-agent delegation unless the user explicitly asks for it.
|
|
||||||
- Keep the replay runner repo-local so the same scenarios can be rerun later without reconstructing the command flow by hand.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- rerun `scripts/run_orch_skill_forward_tests.sh` when the bundled skill binaries or orch-skill case docs change, and add true multi-agent forward coverage later if explicit sub-agent execution is needed
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Added `scripts/run_orch_skill_forward_tests.sh` as a reusable direct bundled-CLI replay runner for the five documented orch-skill scenarios.
|
|
||||||
- Executed the runner on `2026-03-19`; all five scenarios passed and produced per-case JSON evidence under a temporary output root.
|
|
||||||
- Updated `docs/tests/orch-skill/README.md` plus all five case files with recorded example runs and explicit execution-mode notes.
|
|
||||||
- Updated `docs/implementation-roadmap.md` to record the new replay runner and captured orch-skill execution evidence.
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Add Missing Orch Skill Forward-Test Cases
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Add three missing `docs/tests/orch-skill/` forward-test cases covering dependency-gated ready sequencing, direct task cancellation, and payload-only blocked answers.
|
|
||||||
- Extend the bundled-CLI replay runner so the new cases can be executed and recorded with concrete evidence.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- update `docs/tests/orch-skill/README.md` with the new case index entries
|
|
||||||
- add three new case documents under `docs/tests/orch-skill/`
|
|
||||||
- extend `scripts/run_orch_skill_forward_tests.sh` to execute the new scenarios
|
|
||||||
- run the replay suite and record the new example-run evidence
|
|
||||||
- update `docs/implementation-roadmap.md`
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review the current orch skill docs, runner, and CLI coverage to identify the missing skill-side cases.
|
|
||||||
- [x] Add the active orch-skill gap-fill case documents and README updates.
|
|
||||||
- [x] Extend the orch-skill replay runner for the new scenarios.
|
|
||||||
- [x] Execute the replay coverage and capture recorded example-run evidence.
|
|
||||||
- [x] Update implementation progress docs and archive this roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/tests/orch-skill/README.md`
|
|
||||||
- `docs/tests/orch-skill/leader-dispatches-dependent-task-after-prerequisite-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-cancels-active-task-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-answers-blocked-task-with-payload-json-through-bundled-cli.md`
|
|
||||||
- `scripts/run_orch_skill_forward_tests.sh`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/archive/orch-skill-gap-fill.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Keep the new coverage in `orch-skill` rather than `docs/tests/orch/`, because the gap is leader-side skill usage, not raw CLI contract coverage.
|
|
||||||
- Use the direct bundled-CLI replay path for immediate recorded evidence, consistent with the existing orch-skill case documents.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- rerun the direct replay suite when the orch skill bundle or any orch-skill case document changes, and add real subagent-forward evidence for the three new gap-fill cases when that coverage is needed.
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Added three new `docs/tests/orch-skill/` cases covering dependency-gated ready sequencing, direct active-task cancellation, and payload-only blocked answers.
|
|
||||||
- Extended `scripts/run_orch_skill_forward_tests.sh` so the replay runner now executes all eight documented orch-skill scenarios.
|
|
||||||
- Ran the full replay suite at `/tmp/orch-skill-forward-gap-fill` and recorded passing example-run evidence for the three new cases.
|
|
||||||
- Updated `docs/tests/orch-skill/README.md` and `docs/implementation-roadmap.md` to reflect the expanded orch-skill coverage and evidence status.
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Real Subagent Forward Tests For Orch Skill
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Execute the documented `docs/tests/orch-skill/` scenarios using real spawned role agents with injected `skills/orch/` and `skills/inbox/`, then record concrete pass/fail evidence and sync the repository docs.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- validate subagent skill injection for project-local orch and inbox skills
|
|
||||||
- run the five documented orch-skill forward cases with real leader and worker subagents
|
|
||||||
- collect main-thread validation evidence and agent summaries
|
|
||||||
- update the orch-skill docs and implementation roadmap with the real forward-test results
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Re-read the orch-skill shared execution contract and worker skill constraints.
|
|
||||||
- [x] Validate project-local skill injection with a small spawned-agent probe.
|
|
||||||
- [x] Execute the five orch-skill cases with real spawned role agents and collect evidence.
|
|
||||||
- [x] Update the orch-skill docs and implementation roadmap with the real forward-test results.
|
|
||||||
- [x] Archive this execution roadmap with a completion summary.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/tests/orch-skill/README.md`
|
|
||||||
- `docs/tests/orch-skill/leader-run-dispatch-reconcile-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-blocked-answer-resume-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/strict-worktree-dispatch-to-cleanup-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-retries-failed-task-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-reassigns-blocked-task-through-bundled-cli.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/archive/orch-skill-real-forward-test.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Use real spawned role agents per case instead of the direct replay runner, because the user explicitly asked for true tests with subagents.
|
|
||||||
- Keep the main thread responsible for DB setup, fixture creation, and independent validation so the final judgment does not rely only on role-agent self-reporting.
|
|
||||||
- Fall back from `fork_context: true` to `fork_context: false` for the real case runs after the first wider-context attempt stalled and mis-executed the worker-side contract in this repo.
|
|
||||||
- For the longer `retry` and `reassign` cases, keep one leader agent active across staged prompts instead of one long monolithic prompt, because staged execution proved more reliable while still preserving a real agent-owned `orch` flow.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- rerun the same five cases when the packaged skill binaries or case docs change, and consider adding the same real subagent coverage for `council-review` if that surface needs parity
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Verified both project-local skill bundles with spawned-agent help-command probes before the real runs.
|
|
||||||
- Collected successful real subagent evidence for all five orch-skill cases under `/tmp/orch-skill-subagents.J1XWgs`.
|
|
||||||
- Main-thread validation confirmed all five final successful runs reached the expected `orch` and `inbox` states.
|
|
||||||
- Updated `docs/tests/orch-skill/README.md`, all five case files, and `docs/implementation-roadmap.md` to record the new real forward-test coverage.
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Add Orch Skill Test Plan Documents
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Add a human-readable forward-test plan directory for the packaged `skills/orch/` bundle under `docs/tests/`.
|
|
||||||
- Mirror the proven structure of `docs/tests/inbox-skill/` while adapting it to leader-side `orch` workflows and `inbox`-backed worker coordination.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Create `docs/tests/orch-skill/README.md`.
|
|
||||||
- Author an initial set of `orch` skill scenario cases as separate Markdown files.
|
|
||||||
- Update implementation progress docs to record the new test-plan directory.
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review `docs/tests/inbox-skill/`, `skills/orch/`, and current `orch` workflow surface.
|
|
||||||
- [x] Create `docs/tests/orch-skill/README.md` with shared execution contract and case index.
|
|
||||||
- [x] Author initial `orch-skill` case documents.
|
|
||||||
- [x] Update implementation roadmap and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/tests/orch-skill/README.md`
|
|
||||||
- `docs/tests/orch-skill/leader-run-dispatch-reconcile-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-blocked-answer-resume-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/strict-worktree-dispatch-to-cleanup-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-retries-failed-task-through-bundled-cli.md`
|
|
||||||
- `docs/tests/orch-skill/leader-reassigns-blocked-task-through-bundled-cli.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/archive/orch-skill-test-plan.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Keep `orch-skill` separate from `council-review` skill docs, because `council-review` is a distinct project-local skill package.
|
|
||||||
- Use the same forward-test style as `inbox-skill`, but inject `skills/orch/` only into the leader and `skills/inbox/` into workers.
|
|
||||||
- Treat shared DB bootstrap through `inbox init` as part of the test-runner setup contract rather than pretending `orch` owns schema initialization.
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- Add a parallel `docs/tests/council-review-skill/` directory when the separate council skill test surface is ready to be documented.
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Added `docs/tests/orch-skill/README.md` as the shared execution contract and index for leader-side skill validation.
|
|
||||||
- Added five initial forward-test scenario documents covering happy-path orchestration, blocked-answer resume, strict worktree cleanup, retry after failure, and reassignment from one worker to another.
|
|
||||||
- Updated `docs/implementation-roadmap.md` to record that the `orch` skill now has a dedicated forward-test plan directory under `docs/tests/orch-skill/`.
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
# Orch Strict Worktree Support
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement dispatch-time strict worktree support so `orch` can resolve a committed base, create a branch and worktree per attempt, and persist workspace metadata into attempt storage and inbox payload
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- extend `orch dispatch` to support Git-backed worktree creation
|
|
||||||
- enforce strict-mode base resolution and dirty-repo checks
|
|
||||||
- persist `base_ref`, `base_commit`, `branch_name`, `worktree_path`, and `workspace_status`
|
|
||||||
- add integration tests for successful worktree dispatch and strict-mode rejection on dirty repositories
|
|
||||||
- update project-level implementation roadmap after the work is validated
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect current worktree design docs and dispatch constraints
|
|
||||||
- [x] implement git helpers for repo discovery, base resolution, branch naming, and worktree creation
|
|
||||||
- [x] wire worktree metadata into `orch dispatch` attempt storage and inbox payload
|
|
||||||
- [x] add integration coverage for strict worktree success and dirty-repo failure
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-strict-worktree-support.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `internal/cli/orch/dispatch.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
- `internal/cli/orch/worktree.go`
|
|
||||||
- `internal/store/orch.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- use the current working directory as the default source repo for `orch dispatch`, with an explicit override flag only if implementation needs it
|
|
||||||
- keep worktree creation tied to dispatch so failed workspace creation cannot silently leave a task marked as dispatched
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- implement `orch wait`, then continue with retry/reassign/cancel/cleanup on top of the now worktree-aware dispatch model
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `orch dispatch` now supports strict Git-backed worktree provisioning with repo discovery, committed base resolution, branch naming, and per-attempt worktree paths
|
|
||||||
- dispatch persists workspace metadata on attempts and includes the same metadata in inbox task payloads for worker runtimes
|
|
||||||
- integration tests now cover successful strict worktree creation, dirty-repo rejection without `--base-ref`, and explicit-base dispatch on dirty repositories
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
# Title
|
|
||||||
|
|
||||||
Implement Orch Markdown Test Cases As Automated Tests
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex main agent
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Add automated `orch` coverage for the command-level cases documented under `docs/tests/orch/`.
|
|
||||||
- Keep roadmap and implementation status synchronized while the work is in progress.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- Add or expand Go tests for currently undocumented automation gaps under `internal/cli/orch/`.
|
|
||||||
- Update `docs/implementation-roadmap.md` to reflect the broader `orch` automated coverage.
|
|
||||||
- Update `docs/tests/orch/ROADMAP.md` to reflect the alignment between Markdown cases and automated coverage.
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] Review repository instructions, implementation roadmap, and `docs/tests/orch/` case inventory.
|
|
||||||
- [x] Map Markdown cases to existing `orch` automated coverage and identify missing scenarios.
|
|
||||||
- [x] Implement missing non-council command tests.
|
|
||||||
- [x] Implement missing council/report command tests.
|
|
||||||
- [x] Run targeted and full `orch` test validation.
|
|
||||||
- [x] Update roadmap documents and archive this execution roadmap.
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `internal/cli/orch/command_contracts_core_test.go`
|
|
||||||
- `internal/cli/orch/command_contracts_edges_test.go`
|
|
||||||
- `internal/cli/orch/command_contracts_remaining_test.go`
|
|
||||||
- `internal/cli/orch/council_report_contracts_test.go`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/tests/orch/ROADMAP.md`
|
|
||||||
- `docs/roadmaps/archive/orch-test-case-implementation.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- Start from the existing `internal/cli/orch/integration_test.go` suite instead of creating a second parallel harness.
|
|
||||||
- Use sub-agents with isolated write scopes where practical, while keeping shared roadmap and final integration in the main thread.
|
|
||||||
- Split the missing coverage into four focused test files:
|
|
||||||
- `command_contracts_core_test.go` for `run show`, `task add`, and `ready`
|
|
||||||
- `command_contracts_edges_test.go` for `answer` and `cleanup`
|
|
||||||
- `command_contracts_remaining_test.go` for the remaining command and workflow gaps
|
|
||||||
- `council_report_contracts_test.go` for council report edge/default behavior
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- Added 19 focused `orch` tests across four new test files to close the documented Markdown-case gaps under `docs/tests/orch/`.
|
|
||||||
- Covered the remaining command contracts for `run init/show`, `task add`, `ready`, `dispatch`, `blocked`, `answer`, `cleanup`, `status`, `reconcile`, and council report edge/default behavior.
|
|
||||||
- Added explicit workflow coverage for strict-worktree dispatch-to-cleanup and council-review end-to-end.
|
|
||||||
- Validation passed with `go test ./internal/cli/orch` and `go test ./...`.
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# Orch Wait
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- implement `orch wait` so the leader can block on run-scoped task events instead of manual sleep loops
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add store support for waiting on run-scoped events with event-type filters and timeout behavior
|
|
||||||
- make `orch wait` reconcile inbox state while polling so worker transitions can surface as `task_*` events
|
|
||||||
- add integration tests for wake and timeout behavior
|
|
||||||
- update the implementation roadmap and archive this workstream when complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect `orch wait` docs and current event/reconcile behavior
|
|
||||||
- [x] implement `orch wait` store and CLI layers
|
|
||||||
- [x] add integration coverage for wake and timeout paths
|
|
||||||
- [x] run `go test ./...`
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/orch-wait.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `internal/cli/orch/root.go`
|
|
||||||
- `internal/cli/orch/wait.go`
|
|
||||||
- `internal/cli/orch/integration_test.go`
|
|
||||||
- `internal/store/orch.go`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- let `orch wait` perform reconcile while polling so a leader can wait directly on `task_*` events without a separate manual reconcile loop
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- implement the remaining leader-side scheduler controls: `retry`, `reassign`, `cancel`, and `cleanup`
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- `orch wait` now blocks on run-scoped `task_*` events with `--for`, `--after-event`, and timeout support
|
|
||||||
- the wait loop reconciles inbox state while polling, so worker thread transitions can wake the leader without a separate manual reconcile step
|
|
||||||
- integration tests now cover both wake-on-blocked and timeout behavior
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
# Remove Root Cmd Compatibility Shims
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-20`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Remove the legacy root `cmd/` compatibility shims now that package-owned runtimes are the source of truth, and clean up the remaining current docs and test indexes that still point at deleted root runtime paths.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- remove root `cmd/inbox`, `cmd/orch`, and `cmd/orchd`
|
|
||||||
- update current docs and test-plan indexes that still reference removed root runtime paths
|
|
||||||
- keep package-owned runtime workflows and skill packaging validated after the cleanup
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect remaining references to root `cmd/` and deleted root `internal/` runtime paths
|
|
||||||
- [x] update current docs and test indexes to point at package-owned runtime paths
|
|
||||||
- [x] remove the root `cmd/` files and any now-unneeded root shim wiring
|
|
||||||
- [x] validate package-owned runtime and skill packaging workflows after the cleanup
|
|
||||||
- [x] update roadmap state and archive this workstream if complete
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/remove-root-cmd-compat-shims.md`
|
|
||||||
- `cmd/`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/tests/`
|
|
||||||
- `docs/skill-workspace-monorepo.md`
|
|
||||||
- `docs/web-product-monorepo.md`
|
|
||||||
- `go.mod`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- treat archived roadmaps as historical records; fix only current source-of-truth docs and current test indexes unless a broken archived reference blocks real workflows
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- continue routine feature work on top of the package-owned runtime workspace without recreating root-owned Go entrypoints
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- updated the current inbox and orch test-plan indexes so they now point at package-owned runtime test files instead of deleted root `internal/cli/*` paths
|
|
||||||
- removed the root `cmd/` compatibility shims and the now-unneeded root Go module files so package-owned runtimes under `packages/*/cmd/*` are the only maintained Go entrypoints
|
|
||||||
- added a root `pnpm run go:test` script that validates package-owned Go runtimes directly, replacing reliance on a root Go module
|
|
||||||
- synchronized the current implementation and web monorepo docs with the package-owned runtime layout after the cleanup
|
|
||||||
@@ -1,59 +0,0 @@
|
|||||||
# Rename Operator API Runtime
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-20`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Rename the package-owned web backend runtime from `packages/orchd-runtime` to `packages/operator-api` and rename its command entrypoint from `cmd/orchd` to `cmd/operator-api` so the current workspace no longer carries the ambiguous `orchd` name.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- rename the package directory and module path
|
|
||||||
- update imports, workspace metadata, and current docs
|
|
||||||
- validate the package-oriented build and test flows after the rename
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] inspect current `orchd-runtime` references
|
|
||||||
- [x] rename the package directory and module path to `operator-api`
|
|
||||||
- [x] update workspace metadata, imports, and current docs
|
|
||||||
- [x] validate package-oriented Go tests and frontend build after the rename
|
|
||||||
- [x] archive this roadmap and commit the completed rename
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/rename-orchd-runtime-to-operator-api.md`
|
|
||||||
- `go.work`
|
|
||||||
- `packages/operator-api/`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/skill-workspace-monorepo.md`
|
|
||||||
- `docs/web-product-monorepo.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- rename both the package and the command entrypoint together so current source-of-truth code no longer carries the `orchd` name
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- continue feature work with `packages/operator-api` as the backend runtime name and avoid reintroducing the old `orchd` label
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- renamed the package-owned backend runtime from `packages/orchd-runtime` to `packages/operator-api`
|
|
||||||
- renamed the package-owned daemon entrypoint from `cmd/orchd` to `cmd/operator-api`
|
|
||||||
- updated current imports, workspace metadata, frontend copy, and current architecture docs to the new operator API name
|
|
||||||
- validated the renamed runtime through package-oriented Go tests, skill bundle packaging, and frontend build checks
|
|
||||||
@@ -1,63 +0,0 @@
|
|||||||
# Skill Workspace Monorepo Migration Design
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-20`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Design a full migration plan that turns this repository from a single-root implementation repo with bundled skill wrappers into a true multi-package monorepo whose primary deliverables are skills and their runtimes.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- create an execution trace for the migration-design workstream
|
|
||||||
- inspect the current Go, JS, skill-packaging, docs, and test boundaries that constrain the migration
|
|
||||||
- define the target monorepo package layout, including shared coordination core, runtime packages, and agent-facing skill bundles
|
|
||||||
- define the rollout sequence, compatibility rules, and packaging/test implications
|
|
||||||
- capture the resulting design in-repo and keep roadmap state synchronized
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create the active execution roadmap for the skill-workspace monorepo migration design workstream
|
|
||||||
- [x] inspect current repository structure, packaging scripts, and skill boundaries
|
|
||||||
- [x] define the target package layout and ownership boundaries
|
|
||||||
- [x] define the migration phases, compatibility strategy, and validation plan
|
|
||||||
- [x] capture the migration design in-repo
|
|
||||||
- [x] update `docs/implementation-roadmap.md` if the design materially changes the repository roadmap
|
|
||||||
- [x] archive this execution roadmap with a completion summary if the design slice is complete
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/skill-workspace-monorepo-migration-design.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/skill-workspace-monorepo.md`
|
|
||||||
- `scripts/`
|
|
||||||
- `skills/`
|
|
||||||
- `cmd/`
|
|
||||||
- `internal/`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- treat this work as architecture design rather than implementation so the output should be a concrete migration blueprint, not partial directory churn
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- start the actual workspace bootstrap phase by adding `go.work`, expanding workspace manifests, and creating the first package roots described by the migration plan
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- inspected the current root-owned runtime model, including `cmd/`, `internal/`, skill asset packaging, skill forward-test plans, and the JS workspace boundaries
|
|
||||||
- produced `docs/skill-workspace-monorepo.md`, which defines the target repository model, package layout, ownership rules, packaging flow, testing model, and phased migration plan
|
|
||||||
- updated `docs/implementation-roadmap.md` so the repository now explicitly tracks the monorepo migration as the next major milestone rather than continuing to grow root-owned runtimes
|
|
||||||
@@ -1,65 +0,0 @@
|
|||||||
# Skill Workspace Monorepo Migration
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-20`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Execute `Milestone 10: Skill Workspace Monorepo Migration` by moving the repository toward a true multi-package monorepo whose primary deliverables are skills and skill runtimes.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- bootstrap the shared workspace structure described in `docs/skill-workspace-monorepo.md`
|
|
||||||
- complete migration phases incrementally, committing after each completed phase
|
|
||||||
- keep packaging, roadmap, and validation flows synchronized as the migration proceeds
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create or adopt an active execution roadmap for the migration workstream
|
|
||||||
- [x] Phase 1: bootstrap `go.work`, expanded workspace manifests, package roots, and declarative skill bundle metadata
|
|
||||||
- [x] Phase 2: extract shared coordination code into `packages/coord-core`
|
|
||||||
- [x] Phase 3: extract `inbox-runtime` and `orch-runtime`
|
|
||||||
- [x] Phase 4: extract `orchd-runtime`
|
|
||||||
- [x] Phase 5: import `repo-memory-runtime` and add `skills/repo-memory`
|
|
||||||
- [x] Phase 6: remove root runtime ownership and normalize package-based packaging
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/skill-workspace-monorepo-migration.md`
|
|
||||||
- `docs/skill-workspace-monorepo.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `go.work`
|
|
||||||
- `pnpm-workspace.yaml`
|
|
||||||
- `package.json`
|
|
||||||
- `packages/`
|
|
||||||
- `scripts/`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- keep one long-lived active roadmap for the full migration rather than opening a new execution trace for every individual phase
|
|
||||||
- complete and commit one migration phase at a time so the workspace remains bisectable
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- resume product work on top of the package-owned runtime workspace, starting with whichever user-facing feature slice has priority next
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- bootstrapped the repository as a multi-package workspace with `go.work`, expanded JS workspace discovery, and declarative skill bundle metadata
|
|
||||||
- extracted the shared coordination kernel into `packages/coord-core`
|
|
||||||
- extracted package-owned runtimes for `inbox`, `orch`, `orchd`, and `repo-memory`
|
|
||||||
- switched the root skill packaging flow to build from package entrypoints, including the new `repo-memory` bundle
|
|
||||||
- removed the legacy root runtime implementation directories under `internal/`, leaving root `cmd/*` as compatibility shims while package-owned runtimes remain the source of truth
|
|
||||||
@@ -1,62 +0,0 @@
|
|||||||
# Web Frontend Cadence UI Bootstrap
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-20`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Bootstrap the `apps/web` frontend with copied-in `cadence-ui` components and shared token styles so Phase 2 web UI work can build on the project component library instead of the bare Vite scaffold.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- create an execution trace for this frontend bootstrap slice
|
|
||||||
- install the initial `cadence-ui` component set into `apps/web`
|
|
||||||
- wire the Cadence token stylesheet into the frontend entrypoint
|
|
||||||
- validate the frontend workspace build after the component copy-in
|
|
||||||
- keep `docs/implementation-roadmap.md` synchronized with the new frontend state
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create the active execution roadmap for the Cadence UI frontend bootstrap workstream
|
|
||||||
- [x] install the initial `cadence-ui` component set into `apps/web`
|
|
||||||
- [x] wire `apps/web/src/main.tsx` to load `cadence-ui` token styles
|
|
||||||
- [x] validate the frontend workspace build and resolve any dependency gaps
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this execution roadmap with a completion summary if the slice is fully complete
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/web-frontend-cadence-ui-bootstrap.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `apps/web/package.json`
|
|
||||||
- `apps/web/src/main.tsx`
|
|
||||||
- `apps/web/src/cadence-ui/`
|
|
||||||
- `pnpm-lock.yaml`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- start Phase 2 frontend work by copying in the shared component library instead of building bespoke primitives inside `apps/web`
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- build the first Phase 2 product screens in `apps/web` on top of the copied-in Cadence UI primitives, installing additional registry components only when those screens need them
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- ran the `cadence-ui` registry installer from `/Users/xd/project/cadence-ui` and copied the initial component set into `apps/web/src/cadence-ui`, including shared tokens plus button, input, textarea, dialog, form, tabs, card, badge, and alert primitives
|
|
||||||
- wired `apps/web/src/main.tsx` to import `./cadence-ui/tokens/styles.css` so the copied-in components share the library token base from app startup
|
|
||||||
- installed the newly required frontend dependencies into the workspace, refreshed `pnpm-lock.yaml`, and verified the result with `pnpm run web:build`
|
|
||||||
- synchronized `docs/implementation-roadmap.md` so Phase 2 frontend work now explicitly continues from the Cadence UI foundation
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
# Web Phase 2 Read-Only UI
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-20`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Implement the first real Phase 2 operator UI in `apps/web` by shipping the read-only runs list, run detail, blocked queue, and thread timeline views on top of the existing `orchd` HTTP API and Cadence UI source-owned components.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- create an execution trace for the Phase 2 read-only UI workstream
|
|
||||||
- wire the frontend to the existing read-only API contract
|
|
||||||
- implement routed views for runs list, run detail, blocked queue, and thread timeline
|
|
||||||
- reuse Cadence UI source-owned components instead of introducing new foundational UI primitives
|
|
||||||
- validate the frontend build and keep `docs/implementation-roadmap.md` synchronized
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create the active execution roadmap for the Phase 2 read-only UI workstream
|
|
||||||
- [x] inspect the current frontend shell and backend read contract
|
|
||||||
- [x] add the frontend data layer and route structure for the Phase 2 read-only views
|
|
||||||
- [x] implement the runs list, run detail, blocked queue, and thread timeline screens
|
|
||||||
- [x] ensure Cadence UI styles render correctly in the consumer app
|
|
||||||
- [x] validate the frontend build and fix any type or integration issues
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this roadmap with a completion summary if the slice is fully complete
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/archive/web-phase2-read-only-ui.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `apps/web/package.json`
|
|
||||||
- `apps/web/src/app.tsx`
|
|
||||||
- `apps/web/src/features/operator-console.tsx`
|
|
||||||
- `apps/web/src/lib/api.ts`
|
|
||||||
- `apps/web/src/lib/format.ts`
|
|
||||||
- `apps/web/src/styles.css`
|
|
||||||
- `apps/web/src/vite-env.d.ts`
|
|
||||||
- `apps/web/vite.config.ts`
|
|
||||||
- `pnpm-lock.yaml`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- keep the first Phase 2 UI slice read-only and route it against the existing HTTP API instead of coupling UI delivery to new backend mutations
|
|
||||||
- prefer composition from the copied-in Cadence UI source over new hand-rolled UI primitives
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- build the next web slice on top of the shipped read-only screens by adding operator write actions, council views, and realtime event handling without replacing the new routed operator shell
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- replaced the placeholder `apps/web` landing screen with a routed read-only operator UI that now ships runs list, run detail, blocked queue, and thread timeline pages backed by the existing `orchd` API
|
|
||||||
- added a typed frontend read layer for the current HTTP contract, including client-side blocked queue aggregation across runs and thread timeline payload/artifact rendering
|
|
||||||
- wired Tailwind v4 into the consumer app so the copied-in Cadence UI source-owned components render correctly, and used those components throughout the new pages instead of introducing new foundational UI primitives
|
|
||||||
- validated the slice with `pnpm run web:build`, seeded a local demo run/thread dataset through the existing `orch` and `inbox` CLIs, and verified the Vite dev server can proxy the runs, run detail, and thread endpoints through to `orchd`
|
|
||||||
@@ -1,56 +0,0 @@
|
|||||||
# Web Product Monorepo Doc
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-19`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Capture the agreed monorepo skeleton and web-product backend/frontend direction in a durable project document under `docs/`.
|
|
||||||
- Keep the implementation roadmap synchronized so future agents can pick up the web milestone without rediscovering the repository shape.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add a new planning document for the web-product monorepo direction
|
|
||||||
- update the implementation roadmap to reference the new document
|
|
||||||
- archive this execution roadmap when the documentation work is complete
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create an active execution roadmap for this documentation workstream
|
|
||||||
- [x] add the web-product monorepo planning document under `docs/`
|
|
||||||
- [x] update the implementation roadmap to reference the new document
|
|
||||||
- [x] validate the changed docs for consistency
|
|
||||||
- [x] archive this execution roadmap with a completion summary
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/web-product-monorepo.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/roadmaps/active/web-product-monorepo-doc.md`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- keep the work scoped to documentation and roadmap sync rather than implementation
|
|
||||||
- treat the current repository as the future backend monorepo root rather than proposing an immediate backend repo split
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- use `docs/web-product-monorepo.md` as the planning reference when implementation starts for `cmd/orchd`, `apps/web`, and the shared application/query layers
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- added `docs/web-product-monorepo.md` to capture the agreed monorepo skeleton, React frontend direction, `chi` backend direction, and phased migration plan
|
|
||||||
- updated `docs/implementation-roadmap.md` so future agents can discover and use the new web-product planning document as the next milestone entrypoint
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
# Web Product Phase 1 Skeleton
|
|
||||||
|
|
||||||
## Status
|
|
||||||
|
|
||||||
- `completed`
|
|
||||||
|
|
||||||
## Owner
|
|
||||||
|
|
||||||
- Codex
|
|
||||||
|
|
||||||
## Started At
|
|
||||||
|
|
||||||
- `2026-03-20`
|
|
||||||
|
|
||||||
## Goal
|
|
||||||
|
|
||||||
- Implement the first web-product milestone slice described in `docs/web-product-monorepo.md` by creating the monorepo skeleton, a minimal `orchd` HTTP service, and the first read-oriented backend boundaries.
|
|
||||||
|
|
||||||
## Scope
|
|
||||||
|
|
||||||
- add an active execution trace for this web implementation workstream
|
|
||||||
- add the initial monorepo workspace files and `apps/web` scaffold
|
|
||||||
- add `cmd/orchd`, `internal/httpapi`, `internal/app`, and `internal/query`
|
|
||||||
- expose a small read-only HTTP API for health, runs, run detail, blocked tasks, and thread detail
|
|
||||||
- add initial API contract docs under `api/`
|
|
||||||
- keep `docs/implementation-roadmap.md` synchronized with the new implementation state
|
|
||||||
|
|
||||||
## Checklist
|
|
||||||
|
|
||||||
- [x] create the active execution roadmap for the Phase 1 web skeleton workstream
|
|
||||||
- [x] scaffold the monorepo workspace files and `apps/web`
|
|
||||||
- [x] add `cmd/orchd` with a minimal `chi`-based HTTP server
|
|
||||||
- [x] introduce initial shared app/query boundaries for read-only web endpoints
|
|
||||||
- [x] add initial API contract documents under `api/`
|
|
||||||
- [x] validate the new slice with builds or targeted tests
|
|
||||||
- [x] update `docs/implementation-roadmap.md`
|
|
||||||
- [x] archive this execution roadmap with a completion summary if the slice is fully complete
|
|
||||||
|
|
||||||
## Files
|
|
||||||
|
|
||||||
- `docs/roadmaps/active/web-product-phase1-skeleton.md`
|
|
||||||
- `docs/implementation-roadmap.md`
|
|
||||||
- `docs/web-product-monorepo.md`
|
|
||||||
- `cmd/orchd/main.go`
|
|
||||||
- `internal/httpapi/`
|
|
||||||
- `internal/app/`
|
|
||||||
- `internal/query/`
|
|
||||||
- `internal/store/`
|
|
||||||
- `api/openapi.yaml`
|
|
||||||
- `api/events.md`
|
|
||||||
- `apps/web/`
|
|
||||||
- `package.json`
|
|
||||||
- `pnpm-workspace.yaml`
|
|
||||||
|
|
||||||
## Decisions
|
|
||||||
|
|
||||||
- implement a narrow read-only backend slice first instead of starting with frontend pages
|
|
||||||
- keep the first HTTP layer thin and let query/app packages own the web-facing backend boundary
|
|
||||||
- preserve the existing CLI entrypoints while introducing the new service
|
|
||||||
|
|
||||||
## Blockers
|
|
||||||
|
|
||||||
- none
|
|
||||||
|
|
||||||
## Next Step
|
|
||||||
|
|
||||||
- start Phase 2 on top of the new `apps/web` and `orchd` skeleton by wiring real runs, run-detail, blocked-queue, and thread-detail screens to the read-only API
|
|
||||||
|
|
||||||
## Completion Summary
|
|
||||||
|
|
||||||
- added the first web-product skeleton described in `docs/web-product-monorepo.md`, including root `pnpm` workspace files, a standalone React frontend shell under `apps/web`, initial API contract documents under `api/`, and a new `cmd/orchd` HTTP service
|
|
||||||
- introduced `internal/app`, `internal/query`, and `internal/httpapi` so the web backend has an explicit read-oriented boundary instead of letting handlers query storage ad hoc
|
|
||||||
- implemented and validated the first read-only HTTP endpoints for health, runs, run detail, run tasks, blocked tasks, and thread detail
|
|
||||||
- verified the slice with `go test ./...` and `pnpm run web:build`, then synchronized `docs/implementation-roadmap.md`
|
|
||||||
@@ -337,7 +337,6 @@ Keep documentation split by concern:
|
|||||||
- runtime/package docs live under the owning package when tightly tied to implementation
|
- runtime/package docs live under the owning package when tightly tied to implementation
|
||||||
- cross-workspace architecture docs stay in root `docs/`
|
- cross-workspace architecture docs stay in root `docs/`
|
||||||
- skill forward-test plans stay in `docs/tests/*-skill/`
|
- skill forward-test plans stay in `docs/tests/*-skill/`
|
||||||
- execution traces stay in `docs/roadmaps/`
|
|
||||||
|
|
||||||
This document becomes the repository-level source of truth for the workspace
|
This document becomes the repository-level source of truth for the workspace
|
||||||
split.
|
split.
|
||||||
@@ -349,8 +348,6 @@ split.
|
|||||||
Deliverables:
|
Deliverables:
|
||||||
|
|
||||||
- this migration plan
|
- this migration plan
|
||||||
- execution roadmap
|
|
||||||
- implementation roadmap update
|
|
||||||
|
|
||||||
Exit criteria:
|
Exit criteria:
|
||||||
|
|
||||||
|
|||||||
@@ -1,427 +0,0 @@
|
|||||||
# Web Product Monorepo Plan
|
|
||||||
|
|
||||||
## Purpose
|
|
||||||
|
|
||||||
This document defines the recommended repository shape and implementation direction for evolving the current local CLI-based coordination stack into a formal web product.
|
|
||||||
|
|
||||||
The target shape is:
|
|
||||||
|
|
||||||
- a React frontend for leaders and operators
|
|
||||||
- a Go HTTP backend built with `chi`
|
|
||||||
- continued reuse of the existing `inbox` and `orch` domain logic
|
|
||||||
- one monorepo rather than separate frontend and backend repositories
|
|
||||||
|
|
||||||
This is an implementation-oriented planning document.
|
|
||||||
It does not replace the current protocol and workflow documents for `inbox`, `orch`, worktrees, or council review.
|
|
||||||
|
|
||||||
## Decision Summary
|
|
||||||
|
|
||||||
The recommended direction is:
|
|
||||||
|
|
||||||
- keep a single monorepo
|
|
||||||
- add a standalone frontend app under `apps/web`
|
|
||||||
- add a standalone HTTP backend entrypoint, now owned under `packages/operator-api/cmd/operator-api`
|
|
||||||
- keep the current Go repository as the backend source of truth
|
|
||||||
- evolve the backend by introducing shared application services and UI-oriented query layers
|
|
||||||
- avoid building the web backend by shelling out to the existing CLIs
|
|
||||||
|
|
||||||
This gives the product a front/back runtime split without creating a second backend codebase.
|
|
||||||
|
|
||||||
## Why Monorepo
|
|
||||||
|
|
||||||
For the current project stage, a monorepo is the most practical choice.
|
|
||||||
|
|
||||||
Benefits:
|
|
||||||
|
|
||||||
- the current domain model, scheduler logic, and SQLite schema already live in this repository
|
|
||||||
- frontend and backend changes will often move together while the web product is still forming
|
|
||||||
- API contracts, event contracts, and backend changes can be versioned together
|
|
||||||
- the existing CLI tools can stay in the same repo as operator and debugging surfaces
|
|
||||||
- shared scripts, fixtures, and docs remain simple
|
|
||||||
|
|
||||||
## Why The Backend Should Stay In This Repo
|
|
||||||
|
|
||||||
The backend should become a first-class HTTP service, but it should not start as a brand new repo.
|
|
||||||
|
|
||||||
Reasons:
|
|
||||||
|
|
||||||
- the existing state machine and storage behavior already live here
|
|
||||||
- duplicating `store` and schema logic into a second backend codebase would create unnecessary drift
|
|
||||||
- wrapping the CLIs from a web server would produce an unstable and hard-to-test integration boundary
|
|
||||||
- the fastest safe path is to let both the CLI and HTTP service call the same Go services
|
|
||||||
|
|
||||||
The backend may be split into another repo later only after the application-service boundary is stable and intentionally extracted.
|
|
||||||
|
|
||||||
## Product Direction
|
|
||||||
|
|
||||||
The target product is not just a local dashboard.
|
|
||||||
It should be able to evolve into a formal multi-user web application.
|
|
||||||
|
|
||||||
That means the backend should be designed for:
|
|
||||||
|
|
||||||
- stable HTTP APIs
|
|
||||||
- authenticated users
|
|
||||||
- eventual organization and membership concepts
|
|
||||||
- server-pushed run and thread updates
|
|
||||||
- UI-oriented read models for task boards, blocked queues, and timelines
|
|
||||||
- eventual migration away from SQLite if write concurrency or deployment shape requires it
|
|
||||||
|
|
||||||
## Recommended Repository Layout
|
|
||||||
|
|
||||||
The recommended monorepo shape is:
|
|
||||||
|
|
||||||
```text
|
|
||||||
.
|
|
||||||
├─ apps/
|
|
||||||
│ └─ web/ # React frontend application
|
|
||||||
├─ api/
|
|
||||||
│ ├─ openapi.yaml # HTTP API contract
|
|
||||||
│ └─ events.md # SSE or websocket event contract
|
|
||||||
├─ cmd/
|
|
||||||
│ ├─ inbox/ # existing worker-facing CLI
|
|
||||||
│ ├─ orch/ # existing leader-facing CLI
|
|
||||||
│ └─ orchd/ # new HTTP backend entrypoint
|
|
||||||
├─ internal/
|
|
||||||
│ ├─ app/ # shared application services used by CLI and HTTP
|
|
||||||
│ ├─ httpapi/ # chi router, handlers, middleware, SSE
|
|
||||||
│ ├─ query/ # frontend-oriented read models and aggregate queries
|
|
||||||
│ ├─ store/ # existing persistence and orchestration state logic
|
|
||||||
│ ├─ db/ # existing SQLite open and migration layer
|
|
||||||
│ └─ protocol/ # shared DTO and response helpers where appropriate
|
|
||||||
├─ docs/
|
|
||||||
├─ scripts/
|
|
||||||
├─ package.json
|
|
||||||
├─ pnpm-workspace.yaml
|
|
||||||
├─ go.mod
|
|
||||||
└─ Makefile
|
|
||||||
```
|
|
||||||
|
|
||||||
## Layout Decisions
|
|
||||||
|
|
||||||
### `apps/web`
|
|
||||||
|
|
||||||
The frontend should live under `apps/web`.
|
|
||||||
|
|
||||||
Recommended stack:
|
|
||||||
|
|
||||||
- React
|
|
||||||
- Vite
|
|
||||||
- TypeScript
|
|
||||||
- TanStack Router
|
|
||||||
- TanStack Query
|
|
||||||
|
|
||||||
The frontend should consume only HTTP APIs and event streams from the backend.
|
|
||||||
It should never read SQLite directly and should not depend on CLI output parsing.
|
|
||||||
|
|
||||||
### `packages/operator-api`
|
|
||||||
|
|
||||||
The backend HTTP service should live in a package-owned runtime with its Go binary under `packages/operator-api/cmd/operator-api`.
|
|
||||||
|
|
||||||
Responsibilities:
|
|
||||||
|
|
||||||
- expose REST or RPC-style HTTP endpoints for the web frontend
|
|
||||||
- expose SSE or websocket updates for run and thread activity
|
|
||||||
- load the same database as the CLI tools
|
|
||||||
- use shared application services rather than reimplementing logic
|
|
||||||
|
|
||||||
The existing orch and inbox runtimes should remain available as operator and debugging tools through their package-owned binaries under `packages/orch-runtime/cmd/orch` and `packages/inbox-runtime/cmd/inbox`.
|
|
||||||
|
|
||||||
### `packages/operator-api/internal/app`
|
|
||||||
|
|
||||||
This package should become the shared application-service layer.
|
|
||||||
|
|
||||||
It should own business actions that currently sit mostly in CLI command handlers, such as:
|
|
||||||
|
|
||||||
- dispatch
|
|
||||||
- reconcile
|
|
||||||
- answer
|
|
||||||
- retry
|
|
||||||
- reassign
|
|
||||||
- cancel
|
|
||||||
- council start, wait, tally, and report orchestration entrypoints
|
|
||||||
|
|
||||||
Both CLI commands and HTTP handlers should call into this layer.
|
|
||||||
|
|
||||||
### `packages/operator-api/internal/query`
|
|
||||||
|
|
||||||
This package should hold read models specifically shaped for the web UI.
|
|
||||||
|
|
||||||
Examples:
|
|
||||||
|
|
||||||
- run overview with task counts and recent event summaries
|
|
||||||
- kanban-style task board grouped by status
|
|
||||||
- blocked queue with latest question details
|
|
||||||
- thread timeline including artifacts and lease state
|
|
||||||
- council run summaries and grouped recommendation views
|
|
||||||
|
|
||||||
These should be query-oriented models rather than raw database table mirrors.
|
|
||||||
|
|
||||||
### `packages/operator-api/internal/httpapi`
|
|
||||||
|
|
||||||
This package should hold the web transport layer.
|
|
||||||
|
|
||||||
Recommended contents:
|
|
||||||
|
|
||||||
- `router.go`
|
|
||||||
- handler packages by domain
|
|
||||||
- auth and request middleware
|
|
||||||
- error mapping
|
|
||||||
- SSE handlers
|
|
||||||
- request validation and response serialization
|
|
||||||
|
|
||||||
The HTTP layer should stay thin.
|
|
||||||
It should not own business rules or embed SQL-heavy logic.
|
|
||||||
|
|
||||||
## Why `chi`
|
|
||||||
|
|
||||||
`chi` is the recommended HTTP router for this product direction.
|
|
||||||
|
|
||||||
Reasons:
|
|
||||||
|
|
||||||
- it stays close to standard `net/http`
|
|
||||||
- it provides cleaner routing and middleware composition than a bare `ServeMux`
|
|
||||||
- it avoids the heavier framework lock-in of `gin`
|
|
||||||
- it fits a backend that is expected to grow into a real product API
|
|
||||||
|
|
||||||
The decision here is not about raw performance.
|
|
||||||
It is about long-term code organization and maintainable HTTP structure.
|
|
||||||
|
|
||||||
## Why Not Build The Backend Around The Existing CLIs
|
|
||||||
|
|
||||||
The new web backend should not execute `orch` or `inbox` binaries as subprocesses.
|
|
||||||
|
|
||||||
That approach would create avoidable problems:
|
|
||||||
|
|
||||||
- duplicate input validation paths
|
|
||||||
- harder error mapping
|
|
||||||
- unstable process-level integration points
|
|
||||||
- slower request handling
|
|
||||||
- more difficult testing
|
|
||||||
- awkward transaction and context handling
|
|
||||||
|
|
||||||
The CLIs should become alternate entrypoints into shared services, not the implementation boundary for the web product.
|
|
||||||
|
|
||||||
## API Contract Direction
|
|
||||||
|
|
||||||
The monorepo should add an explicit API contract under `api/`.
|
|
||||||
|
|
||||||
Recommended starting files:
|
|
||||||
|
|
||||||
- `api/openapi.yaml`
|
|
||||||
- `api/events.md`
|
|
||||||
|
|
||||||
`openapi.yaml` should define:
|
|
||||||
|
|
||||||
- runs list and detail endpoints
|
|
||||||
- task list and task action endpoints
|
|
||||||
- blocked queue endpoints
|
|
||||||
- thread detail endpoints
|
|
||||||
- council report endpoints
|
|
||||||
|
|
||||||
`events.md` should define:
|
|
||||||
|
|
||||||
- event stream transport choice
|
|
||||||
- cursoring model
|
|
||||||
- payload shapes for run, task, thread, and council events
|
|
||||||
|
|
||||||
The web frontend should generate a typed client from the HTTP contract where practical.
|
|
||||||
|
|
||||||
## Frontend Direction
|
|
||||||
|
|
||||||
The frontend should be a standalone app in the monorepo, not embedded templates.
|
|
||||||
|
|
||||||
Recommended responsibilities:
|
|
||||||
|
|
||||||
- run dashboard
|
|
||||||
- task board
|
|
||||||
- blocked queue
|
|
||||||
- thread detail and timeline
|
|
||||||
- council result and report views
|
|
||||||
- operator actions such as answer, retry, reassign, and cancel
|
|
||||||
|
|
||||||
Recommended development model:
|
|
||||||
|
|
||||||
- local dev server from `apps/web`
|
|
||||||
- proxy API requests to `orchd`
|
|
||||||
- consume typed API clients instead of hand-written fetch calls where possible
|
|
||||||
|
|
||||||
## Backend Evolution Plan
|
|
||||||
|
|
||||||
The current project already has strong backend assets:
|
|
||||||
|
|
||||||
- durable schema and migrations
|
|
||||||
- store-layer logic for `inbox` and `orch`
|
|
||||||
- stable JSON conventions
|
|
||||||
- working CLI surfaces
|
|
||||||
|
|
||||||
The backend should therefore evolve in-place:
|
|
||||||
|
|
||||||
1. keep the current store and schema as the persistence foundation
|
|
||||||
2. extract shared application actions into the orchd runtime app layer
|
|
||||||
3. add UI-oriented read models in the orchd runtime query layer
|
|
||||||
4. add the orchd runtime package and its HTTP transport layer
|
|
||||||
5. attach the React frontend after the API contract stabilizes
|
|
||||||
|
|
||||||
This is safer than first attempting a large repo split or backend rewrite.
|
|
||||||
|
|
||||||
## Suggested Initial Endpoint Set
|
|
||||||
|
|
||||||
The first useful web slice should remain narrow.
|
|
||||||
|
|
||||||
Recommended read endpoints:
|
|
||||||
|
|
||||||
- `GET /api/runs`
|
|
||||||
- `GET /api/runs/{runID}`
|
|
||||||
- `GET /api/runs/{runID}/tasks`
|
|
||||||
- `GET /api/runs/{runID}/blocked`
|
|
||||||
- `GET /api/threads/{threadID}`
|
|
||||||
- `GET /api/council/runs/{runID}`
|
|
||||||
|
|
||||||
Recommended write endpoints:
|
|
||||||
|
|
||||||
- `POST /api/runs/{runID}/tasks/{taskID}/answer`
|
|
||||||
- `POST /api/runs/{runID}/tasks/{taskID}/retry`
|
|
||||||
- `POST /api/runs/{runID}/tasks/{taskID}/reassign`
|
|
||||||
- `POST /api/runs/{runID}/tasks/{taskID}/cancel`
|
|
||||||
|
|
||||||
Recommended realtime endpoint:
|
|
||||||
|
|
||||||
- `GET /api/events/stream`
|
|
||||||
|
|
||||||
The first UI should prioritize observation over broad mutation.
|
|
||||||
|
|
||||||
## Realtime Direction
|
|
||||||
|
|
||||||
The current system already has a shared `events` table for monotonic activity tracking.
|
|
||||||
That makes SSE a good first realtime transport.
|
|
||||||
|
|
||||||
Recommended approach:
|
|
||||||
|
|
||||||
- begin with SSE rather than websockets
|
|
||||||
- stream cursor-based events from the backend
|
|
||||||
- let the frontend use events to invalidate or refresh query results
|
|
||||||
- keep the server-side event payloads close to run, task, thread, and council activity
|
|
||||||
|
|
||||||
Websockets can be reconsidered later if bidirectional session behavior becomes necessary.
|
|
||||||
|
|
||||||
## Database Direction
|
|
||||||
|
|
||||||
SQLite remains appropriate for the current CLI-focused local workflow and can also support early web product development in controlled environments.
|
|
||||||
|
|
||||||
However, if the product becomes truly multi-user or centrally hosted, the backend should expect a later database transition.
|
|
||||||
|
|
||||||
Recommended position:
|
|
||||||
|
|
||||||
- keep SQLite during the first web API and frontend milestone
|
|
||||||
- avoid SQLite-specific assumptions in the new application-service and query layers
|
|
||||||
- plan for a future Postgres migration if concurrency, deployment, or tenancy requirements grow
|
|
||||||
|
|
||||||
The goal is to avoid rewriting product boundaries just because the storage engine changes later.
|
|
||||||
|
|
||||||
## Implementation Phases
|
|
||||||
|
|
||||||
### Phase 1: Monorepo Skeleton And Backend Service
|
|
||||||
|
|
||||||
Add:
|
|
||||||
|
|
||||||
- `apps/web`
|
|
||||||
- `packages/operator-api/cmd/operator-api`
|
|
||||||
- `packages/operator-api/internal/httpapi`
|
|
||||||
- `packages/operator-api/internal/app`
|
|
||||||
- `packages/operator-api/internal/query`
|
|
||||||
- `api/openapi.yaml`
|
|
||||||
- `api/events.md`
|
|
||||||
- root JS workspace files such as `package.json` and `pnpm-workspace.yaml`
|
|
||||||
|
|
||||||
Deliverable:
|
|
||||||
|
|
||||||
- the repository builds with the new monorepo structure in place
|
|
||||||
- the backend can serve a small read-only API
|
|
||||||
|
|
||||||
### Phase 2: Read-Only Web UI
|
|
||||||
|
|
||||||
Build:
|
|
||||||
|
|
||||||
- runs page
|
|
||||||
- run detail view
|
|
||||||
- task board
|
|
||||||
- blocked queue
|
|
||||||
- thread detail
|
|
||||||
|
|
||||||
Deliverable:
|
|
||||||
|
|
||||||
- the React frontend can inspect live orchestration state through `orchd`
|
|
||||||
|
|
||||||
### Phase 3: Realtime Updates
|
|
||||||
|
|
||||||
Add:
|
|
||||||
|
|
||||||
- SSE event endpoint
|
|
||||||
- frontend subscription and refresh behavior
|
|
||||||
|
|
||||||
Deliverable:
|
|
||||||
|
|
||||||
- run and thread views update without manual reload loops
|
|
||||||
|
|
||||||
### Phase 4: Write Operations
|
|
||||||
|
|
||||||
Add:
|
|
||||||
|
|
||||||
- answer
|
|
||||||
- retry
|
|
||||||
- reassign
|
|
||||||
- cancel
|
|
||||||
|
|
||||||
Deliverable:
|
|
||||||
|
|
||||||
- the web UI becomes a practical operator surface rather than read-only reporting
|
|
||||||
|
|
||||||
### Phase 5: Product Hardening
|
|
||||||
|
|
||||||
Add:
|
|
||||||
|
|
||||||
- auth
|
|
||||||
- user and organization concepts
|
|
||||||
- audit trails
|
|
||||||
- deployment configuration
|
|
||||||
- database migration planning beyond SQLite if needed
|
|
||||||
|
|
||||||
Deliverable:
|
|
||||||
|
|
||||||
- the system can evolve beyond a local operator tool into a formal product backend
|
|
||||||
|
|
||||||
## Non-Goals For The First Web Milestone
|
|
||||||
|
|
||||||
Do not treat these as part of the initial skeleton task:
|
|
||||||
|
|
||||||
- a full permissions model
|
|
||||||
- background job infrastructure
|
|
||||||
- multi-tenant isolation
|
|
||||||
- websocket-first architecture
|
|
||||||
- immediate database migration
|
|
||||||
- full replacement of the CLI workflows
|
|
||||||
|
|
||||||
The first milestone should create a durable path, not solve every product concern at once.
|
|
||||||
|
|
||||||
## Migration Notes For Existing Code
|
|
||||||
|
|
||||||
The current codebase should be adapted incrementally.
|
|
||||||
|
|
||||||
Recommended rules:
|
|
||||||
|
|
||||||
- keep the package-owned `orch` and `inbox` binaries working while the HTTP layer is introduced
|
|
||||||
- move business logic out of command handlers only when the shared service abstraction is clear
|
|
||||||
- do not rewrite `store` just to match HTTP names
|
|
||||||
- let the frontend shape drive the orchd runtime query layer, not the table layout alone
|
|
||||||
- avoid introducing duplicate orchestration logic between CLI and HTTP
|
|
||||||
|
|
||||||
## Immediate Recommended Next Step
|
|
||||||
|
|
||||||
If the project begins this web-product milestone, the first implementation slice should be:
|
|
||||||
|
|
||||||
1. scaffold the monorepo workspace files and `apps/web`
|
|
||||||
2. add the `orchd` runtime package with a `chi` router and a minimal health or runs endpoint
|
|
||||||
3. introduce the first shared application or query boundary rather than letting handlers call storage ad hoc
|
|
||||||
4. write the initial API contract in `api/openapi.yaml`
|
|
||||||
|
|
||||||
This gives the project a clean backbone before deeper UI work begins.
|
|
||||||
@@ -223,4 +223,3 @@ Suggested flags:
|
|||||||
|
|
||||||
- [architecture.md](/home/kurihada/project/ai-workflow-skill/docs/architecture.md): high-level separation of inbox and orch
|
- [architecture.md](/home/kurihada/project/ai-workflow-skill/docs/architecture.md): high-level separation of inbox and orch
|
||||||
- [orch-cli.md](/home/kurihada/project/ai-workflow-skill/docs/orch-cli.md): scheduling commands that create and manage attempts
|
- [orch-cli.md](/home/kurihada/project/ai-workflow-skill/docs/orch-cli.md): scheduling commands that create and manage attempts
|
||||||
- [blog-project-example.md](/home/kurihada/project/ai-workflow-skill/docs/blog-project-example.md): example of dispatch creating a worktree-backed attempt
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
|
|
||||||
Reference in New Issue
Block a user