Skip to content

Publish an unfinished Spec as ready-for-human, out of a Triage Pass's reach - #1991

Merged
JacobStephens2 merged 6 commits into
mainfrom
publication-ready-for-human
Nov 11, 2026
Merged

JacobStephens2 merged 6 commits into
mainfrom
publication-ready-for-human

Conversation

@JacobStephens2

@JacobStephens2 JacobStephens2 commented Nov 11, 2026 •

Copy link
Copy Markdown
Owner

Docs only: docs/agents/triage-labels.md, docs/guide.md and the regenerated site/docs/index.html.

A scheduled Triage Pass passes over an issue with sub-issues, but a Spec has none until its first Ticket is attached. Published as needs-triage, as the Day shift procedure said, it could be triaged as a single issue in the middle of publication.

  • The Day shift publication steps now hold an unfinished Spec as ready-for-human, then swap it to ready-for-agent once every Ticket and blocking link is in place.
  • "Choosing between needs-triage and ready-for-human" now says: use ready-for-human for anything a scheduled Pass should not take yet.
  • The user manual's advice for to-spec/to-tickets says the same, and gives the reason.

Not changed: the Factory skills thirdshift-to-spec/thirdshift-to-tickets still publish Architect plans as needs-triage, and thirdshift swaps the label in code. That fix belongs to #1965. A Spec that thirdshift hands back to needs-triage after a waiting Spec run already has sub-issues, so a Triage Pass passes over it.

npm run docs:check --prefix site passes.

CI notes

  • process::process_session_evidence_check_all_private_fix_identifiers_and_abbreviated_commits (run 43054869408) is intermittent and unrelated: this PR changes only docs. The test asserts that request.json does not contain 421. That file includes the random experiment-id path, and in that run the id 5e2e28d9…d6087fdd054211fa05b0c30c happened to contain 421.

Built with claude 2.1.322 · claude-opus-5-5 · medium

… reach

A Spec has no sub-issues until its first Ticket is attached, so a
scheduled Triage Pass could take a needs-triage Spec mid-publication.
The Day shift procedure and the user manual now hold it ready-for-human
until every Ticket and blocking link is in place. The Factory skills'
needs-triage plans stay with #1965.
Review finding (Standards, smell 3) on #1991: the Factory paragraph cited
#1965 without saying a needs-triage plan with no Tickets yet can be taken
by a scheduled Triage Pass.
@JacobStephens2

Copy link
Copy Markdown
Owner Author

Review run. Pushed fixes to publication-ready-for-human at fb3f3c2. Spec axis used the pull request body alone; no closing issue was linked.

Review of PR #1991: Publish an unfinished Spec as ready-for-human

The reviewers raised 3 Standards findings (all style judgement calls) and no Spec findings. I fixed one in commit fb3f3c29, not pushed, and declined the other two. Final validation passed. A broken run of the full Rust suite, triggered by my own log files, showed 2 failures in code this branch does not touch.

Fixed point: the supplied ref refs/remotes/origin/74b072d07fe2d8b7f6116564c724074c5870e572 does not exist locally. I used the commit it names, 74b072d07fe2d8b7f6116564c724074c5870e572. One commit was reviewed: e7ec3794. The PR is still open and not a draft.

Spec source: the PR has no linked closing issue, so the PR body alone was the Spec.

Standards (3 findings, all style judgement calls; nothing breaks a documented rule)

  • Documented standards: nothing is broken.
    • CODING_STANDARDS.md only covers deadlines in tests, so it doesn't apply to docs.
    • The AGENTS.md rule for the generated user manual was followed: the source was edited and the manual regenerated.
    • The AGENTS.md rule for hand-written site pages needed no edits: those pages mention needs-triage, to-spec and to-tickets only in general terms.
    • GLOSSARY.md and ADR 0029 agree with the change.
  • The code matches what the docs claim:
    • A Triage Pass skips ready-for-human issues and issues with sub-issues (src/triage/pass.rs:138-158).
    • Pickup skips ready-for-human (src/labels.rs:73).
    • The thirdshift-to-spec Factory skill still publishes as needs-triage (skills/thirdshift-to-spec/SKILL.md:23).
  • Finding 1, repeated wording: the same reason ("needs-triage won't do, because a Spec has no sub-issues until its first Ticket is attached") appears three times in docs/agents/triage-labels.md and again at docs/guide.md:3875. Declined (see Unaddressed findings).
  • Finding 2, unclear wording: in "In short: use ready-for-human for anything a scheduled thirdshift Pass should not take yet", the next sentence doesn't follow from "In short", and "thirdshift Pass" is broader than the Triage Pass the section is about. Declined.
  • Finding 3, unclear wording: "They still publish a plan as needs-triage (A Triage Pass doesn't wait for an issue to settle, so it can triage a Spec before its Tickets are published #1965)" didn't say what risk remains. Fixed: the sentence now says a scheduled Triage Pass can take a Spec the Factory skills publish before its first Ticket is attached. I checked that claim against skills/thirdshift-to-spec/SKILL.md:23, src/architect.rs:492-498 and the body of issue A Triage Pass doesn't wait for an issue to settle, so it can triage a Spec before its Tickets are published #1965.

