Repository navigation
Keep closeout item decisions consistent through publication - #174
Conversation
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Reviewer's GuideThis PR changes closeout from silently selecting a latest merged delivery to fail-closed attribution: an item-owned canonical delivery tag takes precedence, otherwise exactly one verified delivery claim must occur after the last acceptance-criteria change. Ambiguous, unverifiable, or competing claims remain open with all candidates reported; the workflow can publish a privacy-gated review artifact and disables automatic landing while dispatching caller checks. Sequence diagram for ambiguous closeout review handlingsequenceDiagram
participant Workflow
participant Closeout as runCloseout
participant History as SDK history
participant GitHub
participant Tracker
Workflow->>Closeout: runCloseout()
Closeout->>GitHub: Read merged PRs and commit messages
Closeout->>History: readHistoryEntries()
History-->>Closeout: Acceptance-criteria cutoff
Closeout->>Closeout: Select explicit tag or unique post-cutoff claim
Closeout-->>Workflow: needs_review with candidates
Workflow->>Tracker: Write closeout-review.json
Workflow->>Workflow: dispatch_checks()
Workflow-->>Workflow: Disable automatic landing
Flow diagram for acceptance-aware closeout attributionflowchart TD
A[Collect linked merged PRs] --> B{Explicit delivery-pr tag?}
B -->|Yes| C{Exactly one tag matches a candidate?}
B -->|No| D[Read verified SDK history]
D --> E{Exactly one delivery claim after criteria cutoff?}
C -->|Yes| F[Verify merge facts and head checks]
C -->|No| G[needs_review with every candidate]
E -->|Yes| F
E -->|No| G
F -->|Pass| H[Close item using selected merge evidence]
F -->|Fail| I[Keep item open]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
Additional consumer provenance evidence: pm-jev#48 (older pinned caller)Static inspection of pm-jev#48, immutable head Version boundary: the immutable caller workflow pins pm-github This matters to #159's agreed delivery-attribution rule: completion fields and history should identify the delivering PR, not a mention-only earlier PR. All-status owners and the current conversation were checked; this adds a new consumer example rather than a duplicate issue. Acceptance/regression: use this sanitized two-PR pattern to ensure mention-only PR24 cannot win and actual delivery PR45 is consistently credited; retain the correctly attributed Unicode/PR47 item as a control. Any consumer repair should preserve durable history and existing evidence/check gates. No tracker edit, publication, provider mutation or special-file reproduction was performed. |
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
There was a problem hiding this comment.
Your trial has ended. Reactivate Greptile to resume code reviews.
unbraind
left a comment
There was a problem hiding this comment.
Orchestrator review (built-in Claude review agent, verified by the orchestrator; bots are not waited for since 2026-10-22):
Pre-merge review (codex gpt-6.1-sol read-only review agent; merged by the orchestrator's pipeline after a MERGE verdict and a private-data scan of the added lines).
VERDICT: MERGE
FINDINGS:
- none
SUMMARY: The PR keeps delivery attribution, revision checks, and publication decisions consistent while preserving informational context. Tests cover non-git trackers, incomplete evidence, concurrent edits, and publication outcomes; I reviewed them statically without rerunning them.
A fully inspected mention-only PR with failing CI could hold a unique valid delivery because every linked PR entered attribution. Candidacy now requires an explicit delivery tag, a closing declaration referencing the item, or a commit claim naming it.
deliveryRoleclassifies candidates, unresolved claim evidence and context in one place. Context stays listed as informationalskip/not_deliveryin the CLI and publication summary; its evidence gaps never hold the item. Missing evidence on a candidate, or unreadable PR/commit evidence that may hide a claim, still holds. Revision binding and existing selection policies remain in place.Before: PR 1 claims delivery and passes; PR 2 only mentions the item and fails CI; both report
needs_review. After: PR 1 closes and publishes with its own provenance; PR 2 remains context without candidate numbers or missing-evidence holds.Validation:
fully inspected context cannot hold a unique delivery: <gap>covers six merge/check gaps in real non-git trackers.fully inspected mentions are context even without any delivery candidatecovers context-only reporting. Existing attribution regressions now keep mentions outside ambiguous candidate sets.closeout.tswith pre-round head4dd53552f825b3b42959ae96b9e61b27fe96e900, retaining tests and workflow changes.node --test --test-name-pattern='fully inspected context|fully inspected mentions' test/closeout-selection.test.tsfails 8/8 assertions, exit 1. Restore byte-for-byte: the PM runner passes 8/8, exit 0, zero failures/cancellations/skips. The PM comment retains the receipt.PM: Closeout attribution. The item remains in progress for orchestrator verification. Bounded coverage aggregation remains existing follow-up work on pm-github-vhi6.
The PM-linked focused c8 command across
test/closeout.test.ts,test/closeout-attribution.test.ts,test/closeout-selection.test.tsandtest/closeout-revision.test.tspasses 294/294 tests, exact 100/100/100/100 for closeout.ts, with zero failures, cancellations or skips.Final-head CI passed 4/4 jobs on
5851c1c3af3b9ebd10944dcf5e60f292824d5f97.npm run release:checkandbun run release:checkeach passed 1,495/1,495 tests on Node 22/26, zero failures/cancellations/skips/TODOs, exact 100/100/100/100 across all 19 authored modules. Native Bun 1.3.14 acceptance passed 1,495/1,495 tests across 52 files on each Node version, zero failures. All other release stages passed with unchanged pins, source inventory and thresholds. Both final npm logs retain the 186 publication rows and the exact PR-1-delivery/PR-2-context reproduction. Final-head CodeQL passed too.