Skip to content

release: v0.6.25 — re-verified remediation, tmux test stabilization, cc-X recipes#11

Merged
bbingz merged 4 commits into
mainfrom
release/v0.6.25
Jun 19, 2026
Merged

release: v0.6.25 — re-verified remediation, tmux test stabilization, cc-X recipes#11
bbingz merged 4 commits into
mainfrom
release/v0.6.25

Conversation

@bbingz

@bbingz bbingz commented Jun 19, 2026

Copy link
Copy Markdown
Owner

Post-v0.6.24 batch, released together as v0.6.25. Four commits:

fix: harden re-verified workflow-review findings (85bc112)
Adversarial re-verification of d272042+03ae92d confirmed 4 real issues + 4 test gaps:

  • opencode host: exit code 2 (health no-healthy / status --wait timeout, valid JSON on stdout) is a SOFT signal via isHardCompanionFailure, not a thrown tool error; exit 1/4/5/crash still reject.
  • cancelJob: kill the worker BEFORE deleting its runtime paths (a review job's live cwd); skip runtime-path cleanup when the kill fails; terminate is injectable.
  • grok: add maxtokens/max_tokens/length to SUCCESS_STOP_REASONS so a truncated-but-visible answer stays ok=true (real StopReason enum verified vs the installed binary).
  • run-ledger: ensureStateDir before the ndjson append so ~/.polycli/state/<slug> is created 0700, not world-traversable 0755, on the run_started event.
  • tests (RED-proven for grok-1 + pwp-1): pre-existing-0755 dir hardening, dir-0700-after-append-only, grok stopReason-ALONE failure (json+streaming) + MaxTokens success, sync runProviderPrompt model fallback, opencode exit-2 contract.

docs: cc-X domestic-model endpoint recipes (Path-B docs + reference data) (8cde84f)

  • docs/cc-x-recipes.json (machine-readable, 9 entries) + docs/cc-x-endpoints.md (human page) encode the cc-X pattern: point the EXISTING claude runtime (BYOK) or opencode at a domestic vendor's Anthropic-compatible endpoint via ANTHROPIC_BASE_URL/AUTH_TOKEN/MODEL. Marketplace endpoints (Baidu/Tencent) carry status: marketplace-unstable + autoCompactWindow: null (honest-default, no fabricated pin).
  • scripts/validate-cc-x-recipes.mjs + paired test guard structure + source-anchoring (auto-joined by the npm-test glob); npm run validate:cc-x-recipes added.
  • Cross-links in provider-paths.md / roadmap.md (closed Q10 + Explicit-non-goal: no per-vendor cc-X adapter) / polycli-v1-public-surface.md. Zero runtime/production-path code: claude.js already forwards the ANTHROPIC_* trio.

test: stabilize remaining tmux fake-bin test under parallel load (38c4694)
The last tmux-tui test used a hardcoded timeout: 2_000 while the other four use the shared TMUX_TEST_TIMEOUT_MS (5_000); under full-suite parallel load the node fake-bin could not flush its log within 2s, causing an intermittent tmux.jsonl ENOENT (~30% of runs). Aligned to the proven-stable 5s budget.

release: prepare v0.6.25 (fd4f999)
Bump the published surface 0.6.24 -> 0.6.25 (marketplace manifests + polycli/codex/copilot plugins + polycli-opencode + polycli-terminal). polycli-utils/timing keep their independent semver.

Verification (local): npm test 549/549, npm run release:check exit 0 (bundles 5, fixture metadata 17, codex adapter 5, plugin validation, publish/pack dry-runs). Path B preserved (no adapter/base-class/parser-in-utils; timing four-state intact).

bbingz added 4 commits June 19, 2026 15:22
Adversarial re-verification of d272042+03ae92d confirmed 4 real issues + 4 test gaps:
- opencode host: treat companion exit 2 (health no-healthy / status --wait timeout, valid
  JSON on stdout) as a soft signal via isHardCompanionFailure, not a thrown tool error
- cancelJob: kill the worker BEFORE deleting its runtime paths; skip runtime-path cleanup
  when the kill fails (worker may be alive); terminate is now injectable
- grok: add maxtokens/max_tokens/length to SUCCESS_STOP_REASONS so a truncated-but-visible
  answer stays ok=true (real StopReason enum verified vs the installed binary)
- run-ledger: ensureStateDir before the ndjson append so ~/.polycli/state/<slug> is created
  0700, not world-traversable 0755, on the run_started event
- tests: pre-existing-0755 dir hardening, dir-0700-after-append-only, grok stopReason-ALONE
  failure (json+streaming) + MaxTokens success, sync runProviderPrompt model fallback,
  opencode exit-2 contract. RED-proven for grok-1 and pwp-1.

npm test 549/549, release:check green. Path B preserved (no adapter/base-class/parser-in-utils,
timing four-state intact).
…ata)

Turn the two-pass cc-X research into a usable, honest, Path-B-compliant surface WITHOUT a
provider-adapter framework. cc-X = point the existing claude runtime (BYOK) or opencode at a
domestic vendor's Anthropic-compatible endpoint via ANTHROPIC_BASE_URL/AUTH_TOKEN/MODEL.

- docs/cc-x-recipes.json: machine-readable source of truth, 9 entries (MiniMax, Kimi, GLM,
  Qwen, DeepSeek, Doubao, StepFun, Baidu, Tencent) with base URL, model-id family, native-CLI
  grouping, autoCompactWindow, caching note, per-entry source{url,date}. Marketplace endpoints
  (Baidu/Tencent) carry status marketplace-unstable + autoCompactWindow null (honest-default:
  no fabricated model/version pin, mirrors the gemini attempted-vs-used-model caveat).
- docs/cc-x-endpoints.md: human page (what cc-X is, NOT a polycli provider, env recipe,
  operational gotchas, minimax/mmx-cli disambiguation).
- scripts/validate-cc-x-recipes.mjs + paired test: pure structural + source-anchoring validator
  (modeled on validate-fixture-metadata.mjs; auto-joined by the npm-test glob). npm run
  validate:cc-x-recipes added.
- Cross-links in provider-paths.md / roadmap.md (closed Q10 + Explicit-non-goal) /
  polycli-v1-public-surface.md.

Zero runtime/production-path code: claude.js already forwards the ANTHROPIC_* trio on both the
claude -p (full env) and tmux allowlist paths. validator 9 ok, test 5/5, npm test + release:check
green. Endpoint facts are a 2026-06-19 snapshot.
The 'submits folded Claude paste markers' test still used a hardcoded timeout: 2_000 while the
other four tmux-tui tests use the shared TMUX_TEST_TIMEOUT_MS (5_000) introduced when the tmux
fake-bin tests were stabilized. Under full-suite parallel load (16 workers) the node-based fake
tmux bin could not spawn + flush its TMUX_ARGV_LOG within 2s, so the test read a not-yet-created
tmux.jsonl and failed with ENOENT (~30% of full-suite runs). Aligning this last test to
TMUX_TEST_TIMEOUT_MS removes the race; the other tmux tests already prove 5s is the stable budget.
Bump the published surface 0.6.24 -> 0.6.25 (marketplace manifests, polycli/codex/copilot
plugins, polycli-opencode, polycli-terminal) for the re-verified workflow-review remediation
+ cc-X endpoint recipes. polycli-utils (1.0.2) and polycli-timing (1.0.1) keep their
independent semver.
@bbingz bbingz merged commit 01620a9 into main Jun 19, 2026
1 check passed
@bbingz bbingz deleted the release/v0.6.25 branch June 19, 2026 07:34
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