You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When a user sends `matrix ralph: fix auth tests`, `core/harness.py` loads `ralph.md` via `registry.load_persona()`, composes it with the base contracts, and injects the resulting text into the current turn via the `pre_llm_call` hook. The agent then reads procedural instructions and may attempt to self-direct.
Nothing more happens programmatically. Specifically:
No Python code in `core/` implements any loop, gate-progression, or iteration
`delegate_task` appears only inside persona text as an instruction to the agent — no code calls it
There is no iteration counter, no 5-cycle cap, no stop-criteria check
There is no cross-turn state: if the agent produces a response and the next user message is unrelated, the workflow context is gone
The `_inject_persona` hook clears after every non-trigger turn — a multi-turn loop would need to re-trigger or persist state
The only test for workflows is `test_real_loader_workflow_composes`, which asserts `"Ralph" in out` (persona text was injected), not that any loop structure ran
The existing code is correct for single-turn persona injection. It is not an implementation of the loop/orchestration semantics Phase 3 described.
What "done" looks like
A complete Phase 3 implementation requires at minimum:
Loop driver in `harness.py` — a `run_workflow(workflow, goal, session_id)` function that:
Dispatches the appropriate sequence of specialist roles in order (or in parallel for ultrawork)
Tracks iteration count and enforces the configured cap (default 5)
Checks a stop condition (e.g. `verify` returns pass) between iterations
Returns a `SpecialistResult` summarising the final outcome
Cross-turn state — workflow sessions need to survive across turns. Options: store active workflow state in `HermesBridge` (keyed by session_id), or require the full loop to complete within a single invocation via `delegate_task`.
`delegate_task` integration — `ultrawork` fan-out requires actual calls to `delegate_task` from Python, not just instructing the agent to do so in persona text.
Kanban child cards per iteration — Phase 2 (Matrix Coder Phase 2 — Observability: Kanban audit mirror #114) specified child cards per specialist dispatch; currently only a single parent card is created per invocation. Loop iterations should open child cards.
Tests — test that the loop iterates, that the cap fires, that a passing `verify` step halts the loop, and that a blocked gate surfaces correctly.
Impact
Users invoking `matrix ralph`, `matrix autopilot`, `matrix ultrawork`, or `matrix ultraqa` get the workflow persona injected for that turn and the agent may attempt to self-direct — but there is no guarantee of gate-by-gate progression, no iteration cap, no automatic stop on success, and no multi-turn coordination. The behaviour depends entirely on the model following the persona instructions in a single context window.
Epic: #76
Affected phases: #115 (Phase 3 — Workflow/loop skills)
What was claimed
Phase 3 (#115) stated:
The Phase 3 scope listed concrete loop semantics:
What actually exists
All four workflow `.md` persona files are present and well-written:
When a user sends `matrix ralph: fix auth tests`, `core/harness.py` loads `ralph.md` via `registry.load_persona()`, composes it with the base contracts, and injects the resulting text into the current turn via the `pre_llm_call` hook. The agent then reads procedural instructions and may attempt to self-direct.
Nothing more happens programmatically. Specifically:
The existing code is correct for single-turn persona injection. It is not an implementation of the loop/orchestration semantics Phase 3 described.
What "done" looks like
A complete Phase 3 implementation requires at minimum:
Loop driver in `harness.py` — a `run_workflow(workflow, goal, session_id)` function that:
Cross-turn state — workflow sessions need to survive across turns. Options: store active workflow state in `HermesBridge` (keyed by session_id), or require the full loop to complete within a single invocation via `delegate_task`.
`delegate_task` integration — `ultrawork` fan-out requires actual calls to `delegate_task` from Python, not just instructing the agent to do so in persona text.
Kanban child cards per iteration — Phase 2 (Matrix Coder Phase 2 — Observability: Kanban audit mirror #114) specified child cards per specialist dispatch; currently only a single parent card is created per invocation. Loop iterations should open child cards.
Tests — test that the loop iterates, that the cap fires, that a passing `verify` step halts the loop, and that a blocked gate surfaces correctly.
Impact
Users invoking `matrix ralph`, `matrix autopilot`, `matrix ultrawork`, or `matrix ultraqa` get the workflow persona injected for that turn and the agent may attempt to self-direct — but there is no guarantee of gate-by-gate progression, no iteration cap, no automatic stop on success, and no multi-turn coordination. The behaviour depends entirely on the model following the persona instructions in a single context window.