Skip to content

Peritus v0.1.5

Choose a tag to compare

@dollspace-gay dollspace-gay released this 20 Oct 15:30
· 15 commits to main since this release
724dc23

Changed

  • Reuse unchanged workspace document ranges already present in the model's current context with compact successful receipts, rather than sending the same body again. Restore omitted evidence from the durable role archive and deliver only missing parts of overlapping reads.
  • Preserve exact Unicode line/byte coverage, continuation cursors, and provider-sized archive previews. Unrelated edits keep reusable evidence; changed files refresh through current permissions and file-version checks.
  • Retain task plans as explicitly historical progress when their source bindings change, and carry the last completed workspace operation through context reconstruction. Independent review obtains its own evidence.

Added

  • Read one run's durable private trace locally with peritus runs trace --run <ID> [--extensions]. It decodes every retained provider envelope, retry decision, and rejected model reply without a daemon session.
  • Omit --run on peritus runs trace to list retained trace identities newest first. In the Runs dashboard, y copies the selected run's 32-hex identifier.
  • Repair an OpenCode envelope behind a private prelude containing inline code spans or quoted pseudo-tool markup, or one final Markdown-fenced object. Ambiguous containers, additional candidates, and trailing text are still refused.
  • Normalize a complete terminal DeepSeek DSML calls block into the ordinary inert tool-call shape under peritus.opencode_turn_normalization. Declared-name, argument-object, call-count, and tool-selection checks still apply; incomplete or undeclared calls are refused. DSML ambiguity and literal-argument handling have known review follow-ups recorded in the release notes.

Fixed

  • Reject Windows directory junctions before creating a release archive, including root, nested, and dangling junctions.

  • Include reuse metadata in document response budgets and keep continuation receipts compact, preventing a long sequence of fragments from falling back to repeated source delivery.

  • Retain the rejected reply text when an OpenCode turn is refused, bounded to 16 KiB, and name peritus runs trace in the failure hint instead of promising a diagnostic that no command could read.

  • Announce one model request per logical turn. Retries and refusals report their own transition instead of repeating Requesting model for every bounded attempt.

  • Explicitly instruct OpenCode models not to emit DSML, XML/HTML-like tags, special-token markers, or other pseudo-tool syntax in the wire prefix, prompt tail, and correction prompt.

  • Select the OpenCode Zen/Go runtime by native executables only. A Windows OpenCode installation reached through WSL interop no longer passes discovery, so provider setup reports the actionable installation path instead of a model-catalog failure and still finds a native 1.19.0 that appears later on PATH.

  • Check the operating-system credential store before provider setup asks for a key. An unavailable keyring now reports how to start the Linux and WSL Secret Service instead of failing with PERITUS-SECRETS-006 after hidden input and model discovery.

Real testing

  • Workspace evidence reuse passed 20 real API scenarios and 48 seeded range requests, including omitted evidence, fresh-process recovery, changed content, permissions, independent roles, truncated previews, and Unicode byte gaps. Sixty-five already-visible reads returned zero content bytes.

  • Two disposable live official-Codex coding runs reached an accepted result. In the deliberate duplicate-read run, the second read returned a 319-byte reuse receipt with zero source content; the agent then edited the program and completed it. Both produced CLIs passed independent real command-line readback.

  • Measured the retained OpenCode Go run: 82 host attempts, 94 refused replies recorded without their text, 29 scheduled retries, and 71 repeated Requesting model lines inside a 256-activity window. After the first repair, 29 refusals retained their text; 14 carried a complete envelope behind a prelude and all 14 are now repaired, while 15 DSML pseudo-tool replies without an envelope remain refused. Replayed seven scripted scenarios successfully, and checked trace listing, filtering, and missing-run behavior through the built CLI.

  • Inspected a later retained trace with 93 refused replies: 70 used DSML calls markup, 19 contained a JSON envelope, and the remainder used XML-like or hybrid forms. The scripted replay now covers an accepted standard-plus-nested DSML turn, an undeclared DSML tool, and malformed DSML, alongside the earlier prelude and correction cases. All ten scenarios pass against the built provider consumer.

  • Reproduced the reported WSL catalog failure through the actual terminal provider-settings flow, retained the real vendor-command failure and path probes, and re-verified discovery and advertised-model metadata against the official Linux 1.19.0 release asset.

  • Replayed provider setup with and without a session D-Bus and unlocked gnome-keyring. The unavailable store produced the corrective guidance before any key entry; the available store stored a placeholder credential, saved provider settings, and removed it again through the product's own path with no leftover item in the provider namespace. The retained reproducer passed 21 checks.

Compatibility and known issues

  • Existing run and working-memory journal formats remain readable. Older source observations without exact range metadata refresh conservatively; local memory can be disabled explicitly. The native Deep Research plugin remains separately distributed.
  • Known OpenCode DSML parser issues and whole-trace memory growth remain outside this release's source-reuse fix. See release notes for their concrete scope and the completed evidence.

Known review findings

  • OpenCode DSML normalization can rewrite literal argument markers, accept a competing DSML block after a JSON envelope, and collapse duplicate keys in JSON-valued parameters. Host permissions still apply. These cases remain unresolved.
  • peritus runs trace eagerly buffers the trace and payload copies; large traces use additional memory.

Packages

Native packages cover Linux, macOS, and Windows on x86-64 and ARM64. Each package includes the client, daemon, terminal UI, and platform sandbox helper, with SHA-256 checksums, inventory, SBOM, and provenance. Unix packages also exercise actual installation and offline terminal startup in the release workflow. The Deep Research plugin is distributed separately through the module market.