Skip to content

fix: two rc.6 refresh-cycle robustness gaps found in downstream review - #49

Merged
crypticpy merged 2 commits into
mainfrom
fix/rc6-codex-p2s
Aug 28, 2026
Merged

fix: two rc.6 refresh-cycle robustness gaps found in downstream review#49
crypticpy merged 2 commits into
mainfrom
fix/rc6-codex-p2s

Conversation

@crypticpy

@crypticpy crypticpy commented Aug 28, 2026

Copy link
Copy Markdown
Owner

Fixes the two real findings Codex raised on the BCHC rc.6 update PR (bchc#30):

  1. The "something changed" guidance named a literal verified: field. A catalog that renames its confirmation field via entry.verified_key would follow the instruction, stamp a field the sweep never reads, and the entry would stay stale with its reminder open. The refresh script now exposes the resolved key as a step output and the guidance uses it.

  2. The sweep copied up to 200 issue bodies into a single environment entry. Linux caps one env entry near 128 KiB; past it the runner cannot launch the github-script step, and the monthly job opens, refreshes, and closes nothing. The bodies now travel through $SWEEP_ISSUES_FILE under runner.temp; count/slugs/max_new remain step outputs.

Three new tests pin both contracts (subprocess test for the file channel, workflow-text assertions for both). Full Node suite 799 pass, eslint clean.

Hold: do not merge before the stable v1.9.0 cut. The accepted candidate is v1.9.0-rc.6, and the candidate-to-stable diff must contain no behaviour change (docs/polish-and-publish-plan.md §5) — merging this first would force an rc.7. Neither bug affects the BCHC deployment today (default key, 13 entries). This PR is the head of the next release line.

🤖 Generated with Claude Code

https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD

Summary by Sourcery

Harden refresh-cycle automation against renamed verification fields and oversized issue payloads.

Bug Fixes:

  • Use each catalog’s configured verification key in refresh guidance so maintainers update the field monitored by the verification sweep.
  • Transfer verification-sweep issue bodies through a temporary file instead of an environment entry, preventing large runs from exceeding runner limits.

Tests:

  • Add workflow and subprocess coverage for file-based issue transport and configured verification-key guidance.

crypticpy and others added 2 commits August 27, 2026 22:28
A catalog that renames the confirmation field via entry.verified_key was
told to stamp a literal verified: field the sweep does not read, leaving
the entry stale and its reminder open. The refresh script now exposes
the resolved key as an output and the guidance comment uses it.

Found by Codex review on the BCHC rc.6 update PR (bchc#30).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD
MAX_ISSUE_PAYLOAD (200) issue bodies serialized into one env entry can
pass Linux's ~128 KiB single-entry cap, and the runner then cannot
launch the github-script step at all — no issues opened, refreshed, or
closed. The sweep now writes the bodies to $SWEEP_ISSUES_FILE under
runner.temp and the workflow reads the file; count, slugs and max_new
stay step outputs.

Found by Codex review on the BCHC rc.6 update PR (bchc#30).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD

@sourcery-ai sourcery-ai 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.

Sorry @crypticpy, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 1 day and 4 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@sourcery-ai

sourcery-ai Bot commented Aug 28, 2026

Copy link
Copy Markdown

Reviewer's Guide

Hardens the rc.6 refresh cycle by making maintainer guidance honor custom verification keys and transporting potentially large sweep issue bodies through a shared temporary file instead of a step-output environment entry. Tests pin both workflow contracts and the file-based subprocess behavior.

Sequence diagram for file-based verification sweep transport

sequenceDiagram
    participant Sweep as verification_sweep.mjs
    participant Temp as runner.temp file
    participant Workflow as GitHub Actions workflow
    participant GitHub as GitHub Issues API

    Sweep->>Temp: writeFileSync(JSON.stringify(issues))
    Sweep-->>Workflow: setOutput(count, slugs, max_new)
    Workflow->>Temp: readFileSync(SWEEP_ISSUES_FILE)
    Workflow->>GitHub: create or refresh issues using wanted bodies
    Workflow->>GitHub: close stale refresh issues
Loading

Sequence diagram for custom verification-key guidance

sequenceDiagram
    participant Refresh as refresh_entry_from_issue.mjs
    participant Workflow as refresh-entry workflow
    participant GitHub as GitHub Issues API

    Refresh-->>Workflow: setOutput(verified_key, verifiedKey)
    Workflow->>Workflow: read ENTRY_VERIFIED_KEY
    Workflow->>GitHub: createComment with resolved verification key
Loading

File-Level Changes

Change Details Files
Propagate the catalog’s resolved verification-field name into refresh guidance.
  • Emit verified_key from the refresh script.
  • Pass the output into the workflow and interpolate it in the maintainer comment, retaining a default for compatibility.
  • Add workflow assertions covering configured and non-literal keys.
scripts/refresh_entry_from_issue.mjs
.github/workflows/refresh-entry.yml
test/scripts/release_workflows.test.mjs
Move sweep issue bodies from step outputs to a temporary file to avoid environment-size failures.
  • Write serialized issue bodies to $SWEEP_ISSUES_FILE while keeping count, slugs, and max-new as outputs.
  • Read the shared runner-temp file in the GitHub Script step, with an empty-list fallback when absent.
  • Add subprocess and workflow-text tests verifying file transport and the absence of the old issues output.
scripts/verification_sweep.mjs
.github/workflows/verification-sweep.yml
test/scripts/verification_sweep.test.mjs

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

@crypticpy
crypticpy merged commit af54f28 into main Aug 28, 2026
20 checks passed
@crypticpy
crypticpy deleted the fix/rc6-codex-p2s branch August 28, 2026 03:39
crypticpy added a commit that referenced this pull request Aug 28, 2026
* docs: record the 2026-08-28 gate evidence and the rc.7 requirement

Updates the RR-H rows with the drills, rehearsals and checks completed
against the rc.6 candidate: the live updater pass and rollback proof
(RR-H02), the end-to-end publish rehearsal and takedown (RR-H03, RR-H07),
the re-audited operations inventory sync (RR-H05), the in-flight
one-business-day soak (RR-H08), and the deployed-candidate link check
with its Discussions finding (RR-H09). Records that the PR #49 merge
moves the stable cut behind a v1.9.0-rc.7 candidate.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD

* docs: qualify the rollback proof and takedown rehearsal as partial

The rc.6 rollback evidence is the offline revert only — the live
revert-PR path stays open under RR-H07 — and BCHC PR #32 rehearsed an
ordinary unpublish, not the protected-data history purge. Say so.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD

* docs: sync the automated updater rows to rc.6 and scope RR-H03 honestly

The automated-evidence table still said 'Pass for rc.4' while the new
summary cited the rc.6 updater run — record the rc.6 rehearsal (fail-
closed contract gate, machine-verified BCHC PR #30, lock at c0826d9) in
the exact-rehearsal and protected-content rows. RR-H03 drops back to in
progress: only the BCHC leg ran; the PHCT-side rehearsal and the
notification confirmation are still open.

Found by Codex review on this pull request.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
@crypticpy crypticpy mentioned this pull request Aug 28, 2026
crypticpy added a commit that referenced this pull request Aug 28, 2026
* docs: cut the v1.9.0-rc.7 release record

Version, changelog section and compare links for the two rc.6
refresh-cycle robustness fixes (PR #49), the upgrade preview pointed at
rc.7, the executable plan ledger retargeted from rc.6 to rc.7, and the
readiness evidence updated: candidate provenance, the completed PHCT leg
of the live publish rehearsal (issue #51 -> PR #52 -> live -> removed in
PR #53), and the RR-H03 remainder narrowed to notification delivery.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD

* docs: record the rc.7 verify run at its exact commit

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014sAVayAT2tkQ7p9U2o9CsD

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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