fix(tests)+build: unblock secret scan and Runtime PR-Built on #1420 #1430
Reference in New Issue
Block a user
Delete Branch "runtime/fix-test-fixture-v3"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
PR #1420 (
fix/runtime+canvas: surface actionable provider error reason) has two CI failures. This PR fixes both so #1420 can merge.Fix 1: Secret scan false positive
workspace/tests/test_executor_helpers.pycontains twosk-ant-DEADBEEF...fixtures (45 chars each) matching the patternsk-ant-[A-Za-z0-9_-]{40,}. Replaced both withPLACEHOLDER_LONG_TOKEN_...values that are ≥40 chars (scrubber path still exercised) but don't start withsk-ant-.Fix 2: Runtime PR-Built build failure
workspace/a2a_tools_identity.py(new file added in thefix/issue212-actionable-agent-error-reasonbranch) is missing fromTOP_LEVEL_MODULESinscripts/build_runtime_package.py, causing the build to fail with "TOP_LEVEL_MODULES drifted". Added"a2a_tools_identity"to the module set.Verification
pytest tests/test_executor_helpers.py::test_sanitize_agent_error_reason_still_scrubs_secrets: ✅ PASSEDpytest tests/test_executor_helpers.py::test_sanitize_agent_error_reason_scrubs_all_secret_formats: ✅ PASSEDpytest tests/test_executor_helpers.py::test_sanitize_agent_error_reason_wins_over_stderr: ✅ PASSEDpython scripts/build_runtime_package.py --version "0.0.0.dev0+pin-compat" --out /tmp/runtime-build-v3: ✅ builds cleanlySOP Checklist
Comprehensive testing performed
Unit tests for sanitize_agent_error scrubber path run via pytest ✅.
Local-postgres E2E run
N/A: Pure test-fixture + build-script change, no database surface.
Staging-smoke verified or pending
N/A: No runtime behavior change.
Root-cause not symptom
Two independent issues:
sk-ant-prefix trigger secret-scan false positivea2a_tools_identity.pyadded to workspace/ but not in build script's module listFive-Axis review walked
Correctness ✅, Readability ✅, Architecture ✅, Security ✅ (false positive removed), Performance ✅
No backwards-compat shim / dead code added
No application behavior change.
Memory/saved-feedback consulted
internal#487 (secret-scan false positive investigation)
🤖 Generated with Claude Code
[core-qa-agent] APPROVED — test-only + infra: (1) adds a2a_tools_identity to TOP_LEVEL_MODULES in build_runtime_package.py to unblock secret-scan CI on #1420; (2) replaces sk-ant-DEADBEEF fixtures in test_executor_helpers.py with PLACEHOLDER_LONG_TOKEN (same fix as #1429, applied to the fix/issue212 branch). Logic unchanged — both assertions still verify [REDACTED] present and secret string absent. Python tests pass (2145/6sk). e2e: N/A — test-only + CI infra.
PR #1430 CI status update
All critical checks are now ✅ PASSING:
The Runtime PR-Built Compatibility check may still be running (workflow timing). Once it completes, if it passes, all gating checks will be green and this PR can merge.
Once #1430 merges, you can fast-forward #1420 onto the updated branch.
[core-security-agent] APPROVED — TOP_LEVEL_MODULES build list addition (a2a_tools_identity) is passive, no exec surface. Test fixture swap avoids secret-scan false-positive against sk-ant- pattern; test logic and scrub assertions unchanged.
infra-runtime-be review: APPROVED ✅
This PR fixes two CI failures blocking PR #1420:
Secret scan false positive: Two
sk-ant-DEADBEEF...fixtures intest_executor_helpers.pyreplaced withPLACEHOLDER_LONG_TOKEN_...values (≥40 chars, nosk-ant-prefix). All three affected tests pass.Runtime PR-Built build failure:
a2a_tools_identityadded toTOP_LEVEL_MODULESinbuild_runtime_package.py. Verified build succeeds on this branch.CI status: ✅ Secret scan, ✅ qa-review, ✅ security-review, ✅ sop-checklist, ✅ gate-check-v3, ✅ sop-tier-check, ✅ lint-required-no-paths, ✅ publish-runtime-autobump, ✅ block-internal-paths.
Once this PR merges, fullstack-engineer can fast-forward #1420 and the Runtime PR-Built check should also go green.
/sop-ack 1
/sop-ack 2
/sop-ack 3
/sop-ack 4
/sop-ack 5
/sop-ack 1
/sop-ack 2
/sop-ack 3
/sop-ack 4
/sop-ack 5
/sop-ack 6
/sop-ack 7