Skip to content

ci(issues): enforce the delivery label rules with one issue-state workflow - #138

Merged
V3RON merged 1 commit into
delivery/skillsfrom
delivery/automation
Sep 10, 2026
Merged

V3RON merged 1 commit into
delivery/skillsfrom
delivery/automation

Conversation

@V3RON

@V3RON V3RON commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Third of three stacked PRs. One workflow, issue-state.yml, is the single place that enforces the label rules mechanically. Six jobs, all through actions/github-script (pinned to a SHA like the rest of CI), no third-party actions:

Job Trigger Effect
exclusive-label issues.labeled with a <kind>:<state> label removes every other state label, so each transition is a single add
task-ready issues.edited (body) and issues.closed task:drafttask:ready when the approval box is ticked, the Technical spec section has content, and every #n under Depends on is closed. On close, re-evaluates every open draft that depends on the closed issue
needs-info-reply issue_comment.created by the issue author on bug:needs-info bug:triage
feature-verify issues.closed if the parent is feature:planned and subIssuesSummary.completed == total, comments that completion conditions are due
branch-matches-issue pull_request opened/edited/synchronize a PR from a <kind>/<n> branch fails unless its body closes #<n> and no other issue; other branches are ignored
stale-needs-info daily schedule / dispatch bug:needs-info untouched for 14 days closes as not planned with a comment

Actions taken with the workflow token do not re-trigger the workflow, so each job removes the label it replaces itself rather than relying on exclusive-label.

The four judgment transitions stay manual on purpose: bug:newbug:triage, bug:triagebug:ready, feature:specfeature:ready, and ticking a task's approval box. Documented in a new Automation section of docs/internal/agent-rules/delivery.md.

Verified

The body parser (section, dependencies, specified, approved) was run against docs/internal/templates/task.md blank and filled: blank → not approved, not specified, no deps; filled → approved, specified, deps parsed; #NNN placeholder is not read as a dependency. The workflow YAML parses. The jobs themselves need a live issue to exercise, which happens after PR 1's labels exist.

Stack

  1. model, forms, templates, labels
  2. skills
  3. this PR — automation

@V3RON
V3RON added this pull request to stack #139 September 9, 2026 23:31
@V3RON V3RON changed the title ci(issues): enforce the delivery label rules — exclusive state label, task:ready promotion, needs-info reply, feature verify, stale close ci(issues): enforce the delivery label rules with one issue-state workflow Sep 9, 2026
@V3RON
V3RON force-pushed the delivery/automation branch from c2517c8 to 271e0a7 Compare September 10, 2026 01:21
@V3RON
V3RON force-pushed the delivery/automation branch 2 times, most recently from 3a615ea to eda6f45 Compare September 10, 2026 01:25
@V3RON
V3RON marked this pull request as ready for review September 10, 2026 01:36
…kflow

Six jobs, all through actions/github-script so no third-party action is
needed: adding a <kind>:<state> label drops the old one; task:draft becomes
task:ready once approved, specified, and unblocked; a reporter's reply moves
bug:needs-info back to bug:triage; the last sub-issue closing on a
feature:planned issue posts a completion-conditions note; bug:needs-info
silent for two weeks closes as not planned; a PR from a <kind>/<n> branch
must close #<n> and nothing else.

Documents the automation in docs/internal/agent-rules/delivery.md and
docs/internal/DELIVERY.md.
@V3RON
V3RON force-pushed the delivery/automation branch from eda6f45 to 2de2dd4 Compare September 10, 2026 01:40
@V3RON
V3RON merged commit d57b7ff into main Sep 10, 2026
25 of 27 checks passed
@V3RON
V3RON deleted the delivery/automation branch September 10, 2026 01:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant