Skip to content

hotfix: preserve piped stdin for app commands - #301

Merged
omry merged 1 commit into
mainfrom
pr301
Oct 29, 2026
Merged

omry merged 1 commit into
mainfrom
pr301

Conversation

@omry

@omry omry commented Oct 28, 2026

Copy link
Copy Markdown
Owner

Forward app stdin independently of terminal detection by reusing shellCommandIO, and remove the terminal-only input gate. Allocate a TTY only when both input and output look like terminals.

Add public-entry regressions for pipe/file input, captured output, EOF, closed input and execution errors. Built-binary Docker/RDA probes cover exact dummy-byte delivery, mixed terminal streams and absence from saved metadata.

Validation: focused race tests, vet and full local nox CI, with the existing WSL host-test exclusion, tracked-source package selection and local 10m aggregate Go bound. Remote exact-head CI remains required.

Forward app stdin independently of terminal detection by reusing shellCommandIO, and remove the terminal-only input gate. Allocate a TTY only when both input and output look like terminals.

Add public-entry regressions for pipe/file input, captured output, EOF, closed input and execution errors. Built-binary Docker/RDA probes cover exact dummy-byte delivery, mixed terminal streams and absence from saved metadata.

Validation: focused race tests, vet and full local nox CI, with the existing WSL host-test exclusion, tracked-source package selection and local 10m aggregate Go bound. Remote exact-head CI remains required.
@gitar-bot

gitar-bot Bot commented Oct 28, 2026 •

Copy link
Copy Markdown
Code Review ✅ Approved

🟡 Medium risk · Forwarding piped or redirected stdin to app commands could cause them to consume input they previously ignored, changing their behavior.

Forwards app stdin independently of terminal detection by reusing shellCommandIO and removes the terminal-only input gate, allocating a TTY only when both input and output are terminals. No issues found.

Verification

Rules No rules evaluated

Functional validation Not enabled

Set up

For more verification details, comment gitar display:verbose.

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Showing compact verification results.

Comment with these commands to change the behavior for this request:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Powered by Gitar — free for open source

@omry

omry commented Oct 28, 2026 •

Copy link
Copy Markdown
Owner Author

PR-cycle state — maintained automatically. Do not edit by hand.

