Skip to content

Fix runtime-mask parsing and preserve safe-output schemas - #69244

Open
pelikhan wants to merge 13 commits into
mainfrom
pelikhan-secret-parsing-reliability
Open

pelikhan wants to merge 13 commits into
mainfrom
pelikhan-secret-parsing-reliability

Conversation

@pelikhan

@pelikhan pelikhan commented Oct 16, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Originally split the secret-parsing/redaction portion from #69235 into a standalone PR against main, transferring the five reviewed files from b681ac5f07cb0e8f3a6648fc3904c69a250681f7 in the initial split commit. Subsequent user requests added parser fuzz tests and the safe-output schema fix investigated on this PR. Backend ownership/path changes remain in #69235; this PR excludes gateway ownership, tools.md, and the ownership changeset.

  • Use an iterative quoted-token scanner for multi-megabyte JSON/mixed records; resume after rejected spans instead of quadratic rescanning. Protect original numeric lexemes before JSON parsing can round them.
  • Recover encoded masks behind malformed quotes by replacing only matching original source spans. Ambiguous records retain their JSON-string representation; their decoded contents preserve unrelated Windows paths and escape sequences. Records without additional matches remain unchanged.
  • Resolve configured, built-in, and runtime credentials together before replacement/encoding, coalescing overlaps so a short mask cannot expose a longer secret's suffix. Preserve JSON whitespace, untouched escapes, and numeric lexemes in ordinary artifacts.
  • Preserve executable safe-output public keys, aliases, and enums from bundled tool schemas, including collector configuration/validation vocabulary. Free-form payloads and arbitrary nested keys remain redactable; ordinary artifacts have no protocol exemptions.
  • Fail closed on malformed executable records, unsafe custom routing changes, or control-data conflicts rather than publishing corrupted messages. Existing cleanup/upload gates, backend ownership behavior, independent timeouts, and step-summary limits remain unchanged.

Exact scope

  • actions/setup/js/add_mask_redaction.cjs
  • actions/setup/js/add_mask_redaction.test.cjs
  • actions/setup/js/redact_secrets.cjs
  • actions/setup/js/redact_secrets.test.cjs
  • actions/setup/js/safe_output_redaction.cjs
  • actions/setup/js/safe_output_redaction.test.cjs
  • actions/setup/js/runtime_mask_publication.test.cjs
  • docs/src/content/docs/reference/imports.md
  • .changeset/patch-large-record-mask-redaction.md

Markdown overview

The imports reference documents stack-safe large-record parsing, bounded malformed-token recovery, source-span-preserving escape recovery, combined credential matching, schema-aware safe outputs, and fail-closed conflicts. The patch changeset covers parser reliability, overlapping/encoded credential redaction, and preservation of safe-output schemas/collector configuration. GitHub's step-summary limit remains unchanged.

Validation

Latest review-fix commit: 5ff7b3848c7e879766194b56defb518a0d763ca5.

  • 731 tests passed across 11 suites covering parser/redaction, schema-safe outputs, publication, collector, review handlers, config redaction, HTML sessions, evaluator redaction, and unchanged gateway behavior.
  • make fmt-cjs, make lint-cjs, and final make agent-report-progress passed. Final gate includes build, scoped lint, JS typecheck, schema freshness, and 441 impacted JavaScript tests; no changed Go files required Go tests. Full lint retains existing warnings, with no errors.
  • Bounded inspection regression: 1,024/2,048 malformed escaped quotes now require 1,031/2,055 character inspections rather than approximately 526,000/2.1 million. Includes multi-megabyte malformed records, path/escape preservation, decoded configured-secret assertions, crossing overlaps, and fail-closed decoding errors.
  • Retains 7,000 reproducible parser cases across five seeds, exhaustive truncation/boundary cases, original numeric lexemes, 256 escape combinations, 4,096-token records, and private 0600-file coverage.
  • Schema/publication coverage includes all 62 shipped tools / 338 declared properties, aliases/enums, short/public-word masks, custom-routing/control conflicts, and malformed source removal. Synthetic end-to-end coverage executes redaction, the actual collector, and both real review handlers against mocked GitHub; the existing publication expectations remain unchanged.
  • Local synthetic baseline comparison: original main helper throws RangeError for 10 MiB JSON and mixed records; the revised helper succeeds. A 1 MiB mixed record succeeds with both.

