Correct a wrong shebang claim in the attestation launcher, and bring the canonical auditor up to date - #112
Conversation
…date The launcher docstring said the auditor treats any file whose first two bytes are a shebang as executable shell. Reproduced, that is false: a shebang says a file executes, not that it executes AS shell, so only a shebang naming a shell interpreter makes the body shell input. The claim was TRUE for pm-ops 2026.9.5, which this repository was still pinned to - two releases behind the canonical auditor and therefore missing every fail-open construction closed since. The bump to ^2026.9.7 is what makes the corrected claim correct, so the two changes belong together. The same sentence is in all seven repositories carrying this launcher: it was propagated by copying the reference file, so the error travelled with the text. Also re-exports auditPublishAttestation and verify by reference. The launcher exported only runIfMain, so the fleet's bypass-corpus harness read this repository as broken rather than as converged, and nothing asserted that what the launcher exposes IS the package's function rather than a wrapper.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars. ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Reviewer's GuideThe PR corrects the launcher’s shebang claim, adds regression coverage for the auditor’s shell-detection behavior, upgrades pm-ops to the canonical 2026.9.7 implementation, and re-exports its audit gates by reference with identity tests. Sequence diagram for attestation audit delegationsequenceDiagram
participant Consumer
participant Launcher as verify-release-publish-attestation
participant Auditor as pm-ops/attestation
Consumer->>Launcher: auditPublishAttestation()
Launcher->>Auditor: auditPublishAttestation()
Auditor-->>Consumer: audit result
Consumer->>Launcher: verify()
Launcher->>Auditor: verify()
Auditor-->>Consumer: verification result
Flow diagram for shebang-based shell detectionflowchart TD
A[File starts with shebang] --> B{Interpreter is shell?}
B -->|Yes: bash or sh| C[Auditor scans file as shell]
B -->|No: node| D[Auditor leaves file unscanned]
E[No shebang] --> D
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
Greptile SummaryThis PR updates the canonical publish-attestation auditor to the lockfile-resolved 2026.9.7 release, corrects the launcher's shebang documentation, and exposes the package's auditor functions by reference.
Confidence Score: 5/5The PR appears safe to merge; no actionable correctness, security, or repository-rule violations remain. The release-critical launcher still invokes the canonical verifier, clean CI and release installs resolve the reviewed lockfile version, the new exports preserve package function identity, and the regression tests cover the corrected shebang behavior.
|
| Filename | Overview |
|---|---|
| scripts/verify-release-publish-attestation.ts | Corrects the shebang explanation and re-exports the canonical attestation functions without wrapping them. |
| test/verify-release-publish-attestation.test.ts | Adds reference-identity coverage and reproduces four shebang-classification states. |
| package.json | Raises the pm-ops requirement to 2026.9.7 while the release environment remains lockfile-controlled. |
| package-lock.json | Resolves pm-ops exactly to 2026.9.7 with updated registry integrity metadata. |
| .agents/pm/chores/pm-csv-rioq.toon | Records the completed attestation-auditor maintenance work with matching history state. |
Reviews (1): Last reviewed commit: "Correct a wrong shebang claim, and bring..." | Re-trigger Greptile
|
Merging. Measured result for this repository, with the harness at The vendored scanner is deleted and the gate is now the canonical Two review findings changed the shape of this PR and are worth naming, because both were cases where the guard did not do what it claimed:
Thank you to the reviewers on this wave; both of the above came from review, not from the change's author. |
The claim was wrong, not just unreproduced
The launcher's docstring said the auditor "treats any file whose first two bytes are a shebang as executable shell". Written into a throwaway git repository under four shebangs and run through the real
verify():#!/bin/bash#!/usr/bin/env sh#!/usr/bin/env nodeA shebang says a file executes; it does not say it executes as shell.
Why the two changes belong in one PR
The claim was true for
pm-ops2026.9.5 — which this repository was still pinned to, two releases behind the canonical auditor and therefore missing every fail-open construction closed since. Bumping to^2026.9.7is what makes the corrected claim correct. Fixing the prose alone would have documented a version this repository does not run.Measured, before and after the bump, with
scripts/attest-corpus/check.shfrom the companion repository:The launcher now re-exports the gate by reference
It previously exported only
runIfMain, with two consequences: the fleet's bypass-corpus harness read this repository as broken rather than as converged, and nothing asserted that what the launcher exposes is the package's function rather than a local wrapper. Both fixed; the identity assertion is the one that matters over time, since a wrapper is how a re-fork starts.Where the error came from
The identical wrong sentence is in all seven repositories carrying this launcher. It was propagated by copying the reference file, so the error travelled with the text — the same failure mode the convergence itself exists to end, showing up in prose instead of in code. Corrected in the six sibling convergence branches at the same time (unbraind/pm-web#135, unbraind/pm-github#77, unbraind/pm-slack#99, unbraind/pm-starter#98, unbraind/pm-linear#103, unbraind/pm-graph#88).
Found by Greptile's unreproduced-claim rule on unbraind/pm-graph#88.
Gates
typecheck pass · docstring 71/71 · coverage thresholds met · 7 tests pass / 0 fail · changelog up to date
pm items
pm-csv-rioq— Correct a wrong shebang claim in the attestation launcher, and bring the canonical auditor up to dateSummary by Sourcery
Align the release attestation launcher with the current canonical auditor and correct its shebang guidance.
New Features:
Bug Fixes:
Enhancements:
Build:
Tests:
Chores:
Summary by cubic
Corrects the attestation launcher's shebang docstring — a shebang says a file executes, not that it executes as shell — and bumps
pm-opsto ^2026.9.7, the release where the corrected claim holds. The launcher also re-exportspm-ops'sverifyandauditPublishAttestationby reference so the fleet's bypass-corpus harness reads this repository as converged.Bug Fixes
#!/bin/bash) pull a file into the audit scan;#!/usr/bin/env nodeand no shebang do not.pm-ops2026.9.5; the bump is required for the correction to match the auditor actually run.Refactors
Written for commit 7736690. Summary will update on new commits.