Skip to content

[Safe Outputs Conformance] PTI-005: Retry-loop integrity-rejection check regex no longer matches error_recovery.cjs guard #70805

Open

Description

@github-actions

Conformance Check Failure

Check ID: PTI-005
Severity: HIGH
Category: Security / Implementation

Problem Description

Section 7.3 PTI-005 requires that the retry loop reject ERR_TRANSPORT_INTEGRITY failures before invoking any custom shouldRetry classifier, so a corrupted patch/bundle transport can never be silently retried. The checker verifies this by matching the literal adjacent substring error?.code === "ERR_TRANSPORT_INTEGRITY" || !fullConfig.shouldRetry(error) in actions/setup/js/error_recovery.cjs.

The current guard (line 352) is:

if (error?.code === "ERR_TRANSPORT_INTEGRITY" || (fullConfig.deadline !== undefined && now() >= fullConfig.deadline) || !fullConfig.shouldRetry(error)) {

A deadline-expiry clause was inserted between the integrity check and the shouldRetry check, which breaks the checker's literal adjacency match.

Affected Components

  • Files:

    • actions/setup/js/error_recovery.cjs (retry-loop guard, line 352)
    • scripts/check-safe-outputs-conformance.sh (PTI-005 check, ~line 2673)
<b>🔍 Current vs Expected Behavior</b>

Current Behavior

|| is left-associative and short-circuits left-to-right, so error?.code === "ERR_TRANSPORT_INTEGRITY" is still evaluated before fullConfig.shouldRetry(error) regardless of the inserted deadline clause — the required ordering (integrity failures rejected before any custom classifier runs) is preserved at runtime. Only the checker's literal substring match fails, because it assumes no other clause can sit between the two conditions.

Expected Behavior

Either confirm the inserted deadline clause truly has no interaction with ERR_TRANSPORT_INTEGRITY classification (it appears not to, since it is its own independent OR-branch), and widen the PTI-005 checker pattern to tolerate additional clauses between the integrity check and the shouldRetry check, or restructure the guard so the integrity check is evaluated in isolation if the spec intends something stricter than left-to-right OR short-circuiting.

Remediation Steps

This task can be assigned to a Copilot coding agent with the following steps:

  1. Confirm that the deadline-expiry clause in error_recovery.cjs line 352 cannot mask or suppress ERR_TRANSPORT_INTEGRITY rejection (verify via the existing retry-loop tests, adding a regression test if integrity-failure-at-deadline is not already covered).
  2. Update the PTI-005 regex in scripts/check-safe-outputs-conformance.sh (~line 2673) to tolerate additional OR-clauses between the integrity check and the shouldRetry check, e.g. match error?.code === "ERR_TRANSPORT_INTEGRITY" and !fullConfig.shouldRetry(error) independently within the same if condition rather than as one adjacent literal string.
  3. Re-run the conformance script locally and confirm PTI-005 passes alongside the other PTI-00x checks.

Verification

After remediation, verify the fix by running:

bash scripts/check-safe-outputs-conformance.sh

The check PTI-005 should pass without errors.

References

  • Safe Outputs Specification: docs/src/content/docs/specs/safe-outputs-specification.md
  • Conformance Checker: scripts/check-safe-outputs-conformance.sh (line 2667)
  • Run: §39551296580
  • Date: 2026-10-21

Generated by ✅ Daily Safe Outputs Conformance Checker · claude · agent · 81.4 AIC · ⌖ 0.668 AIC · ⊞ 5.4K · ◷

  • expires on Oct 21, 2026, 9:53 PM UTC-08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions