Skip to content

Prepare for open source: docs, license, and robustness fixes - #1

Merged
pwerry merged 3 commits into
mainfrom
peter/oss-prep
May 29, 2026
Merged

Prepare for open source: docs, license, and robustness fixes#1
pwerry merged 3 commits into
mainfrom
peter/oss-prep

Conversation

@pwerry

@pwerry pwerry commented May 29, 2026

Copy link
Copy Markdown
Contributor

Gets the repo ready to open-source and hardens the agent wrappers/orchestrator based on a review pass.

Docs & meta

  • README.md — overview, the two-arm (baseline vs context-enhanced) pipeline, requirements, install, fixture + CLI usage, options table, output, contamination control
  • LICENSE — MIT © Unblocked (matches the declared license field)
  • CONTRIBUTING.md — dev setup, how to add a new agent, PR checks
  • .github/workflows/ci.yml — typecheck + lint on push/PR
  • package.json — repository / homepage / bugs / keywords metadata

Fixes from review

Area Change Why
Security Capture diffs via execFileSync (no shell), null-delimited filenames Untracked filenames were interpolated into a shell string
Resource leak Await both arms with allSettled A contamination/error in one arm orphaned the other's live process while cleanup tore down its worktree
Robustness stdin EPIPE guards (claude, codex) Unhandled throw if the child exits before reading stdin
Robustness SIGTERM → SIGKILL escalation (claude, codex, cursor) Hung agents that ignore SIGTERM never terminated
Correctness codex timeout no longer reported as success Polluted the pass/fail signal (partial result still retained)
Correctness claude timeouts reported distinctly Previously masked as a generic "no result" failure
Correctness cursor trailing-line flush on close Result event without a trailing newline was lost
Robustness grok never fails a run over best-effort token reads Unreadable session dir threw
Observability Warn once on unknown-model pricing fallback Silent wrong-cost

npm run typecheck and npm run lint both pass.

Notes

  • Kept the Unblocked branding in the HTML report (intentional — this is Unblocked's tool).
  • Kept package.json private: true — it's a clone-and-run tool (no bin), so this prevents an accidental npm publish.

pwerry added 3 commits May 29, 2026 13:11
Add the files an open-source repo needs and harden the agent wrappers
and orchestrator surfaced by a review pass.

Docs & meta:
- README.md: overview, two-arm pipeline, requirements, usage, options
- LICENSE: MIT
- CONTRIBUTING.md: dev setup and how to add an agent
- .github/workflows/ci.yml: typecheck + lint on push/PR
- package.json: repository/homepage/bugs/keywords metadata

Fixes:
- runner: capture diffs via execFileSync (no shell) with null-delimited
  filenames — removes a shell-injection path through untracked filenames;
  raise the diff buffer to 64MB
- runner: await both arms with allSettled so a contamination/error in one
  arm no longer orphans the other's process while cleanup runs
- claude/codex: guard stdin against EPIPE; escalate SIGTERM to SIGKILL
- claude: report timeouts distinctly instead of a generic parse failure
- codex: a timeout is no longer reported as success (partial result kept)
- cursor: SIGKILL escalation and trailing-line flush on close
- grok: never fail a run over best-effort token-metric reads
- util: warn once when falling back to default pricing for an unknown model
@pwerry
pwerry merged commit 4e4f32d into main May 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant