Repository navigation
docs: define the label list, rules and nightly drift report - #299
Conversation
Add .github/labels.json as the single list of repository labels, a Labels section in the collaboration guide with the status, priority and protected switch rules, labels on the two Issue templates, and a read-only step in the nightly safety-net job that reports drift between repository labels and the list. No workflow writes labels. Agent-assisted-by: Claude Code (author) Signed-off-by: Dong1017 <55723162+Dong1017@users.noreply.github.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: d5a31947bf
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| label before each paid request, so no new paid request starts after removal. Removal does not | ||
| cancel a request already sent or roll back budget already reserved or claimed. Only a new label |
There was a problem hiding this comment.
Qualify the revocation guarantee for already-checked requests
If the label is removed after a request's last live-label check but before its provider HTTP send, that request can still start. controlled_execute.check() performs further ledger reads after live_label(), and anthropic_agent.send_message() obtains its grant before separately calling opener.open(); src/inferrsi/model/request_guard.py:5-6 explicitly documents this race. Consequently, limiting the exception to requests already sent gives operators an incorrect stop-spending guarantee. State that subsequent live checks enforce revocation and include requests that passed their last check but have not yet been sent.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Agreed; request_guard.py lines 5-6 document that race. Fixed in 1f35624: every check after the removal blocks its request, and a request that passed its last check before the removal can still be sent.
A request that passed its last live-label check before the label was removed can still be sent, as the request guard documents. Agent-assisted-by: Claude Code (author) Signed-off-by: Dong1017 <55723162+Dong1017@users.noreply.github.com>
Dong1017
left a comment
There was a problem hiding this comment.
LGTM for this implementation slice at 1f35624. The prior revocation-wording finding is fixed: the documentation now explicitly retains the race for requests that passed the last check before label removal but have not yet sent, consistent with request_guard.py. The author reply alone was not used as clearance; the one-file correction was checked against the guard's stated contract.
Current-head Ready CI passed all six jobs on the merge with main 7b6d00a, and the existing independent review completed without remaining findings.
This delivers the manifest, conventions, templates and read-only drift checker. Live label migration, the separately confirmed deletion list, first nightly drift evidence and Issue #284 acceptance remain with the existing owner.
Governing Issue and delivery slice
Refs #284
.github/labels.jsonwith the 21 target labels; a Labels section indocs/agent-collaboration.mdwith the group table, the status and priority rules, theskill-eval:executerevocation rule and the status-block convention;kind:taskandkind:acceptanceon the two Issue templates, plus a status block in the scoped-task template; and a read-only drift step in the nightlysafety-netjob, backed bytools/check_labels.pyand its tests. The guide's opening no longer says "no new automation, permissions"; it now says the conventions add no merge gates or CI lanes, and the checks they mention are reports in the existing lanes.Knowledge authorship declaration
Not applicable: this PR changes no path protected by
docs/knowledge-model-policy.md.Changed artifacts and evidence
group:value; each group's meaning and who applies it is documented.github/labels.json;docs/agent-collaboration.mdLabels sectiontest_repository_manifest_is_valid; reviewlabels.jsonscoped-task.mdapplieskind:task;campaign-acceptance.ymlapplieskind:acceptanceinstead of the nonexistentacceptancetest_templates_and_configs_reference_only_listed_labelstools/skill_eval_*_config.jsonci-nightly.ymlsafety-net:gh apilists labels with anissues: readtoken, thentools/check_labels.pycompares names and descriptions and checks every template and config reference; printed lines start withlabel driftso a label name cannot form a workflow commandtests/test_check_labels.pykind:task/acceptance/tracking/rfcIssuesis:open label:"status:proposed"status:proposedexistsDesign notes:
labels.jsonholds the target state only; the one-time rename and deletion list is in this PR body and task: agent-maintained issue system: one label scheme, auto-labeling and a pending-decision view #284, not in the manifest.safety-netjob, likevalidate_evidence.py, so drift is visible. No step writes labels..[dev].kind:*rule exempts Issues created before the label change, as D4 records: bug: Drama3 does not fuse NPU normalization operators #166, fix: source and device identity accept evidence that cannot support it #178, fix: run state and comparison verdicts can report support the artifacts do not establish #179 and fix: knowledge bundle reads can escape the skills root and store protection depends on a .git entry #180 keep twokind:*labels afterbugbecomeskind:bug.priority:*now states how soon the next action is needed, not a delivery week.Checks and dependencies
ruff check --no-cache tools/check_labels.py tests/test_check_labels.py(ruff 0.14.10) passed. Thegh api ... --jq '.[] | {name, description}'output format was confirmed against the live repository: one compact JSON object per line,nullfor an empty description.pytestwas not run locally; the ready lane runs the full suite. The drift step has not run; until the post-merge label changes are applied, it reports the renames, creations, description updates and deletions listed below and fails the nightly job.safety-netgains job-levelpermissions: contents: read, issues: read; its existing steps need onlycontents: read.tools/skill_eval_auto_config.jsonandtools/skill_eval_historical_config.jsonare read, not changed;skill-eval:executekeeps its name and description.Remaining work and Issue closure
accepted→status:accepted,bug→kind:bugandhelp wanted→help:wanted, with the descriptions inlabels.json;area:usability,status:proposedandstatus:deferred, and updates thepriority:P0/P1/P2descriptions;kind:docsto task: distill local-dream Android diffusion contracts with AREX repo-to-skill #234;documentation,accessibility,duplicate,enhancement,good first issue,invalid,question,wontfix), then deletes those labels;🤖 Generated with Claude Code