Skip to content

fix(redaction): keep timestamped Actions job logs visible - #1038

Open
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/bc-7acfc332-f26d-4571-a399-f356ea4bed28-6096
Open

fix(redaction): keep timestamped Actions job logs visible#1038
cursor[bot] wants to merge 3 commits into
mainfrom
cursor/bc-7acfc332-f26d-4571-a399-f356ea4bed28-6096

Conversation

@cursor

@cursor cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Next action

Merge this successor instead of #1031 and #929. Those heads treat a downloaded per-line-timestamped pretty-printed password dump as one failed { window and fail-close the entire job log to [REDACTED].

What changed

  • Skip RFC 3339 runner timestamps (YYYY-MM-DDTHH:MM:SS.nnnnnnnZ ) inside raw JSON spans the same way JSON whitespace is skipped, then rewrite credential leaves in place.
  • Open [ only when the next significant token can start a JSON value (true / false / null / number / string / container / ]), so line-start [INFO] / [timeout] diagnostics stay visible.
  • Replace the group-only timestamp fixture with a downloaded-log fixture that stamps every line, plus CRLF, [INFO], and literal array controls.
  • Cite RFC 3339 and GitHub workflow-run logs (APA 7) next to RFC 8259 / ECMA-404 / ISO/IEC 21778.

Verification

Focused redaction selection: 168 passed. Owned modules redact_sensitive_log.py, sandboxed_verify.py, and sandboxed_web_e2e.py report 100% statement and branch coverage (1,094 statements, 444 branches).

Acceptance

Do not merge #929 or #1031. After this head is green, treat [REDACTED] as evidence suppression and rerun the exact-head sandbox redaction quality job before closing #908.

Open in Web View Automation 

seonghobae and others added 3 commits August 17, 2026 00:22
Replay unique #929 source onto current origin/main. Skip shared
ARCHITECTURE/CLAUDE/AGENTS trees and stale materialize files.
Treat only plausible JSON openers as span starts and score a failed parse
against the window until the next opener. A ##[group] marker or prose
[timeout] no longer fail-closes a later pretty-printed password object.
Cite RFC 8259, ECMA-404, and ISO/IEC 21778 for duplicate-member layout.

Co-authored-by: Seongho Bae <[email protected]>
Skip RFC 3339 runner timestamps inside raw JSON spans and open '[' only
for a real JSON value so a downloaded pretty-printed password dump keeps
##[group] and [INFO] text instead of fail-closing the entire log.

Co-authored-by: Seongho Bae <[email protected]>
@cursor
cursor Bot requested a review from seonghobae August 16, 2026 15:49
@seonghobae
seonghobae marked this pull request as ready for review August 16, 2026 15:49
@cursor

cursor Bot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor Author

Bugbot is not enabled for your account, so this pull request was not reviewed.

Enable Bugbot in the Cursor dashboard to get automatic reviews on future PRs.

@cursor cursor Bot left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Next action

Do not merge this head. A downloaded pretty-printed password dump still collapses to [REDACTED] when the per-line prefix uses RFC 3339 time-numoffset (+00:00, -07:00) or a following HTAB instead of Z plus SPACE.

Finding

ACTIONS_JOB_LOG_TIMESTAMP_RE only matches YYYY-MM-DDTHH:MM:SS[.frac]Z .

RFC 3339 §5.6, which this head already cites, defines time-offset as Z or time-numoffset. Collectors and re-exports also emit HTAB after the timestamp. In both shapes { after the unrecognized prefix is a plausible opener, the next timestamp breaks the parse, and _looks_like_sensitive_json_candidate fail-closes the entire job log.

Reproduced locally against 40e2139f:

  • 2026-08-16T15:22:12.0012340+00:00 { plus a later "password" object → whole buffer [REDACTED]
  • 2026-08-16T15:22:12.0012340Z\t{ plus the same object → whole buffer [REDACTED]

The Z plus SPACE path, [INFO] guard, and argv/object fixtures on this head stay correct. Focused 168 tests passed here with 100% statement/branch on the three owned modules.

Landing vehicle

The offset/HTAB skip is on successor cursor/bc-f7a56233-973b-4875-8395-c453b26f5bde-841c (opened from this run). Merge that successor instead of #929, #1031, or this PR.

Developer experience

Operators downloading job logs from a collector that keeps RFC 3339 offsets or TSV-style tabs still lose group markers and status text.

User experience

A buyer reading review evidence still cannot tell a real secret from a timestamp-grammar miss.

Open in Web View Automation 

Sent by Cursor Automation: Fix Issues

MAX_RAW_JSON_WORK = 262_144
RAW_JSON_SPAN_PREFIXES = frozenset(" \t\r\n{[:,=()]")
ACTIONS_JOB_LOG_TIMESTAMP_RE = re.compile(
r"\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z "

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

This pattern requires a literal Z and SPACE. RFC 3339 §5.6 time-numoffset (+00:00, -07:00) and a following HTAB both fail to skip, so the next { starts a doomed span and a later "password" fail-closes the whole log. Accept (?:Z|[+-]\d{2}:\d{2})[ \t] and keep the [INFO] opener guard.

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.

2 participants