Skip to content

DO NOT MERGE — proof(META-337): red/green for the two promoted CI checks - #16

Closed
qmarcelle wants to merge 5 commits into
mainfrom
meta/337-proof-required-checks
Closed

DO NOT MERGE — proof(META-337): red/green for the two promoted CI checks#16
qmarcelle wants to merge 5 commits into
mainfrom
meta/337-proof-required-checks

Conversation

@qmarcelle

@qmarcelle qmarcelle commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Bidirectional proof required by META-337 §8 before parity-receipt-reproduction and standard-candidate-consumption are promoted to required checks. Depends on #15.

Three commits, each a single bounded violation, observed in sequence:

# Injected defect Expected RED Expected GREEN
1 delete docs/migration/parity-receipt.json parity-receipt-reproduction standard-candidate-consumption
2 restore receipt; drop .mcp.json from files[] standard-candidate-consumption parity-receipt-reproduction
3 restore everything both

Commit 1 is the interesting one: before #15 this exact tree concluded success by skipping its own reproduction steps. It is the false green that #15 closes.

Closed once the observations are recorded. Nothing here is intended to merge.

Summary by Sourcery

Strengthen the parity receipt CI job to fail when the committed receipt is missing instead of silently skipping reproduction, and add explanatory output for this failure mode.

CI:

  • Update the parity-receipt-reproduction workflow to require docs/migration/parity-receipt.json to exist and emit a detailed failure summary when it is absent.

Documentation:

  • Remove the committed parity receipt reference file docs/migration/parity-receipt.json as part of the proof scenario.

…to green

`parity-receipt-reproduction` gated both of its substantive steps on
`steps.check-receipt.outputs.has_receipt == 'true'`. On a branch with no
committed receipt the two steps skipped, the job concluded `success`, and the
log said "skipping reproduction check" — a green result that had reproduced
nothing.

That is tolerable while the job is advisory. It is not tolerable once the check
is required, which META-337 intends: at that point the cheapest way to satisfy a
failing parity gate is to delete the receipt, and the gate would reward it.
"Missing is not green" has to hold for the gate itself, not only for the product
code it inspects.

Absence of the receipt is now a hard failure, and the two reproduction steps run
unconditionally. The failure output names the invariant, the authority, the
evidence that discharges it, and what must not be weakened to recover green, so
an implementation agent can act on it without a human relay.

This changes CI only. No product code, no packaging, and no adapter behavior is
touched.

Refs META-337.
DO NOT MERGE. Bounded violation proving `parity-receipt-reproduction` now
reports RED on a missing receipt. Before the fix in #15 this exact state
concluded `success` by skipping. Reverted in PROOF 3/3.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

qmarcelle has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@sourcery-ai

sourcery-ai Bot commented Aug 13, 2026

Copy link
Copy Markdown

Reviewer's Guide

This PR is a temporary "red/green" proof for META-337, modifying the CI workflow so that the parity-receipt check hard-fails when the receipt is missing and, in this proof branch, deleting the receipt file itself to demonstrate the new behavior before the check is promoted to required.

Sequence diagram for updated parity receipt CI behavior

sequenceDiagram
  actor Developer
  participant GitHubActions
  participant Shell
  participant verify_clone_parity_mjs
  participant verify_receipt_mjs

  Developer->>GitHubActions: push branch / open PR
  GitHubActions->>Shell: require_committed_parity_receipt
  alt [docs/migration/parity-receipt.json missing]
    Shell->>GitHubActions: append_step_summary
    GitHubActions-->>Developer: parity-receipt-reproduction job fails
  else [docs/migration/parity-receipt.json present]
    GitHubActions->>verify_clone_parity_mjs: verify-clone-parity.mjs --target-ref TARGET_SHA
    GitHubActions->>verify_receipt_mjs: verify-receipt.mjs parity-receipt.json .parity-ci/receipt.json
    GitHubActions-->>Developer: parity-receipt-reproduction job succeeds
  end
Loading

File-Level Changes

Change Details Files
Tighten the parity receipt CI job so that absence of the receipt causes an explicit failure rather than skipping verification steps.
  • Replace the previous conditional step that only set an output flag based on the presence of docs/migration/parity-receipt.json with a step that exits the job with failure when the file is missing.
  • Add structured error output via the GitHub Actions log and a detailed GITHUB_STEP_SUMMARY explaining the invariant, rationale, authority, and required remediation when the receipt is absent.
  • Remove the conditional if: guards from the subsequent parity reproduction and comparison steps, making them unconditional and dependent on the new hard requirement that the receipt exist.
.github/workflows/ci.yml
Remove the committed parity receipt artifact to force the CI job into the new failure path for demonstration purposes.
  • Delete docs/migration/parity-receipt.json from the repository to simulate the "missing receipt" defect enumerated in the proof description.
docs/migration/parity-receipt.json

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

…es[]

DO NOT MERGE. Restores the parity receipt (expect `parity-receipt-reproduction`
back to GREEN) and removes `.mcp.json` from the published `files` array, which
is a real packaging-truth regression the consumption harness owns (expect
`standard-candidate-consumption` RED). Reverted in PROOF 3/3.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

qmarcelle has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

DO NOT MERGE. Restores `.mcp.json` and instead drops `scripts/install.mjs`
from `files[]`.

PROOF 2/4 showed `.mcp.json` is asserted by BOTH `build-and-smoke` (which
greps the pack log for it) and `standard-candidate-consumption` — so that
defect could not attribute a RED to the consumption gate alone.
`scripts/install.mjs` is asserted only by the consumption harness, so this
commit isolates it: expect `standard-candidate-consumption` RED with
`build-and-smoke` GREEN.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

qmarcelle has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

DO NOT MERGE. Tree is now identical to the #15 fix branch. Expect all four CI
checks GREEN, closing both bidirectional proofs.

Correction to PROOF 3/4: rewriting package.json with a JSON.stringify round trip
reformatted the `files` array and tripped biome, so `build-and-smoke` went red
for a formatting reason rather than the injected one. That commit is not
admissible as a proof and is not cited as one. The two gates are proven by
PROOF 1/4 and 2/4, whose reds were verified against the failing step.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

qmarcelle has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@sonarqubecloud

Copy link
Copy Markdown

@qmarcelle

Copy link
Copy Markdown
Contributor Author

Proofs recorded; closing. Nothing here merges.

Gate RED GREEN
parity-receipt-reproduction 4b77a33 — annotation Missing committed parity receipt on the Require a committed parity receipt step 4600e18, eff8bc5
standard-candidate-consumption 4600e18 — harness assertion tarball contains .mcp.json; this job runs no linter, so the failure is attributable to the injected defect 4b77a33, 65404e7, eff8bc5

Both reds came from github-actions (app 15368), the expected source.

PROOF 3/4 (65404e7) is withdrawn and is not cited as evidence. Rewriting package.json through a JSON.stringify round trip reformatted the files array and tripped biome, so build-and-smoke went red for a formatting reason rather than the injected one — and the injected defect itself (dropping scripts/install.mjs) did not take effect, since the consumption harness still passed. An inconclusive run is not a proof.

@qmarcelle qmarcelle closed this Aug 13, 2026
@qmarcelle
qmarcelle deleted the meta/337-proof-required-checks branch August 13, 2026 00:45
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