You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The second closeout had functional browser checks but no visual or computed-layout evidence.
Several original children explicitly required manual desktop, mobile, deep-link, or legacy-bookmark checks. Merge-driven Fixes #... closure and native closed-state checks nevertheless allowed the children and parent to be treated as complete.
Merged code, green CI, clean review, and tracker closure are delivery evidence. They are not substitutes for ticket-authored acceptance evidence.
Goal
Make implement-ticket and implement-epic fail closed unless every ticket-authored required acceptance criterion and verification item is mapped to current, concrete evidence. Tracker closure must be a consequence of verified acceptance, never its source.
Scope
Add a criterion-specific acceptance-evidence contract in the existing packet/result style where practical.
Bind evidence to the exact candidate or deployed SHA and, when relevant, environment or URL.
Distinguish implementation/merge state from pre-merge and post-merge acceptance state.
Make GitHub closing-keyword selection depend on whether required acceptance can occur before merge.
Make epic closeout revalidate child acceptance evidence and the epic's own criteria.
Define proportional post-escape behavior for reopened tickets and epics.
Update GitHub and Linear guidance, closeout/result guidance, tests, and result-blind forward evaluations.
Non-goals
Do not require browser, deployment, authenticated, integration, manual, visual, or full-system evidence unless the ticket's acceptance/verification contract requires it.
Do not expand the review skills or make babysit-pr own tracker transition, deployment, post-merge acceptance, or ticket lifecycle.
Do not add a new terminal status or schema unless existing blocked, unresolved-obligation, and documented handoff fields cannot express the outcome safely.
Do not change the acyclic composition: implement-epic -> implement-ticket -> (review-code-change, babysit-pr).
Do not create an epic or change native dependency edges for this work.
Required behavior
Acceptance ledger
Before a ticket can be reported complete, map every authored acceptance criterion and required verification item to:
criterion text or stable identity;
whether it is required;
required evidence category;
exact candidate or deployed SHA;
environment or URL when relevant;
evidence source such as command output, CI job, deployment run, browser observation, screenshot, geometry/computed-layout observation, or tracker comment;
pass, fail, or missing.
Reject evidence for a stale candidate SHA, stale deployment, wrong environment, or evidence category that does not satisfy the criterion. Functional browser evidence does not satisfy an explicit visual-layout requirement without screenshot or geometry/computed-layout evidence.
Pre-merge and post-merge acceptance
Pre-merge criteria must pass before readiness or merge.
Criteria that can only be verified after merge or deployment may remain pending through merge, but the workflow must report implementation/merge complete and acceptance pending rather than ticket complete.
Missing required manual, deployed, authenticated, integration, or visual verification is a blocker, not a success caveat.
A backend-only ticket without UI or deployment requirements must not acquire irrelevant gates.
GitHub auto-close
state: CLOSED, all children closed, merged PRs, Fixes #..., green CI, clean reviews, and zero unresolved threads are not acceptance proof.
When required acceptance occurs only after merge, use a non-closing reference such as Refs #... or Supports #..., then close manually only after the evidence ledger passes and close authority exists.
If GitHub auto-closed a ticket while required acceptance remains missing, treat it as incomplete. Reopen it when authorized, or report missing reopen authority as a blocker.
Authority
Preserve separate authority for implementation, merge, deployment, tracker reopen/close, parent closeout, graph mutation, production mutation, and cleanup. Merge authority alone must not imply deployment or tracker/parent closure.
Epic closeout
Before parent closure:
reread the complete live native graph;
verify every required child's acceptance ledger, not merely state;
verify the epic's own acceptance criteria;
verify current-main representation and exact deployed SHA when deployment is required;
keep the parent open when any required evidence is missing, failed, stale, or bound to the wrong environment;
distinguish "all implementation PRs merged" from "epic accepted."
Post-escape
When a supposedly completed ticket or epic is reopened for an escaped acceptance defect:
require a focused corrective ticket;
require a regression test at the escaped boundary;
revalidate the full affected customer journey, not only the latest defect;
require renewed acceptance evidence before reclosure.
Keep revalidation proportional to the affected journey and authored requirements.
Failure and terminal behavior
Missing, failed, unavailable, stale, or category-mismatched required evidence returns the existing equivalent of acceptance pending or blocked; it must not return successful completion.
A merged candidate may be reported as merged delivery with explicit post-merge acceptance obligations, but the ticket remains open or is reopened until those obligations pass.
Parent closeout remains blocked until child and parent ledgers pass.
If required verification infrastructure or authority is unavailable, name the missing evidence/authority and the next action.
Acceptance criteria
Every ticket-authored required criterion and verification item is represented by a criterion-specific evidence record with category, SHA, environment/URL when relevant, source, and pass/fail/missing status.
GitHub closing keywords are non-closing when required acceptance occurs only after merge, and accidental auto-close does not become acceptance proof.
implement-epic verifies every required child's acceptance evidence and the epic's own criteria before parent closure.
Explicit visual-layout requirements require visual or geometry/computed-layout evidence; functional browser checks alone are insufficient.
Backend-only tickets do not acquire irrelevant UI or deployment gates.
Merge, deployment, tracker-transition, and parent-close authorities remain distinct.
Reopened escape work requires a focused correction, regression test, affected-journey revalidation, and renewed acceptance evidence.
Existing successful implement-ticket and implement-epic cases remain valid.
Validation and forward evaluation
Use fresh-process, result-blind packets that do not expose expected outputs or grader markers. Cover at least:
all children closed/merged/green/clean but required manual browser evidence missing;
auto-closed ticket with missing post-merge deployment evidence;
required authenticated deployed verification with browser unavailable;
functional browser pass with missing explicit visual-layout evidence;
all criteria satisfied at the correct SHA/environment;
backend-only ticket with no irrelevant UI gates;
merge authority present but deployment or tracker-close authority absent;
reopened epic with corrective child merged but affected journey not revalidated;
stale evidence for a prior candidate SHA or deployment;
existing successful workflow cases.
Run focused workflow tests and evaluations, including just eval-implement-ticket, the corresponding implement-epic evaluations, relevant schema/fixture tests, and the repository-required just format, just lint, and just test gates.
Run the repository-owned exact-head review sequence through review-code-change and address all material findings before publication and after any head-changing fix.
Terminal expectation
Completion requires a merged, current-main-represented implementation whose new issue acceptance ledger is fully evidenced by passing focused evaluations, full repository gates, current-head review, CI, and live tracker verification. Close this issue manually only after that evidence is read back and confirmed.
Incident
Tuber Service epic #957 exposed a closeout defect in
implement-ticketandimplement-epic.Fixes #...closure and native closed-state checks nevertheless allowed the children and parent to be treated as complete.Merged code, green CI, clean review, and tracker closure are delivery evidence. They are not substitutes for ticket-authored acceptance evidence.
Goal
Make
implement-ticketandimplement-epicfail closed unless every ticket-authored required acceptance criterion and verification item is mapped to current, concrete evidence. Tracker closure must be a consequence of verified acceptance, never its source.Scope
Non-goals
babysit-prown tracker transition, deployment, post-merge acceptance, or ticket lifecycle.blocked, unresolved-obligation, and documented handoff fields cannot express the outcome safely.implement-epic -> implement-ticket -> (review-code-change, babysit-pr).Required behavior
Acceptance ledger
Before a ticket can be reported complete, map every authored acceptance criterion and required verification item to:
pass,fail, ormissing.Reject evidence for a stale candidate SHA, stale deployment, wrong environment, or evidence category that does not satisfy the criterion. Functional browser evidence does not satisfy an explicit visual-layout requirement without screenshot or geometry/computed-layout evidence.
Pre-merge and post-merge acceptance
GitHub auto-close
state: CLOSED, all children closed, merged PRs,Fixes #..., green CI, clean reviews, and zero unresolved threads are not acceptance proof.Refs #...orSupports #..., then close manually only after the evidence ledger passes and close authority exists.Authority
Preserve separate authority for implementation, merge, deployment, tracker reopen/close, parent closeout, graph mutation, production mutation, and cleanup. Merge authority alone must not imply deployment or tracker/parent closure.
Epic closeout
Before parent closure:
Post-escape
When a supposedly completed ticket or epic is reopened for an escaped acceptance defect:
Keep revalidation proportional to the affected journey and authored requirements.
Failure and terminal behavior
blocked; it must not return successful completion.Acceptance criteria
implement-epicverifies every required child's acceptance evidence and the epic's own criteria before parent closure.implement-ticketandimplement-epiccases remain valid.Validation and forward evaluation
Use fresh-process, result-blind packets that do not expose expected outputs or grader markers. Cover at least:
Run focused workflow tests and evaluations, including
just eval-implement-ticket, the correspondingimplement-epicevaluations, relevant schema/fixture tests, and the repository-requiredjust format,just lint, andjust testgates.Run the repository-owned exact-head review sequence through
review-code-changeand address all material findings before publication and after any head-changing fix.Terminal expectation
Completion requires a merged, current-main-represented implementation whose new issue acceptance ledger is fully evidenced by passing focused evaluations, full repository gates, current-head review, CI, and live tracker verification. Close this issue manually only after that evidence is read back and confirmed.