Cori
Contributing

Where features go

Architectural table for placing new functionality in the Cori codebase, and coding conventions.

Feature placement table

Feature areaWhere it lives
New CLI verb or flagcrates/cori-cli/src/commands/
Manifest schema changecrates/cori-core/src/manifest.rs + packages/sdk/ for TS types
New activity kindcrates/cori-core/ (kind enum) + crates/cori-broker/ (executor) + packages/sdk/ (constructor)
Temporal connection logiccrates/cori-temporal/
Step compilationcrates/cori-compiler/
Step-to-queue assignmentcrates/cori-planner/
Activity execution (all side effects)crates/cori-broker/ — the trust boundary
Run trace shapecrates/cori-cli/src/commands/run.rs
Worker registrationcrates/cori-worker/
Agent skill authoring procedurepackages/skill/
Docsdocs/content/docs/

The largest known gap

The builtin activity kind (map, for_each, branch, parallel, wait) is accepted by the compiler but not executed by the v1 runtime. This is the biggest missing piece for complex workflow patterns.

Adding builtin execution requires:

  1. Defining the execution semantics in crates/cori-core/
  2. Implementing the executor in crates/cori-broker/
  3. Updating the planner in crates/cori-planner/ for fan-out
  4. Updating packages/sdk/ with the constructor implementations
  5. Adding integration tests

Coding conventions

  • Edition 2024 Rust. Use modern Rust idioms.
  • No unwrap() in library code. Use ? and proper error types. unwrap() is acceptable in tests.
  • Broker is the only place with side effects. If new code makes a network call, touches the filesystem, or executes a subprocess, it belongs in cori-broker or in a crate that cori-broker calls.
  • TypeScript-only step files. No other language runtimes for step execution.
  • AGENTS.md is the source of truth for architectural decisions. When in doubt, read it.

Refer to AGENTS.md in the repository for the full, authoritative conventions and locked decisions.

On this page