Run investigation and evidence limits

Ponytail Reviewer run 38855075860 completed redaction successfully but failed safe-output publication. Published artifact schema metadata showed renamed body/pull_request_number fields and an altered review-submission type, explaining missing-body/no-handler failures. Synthetic masks reproduced that structural corruption on both main and the earlier PR revision; the source and legitimacy of the historical mask remain unverified.

The separate historical run 38804538442 reported redact/unknown, not EACCES; its removed source artifact and absent exception details prevent definitive attribution to the local stack-failure reproduction. No Docker startup, live workflow validation, workflow dispatch/reruns, secret lookup, or raw-log inspection was performed. Local integration uses temporary files and mocked GitHub, not hosted end-to-end revalidation.

Split the secret-parsing and redaction changes from #69235 without backend ownership or path changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Exercise 7,000 reproducible generated cases across token mutations, escaped nested and mixed records, malformed quotes, and high-precision numeric lexemes; check every truncation boundary for representative quoted tokens.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan
pelikhan marked this pull request as ready for review October 16, 2026 05:18
Copilot AI max review requested due to automatic review settings October 16, 2026 05:18
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

✅ Design Decision Gate 🏗️ completed the design decision gate check. See the comment below for the result and any generated ADR draft.

Design Decision Gate 🏗️

Outcome: reported_no_action

The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible.

Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.

Generated from Design Decision Gate 🏗️ · opus50 · 15.1 AIC · ⌖ 40.6 AIC · ◇ 26.8 AIC · ⊞ 1.9K · ◷

🏗️ ADR gate enforced by Design Decision Gate 🏗️

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

✅ Test Quality Sentinel completed test quality analysis.

Test Quality Sentinel

Outcome: reported_no_action

The agent completed and reported no action. A no-op output alone does not verify that all required work was completed or that publication was possible.

Agent messages are omitted from this comment. The category uses structured run status, not interpretation of agent prose.

Generated from Test Quality Sentinel · haiku45 · 30.6 AIC · ⌖ 6.83 AIC · ◇ 3.17 AIC · ⊞ 9.2K · ◷

🧪 Test quality analysis by Test Quality Sentinel

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

🧠 Matt Pocock Skills Reviewer has completed the skills-based review. ✅

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

❌ Ponytail Reviewer failed to deliver outputs. Please review the logs for details.

Generated by Ponytail Reviewer for #69244

@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

✅ PR Code Quality Reviewer completed the code quality review.

🔎 Code quality review by PR Code Quality Reviewer

@github-actions

Copy link
Copy Markdown
Contributor

🧪 Test Quality Sentinel Report

✅ Test Quality Score: 88/100 — Excellent

Analyzed 117 test cases across 2 JavaScript test suites: strong behavioral contracts, comprehensive edge case coverage, and deterministic fuzz testing.

📊 Metrics (117 tests)
Metric Value
Test files 2 (add_mask_redaction.test.cjs, redact_secrets.test.cjs)
Total tests 117 (39 + 78)
Expect assertions 412 (118 + 294)
✅ Design/behavioral 78 (67%)
⚠️ Implementation-detail 28 (24%)
🎯 Edge/error coverage 11 (9%)
Table-driven (it.each) 41 (35%)
Seeded fuzz iterations 2,500 (5 seeds × 500 iterations)
External I/O mocks 22 (vi.spyOn(fs/JSON/env)) — legitimate
🚨 Violations 0
✨ Highlights

add_mask_redaction.test.cjs (39 tests, 118 assertions)

Behavioral Contracts:

  • transformJSONStrings: Token/span callback separation with truncation boundaries (7 tests, 15 assertions)
  • Seeded parser fuzz: 5 deterministic seeds validate:
    • Random insertions/deletions/truncations match bounded grammar (500 iterations/seed)
    • Nested JSON/JSONL redaction with escaped masks (300 iterations/seed)
    • Malformed quote recovery without rewriting unmatched records (300 iterations/seed)
    • Numeric lexeme preservation during masking (300 iterations/seed)
  • redactArtifactMaskedValues boundaries: 17 test cases for JSON string scanner edge cases
    • Control character recovery (32 cases)
    • Escaped character recovery (15 cases)
    • Malformed Unicode recovery (12 cases)
    • Conservative quote pairing after terminated malformed tokens
    • Byte-for-byte preservation for unmatched/truncated input

Error Coverage:

  • Callback failures propagate without truncation
  • Truncated input never partially transforms
  • Regex metacharacter escaping
  • Large mask handling (200,000 characters)
  • Overlapping mask priority (leftmost/supplied order)
  • No cross-replacement scanning
  • Performance: 500-mask redaction with 2M+ intermediate space stays under search budget

redact_secrets.test.cjs (78 tests, 294 assertions)

Behavioral Contracts:

  • OTLP credential extraction and redaction (3 variants: env, headers, endpoints)
  • Built-in pattern detection: GitHub, Azure, Google/GCP, AWS, OpenAI, Anthropic, Linear tokens
  • File handling: large nested file scans (150K+ entries) without stack overflow
  • Artifact retention: multi-megabyte files preserved with redaction instead of fail-closed
  • Step-summary and summary content redaction
  • 256 deterministic escape-combination tests
  • 4,096-token record handling

Error Coverage:

  • File permission errors (EACCES, EPERM, ENOSPC) — secret-safe diagnostics
  • Parse failures with error boundary isolation
  • Malformed JSON with conservative recovery
  • ReDoS protection patterns tested
  • AWF_RESOLVED_CONFIG environment variable isolation
  • Write boundary failures without secret leakage

Test Infrastructure:

  • Deterministic temp directory setup/cleanup
  • Mock filesystem isolation (fs.existsSync, fs.readFileSync, fs.writeFileSync, fs.readdirSync, fs.renameSync, fs.rmSync)
  • Environment variable stubbing/restoration
  • JSON.parse mocking for failure injection
  • Core action mocks (debug, info, notice, warning, error, setFailed, summary)

Verdict

✅ APPROVED. Test Quality Score 88/100 (Excellent).

  • Implementation-detail ratio: 24% (threshold: 30%) ✓
  • No violations (build tags, mock libraries) ✓
  • Deterministic fuzz testing (2,500 iterations) validates parser invariants ✓
  • Behavioral contracts cover masking, escaping, error recovery, and performance ✓
  • Edge case boundaries exhaustively tested (truncation, malformed JSON, Unicode, permissions) ✓

🧪 Test quality analysis by Test Quality Sentinel · copilot · haiku45 · 30.6 AIC · ⌖ 6.83 AIC · ⊞ 9.2K · ◷
Comment /review to run again

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Test Quality Sentinel: 88/100 (Excellent). 24% implementation tests (threshold: 30%). Comprehensive seeded fuzz testing (2,500 iterations), boundary condition coverage, and error recovery paths validated. No violations.

🧪 Test quality analysis by Test Quality Sentinel · copilot · haiku45 · 30.6 AIC · ⌖ 6.83 AIC · ⊞ 9.2K
Comment /review to run again

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Verdict

No blocking correctness issues stood up in the changed scanner/redaction path or the new failure-mode coverage.

Highlights

Reviewed the new transformJSONStrings scanner, the conservative malformed-quote fallback, large-record handling, and the added parser/file-handling tests. I did not find a changed-line bug or regression strong enough to block merge.

🔎 Code quality review by PR Code Quality Reviewer · copilot · gpt54 · 45.7 AIC · ⌖ 8.36 AIC · ⊞ 20.2K
Comment /review to run again

@github-actions

Copy link
Copy Markdown
Contributor

Skills-based review summary

Applied /diagnosing-bugs (bug-fix classification via pr-triage) and /tdd to the core parser change in add_mask_redaction.cjs.

Found one correctness issue worth fixing before merge: the conservative-escape-decode fallback (used when a malformed quote makes pairing ambiguous) unescapes \t \n \r \b \f \\ \" \uXXXX across the whole line, not just the span needed to reveal a hidden mask. This can corrupt unrelated plain text containing backslash sequences (e.g. Windows-style paths) whenever the conservative path is triggered elsewhere on the same line. See inline comment for a concrete repro; none of the new fuzz/boundary tests combine a conservative-re-encode trigger with unrelated backslashes in surrounding text, so this slipped past the otherwise very strong (444-test) coverage.