Mechanical PR-cycle state (JSON)
{
  "approval": {
    "candidate_revision_fingerprint": "sha256:67898c6999a2bede8205d88653853f9249bdc6f944af90c77cbc94bee96ba305",
    "evidence": {
      "attestations": [],
      "candidate_revision_fingerprint": "sha256:67898c6999a2bede8205d88653853f9249bdc6f944af90c77cbc94bee96ba305",
      "check_conclusions": [
        {
          "conclusion": "SUCCESS",
          "name": "Bash native evidence checks",
          "run_id": 123129508152
        },
        {
          "conclusion": "SUCCESS",
          "name": "Gitar",
          "run_id": 123121356440
        },
        {
          "conclusion": "SUCCESS",
          "name": "Linux CI checks",
          "run_id": 123121358706
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (darwin-amd64)",
          "run_id": 123121358402
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (darwin-arm64)",
          "run_id": 123121358502
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (linux-amd64)",
          "run_id": 123121358109
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (linux-arm64)",
          "run_id": 123121358644
        },
        {
          "conclusion": "SUCCESS",
          "name": "Windows host smoke (windows-amd64)",
          "run_id": 123121358620
        },
        {
          "conclusion": "SUCCESS",
          "name": "Windows host smoke (windows-arm64)",
          "run_id": 123121358506
        }
      ],
      "delivery_deferral_ledger_digest": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
      "finding_dispositions_digest": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
      "operation_identity": "sha256:e951ea0e9eec2f933f4ed9c84c419abd59fcae9c6f953e0e5cb9d28480e141c2",
      "review_request": {
        "body_digest": "sha256:6edadde4901a02b9a632a38700a7f5f14b7dbcbba3aa5c9aa923d9db865529cf",
        "id": 6481781491
      },
      "review_result": {
        "body_digest": "sha256:3d7144819e31f2b24f2799eb7ca01b3eb6a5204f99e3050816be45d48bc89da1",
        "id": 6481807560
      }
    },
    "evidence_fingerprint": "sha256:7ee8a3ec42dff5fdb85e8183a16d141014bb20c9bc50376e47c09cc7e3aeb566",
    "head_sha": "ef176b94574ce80791528b0e5f045fbe50c5a4e8",
    "operation_identity": "sha256:e951ea0e9eec2f933f4ed9c84c419abd59fcae9c6f953e0e5cb9d28480e141c2",
    "review_request_id": 6481781491,
    "review_result_id": 6481807560,
    "status": "approved-evidence-recorded"
  },
  "candidate_revision_fingerprint": "sha256:67898c6999a2bede8205d88653853f9249bdc6f944af90c77cbc94bee96ba305",
  "check_conclusions": [
    {
      "conclusion": "SUCCESS",
      "name": "Bash native evidence checks",
      "run_id": 123129508152
    },
    {
      "conclusion": "SUCCESS",
      "name": "Gitar",
      "run_id": 123121356440
    },
    {
      "conclusion": "SUCCESS",
      "name": "Linux CI checks",
      "run_id": 123121358706
    },
    {
      "conclusion": "SUCCESS",
      "name": "Target smoke (darwin-amd64)",
      "run_id": 123121358402
    },
    {
      "conclusion": "SUCCESS",
      "name": "Target smoke (darwin-arm64)",
      "run_id": 123121358502
    },
    {
      "conclusion": "SUCCESS",
      "name": "Target smoke (linux-amd64)",
      "run_id": 123121358109
    },
    {
      "conclusion": "SUCCESS",
      "name": "Target smoke (linux-arm64)",
      "run_id": 123121358644
    },
    {
      "conclusion": "SUCCESS",
      "name": "Windows host smoke (windows-amd64)",
      "run_id": 123121358620
    },
    {
      "conclusion": "SUCCESS",
      "name": "Windows host smoke (windows-arm64)",
      "run_id": 123121358506
    }
  ],
  "check_observations": [
    {
      "checks": [
        {
          "conclusion": "SUCCESS",
          "name": "Bash native evidence checks",
          "run_id": 123129508152,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123129508152"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Gitar",
          "run_id": 123121356440,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/runs/123121356440"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Linux CI checks",
          "run_id": 123121358706,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123121358706"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (darwin-amd64)",
          "run_id": 123121358402,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123121358402"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (darwin-arm64)",
          "run_id": 123121358502,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123121358502"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (linux-amd64)",
          "run_id": 123121358109,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123121358109"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Target smoke (linux-arm64)",
          "run_id": 123121358644,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123121358644"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Windows host smoke (windows-amd64)",
          "run_id": 123121358620,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123121358620"
        },
        {
          "conclusion": "SUCCESS",
          "name": "Windows host smoke (windows-arm64)",
          "run_id": 123121358506,
          "run_status": "completed",
          "status": "success",
          "url": "https://github.com/omry/reploy/actions/runs/40774853224/job/123121358506"
        }
      ],
      "head_sha": "ef176b94574ce80791528b0e5f045fbe50c5a4e8",
      "id": "sha256:8e5fe4b22248344b640ad870c046b2506603c3252f76888bcead777fe93155a4",
      "required_checks": [
        "Bash native evidence checks",
        "Gitar",
        "Linux CI checks",
        "Target smoke (darwin-amd64)",
        "Target smoke (darwin-arm64)",
        "Target smoke (linux-amd64)",
        "Target smoke (linux-arm64)",
        "Windows host smoke (windows-amd64)",
        "Windows host smoke (windows-arm64)"
      ],
      "status": "success"
    }
  ],
  "delivery_deferral_ledger_digest": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
  "delivery_deferrals": [],
  "findings": [],
  "pr": {
    "base_ref": "main",
    "base_sha": "8a0f78c19f15e007db9a28344dd6754f0a9587a7",
    "body_digest": "sha256:b08663881fc07a870a9fff70c44d527cb8793e3cf43b19ba6783c2a24a840f2a",
    "body_identity_version": 2,
    "diff_digest": "sha256:68e8959639f567f5056685457da98d8b0136c64bf1601202ed82b263ac93ff99",
    "head_ref": "pr301",
    "head_sha": "ef176b94574ce80791528b0e5f045fbe50c5a4e8",
    "pr": 301,
    "repository": "omry/reploy",
    "scope_authority": [
      {
        "digest": "sha256:36b1a52fb29e6424a689b1e2cae7e023371f878ca586f056fc28bc50450b87e6",
        "path": ".github/workflows/ci.yml"
      },
      {
        "digest": "sha256:fc49790f85e6d5fae77e8c91b479d0ad1fe4b3f1699e24df821db73aa75b779e",
        "path": "AGENTS.md"
      }
    ],
    "title_digest": "sha256:8676ca17f1f641ace932c5c7d3ce110995c7975dc7fb3100a7059e1d70a226aa"
  },
  "record_version": 4,
  "review_observations": [],
  "review_requests": [
    {
      "base_established_at": "2026-10-28T21:47:33Z",
      "base_ref": "main",
      "base_sha": "8a0f78c19f15e007db9a28344dd6754f0a9587a7",
      "body_digest": "sha256:6edadde4901a02b9a632a38700a7f5f14b7dbcbba3aa5c9aa923d9db865529cf",
      "created_at": "2026-10-28T22:02:08Z",
      "head_sha": "ef176b94574ce80791528b0e5f045fbe50c5a4e8",
      "id": 6481781491,
      "kind": "regular-review"
    }
  ],
  "review_results": [
    {
      "base_ref": "main",
      "base_sha": "8a0f78c19f15e007db9a28344dd6754f0a9587a7",
      "body_digest": "sha256:3d7144819e31f2b24f2799eb7ca01b3eb6a5204f99e3050816be45d48bc89da1",
      "commit_id": "ef176b94574ce80791528b0e5f045fbe50c5a4e8",
      "id": 6481807560,
      "inline_message_ids": [],
      "request_comment_id": 6481781491,
      "result_kind": "clean",
      "status": "result",
      "submitted_at": "2026-10-28T22:03:23Z",
      "unresolved_thread_ids": []
    }
  ],
  "revision_fingerprint": "sha256:67898c6999a2bede8205d88653853f9249bdc6f944af90c77cbc94bee96ba305",
  "rounds": [
    {
      "applied_fix_paths": [],
      "disposition_changes": [],
      "effective_diff_digest": "sha256:68e8959639f567f5056685457da98d8b0136c64bf1601202ed82b263ac93ff99",
      "finding_ids": [],
      "invariants": [
        "Preserve stdin independently from TTY allocation; TTY requires both streams to be terminals.",
        "Public app entry forwards the same reader, preserves terminal streams and labels nonterminal output.",
        "Dummy input reaches real app without arguments, container environment, retained build state or diagnostics leakage.",
        "EOF is bounded; app errors and cancellation behavior remain unchanged.",
        "Every exact-head ci.yml job succeeds before approval; standalone PR does not rewrite E."
      ],
      "outcome": "clean",
      "proposed_fix_paths": [],
      "resulting_head": "ef176b94574ce80791528b0e5f045fbe50c5a4e8",
      "review_observation_id": null,
      "review_request_id": 6481781491,
      "review_result_id": 6481807560,
      "reviewed_head": "ef176b94574ce80791528b0e5f045fbe50c5a4e8",
      "root_cause": "Minimal shared-helper reuse fixes terminal-only input discard. Local core, fresh independent Sol, Gitar and exact-head remote Codex reviews are clean. Complete current validation and all nine remote checks passed. Collector race and cleanup diagnostic assertion fixed in evidence tooling only; no product corrections.",
      "round": 1,
      "unresolved_current_slice_findings": 0,
      "unresolved_design_blockers": 0
    }
  ],
  "schema": "awd:swe:pr-cycle-state",
  "version": 2
}

@omry
omry marked this pull request as ready for review October 28, 2026 22:01
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 28, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-28T22:03:24.759046Z ef176b9 Manual request
🔒 Security Review ✅ Completed 2026-10-28T22:04:15.171730Z ef176b9 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@omry

omry commented Oct 28, 2026

Copy link
Copy Markdown
Owner Author

@codex review

Exact head: ef176b9

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Chef's kiss.

Reviewed commit: ef176b9457

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@omry omry added the approved PR reviewed and approved label Oct 28, 2026
@omry
omry merged commit ae1459a into main Oct 29, 2026
9 checks passed
@omry
omry deleted the pr301 branch October 29, 2026 03:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

approved PR reviewed and approved

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant