# Case: `council-start-with-target-file-through-bundled-cli` ## Test Type This is a `forward-test` and a non-prompt target-context validation. The goal is to verify that a leader using the packaged `council-review` skill can start a council run from explicit `--target-file` context instead of relying on a pure inline prompt. ## Purpose Validate that all of the following can be true at the same time: - the test runner can prepare a concrete brief file before launching the leader - the leader can start a council run through the bundled council-review skill using `--target-file` - the target-file path is persisted in council input metadata - reviewer tasks are still dispatched normally from the file-based target ## Preconditions - council-review skill path exists: `COUNCIL_SKILL_PATH=skills/council-review` - inbox skill path exists: `INBOX_SKILL_PATH=skills/inbox` - bundled CLI executables exist at `COUNCIL_SKILL_PATH/assets/orch` and `INBOX_SKILL_PATH/assets/inbox` - `sqlite3` is available locally for metadata validation - use an empty temporary directory `TMPDIR` - initialize `TMPDIR/coord.db` before launching the leader through `INBOX_SKILL_PATH/assets/inbox --db TMPDIR/coord.db --json init` ## Agent Topology - `leader` ## Inputs ### Target File Fixture Create `TMPDIR/brief.md` before launching the leader with contents similar to: ```md # Brief Review the current council-review packaging flow. - Confirm the skill can carry file-based context. - Focus on documentation quality and report semantics. ``` ### Leader Prompt ```text Use $council-review at COUNCIL_SKILL_PATH to act as leader on the already initialized SQLite DB TMPDIR/coord.db. Only coordinate through the bundled orch CLI from the skill. Workflow: 1) start council run council_skill_009 using --target-file TMPDIR/brief.md, --target-type mixed, and --mode review, 2) stop after reporting RUN_ID and the target metadata you observed from the start response. Do not use ordinary chat to simulate reviewer work. ``` ## Execution Parameters - use the shared execution contract from [README.md](./README.md) - use the shared timeout defaults from [README.md](./README.md) - do not override the default cleanup policy ## Execution Steps 1. Initialize `TMPDIR/coord.db` once through the bundled inbox CLI before launching agents 2. Create `TMPDIR/brief.md` with the target file contents 3. Inject `skills/council-review/` into `leader` 4. Point the leader at the database path `TMPDIR/coord.db` 5. Launch the leader 6. Wait for the leader to finish 7. Independently run the validation commands from the main thread ## Validation Commands ```bash COUNCIL_SKILL_PATH/assets/orch --db TMPDIR/coord.db --json run show --run council_skill_009 COUNCIL_SKILL_PATH/assets/orch --db TMPDIR/coord.db --json status --run council_skill_009 sqlite3 TMPDIR/coord.db "SELECT prompt, target_file, repo_path, target_task_id FROM council_inputs WHERE run_id = 'council_skill_009';" sqlite3 TMPDIR/coord.db "SELECT acceptance_json FROM tasks WHERE run_id = 'council_skill_009' AND task_id = 'CR1';" ``` ## Expected Outcomes - the leader successfully starts `council_skill_009` - the run goal references the target file rather than an inline prompt - the stored council input row keeps `target_file == TMPDIR/brief.md` - reviewer task dispatch still produces the usual three council tasks - reviewer task acceptance metadata carries the `target_file` reference forward ## Assertions - `run_show.data.run.goal` mentions `brief.md` - `status.data.tasks` length is `3` - `status.data.run.status` is not terminal - the `council_inputs` row has empty `prompt`, `repo_path`, and `target_task_id` - the `council_inputs` row has `target_file == "TMPDIR/brief.md"` - the `CR1` acceptance JSON contains `"target_file":"TMPDIR/brief.md"` ## Cleanup - use the default cleanup policy from [README.md](./README.md) - if the run fails, retain `TMPDIR`, `brief.md`, and `coord.db` for replay and manual inspection