Test coverage itself is excellent — the new scanner-boundary and seeded-fuzz suites are a textbook /tdd application (oracle comparison, truncation boundaries, 7000+ generated cases). The throw-on-malformed-token change in the mixed-log path is correctly exercised by a dedicated processFile fail-closed test.

@copilot please address the review comments above.

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet50 · 158.7 AIC · ⌖ 15.1 AIC · ⊞ 11.7K · ◷
Comment /matt to run again

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Skills-Based Review 🧠

Applied /diagnosing-bugs and /tdd (via pr-triage: change_type=bug_fix) to the iterative JSON-token scanner and conservative escape-decoding logic in add_mask_redaction.cjs.

Requesting changes on one confirmed correctness bug in the conservative re-encode path; everything else — the scanner itself, numeric-token matching, and the new test suite — is solid.

📋 Key Themes & Highlights

Key Themes

  • Scope bug in conservative unescape: when a malformed quote forces the fallback 'unescape once, then re-mask' path, the unescape regex applies to the entire line, not just the region needed to reveal the hidden mask. Unrelated backslash sequences in plain text (e.g. \t, \f, \n inside a Windows path) get silently decoded into control bytes, which then survive the JSON.stringify re-encode as real control characters — a data-corruption regression, not just a redaction miss.
  • No fuzz/boundary test currently combines a conservative-re-encode trigger with unrelated backslash sequences elsewhere on the line, so the otherwise excellent coverage (444 tests, 7 boundary cases, 20 seeded fuzz runs across 7000+ cases) didn't catch it.

Positive Highlights

  • ✅ transformJSONStrings cleanly replaces the regex-stack-exhausting alternation with a linear scanner; the boundary/truncation test matrix (only transforms a complete token at every possible truncation boundary) is a model /tdd red-green-refactor artifact.
  • ✅ The new throw on malformed mixed-log tokens correctly triggers the existing fail-closed processFile cleanup path, and that behavior change is directly tested (removes the artifact if decoding...fails).
  • ✅ Docs (imports.md) and the changeset accurately describe the byte-preservation guarantee — which makes the one found gap more important to close before merge, since it contradicts that documented guarantee for a narrow case.

See inline comment for a concrete repro and suggested fix (scope the unescape to only the matched mask span, or verify re-encoded output round-trips before accepting it).

🧠 Reviewed using Matt Pocock's skills by Matt Pocock Skills Reviewer · copilot · sonnet50 · 158.7 AIC · ⌖ 15.1 AIC · ⊞ 11.7K
Comment /matt to run again

Comment thread actions/setup/js/add_mask_redaction.cjs Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🟡 Changes recommended

Confirmed secret-redaction correctness and malformed-record performance issues remain unresolved.

2 open findings
What changed in this PR

Updates runtime-mask redaction for large and malformed artifacts, separately from the backend-ownership fix in #69235.

Changes:

  • Replaces quoted-string regex scanning with an iterative scanner.
  • Adds conservative escape decoding and boundary, fuzz, and artifact-handling tests.
  • Documents the behavior and adds a patch changeset.
File Description
docs/​src/​content/​docs/​reference/​imports.md Documents malformed-record handling and byte preservation.
actions/​setup/​js/​redact_secrets.test.cjs Adds artifact and fail-closed regression tests.
actions/​setup/​js/​add_mask_redaction.test.cjs Adds scanner boundaries, seeded fuzzing, and large-record coverage.
actions/​setup/​js/​add_mask_redaction.cjs Implements iterative scanning and conservative decoding.
.changeset/​patch-large-record-mask-redaction.md Records the redaction patch.

🧠 Review effort: Max


💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread actions/setup/js/add_mask_redaction.cjs Outdated
Comment thread actions/setup/js/add_mask_redaction.cjs Outdated
Keep bundled public field names and enum values intact while sanitizing payload data. Protect post-redaction collector configuration, fail closed on unsafe control changes, and cover the short-mask failure through collection and real review handlers with mocked GitHub.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan pelikhan changed the title Fix runtime-mask parsing for large and malformed log records Fix runtime-mask parsing and preserve safe-output schemas Oct 16, 2026
Preserve unrelated escapes, bound rejected-token scanning, and resolve configured, built-in, and runtime masks without encoding or overlap bypasses.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to this status report: acknowledged as informational; no actionable ADR finding is stated, so no separate ADR change is warranted. The reported no-op is not treated as proof of completion or publication.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to this status report: acknowledged; the reported no-op does not establish completion or publication. The updated redaction behavior is validated separately with local regression tests.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to this completion announcement: no separate code change is needed for the status message. The substantive skills-review findings are addressed with the parser fixes and regression tests.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to this failed-delivery report: investigation located the failure in Process Safe Outputs after successful agent/redaction steps, and commit 116a128 adds schema-safe redaction with synthetic collector/review-handler coverage. No hosted rerun was performed, and the source of the historical runtime mask remains unverified.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to this completion announcement: acknowledged as informational; the corresponding review reported no blocking correctness findings. No additional code change is requested by this status message.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to this test-quality assessment: the positive assessment applies to an earlier revision, not the latest changes. Existing behavioral/fuzz coverage is retained, with added path-preservation, bounded-scanning, configured-secret encoding and overlap regressions validated locally.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to this skills-review summary: accepted and fixed conservative decoding to replace only matching source spans, preserving unrelated Windows paths and escapes in the decoded record. Added focused and seeded regressions while retaining fail-closed decoding behavior.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@gh-aw-bot

Copy link
Copy Markdown
Collaborator

@copilot address the following outstanding work in one pass:

  1. Update this branch with the latest main using make merge-main, resolving any conflicts and preserving the intended changes.
  2. Fix failing check JS Tests (shard 4/4) (FAILURE): https://github.com/github/gh-aw/actions/runs/38860848383/job/116842820603.

Push the necessary fixes, reply to each listed review thread and resolve it when addressed. Ignore feedback already answered or resolved. Use the pr-finisher skill and stop when only human review or CI remains; do not trigger CI.

Sous-chef head: 7106608
Sous-chef work: 31f7e812d45f0792093269b7b90445aa9803225a204ec130694b9ceb0227d7cc
Sous-chef state: d2a65d5b21558856597b163d1f3100d2c6f4eee83b41adc3447194cd174ede60

