Skip to main content

Software orchestrator that runs the AI Council protocol over an instance's state files. Framework consumer, not part of the framework core.

Project description

AI Council Orchestrator

Software that runs the AI Council protocol over a project instance's state files.

This repository is a consumer of the AI Council framework, not part of its core. The framework core stays documentation and method only; the orchestrator is code and ships separately. See the framework's orchestrator-design.md (Build Placement) for why.

Status

Pre-alpha walking skeleton. It reads and safely updates state files, can drive a guarded execution loop, and has the first file-based slice of the discussion engine. Working slices today:

  • Parse an instance's docs/todo.md task matrix per the framework's state-schema.md.
  • Validate it: canonical columns, allowed statuses, unique IDs (hard errors); missing owner/reviewer/validation and owner-equals-reviewer (warnings).
  • Print it as a table or emit it as JSON.
  • Parse fenced handoff, execution-result, and review-result objects from Markdown state files.
  • Append well-formed state objects to docs/log.md.
  • Set task status in docs/todo.md with round-trip checks.
  • Run the execution engine loop with explicit approval and reviewer gates.
  • Show a single-instance summary across todo, decisions, discussion readiness, and state objects.
  • Show a read-only Command Center summary across one or more instances, with --sort-by (issues, todo, decisions, discussion_incomplete) and --filter (has-issues, has-errors, has-warnings, incomplete-discussion) for navigation.
  • Serve the same Command Center report as a read-only local web view.
  • Validate discussion-engine stage readiness for a decision record, with advisory content-quality checks (unfilled Clean Input subsections, empty or duplicated proposals).
  • Parse decision records, persist proposal-author handoffs, capture proposal outputs, render anonymous peer-review packets, persist review handoffs, and capture reviews into Round 2 for the discussion engine.
  • Draft proposal, review, and synthesis handoffs through the optional llm extra without writing decision records.
  • Run the proposal/review/synthesis draft pipeline into handoff files without capturing anything into the decision record.
  • Render synthesis packets, persist synthesis handoffs, and capture synthesis output into Round 3.
  • Render final decision packets, persist final decision handoffs, and capture final decision fields into Round 4 while preserving the task matrix.

First principle

The protocol and the state files are the source of truth. This software automates work on top of them; it never becomes the record of truth.

If the orchestrator is turned off, the instance must still be fully workable by hand from its files alone.

Any internal state this tool keeps must be rebuildable from the files.

Quickstart

git submodule update --init --recursive

python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"

# Read the bundled sample instance:
ai-council-orch show-todo

# Summarize the bundled sample instance:
ai-council-orch show-instance
ai-council-orch show-command-center
ai-council-orch serve-command-center

# Read a real instance directory:
ai-council-orch show-todo /path/to/instance
ai-council-orch show-instance /path/to/instance
ai-council-orch show-command-center /path/to/instance-a /path/to/instance-b

# Emit JSON:
ai-council-orch show-todo --json

# Prepare an independent-proposal author packet from a decision record:
ai-council-orch proposal-packet examples/sample-instance/docs/decisions/2026-01-01-sample-flow.md --slot A

# Check whether decision records are ready for each discussion stage:
ai-council-orch check-discussion
ai-council-orch check-discussion /path/to/instance
ai-council-orch check-discussion /path/to/instance/docs/decisions/decision.md

# Persist a fillable proposal handoff, then capture the completed response:
ai-council-orch write-proposal-handoff /path/to/instance/docs/decisions/decision.md --slot B --out /tmp/proposal-B.md
ai-council-orch draft-proposal /path/to/instance/docs/decisions/decision.md --slot B --out /tmp/proposal-B.md
ai-council-orch capture-proposal /path/to/instance/docs/decisions/decision.md /tmp/proposal-B.md --slot B --source-label Author-B

# Draft proposals, anonymous reviews, and synthesis handoffs in one pass.
# This writes only handoff files under /tmp/council-drafts; capture remains manual.
ai-council-orch run-discussion /path/to/instance/docs/decisions/decision.md --out-dir /tmp/council-drafts

# Prepare an anonymous peer-review packet from a decision record:
ai-council-orch review-packet examples/sample-instance/docs/decisions/2026-01-01-sample-flow.md

