Skip to content

feat(opencode): add warn-only shell silence guard - #491

Merged
LeXwDeX merged 15 commits into
devfrom
feat/433-shell-silence-guard
Sep 1, 2026
Merged

feat(opencode): add warn-only shell silence guard#491
LeXwDeX merged 15 commits into
devfrom
feat/433-shell-silence-guard

Conversation

@LeXwDeX

@LeXwDeX LeXwDeX commented Sep 1, 2026

Copy link
Copy Markdown
Owner

Closes #433

Why

Long-running shell commands can remain silent without an observable warning.

What changed

Evidence

  • bun test test/tool/shell.test.ts test/effect/runtime-flags.test.ts: 70 passing.
  • bun typecheck in packages/opencode: passing.
  • PR CI: Typecheck, Unit Tests (linux), E2E Tests (linux/windows), CodeQL, and SpecGit Acceptance passing.

Checklist

  • specgit finish exits 0.

Re-run specgit init --force with the installed 1.10.1 CLI so fresh
feature worktrees stop conflicting with the checked-in harness.

- policy.yaml, AGENTS.md/CLAUDE.md managed blocks, hooks.json: 1.10.1
  output is byte-identical; the curated required_checks (Typecheck,
  Unit Tests (linux)) are preserved by design (#310) — the canonical
  ids are not observable check-run names on the main-line matrix
  (b6473cc) and stay out of the policy.
- specgit-accept.yml: keep the repository-specialized workflow (main-
  only trigger, no workflow_dispatch, head-ref checkout with
  persist-credentials: false, global npm install -g specgit@^0.5.0,
  yaml-free wait step with the proven 40min deadline). The 1.10.1
  template variant imports 'yaml' with no dependency installed and
  waits only 13min — shorter than the ~28min Unit Tests sibling.
- specgit-merge-guard.sh: take the 1.10.1 improvement — the guard now
  also blocks glab mr merge, not only gh pr merge.
- .husky/_/pre-push: untracked local pre-push guard (untracked model).

Closes #488
chore(specgit): refresh delivery harness
The inspector's workflow list depended entirely on the route's sessionID
chain — any missing link produced a zero-request silent empty state. On
mount the inspector now discovers via the project-level GET /dag: rows
group by owning session for the session-scoped summary endpoint, and the
routed sessionID demotes to a live-data preference instead of a hard
gate, so running workflows stay listed without session context.
feat(tui): project-level discovery fallback for /dag inspector
- New OPENCODE_EXPERIMENTAL_BASH_SILENCE_WARN_MS runtime flag (default 5 min)
- Shell tool emits one inactivity warning per silent stretch via a scoped
  watcher fiber; output resets the silence window; the note is appended to
  the part preview and the final <shell_metadata> block without touching
  the race/kill path, so abort and timeout semantics are unchanged
- New expectedSilent shell parameter opts out per invocation
- Behavior tests: warning, exemption, output reset, abort/timeout
  non-regression; runtime-flags parse table
@LeXwDeX LeXwDeX changed the title fix(opencode): add shell silence warning feat(opencode): add warn-only shell silence guard Sep 1, 2026
@LeXwDeX
LeXwDeX marked this pull request as ready for review September 1, 2026 20:12
@LeXwDeX
LeXwDeX merged commit 06c9779 into dev Sep 1, 2026
8 checks passed
@LeXwDeX
LeXwDeX deleted the feat/433-shell-silence-guard branch September 1, 2026 22:39
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.

1 participant