Operant Studio
OPER-120

Port check-ticket-trailer to portico (child of KNUCK-A045)

Suggested
Justin Cooke

Body

---
feature_id: FEAT-studio-dependency-map-policy
labels:
  - governance
  - portico
  - ticket-trailer
---

## Context

Parent tracker: KNUCK-A045.

Port check-ticket-trailer (studio OPER-D2 + KNUCK-A035) to portico. Files to copy from operant-health/operant-studio at HEAD as of 2026.09.08:

- .github/workflows/check-ticket-trailer.yml (6334 bytes) -- job name is Check ticket trailer
- scripts/ticket-trailer-prefixes.json (472 bytes) -- prefixes source of truth: [POR, PDX, OPER, ROST]
- scripts/check-ticket-trailer-doc.ts (4023 bytes) -- keeps JSON list in sync with workflow regex

Decision points on portico:

1. Portico canonical ticket prefix is POR. Do we accept the same JSON list (POR/PDX/OPER/ROST) or narrow it? Studio list is intentionally cross-project. Recommend: keep identical, so PRs that touch both repos can use a single trailer.
2. no-ticket escape hatch label -- verify portico agent fleet does not already use this pattern before landing.
3. Existing portico ruleset does not have a trailer check. Adding it as required-status-check will retroactively block any PR without a trailer + without the no-ticket label.

## Acceptance Criteria

- PR on portico that copies the three files, no changes
- Workflow runs green on the PR itself (PR uses no-ticket label as escape hatch, matching how studio PR #284 was merged)
- After the port PR merges, any subsequent PR without a valid trailer OR no-ticket label produces a red Check ticket trailer check
- Follow-up separate PR (KNUCK-A045d) adds the context to portico required-status-checks list
- Decision recorded on prefix list scope (keep cross-project, or narrow)

## Provenance

Inventory taken from local studio checkout at /home/user/workspace/operant-studio-work on 2026.09.08.

Attachments

Loading attachments…

Comments

Loading comments…