Back to Zeroclaw

Labels

docs/book/src/maintainers/labels.md

0.7.47.1 KB
Original Source

Labels

Single reference for every label used on PRs and issues. Sources of truth:

  • .github/labeler.yml — path-label config consumed by actions/labeler
  • .github/label-policy.json — contributor tier thresholds
  • This page — definitions, behavior, and what's automated vs manual

When definitions conflict, update the source file first, then sync this page.

Path labels

Applied automatically by pr-path-labeler.yml (the only labeling automation currently active). Globs live in .github/labeler.yml.

Base scope labels

LabelMatches
docsdocs/**, **/*.md, **/*.mdx, LICENSE, .markdownlint-cli2.yaml
dependenciesCargo.toml, Cargo.lock, deny.toml, .github/dependabot.yml
ci.github/**, .githooks/**
coresrc/*.rs
agentsrc/agent/**
channelsrc/channels/**
gatewaysrc/gateway/**
configsrc/config/**
cronsrc/cron/**
daemonsrc/daemon/**
doctorsrc/doctor/**
healthsrc/health/**
heartbeatsrc/heartbeat/**
integrationsrc/integrations/**
memorysrc/memory/**
securitysrc/security/**
runtimesrc/runtime/**
onboardsrc/onboard/**
providersrc/providers/**
servicesrc/service/**
skillforgesrc/skillforge/**
skillssrc/skills/**
toolsrc/tools/**
tunnelsrc/tunnel/**
observabilitysrc/observability/**
teststests/**
scriptsscripts/**
devdev/**

Per-channel labels

Each channel gets a channel:<name> label in addition to the base channel label.

LabelMatches
channel:blueskybluesky.rs
channel:clawdtalkclawdtalk.rs
channel:clicli.rs
channel:dingtalkdingtalk.rs
channel:discorddiscord.rs, discord_history.rs
channel:emailemail_channel.rs, gmail_push.rs
channel:imessageimessage.rs
channel:ircirc.rs
channel:larklark.rs
channel:linqlinq.rs
channel:matrixmatrix.rs
channel:mattermostmattermost.rs
channel:mochatmochat.rs
channel:mqttmqtt.rs
channel:nextcloud-talknextcloud_talk.rs
channel:nostrnostr.rs
channel:notionnotion.rs
channel:qqqq.rs
channel:redditreddit.rs
channel:signalsignal.rs
channel:slackslack.rs
channel:telegramtelegram.rs
channel:twittertwitter.rs
channel:watiwati.rs
channel:webhookwebhook.rs
channel:wecomwecom.rs
channel:whatsappwhatsapp.rs, whatsapp_storage.rs, whatsapp_web.rs

Per-provider labels

LabelMatches
provider:anthropicanthropic.rs
provider:azure-openaiazure_openai.rs
provider:bedrockbedrock.rs
provider:claude-codeclaude_code.rs
provider:compatiblecompatible.rs
provider:copilotcopilot.rs
provider:geminigemini.rs, gemini_cli.rs
provider:glmglm.rs
provider:kiloclikilocli.rs
provider:ollamaollama.rs
provider:openaiopenai.rs, openai_codex.rs
provider:openrouteropenrouter.rs
provider:telnyxtelnyx.rs

Per-tool-group labels

Tools are grouped by logical function rather than one label per file.

LabelMatches
tool:browserbrowser.rs, browser_delegate.rs, browser_open.rs, text_browser.rs, screenshot.rs
tool:cloudcloud_ops.rs, cloud_patterns.rs
tool:composiocomposio.rs
tool:croncron_add.rs, cron_list.rs, cron_remove.rs, cron_run.rs, cron_runs.rs, cron_update.rs
tool:filefile_edit.rs, file_read.rs, file_write.rs, glob_search.rs, content_search.rs
tool:google-workspacegoogle_workspace.rs
tool:mcpmcp_client.rs, mcp_deferred.rs, mcp_protocol.rs, mcp_tool.rs, mcp_transport.rs
tool:memorymemory_forget.rs, memory_recall.rs, memory_store.rs
tool:microsoft365microsoft365/**
tool:securitysecurity_ops.rs, verifiable_intent.rs
tool:shellshell.rs, node_tool.rs, cli_discovery.rs
tool:sopsop_advance.rs, sop_approve.rs, sop_execute.rs, sop_list.rs, sop_status.rs
tool:webweb_fetch.rs, web_search_tool.rs, web_search_provider_routing.rs, http_request.rs

Size labels

Based on effective changed line count, normalized for docs-only and lockfile-heavy PRs. Currently applied manually — the size automation that previously computed these was removed during CI simplification.

LabelThreshold
size: XS≤ 80 lines
size: S≤ 250 lines
size: M≤ 500 lines
size: L≤ 1000 lines
size: XL> 1000 lines

Risk labels

Heuristic combining touched paths and change size. Currently applied manually.

LabelMeaning
risk: lowNo high-risk paths touched, small change
risk: mediumBehavioral crates/*/src/** changes without boundary or security impact
risk: highTouches a high-risk path, or large security-adjacent change
risk: manualMaintainer override that freezes automated risk recalculation

High-risk paths: crates/zeroclaw-runtime/src/**, crates/zeroclaw-gateway/src/**, crates/zeroclaw-tools/src/**, crates/zeroclaw-runtime/src/security/**, .github/workflows/**.

When uncertain, treat as higher risk.

Contributor tier labels

Defined in .github/label-policy.json. Based on the author's merged PR count queried from the GitHub API. Currently applied manually.

LabelMinimum merged PRs
trusted contributor5
experienced contributor10
principal contributor20
distinguished contributor50

Status labels

Track lifecycle state of RFCs and tracked work items. Applied manually.

LabelDescription
status:in-progressAn open PR is actively targeting this issue
status:acceptedRFC or work item ratified by the team

Triage labels

Applied manually — the auto-response automation that used to handle these was removed during CI simplification.

LabelPurpose
r:needs-reproIncomplete bug report; request a deterministic repro
r:supportUsage / help item better handled outside the bug backlog
invalidNot a valid bug or feature request
duplicateDuplicate of an existing issue
stale-candidateDormant PR or issue; candidate for closing
supersededReplaced by a newer PR
no-staleExempt from stale automation; accepted but blocked work

Maintenance triggers

Update this page when:

  • A new channel, provider, or tool is added to the source tree (path labels need new entries).
  • A label policy or threshold changes.
  • A new triage workflow surfaces or an old one is removed.

The automation status notes ("currently applied manually") are deliberately included so a future maintainer doesn't assume the absence of a workflow means the label tier doesn't exist.