# Persist a fillable review handoff for one anonymous proposal, then capture it into Round 2:
ai-council-orch write-review-handoff /path/to/instance/docs/decisions/decision.md --proposal 2 --out /tmp/review-2.md
ai-council-orch draft-review /path/to/instance/docs/decisions/decision.md --proposal 2 --out /tmp/review-2.md
ai-council-orch capture-review /path/to/instance/docs/decisions/decision.md /tmp/review-2.md --proposal 2

# Prepare synthesis context, persist a fillable handoff, then capture it into Round 3:
ai-council-orch synthesis-packet /path/to/instance/docs/decisions/decision.md
ai-council-orch write-synthesis-handoff /path/to/instance/docs/decisions/decision.md --out /tmp/synthesis.md
ai-council-orch draft-synthesis /path/to/instance/docs/decisions/decision.md --out /tmp/synthesis.md
ai-council-orch capture-synthesis /path/to/instance/docs/decisions/decision.md /tmp/synthesis.md

# Prepare final decision context, persist a fillable handoff, then capture it into Round 4:
ai-council-orch final-decision-packet /path/to/instance/docs/decisions/decision.md
ai-council-orch write-final-decision-handoff /path/to/instance/docs/decisions/decision.md --out /tmp/final-decision.md
ai-council-orch capture-final-decision /path/to/instance/docs/decisions/decision.md /tmp/final-decision.md

# Run the tests:
pytest

show-todo exits 0 on a clean read, 1 when the matrix has schema errors, and 2 when the file cannot be found or parsed at all.

Layout

src/ai_council_orchestrator/
  schema.py       Python mirror of state-schema.md objects
  todo.py         parse and validate docs/todo.md
  decisions.py    parse decision records and build/write discussion packets
  llm.py          optional LLM drafting clients for fillable handoffs
  objects.py      parse fenced handoff/result/review objects
  web.py          read-only Command Center HTTP view
  writeback.py    update task matrix status and append docs/log.md objects
  engine.py       guarded execution-engine loop
  cli.py          the ai-council-orch command
examples/
  sample-instance/docs/         domain-neutral fixture state files
tests/
  test_*.py
.ai-council/    framework reference as a git submodule

Relationship to the framework

The framework is referenced under .ai-council/ai-council/, the same path a project instance uses. In this repository that path is a git submodule pinned to a reviewed framework commit. The orchestrator reads real instances through their files and treats state-schema.md as the interface. See .ai-council/README.md for clone and initialization notes.

Roadmap

Now: state readers, safe write-back, guarded execution loop, and proposal, review, synthesis, and final decision packet/handoff/capture flows, with single-/multi-instance summaries, discussion-stage readiness checks, advisory content-quality validation, optional LLM draft handoffs and discussion draft pipeline, and Command Center sort/filter/web navigation.

Non-goals

  • Not a replacement for a project's domain business application or interface.
  • Not a chat product; conversation is not the record of truth.
  • Not a required dependency for using the protocol.
  • Not a place for project-specific business logic to accumulate.

License

MIT. See LICENSE.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ai_council_orch-0.2.1.tar.gz (61.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ai_council_orch-0.2.1-py3-none-any.whl (48.7 kB view details)

Uploaded Python 3

File details

Details for the file ai_council_orch-0.2.1.tar.gz.

File metadata

  • Download URL: ai_council_orch-0.2.1.tar.gz
  • Upload date:
  • Size: 61.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.6

File hashes

Hashes for ai_council_orch-0.2.1.tar.gz
Algorithm Hash digest
SHA256 9b3ff4cc79273db08fa0d1ed12c28848e0e5f5b279e26db2f621d13e1b865539
MD5 2f56e3602d290e2cb03665a16083e65f
BLAKE2b-256 d0906a57008424d1ce353813cb92bbb4c9c1032a649f8901aa11d93b31f5a841

See more details on using hashes here.

File details

Details for the file ai_council_orch-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for ai_council_orch-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 03dbe9b72c491fa395e7814ec383572250d5c7d17759fe8bc4cf38aa7cfdff4b
MD5 f6604e681a268927c81c5e00d80eecff
BLAKE2b-256 592d6367203a2ac01e71cd6f32511e9dbee9cc661c8cb87b6f22d33d274ff714

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page