Skip to content

Labels

Every label in the system has an owner: the command or script that adds it. The core rule keeps concurrent agents from stepping on each other:

If you didn’t add it, don’t remove it. Only the owner — or the Orchestrator — may remove a label.

The one exception: orchestrate.sh transition clears all agent labels on every phase change, giving each new phase a clean slate.

Source of truth

This page summarizes label ownership for public reference. The authoritative version lives in the private repo at docs/LABEL-OWNERSHIP.md.

Phase labels

LabelWho adds itWho removes itLegal transitions
jkz:readyHuman or the triage workfloworchestrate.sh transitionjkz:planning, → jkz:building (quick mode)
jkz:planningPlan commandorchestrate.sh transitionjkz:planning (iteration), → jkz:building, → jkz:blocked (decomposition)
jkz:buildingBuild commandorchestrate.sh transitionjkz:reviewing
jkz:reviewingBuild, quick, or fix commandorchestrate.sh transitionjkz:qa, → jkz:approved (quick mode), → jkz:fixing
jkz:qaReview commandorchestrate.sh transitionjkz:approved, → jkz:fixing
jkz:fixingReview or QA commandorchestrate.sh transitionjkz:reviewing, → jkz:qa, → jkz:blocked
jkz:approvedQA commandHuman (on merge)(merged)
jkz:blockedFix or plan command (3 attempts or decomposition)Human (intervention)(any — human decides)
jkz:pipelinePipeline command (INIT)Pipeline command (COMPLETION)Accompanies the active phase during the autonomous pipeline

Agent labels

LabelWho adds itWho removes itActive phase
jkz:architectPlan commandPlan command or orchestrate transitionPLAN
jkz:auditorPlan commandPlan command or orchestrate transitionPLAN
jkz:curatorPlan commandPlan command or orchestrate transitionPLAN
jkz:builderBuild commandorchestrate transitionBUILD
jkz:judgeReview commandReview command or orchestrate transitionREVIEW
jkz:inspectorReview commandReview command or orchestrate transitionREVIEW
jkz:doctorFix commandFix command or orchestrate transitionFIX
jkz:lensQA commandQA command or orchestrate transitionQA
jkz:sentinelQA commandQA command or orchestrate transitionQA

Automation labels

LabelWho adds itWho removes itWhen
jkz:regressionmonitor.sh via GitHub Actions (daily cron or push to main)Human on issue closeWhen health-check, mcp-build, unit-tests, or npm-audit fail in CI. Created with deduplication; outside the normal pipeline flow.

Wiki Generator labels

LabelWho adds itWho removes itWhen
docs-worthyHuman (manual triage)HumanApplied to issues whose body/comments are worth ingesting by the wiki-generator. Read-only from the pipeline’s perspective.

Research labels

LabelWho adds itWho removes itWhen
jkz:research-pendingHuman, research-suggest.js, or the Telegram botThe research-label-validate workflow (on rejection) or the research poller (on completion or runtime failure)Enqueues a research issue for body validation and polling.
jkz:research-rejectedThe research-label-validate workflowHumanWhen the issue body fails jkz:research-pending format validation.
jkz:research-doneThe research pollerHumanWhen the research issue is processed successfully.
jkz:research-failedThe research pollerHumanWhen research issue processing fails or times out at runtime.

Type labels

LabelWho adds itWho removes itWhen
bugStart or issue commandNever (type is immutable)When the issue is classified as a bug fix.
refactorStart or issue commandNever (type is immutable)When the issue is classified as a refactor.
choreStart or issue commandNever (type is immutable)When the issue is classified as a mechanical change.

Type labels are set once at issue creation. They flow through the pipeline to bias agent prompts and PR prefixes. When co-labeled, the rule is chore + X → X wins: chore is the most conservative type, so bug or refactor overrides it.

How orchestrate.sh transition works

Running transition <from> <to>:

  1. Validates the postconditions of the source phase (skippable with --force).
  2. Removes all agent labels (clean slate).
  3. Removes the <from> label.
  4. Adds the <to> label.
  5. Updates state/STATE.json.

This guarantees that, on entry to a new phase, no residual agent labels remain.

A note on PR review

In this single-account system, gh pr review --approve is not used — GitHub does not allow approving your own PRs. All feedback flows via PR comments, and state transitions happen through labels.