Skip to content

Split a Spec where a Ticket needs a release of its earlier Tickets - #1339

Merged
JacobStephens2 merged 6 commits into
mainfrom
issue-1075
Oct 25, 2026
Merged

JacobStephens2 merged 6 commits into
mainfrom
issue-1075

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

Summary

Ticket splitting now rejects a Ticket that needs a release, deployment or host install of earlier Tickets in its own Spec, and splits the Spec at that point instead. A Spec reaches the Base branch only through its Spec PR, so a Ticket like that blocks its Spec from the start, as #994 did to #700.

 Spec #700 (one Spec PR, after every Ticket)
-  Session traces, conversion code (#993) ... -> #994 "once a release with #993 is installed" -> switch, span tree (#997)
-  => Spec PR waits on #994, #994 waits on a release of the Spec PR: deadlock
+Spec A: Session traces, conversion code
+  └─blocks─> ready-for-human: install the release, run the conversion
+               └─blocks─> Spec B: switch, span tree

Where the rule lives:

skills/thirdshift-to-tickets/SKILL.md   # Factory: step 3 rule + #700 example, step 4 self-check;
                                        #   publishes only Spec A's Tickets, reports the rest in its final message
docs/agents/triage-labels.md            # Day shift: "Split a Spec at a release", the three-part split, #700 example
docs/guide.md                           # user manual: one sentence for Day shifts in any repository
site/prompts/index.html, site/docs/index.html   # regenerated

The Factory skill creates no Spec and changes none beyond linking its sub-issues, so it publishes only the Tickets that neither need the release nor are blocked by one that does. It leaves the ready-for-human issue and Spec B for the Day shift.

Evidence

  • Before: the guidance never mentioned releases, and the Spec run on Spec: Session traces, OTLP JSON Lines in place of Session logs #700 failed after 7h 37m with Tickets not done: #994, #995, #996, #997.
    After: both documents state the rule with that example.
  • UPDATE_PROMPTS=1 cargo test --bin thirdshift prompts_page, then cargo test --bin thirdshift prompts_page: test result: ok. 12 passed; 0 failed.
  • npm test --prefix site (includes docs:check): # pass 50, # fail 0.
  • Full Rust suite: run locally with cargo test --no-fail-fast and tag.gpgsign=false. Every target passes except tests that are environmental on this host: sandbox::tests (21), plus 1 in experiments and 14 in trial, all failing with sandbox failed to start: socat is not on PATH; and 2 in bug_origins, with socat and No module named 'tomllib'. Three worktree::synchronization_tests failed only under the user's tag.gpgsign=true and pass with it off. No Rust changed; CI runs the Linux suite.

Merge Danger

Door: two-way

Only guidance prose and its generated copies change. Reverting the commits restores the old text.

Blast Radius: guidance

Architecture reviews and Security fix publishing sessions using thirdshift-to-tickets may publish fewer Tickets for a Spec that needs a release partway through, and Day shifts publishing Specs gain one check.

Review coverage

Both reviewers read every changed file, including both generated files. No changed file was left unread, and no generated output was excluded.

Unaddressed findings

Standards

  • Possible Divergent Change: a scoping rule placed in docs/agents/triage-labels.md. Declined. AGENTS.md sends anyone publishing Specs or Tickets to this file's publication procedure, and the issue's Agent Brief names docs/agents/triage-labels.md as the Day shift document. The new section is a sibling of "Day shift publication" (docs/agents/triage-labels.md:31).
  • Possible Duplicated Code: the rule is stated in the skill, triage-labels.md and docs/guide.md. Declined. The Agent Brief requires that "Both documents state the rule with the example". The skill is embedded in the binary and runs in repositories that have no triage-labels.md (ADR 0001). docs/guide.md:1699 speaks to Day shifts in those repositories too.
  • The Spec: Session traces, OTLP JSON Lines in place of Session logs #700 story is exposition in the skill. Declined. The same Agent Brief criterion requires the example in the skill (skills/thirdshift-to-tickets/SKILL.md:48).
  • "parent issue" is a glossary-avoided synonym in the skill. Declined. It matches the skill's own lowercase, upstream wording at skills/thirdshift-to-tickets/SKILL.md:84: "Do NOT close or modify any parent issue, beyond linking its sub-issues". The Day shift document uses "Spec".
  • docs/guide.md leads with a prohibition ("keep out of it any Ticket…"). Declined. The guide is a manual for humans, and the writing-for-agents negation rule covers agent-facing text. The skill's headline is now positive.

Spec

  • In an Architect run, nothing carries the skill's held-back-work report, and the Spec body still covers the full scope. I ran the reviewer's command as written: rg -n "PlanReady\(" src/architect.rs | rg -q "final_message|report|held". It exited 1, so the finding holds: conclude (src/architect.rs:498) reads only the strength line and the last line. Declined here because the Agent Brief puts code checks and readiness changes out of scope and settles on "reports the rest". Whether thirdshift should surface the report, or whether thirdshift-to-spec should scope the Spec itself, is for the Day shift to decide. Filed as Architect run drops the to-tickets report of work held back for a release #1340.

Closes #1075

Built with claude · claude-opus-5-5 · high

Security review outcome

No unaddressed introduced findings.

Ticket-splitting guidance, in the Factory thirdshift-to-tickets skill and
the Day shift publication procedure, now rejects a Ticket that needs a
release, deployment or host install of earlier Tickets in its own Spec,
and splits the Spec there: Spec A, a ready-for-human release step blocked
by it, and Spec B blocked by that step. #700 / #994 is the example. The
Factory skill publishes only Spec A's Tickets and reports the rest.

Closes #1075
Positive headline and one definition of a release in the skill; say which
Tickets spec A keeps; use Spec, Spec run and Day shift step from the
glossary; separate the conversion's code from running it. Add the rule to
the user manual and regenerate the site.

Part of #1075
@JacobStephens2
JacobStephens2 merged commit cc49bde into main Oct 25, 2026
18 checks passed
@JacobStephens2
JacobStephens2 deleted the issue-1075 branch October 25, 2026 17:58
@JacobStephens2 JacobStephens2 mentioned this pull request Oct 25, 2026
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.

Ticket splitting: split a Spec where a Ticket needs a release of its earlier Tickets

1 participant