Generated by 👨‍🍳 PR Sous Chef · pi · haiku45 · 5.04 AIC · ⌖ 6.97 AIC · ⊞ 1.1K · ◷
Comment /souschef to run again

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6209357085 (Accept): Confirmed, and the current implementation has now been checked independently at 67cb55b. All 463 tests in the focused parser, matcher, redaction, schema, runtime publication, and bundle-dependency suites passed.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6209357458 (Accept): Confirmed: the completion announcement needs no code change, and the substantive parser finding remains fixed. Fresh path-preservation, seeded, and runtime regression tests passed at 67cb55b.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6209357785 (Partially accept): The schema-safe fix from 116a128 remains present, and fresh tests confirm that short runtime masks preserve executable review messages through redaction, collection, and review handlers. This verifies the local regression coverage, not the source of the historical mask or successful hosted publication.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6209358097 (Accept): Confirmed: the completion announcement is informational and requests no additional code change. No new parser or redaction change is warranted for this acknowledgment.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6209358379 (Accept): Confirmed: the earlier score is not evidence for later revisions, so the current HEAD was validated separately. All 463 focused tests passed, including path preservation, bounded scanning, configured-secret encoding, overlap handling, runtime publication, and bundle dependencies.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6209358706 (Accept): Confirmed: conservative decoding still replaces only matching source spans and preserves unrelated paths and escapes. The corresponding focused, seeded, fail-closed, and runtime regressions passed again at 67cb55b.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215986711 (Accept): Already implemented in 67cb55b: JSON string scanning and mask matching are separate modules, existing exports are preserved, and both deployment bundles include their dependencies. Fresh direct, redaction, schema, runtime publication, and bundle-dependency checks passed all 463 tests; no further refactor was needed.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6216278695 (Accept): Verified against 67cb55b: the module split, compatibility exports, deployment lists, and direct plus runtime regression coverage are already present. A fresh focused run passed 463 tests across seven suites, so no additional source change is needed for the requested refactor.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6209942697 (Accept): This earlier request was addressed by c350350, which included safe_output_redaction.cjs in both setup bundles, and the subsequent main merge ab02a1f. The newer shard 4 failure is a different diagnostic-test regression reproduced on unmodified main, not a recurrence of the missing-bundle defect.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6210320291 (Accept): Confirmed that c350350 added the missing dependency to both setup bundles, and the next CI run recorded shard 4 success. The current bundle-closure tests also pass; the later agent_execution diagnostic failures are separate.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215569490 (Partially accept): Run 38901241131 failed at Redact secrets in logs on c350350, before the current parser refactor; its annotations report fail-closed artifact removal with an unknown redaction cause. Main run 38856386715 has the same failure boundary, but that does not prove a shared root cause or establish that current HEAD is fixed.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215577000 (Accept): This is a startup notification, not an additional code-change request. The completed Claude run failed before agent execution at Start MCP Scripts HTTP Server on c350350; its later missing-session-artifact error is downstream, and the available annotations do not identify a concrete current-HEAD defect.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215578357 (Accept): Confirmed that Smoke Copilot Auto run 38901157812 completed successfully on c350350. That is useful historical smoke coverage, not validation of the later commits or a reason to change code.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215579961 (Accept): This is a startup notification and requires no implementation change. The completed Pi run had successful agent, detection, and safe-output jobs but failed its final Handle agent failure step because the agent reported incomplete work; this does not establish a parser regression.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215580036 (Accept): This is a startup notification and requires no implementation change. The completed Gemini run failed Execute Gemini CLI with exit code 41 on c350350; the available runtime metadata does not establish a redaction or parser defect.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215582248 (Partially accept): Run 38901157772 has two distinct failures on c350350: Execute Codex CLI exited with code 1, and Redact secrets in logs then failed closed with an unknown redaction cause. Its threat-detection warning does not identify either root cause, and no evidence here confirms the same failures on current HEAD.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215582595 (Partially accept): The container run's recorded failure is Redact secrets in logs, not a failed tool-installation step, and annotations show fail-closed artifact removal with an unknown cause. This c350350 result predates current HEAD and shares a failure boundary with main, so it does not justify an unrelated tool or container change.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215638287 (Accept): The requested main update and shard 1 fixture correction were supplied by ab02a1f, including GITHUB_ENV and run identity for the converter fixture. The affected fixture and bundle-closure tests pass now; the later shard 4 diagnostic regression is independently reproduced on main.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215639164 (Accept): Thanks for the smoke-run output; it contains no actionable review request. Its associated Copilot Auto run passed on c350350, while smoke coverage for the subsequent HEAD remains unverified.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

In reply to comment 6215924119 (Accept): Confirmed that ab02a1f contains the main merge and the converter fixture now supplies GITHUB_ENV and run identity. The current focused tests pass, and the remaining later shard 4 failure is a separate main-branch diagnostic regression rather than this already-corrected fixture issue.

@pelikhan

Copy link
Copy Markdown
Collaborator Author

@copilot secret redaction should switch to text mode if JSON is invalid

Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>

Copilot AI commented Oct 16, 2026

Copy link
Copy Markdown
Contributor

@copilot secret redaction should switch to text mode if JSON is invalid

Implemented in 621023d: invalid ordinary JSON artifacts now use text-mode redaction, while valid JSON/JSONL keeps structured handling and executable safe-output records remain fail-closed. Added regression coverage; the final impacted gate passed 445 tests.

Match raw and decoded credential spans across entire invalid artifacts, including multiline secrets, and preserve fail-closed cleanup.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Comment on lines +569 to +572
text => {
const custom = redactSecrets(redactBuiltInPatterns(text).content, secretValues);
return applyAddMaskRedaction(custom.content, maskedValues);
}
pelikhan and others added 2 commits October 16, 2026 07:41
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

This branch had an error being deployed

1 failed (outdated) deployment
aoai-model — c3503500 Deployed Oct 16, 2026 by github-actions[bot] via conclusion #239
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants