Turn the issue-create gates into Ticket validations #1620
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#1620
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
The create gates live in their own classes and run outside the ticket they check.
--label nextand a second priority label pass them, althoughnextis human-only (ADR-0042).Approach
Move the eight gates to
Ticketvalidations on create only, in the same order.Host#labels?replaces the fourrepo:checks insubmission.rb. Owned rules: inventory 1.5, 1.6, and 1.9. Keep thenumberkey in theissue-createoutput.Required work:
Ticket.createandTicket.create!— check: presentdef self.createinplugins/os-backlog/lib/backlog/**/*.rbissue-createthroughTicket.Acceptance criteria
issue-createruns, then the first failure is the same one that appears before the port.repo:tracker, whenissue-createruns, then the scope, category, and filed-by validations skip it.--label next, whenissue-createruns, then it refuses.--label P0with--priority P1, whenissue-createruns, then it refuses.--priority P2, when the ticket is created, thenP2is the first label.issue-editon an old ticket that fails a gate, when it runs, then it succeeds.Owner sketch
Non-goals
Do not rename a command before slice 9. Do not change
## Resolution,**Follow-ups:**, the body headings, the check form, the label names, or theissue-showJSON keys. Do not make a behavior change that this ticket does not name.Blocking edges
Blocked by #1619
Origin
docs/system-design-format/proof/2026-11-06-os-backlog-domain-objects.md, slice 7plugins/os-backlog/CONTEXT.md)VERDICT: CREATE
From #857: cli_issue_create_scope_gate_test status_for passes no fake client, so it sends a real GET to Forgejo. Give it a FakeForgejoClient when this slice touches the gates.
Work started on branch ticket-1620.
Resolution
Done: issue-create runs through Ticket.create and Ticket.create!. The eight gates, next, and the priority rules live in Ticket::CreateGates on the Ticket::Draft create context, in the old first-failure order. Host#labels? replaces the repo: checks, and Host#create joins the role on every host, including Memory. Defect 11 is fixed. Body and LabelSet moved under Ticket; Submission and IssueCreate::Refused are deleted.
Evidence: main
5a9cf4a7(Runner commit6b7e1380, corrections183f3c64). On main: os-backlog 524 runs 0 failures, os-sdlc 3502 runs 0 failures. Takedown suite 623 runs 0 failures before the merge of main, which changed only os-git. Implementation 256. Two output changes stay and are recorded in183f3c64: the issue-create prefix on a MissingToken during the scope-name read, and one write of a repeated label on a passing ticket.Follow-ups: #1621 takes the lens A15 and A12 work (delete IssueDraft and IssueCreate). Regenerating plugins/os-backlog/design/generated: comment on #1624.