Skip to content

CI Workflows

llms.txt lists every page for an agent

ci.workflow in chant.workspace.json names a prescribed delivery workflow (#4168). At the top level it covers every member that builds with chant, and a member’s own ci.workflow wins over it. chant ci init writes it, and chant workspace check reports what a member under it still lacks as WSP151 warnings. A declaration that names no workflow gets none.

WorkflowOn mergeDeploys
trunk-curatedrecords the plan and deploys nothing (chant ci run record)a release cut from a green commit, promoted through the member’s environments
trunk-curated+apply-on-mergeapplies the approved plan (chant ci run apply)the merge, and releases as trunk-curated does

Neither turns on a security group. Those are opt-in on their own; see Security Features.

The table is printed from CI_WORKFLOW_REQUIREMENTS in packages/core/src/workspace/ci-workflow.ts, and a test compares the two. Checked for says whether WSP151 asks once for the workspace or once for each member under the workflow. A member counts as building with chant when its directory has a chant.config.ts; a member that names a workflow itself is held to it either way.

CodeRequirementChecked forAdded by
ci-workflow-green-undeclaredci.green is declared, so commits get a verdict and a release is cut only from a green onethe workspacechant ci init, or a hand-written ci.green block
ci-workflow-no-pre-mergeci.green.preMerge names at least one phase, the quick checks that run before the branch movesthe workspacepreMerge in ci.green
ci-workflow-apply-in-greenno phase in ci.green.require matches an apply job, which would wait on its own verdictthe workspacedrop the apply job’s pattern from the required phases
ci-workflow-no-componentsthe member declares a component (*.component.ts)each memberchant ci init writes a stub
ci-workflow-no-environmentsthe member’s chant.config.ts declares environments, the promotion ordereach memberenvironments in chant.config.ts
ci-workflow-ungated-enveach component has a gate, so a promote to the last environment waits on an approvaleach membera gate() step in the component
ci-workflow-pipeline-missinga pipeline file runs the plan job, the record job (ci run record) and chant ci tickthe workspacechant build --components --generate <forge> --pr-loop and chant ci workflow
ci-workflow-pipeline-differsthe pipeline matches the workflow: no apply job under trunk-curated, and under trunk-curated+apply-on-merge an apply job that applies the newest green commit, not each mergethe workspaceregenerate the pull-request pipeline, with --apply-on-merge only under apply on merge
ci-workflow-publish-missinga pipeline file runs chant release publishthe workspacechant release workflow

The check reads files and never runs them. Environments are the literal environments of chant.config.ts; a config that builds them some other way is not checked for ci-workflow-no-environments. A pipeline file that differs from what its generator writes is reported by WSP101 to WSP106, not here.

ci.green.preMerge names the phases that must pass before the branch moves. These are the quick checks, run by any of:

  • a pull request’s checks;
  • a merge queue;
  • chant ci serve landing a branch;
  • chant ci run --local before a push.

Each must be a phase ci.green.phases declares. The slow suites can stay out of it and run on the branch after the merge, with build: "newest" (#4169).

chant