fix: address review findings — backward compat, ACP safety, result timing, security
- Fix 1: tasks_md_sync only sets MACP fields when columns exist in table headers - Fix 2: ACP dispatch now escalates instead of falsely completing - Fix 3: Removed premature collect_result() from dispatch_task() - Fix 4: Yolo brief staged via temp file (0600) instead of process args - Fix 5: cleanup_worktree validates path against configured worktree base
This commit is contained in:
@@ -56,6 +56,32 @@ Implement MACP Phase 1 in `mosaic-bootstrap` by extending the orchestrator-matri
|
||||
- 2026-03-27: Added explicit worker escalation handling via the `MACP_ESCALATE:` stdout marker.
|
||||
- 2026-03-27: Committed and pushed branch `feat/macp-phase1` (`7ef49a3`, `fd6274f`).
|
||||
- 2026-03-27: Blocked in PR workflow when `~/.config/mosaic/tools/git/pr-create.sh` failed to resolve the remote repository from this worktree.
|
||||
- 2026-03-28: Resumed from blocked state for a review-fix pass covering 5 findings in `docs/tasks/MACP-PHASE1-fixes.md`.
|
||||
|
||||
## Review Fix Pass
|
||||
|
||||
### Scope
|
||||
|
||||
1. Restore legacy `tasks_md_sync.py` behavior so rows without MACP headers do not become MACP tasks.
|
||||
2. Make ACP dispatch fail-safe via escalation instead of a no-op success path.
|
||||
3. Move MACP result writes to the controller after quality gates determine the final task status.
|
||||
4. Remove brief text from yolo command arguments by switching to file-based brief handoff.
|
||||
5. Restrict worktree cleanup to validated paths under the configured worktree base.
|
||||
|
||||
### TDD / Test-First Decision
|
||||
|
||||
1. This is a bug-fix and security-hardening pass, so targeted reproducer verification is required.
|
||||
2. Repo appears to use focused script-level verification rather than a Python test suite for this surface, so reproducer checks will be command-driven and recorded as evidence.
|
||||
|
||||
### Planned Verification Additions
|
||||
|
||||
| Finding | Verification |
|
||||
|---|---|
|
||||
| Legacy task reclassification | Sync `docs/TASKS.md` without MACP headers into `tasks.json` and confirm `dispatch` is absent so controller stays on `run_shell()` |
|
||||
| ACP no-op success | Run controller/dispatcher with `dispatch=acp` and confirm `status=escalated`, exit path is non-zero, and `task.escalated` is emitted |
|
||||
| Premature result write | Inspect result JSON after final controller state only; confirm gate results are present and no dispatcher pre-write remains |
|
||||
| Brief exposure | Build yolo command and confirm the brief body is absent from the command text |
|
||||
| Unsafe cleanup | Call cleanup against a path outside configured base and confirm it is refused |
|
||||
|
||||
## Tests Run
|
||||
|
||||
|
||||
Reference in New Issue
Block a user