Skip to content

Session Handoff [auto-1874]: Stop the Doc Gates' Printed Names Forging Workflow Commands, for #1874 #3114

Closed

Description

@ptr727

Next steps, in priority order

  1. Fix Doc Gates Print Tracked Names Raw, So a Name Starting With :: Forges a Workflow Command #1874: stop a tracked file name that opens on :: from printing as a workflow command. The runner trims a stdout line before checking it for the command key, so the indent in front of each finding does not protect it, and a fork pull request controls the file name. printable() in .github/actions/repo-gate/repo_gate.py escapes control characters and leaves a leading :: alone. The issue hands the choice between neutralizing a leading :: in each printed line that carries a path and wrapping the findings in a ::stop-commands:: block with a random token to whoever takes it, so the worker makes that call and states the reason in the pull request. Check .github/actions/prose-gate/prose_lint.py too, which the issue says likely prints paths the same way and was not checked, and cover every gate printing a tracked name. Done looks like: a test feeds a constructed name shaped like ::error title=forged::x through each affected gate's output path and asserts the printed line cannot begin a workflow command after leading whitespace is trimmed, the test fails with the fix reverted, and a pull request carrying Closes on promotion: #1874 has merged to develop.

External blockers

None known.

Internal dependencies

None.

State

No branch, worktree, or pull request exists for this lane yet. Re-derive from git worktree list and the open pull requests before starting.

The parked decision queue

Zero parked decisions on this lane.

What the last round did

The unattended picker opened this lane from the backlog.

What not to repeat

Nothing yet.

New learnings

None yet.

Activity

  1. added
    handoffA link in the session handoff chain, one open issue per track
    on Oct 16, 2026
  2. ptr727 commented on Oct 16, 2026

    @ptr727
    OwnerAuthor

    Lane closed out

    Merged: #3116 was squash-merged into develop as 5d369fd15aa705da8ef38ed1d67ac891c778016f. Its body carries Closes on promotion: #1874, so #1874 stays open until a develop -> main promotion carries the fix. This run's scope was develop, so the run opened no promotion.

    What it fixed (#1874): both doc gates now escape output a fork can control before the Actions runner reads it as a workflow command. That covers a line opening on :: after whitespace is trimmed, and the legacy ##[ anywhere in a line, which the issue did not name. repo_gate.py's printable() gained the escape. prose_lint.py gained the same printable(), control escaping included, at every print carrying a path or file text. The prose gate's composite action also escaped its echo of .github/prose-gate-excludes, covering ##[ and an interior carriage return. The issue offered a choice between neutralizing the lines and a ::stop-commands:: block. This lane neutralized the lines, and the pull request body gives the reasons.

    Review: the local strict review ran three rounds, and the third raised no findings. Copilot raised one finding, to escape the Scanning echo of the paths input. It was declined under "Trust Boundaries and Hardening Effort", because the calling workflow writes that input and the fleet's caller never sets it. The thread is resolved. CodeRabbit, asked once, reported no actionable comments.

    Filed along the way: #3115 moves the release-guard tests' inline workflow-command check onto the new tests/runner_commands.py.

    The worktree, the local branch, and the remote branch are all removed, and the base clone is back on develop.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    handoffA link in the session handoff chain, one open issue per track

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions