Repository navigation
Conversation
The three orchestration modes have no direct tests today: `tests/` calls
`run_pipeline` and `run_council` exactly zero times, and the only
`run_outcome("graph", ...)` invocation asserts child-outcome propagation
rather than scheduling. That makes any executor refactor unverifiable.
Pin the current contract first, byte for byte, so a refactor cannot change
behaviour silently:
- the exact prompt each stage/node/member receives, including the two
different context rules (pipeline accumulates every prior stage, graph
injects direct dependencies only, council injects peers' round-1 text);
- the rendered section structure of each result (graph emits the status
line and the body as separate `---` sections, which is easy to "fix"
accidentally);
- legacy teams whose persona block lives in `task` still get it promoted
to the system prompt;
- failure semantics: pipeline aborts immediately, graph marks dependents
failed and keeps going, council surfaces the child outcome;
- the `WORKFLOW_EXEC` metadata payload keys per mode.
Deliberately asserts today's whitespace and formats, including the parts
that look odd. Changing behaviour should require editing this file.
pipeline / graph / council each implemented their own scheduling, context rules, failure aggregation and rendering. Adding a topology meant editing the model, two pydantic schemas, the dispatch and four front-end forms; fixing a bug in one copy left the other two behind. Introduce `WorkflowSpec` as the single execution path: the three modes are now compiled into nodes (needs / condition / prompt / system_prompt) and run by one scheduler. Rendering stays per preset so the user-visible output is byte-identical — `tests/test_workflow_characterization.py` pins the exact prompts, section structure, failure semantics and metadata keys, and passes unchanged before and after this commit. Behaviour deliberately preserved, including the parts that look odd: - pipeline accumulates every earlier stage; graph injects direct dependencies only; council injects peers' round-1 positions; - pipeline aborts on the first failing stage, graph marks dependents "Blocked by upstream failure" and keeps scheduling other branches; - council waits for the whole round before surfacing a child failure; - duplicate slot ids still collapse (last value, first position); - pipeline stages still use role/id as the WORKFLOW_EXEC key even though internal node ids are now index-based, so two stages sharing a role still collapse their metadata exactly as before. Not in this commit: explicit mode validation (an unknown mode still falls through to council, reported separately in the RFC), the new node kinds (map / branch / loop / checkpoint), and the runtime planner. Refs countbot-ai#153
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.