Operant Studio
KNUCK-A045c

Port check-ticket-trailer to portico

Suggested
Justin Cooke

Body

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

## Context

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

- `.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 point on portico:

1. Portico's canonical ticket prefix is POR. Do we accept the same JSON list (POR/PDX/OPER/ROST) or narrow it? Studio's 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 -- portico already has agent PRs using this pattern? Verify 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 since KNUCK isn't in the accepted prefix list, 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's required-status-checks list
- [ ] Decision recorded on prefix list scope (keep cross-project, or narrow)

## Provenance

Parent: KNUCK-A045. Blocks: KNUCK-A045d.

Attachments

Loading attachments…

Comments

Loading comments…