Spec (0 findings)

  • No requirement from the body is missing or partial, nothing was added beyond it, and nothing it asks for is implemented wrongly.
  • Every requirement in the body is in the diff.
  • Every claim about the code holds:
    • A Triage Pass takes needs-triage issues and skips parents with sub-issues (src/triage/pass.rs:69,137-160).
    • Plans are swapped from needs-triage to ready-for-agent in code (src/architect.rs:492-498).
    • A Spec run starts only on an issue with sub-issues (src/ready.rs:555, src/spec_run.rs:70), so a Spec handed back to needs-triage (src/claim.rs:528-575) already has them.
  • Leaving the Factory skills for A Triage Pass doesn't wait for an issue to settle, so it can triage a Spec before its Tickets are published #1965 matches the options that issue lists.
  • No other doc, skill, ADR or hand-written site page still holds a Spec at needs-triage during publication.

Unaddressed findings

Standards

  • Finding 1 (repeated wording): declined. The body asks the user manual to state the rule "and give the reason", so the reason in docs/guide.md:3875 is required. The manual is for users, while docs/agents/triage-labels.md is the procedure agents must follow, so each needs the reason on its own. No issue filed: this is a style choice, not one for the Day shift.
  • Finding 2 ("In short" / "thirdshift Pass"): declined.
    • The body itself asks for "use ready-for-human for anything a scheduled Pass should not take yet".
    • The broader "Pass" is accurate, because Pickup also skips ready-for-human (src/labels.rs:73, src/ready.rs:146).
    • "In short" sums up the bullet list directly above it.
    • No issue filed.

Spec: none.

Review coverage

  • Changed files: docs/agents/triage-labels.md, docs/guide.md and site/docs/index.html. Both reviewers read the first two.
  • Generated file excluded from full reading: site/docs/index.html, which is built from docs/guide.md by site/generate-docs.mjs.
    • npm run docs:check --prefix site exited 0, after npm ci --prefix site exited 0. A first check failed because the site packages weren't installed.
    • Both reviewers accepted the exclusion and read the one changed paragraph. The new #triage-runs link resolves to id="triage-runs".
  • Unread changed files: none on either axis. Each reviewer's full list of files read is in standards.md and spec.md.
  • Reports: written to .thirdshift-review-TMQQWk/standards.md, spec.md and summary.json ({"standards":3,"spec":0}).

Validation

  • scripts/affected-tests main, first run: exit 1. My untracked validation logs in .review-logs/ made the selector run the full Rust suite. npm test --prefix site passed. cargo test failed: 237 passed and 2 failed in --test process:
    • findings::closing_rechecks_each_merged_base_and_leaves_a_failing_finding_for_the_day_shift
    • findings::fixing_dispatches_each_reproduced_finding_and_keeps_unreproduced_findings_private
    • Both stop with "the Security fix publishing session created public issue(s) outside the staged path: Keeping the PR mergeable: merge the Base branch and conflict Repair #8".
  • cargo test --test process findings::: exit 101. The same 2 tests failed again (16 passed). This branch changes nothing under src/, tests/, Cargo.toml or Cargo.lock, and no Rust file reads the changed docs. So these tests run code identical to the fixed point, and the failure is not this PR's. I did not run them at the fixed point to prove it was already failing there.
  • scripts/affected-tests main, re-run after moving the logs into the git-ignored .affected-tests/: exit 0.
    • npm test --prefix site: PASS.
    • cargo test --test share_card --test site_deploy: PASS.
    • cargo test --bin thirdshift prompts_page: PASS.
    • docs/agents/triage-labels.md selects no checks of its own.
  • Extra commands: the list was empty, so none ran.

Summary: Standards had 3 findings; the most significant was the unclear #1965 sentence, now fixed. Spec had 0 findings.

Security

No unaddressed introduced findings.

Delivery failed

pull request changed during Review run

@JacobStephens2 JacobStephens2 added in-progress A Claim: thirdshift has taken this issue and removed in-progress A Claim: thirdshift has taken this issue labels Nov 11, 2026
@JacobStephens2
JacobStephens2 merged commit a200c95 into main Nov 11, 2026
4 checks passed
@JacobStephens2
JacobStephens2 deleted the publication-ready-for-human branch November 11, 2026 17:36
@JacobStephens2 JacobStephens2 removed the in-progress A Claim: thirdshift has taken this issue label Nov 11, 2026
@JacobStephens2 JacobStephens2 mentioned this pull request Nov 11, 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.

1 participant