docs / overview / releases

Releases

View all releases on GitHub →

v0.3.3 — April 20, 2026

Install

pipx install opentraces==0.3.3
# or
brew install JayFarei/opentraces/opentraces

Fixes

  • Hugging Face dataset schema drift. The hand-maintained dataset_infos.json features map lagged behind TraceRecord, so rows with task.repository_url, metrics.total_cache_read_tokens, metrics.total_cache_creation_tokens, generation_index, or richer attribution.* were rejected by HF's datasets-server with CastError / StreamingRowsError. The declared schema now derives from the Pydantic model on every push.

Added

  • Push safety against remote version drift. ot push now compares the remote dataset schema to your local client. If the remote is ahead you get a clear error with ot setup upgrade; we never overwrite a newer declared schema with a narrower one.
  • Additive-evolution contract documented in packages/opentraces-schema/VERSION-POLICY.md. MINOR and PATCH schema bumps are guaranteed additive so silent migration is always safe.
  • Migration guard. detect_outdated_shards / migrate_outdated_shards only rewrite rows strictly older than your local schema; newer rows on the remote are preserved byte-identically.
  • Capture: away_summary recaps from Claude Code sessions are preserved as mid-session intent snapshots instead of being dropped.
  • Agent discovery surface on the marketing site: /sitemap.xml, Agent Skills discovery under /.well-known/agent-skills/, Web Bot Auth signing directory stub, Content-Signal preferences in robots.txt, Link headers on the homepage, markdown content negotiation on / and /docs, a WebMCP tool surface, and explorer deep-links via ?u=<username>.
  • Performance harness with regression smokes across CLI, TUI, viewer, watcher, web, and push paths.

Internal

  • make build now builds the full sdist → wheel chain locally (force-include the viewer bundle into the sdist). datasets>=2.16.0 moved into the [dev] extra so the HF Features regression tests run under the documented dev setup.

No SCHEMA_VERSION or SECURITY_VERSION change (both remain 0.3.0).

See CHANGELOG.md for the full list.


v0.3.2 — April 17, 2026

Install

pipx install opentraces==0.3.2
# or
brew install JayFarei/opentraces/opentraces

Changes

  • opentraces init now surfaces every HuggingFace dataset in your namespace, not just the opentraces-tagged ones. Previously the listing was filtered by a name/description search and silently hid tagged repos whose names did not contain "opentraces".

  • Added an Enter repo name... option to opentraces init that probes HF: existing repos attach with inherited visibility and canonical casing; new names fall through to a confirm-and-create flow.

  • opentraces web no longer falls back to synthetic sample traces when the inbox is empty — the empty state stays empty.

  • Release notes on opentraces.ai now render fenced code blocks correctly (historical v0.3.1 and earlier fixed).

  • No schema changes — SCHEMA_VERSION stays at 0.3.0.

  • No security-pipeline changes — SECURITY_VERSION stays at 0.3.0.


v0.3.1 — April 17, 2026

Install

pipx install opentraces==0.3.1
# or
brew install JayFarei/opentraces/opentraces

Changes

  • flask and textual are now base dependencies. opentraces web and opentraces tui work out of the box on a plain pip install opentraces, no [web] / [tui] extras required. The extras remain for backward compatibility.
  • Site: landing page terminal demo defaults to the init tab instead of review.
  • No schema changes — SCHEMA_VERSION stays at 0.3.0.
  • No security-pipeline changes — SECURITY_VERSION stays at 0.3.0.

v0.3.0 — April 17, 2026

Install

pipx install opentraces==0.3.0
# or
brew install JayFarei/opentraces/opentraces

Changes

First public release of the CLI since 0.2.1. A coherent single bump that folds together the internal development iterations from the past week: a full git-style command restructure on the user-facing side, an internal code reorganization on the maintainer-facing side, plus new attribution / commit-correlation surfaces, BLOCKED-status enforcement, per-remote upload tracking, and the security pipeline refresh described in security/version.py (SECURITY_VERSION 0.2.0 → 0.3.0).

Added

Attribution and commit correlation

  • ot blame <file>:<line> resolves a file line to the trace + conversation that produced it, using murmur3 content hashes + per-range change_type metadata. Cross-refactor tracking survives formatter / linter rewrites.
  • ot notes <ref> inspects the refs/notes/opentraces store where the post-commit hook pins traces to revisions.
  • ot setup git installs the post-commit correlator + PostToolUse diff capture hooks for the current repo.
  • ot list --by-commit groups trace listings by their correlated revision.
  • ot export --format agent-trace emits Agent Trace-compatible JSON for traces that carry attribution blocks.
  • ot show --markdown renders a prompt-injection-safe markdown transcript.

Command surface (git-style flat verbs + resource nouns)

  • ot add <ids>... | --all stages traces for push (mirrors git add). Variadic. Refuses BLOCKED and REJECTED traces with a pointer to the unblocking verbs (ot redact, ot reject, ot reset).
  • ot show <id> shows one trace (flat; replaces ot trace show).
  • ot list [--projects] [--remote <name>] [--by-commit] lists traces; with --projects, lists every directory that ran ot init; with --remote <name>, filters to traces missing on that remote.
  • ot reject <ids>..., ot reset <ids>..., ot discard <id> — per-trace curation, flat (replaces ot trace ...).
  • ot redact <id> <pattern> [--regex] [--field] [--step] — content-targeted find-and-replace. Replaces the old --step <n>-only blank-the-whole-step shape. Permanent, no undo.
  • ot llm-review — Tier-2 LLM semantic review (renamed from review-llm; the llm- prefix keeps the machine-pass nature explicit vs the human review handled by review_policy).
  • ot remote add/set-url/rename/remove/use/list — git-parity verbs on the remote noun. URL accepts hf://user/repo or short form user/repo (auto-expanded; HF is the default backend).
  • ot auth login/logout/whoami — group equivalent of the flat ot login / logout / whoami (which still work for back-compat).
  • ot completions install | uninstall | [shell] — cf-style shell completions with dynamic delegation. Bare ot completions prints the script for $SHELL. Supports bash, zsh, fish.
  • ot setup upgradeot upgrade is now a setup subcommand.
  • ot config set <key> <value> [--append] [--project|--global] — proper key/value setter, replacing the previous append-only-with-flags shape. Legacy flags preserved for back-compat.
  • --project flag added to setup trufflehog, setup review-llm, setup review-policy for explicit per-project scope (mirrors git config --local).
  • gh-style help: ot --help is sectioned (CORE / INBOX / PROJECT / RESOURCE) with one-liner descriptions.

Pipeline behaviour

  • BLOCKED is now a real, written status. TruffleHog findings move traces to BLOCKED with a block_reason, surfacing in ot status and the inbox. ot add refuses BLOCKED traces, making staging a true approval gate.
  • Per-remote upload tracking. Switching remotes and running ot push replays the full local history to the new remote (mirrors git push <new-remote>). Driven by a new TraceStagingEntry.uploaded_to: dict[str, str] field.

Changed

Internal code layout (maintainer-facing; breaking imports)

Top-level package reorganization from 15 top-level items to 7:

  • agents/ + parsers/ + installers/ + enrichment/git/post_commit.pycapture/
  • exporters/ + upload/publish/
  • Top-level glue modules (config, paths, state, workflow, inbox, pipeline, processors) → core/
  • Business logic extracted from clients/ and cli.py into core/review.py + core/publish_flow.py
  • cli.py split into a cli/ package

Removed

Breaking import paths (maintainer-facing)

  • opentraces.agents.*opentraces.capture.*
  • opentraces.parsers.*opentraces.capture._base or opentraces.quality.parse_gate
  • opentraces.installers.*opentraces.capture.*
  • opentraces.exporters.*opentraces.publish.*
  • opentraces.upload.*opentraces.publish.huggingface.*
  • opentraces.state, opentraces.config, opentraces.paths, opentraces.workflow, opentraces.inbox, opentraces.pipeline, opentraces.processorsopentraces.core.*
  • opentraces.enrichment.git.post_commitopentraces.capture.git.post_commit

Security

  • SECURITY_VERSION bumped 0.2.00.3.0 to reflect detection-rule changes made this cycle (regex patterns, entropy thresholds, classifier heuristics, anonymization rules). Traces emitted by this CLI carry the new version string in SecurityMetadata.classifier_version.

Schema migrations (auto, on first command after upgrade)

  • TraceStagingEntry gains uploaded_to: dict[str, str]. Existing status=UPLOADED traces are backfilled with uploaded_to = {"origin": <existing uploaded_at>}. STATE_SCHEMA_VERSION bumped to "2".
  • ProjectConfig gains remotes: dict[str, RemoteConfig] + active_remote: str | None + default_visibility: str. Legacy single remote: str + visibility: str are migrated to remotes = {"origin": RemoteConfig(...)} and active_remote = "origin". Marker version bumped 1 → 2.

Migration table (user-facing commands)

OldNew
ot commitot add
ot trace commitot add
ot trace listot list
ot trace show <id>ot show <id>
ot trace reject <id>ot reject <id>
ot trace reset <id>ot reset <id>
ot trace redact <id> --step <n>ot redact <id> <pattern> (new content-targeted shape)
ot trace discard <id>ot discard <id>
ot login / logout / whoamiot auth login / logout / whoami
ot review-llmot llm-review
ot upgradeot setup upgrade
ot projects listot list --projects
ot remote set <url>ot remote add <name> <url>
TraceStagingEntry.uploaded_at only+ uploaded_to: dict[str, str] (auto-migrated)
ProjectConfig.remote + visibilityremotes + active_remote (auto-migrated)
BLOCKED enum existed but never writtenNow written by parse pipeline; ot add refuses

The legacy flat verbs (ot login, ot upgrade, ot commit, ot trace ..., etc.) still work for back-compat in 0.3.0; a future release will remove them per a clean-break deprecation cycle.

Tests

+143 new tests covering schema migrations, per-remote tracking, git-parity remote verbs, BLOCKED wiring, content-targeted redaction, auth group, completions noun, gh-style help renderer, flat workflow verbs, the ot add approval gate, config set scope semantics, and setup --project flag. Test suite went from 1047 → 1198 passing, 2 pre-existing baseline failures unchanged.


v0.2.1 — April 1, 2026

Install

pipx install opentraces==0.2.1
# or
brew install JayFarei/opentraces/opentraces

Changes

  • fix: web_server.py now uses dynamic SCHEMA_VERSION instead of hardcoded "0.1.0" — web review UI was showing wrong schema version in trace previews
  • fix: bundled skill/SKILL.md now includes exit code 1 (needs review / quality gate not passed) for import-hf partial failures
  • docs: post-release docs-update pass — viewer TypeScript types updated for v0.2.0 schema fields, llms.txt regenerated from source, generate-llms-txt.sh updated with new workflow pages
  • ci: update-homebrew.yml now has workflow_dispatch for manual re-triggers; authenticated remote URL fix for push step

v0.2.0 — April 1, 2026

Install

pipx install opentraces==0.2.0
# or
brew install JayFarei/opentraces/opentraces

What's new

Runtime agent import

  • import-hf — pull traces from any HuggingFace dataset, parse via Hermes or generic adapter, and push to your own dataset
  • Hermes parser — first-class support for Hermes-format agent logs
  • Claude Code hook integrationon_stop and on_compact hooks enrich sessions with context window state, project metadata, and tool usage at session end

Assessment workflow

  • push --assess — run quality scoring immediately after push
  • assess --dataset — re-assess a remote HF dataset without hf-mount; fetches JSONL directly via datasets-server API
  • Scorecard badges — SVG badges for quality dimensions (training, RL, analytics, domain, conformance)
  • opentraces:stats sentinel — machine-readable stats block in dataset README; parsed by explore for community aggregation

CLI improvements

  • upgrade command — update opentraces in place
  • Agent-aware exit codes: 0 = success, 1 = needs review, 2 = blocked by gate
  • --machine flag for structured JSON output consumable by agents

Schema 0.2.0

  • execution_context: "devtime" | "runtime" — discriminator for code-editing vs task-execution agents
  • Outcome.terminal_state — how the trajectory ended (goal_reached, interrupted, error, abandoned)
  • Outcome.reward and Outcome.reward_source — RL environment reward signals
  • See opentraces-schema v0.2.0

Fixes

  • Parser: harden tool_input extraction against malformed model outputs
  • Pipeline: needs_review gates on scanner matches, not redaction count
  • Upload: regenerate dataset card from full remote aggregate on each push
  • HF: fix datasets-server indexing for multi-shard datasets
  • Security: allowlist path-structured high_entropy_string false positives

v0.1.1 — March 29, 2026

Install

pipx install opentraces
# or
brew install JayFarei/opentraces/opentraces

What's included

  • Claude Code session parser with multi-agent adapter contract
  • Context-aware security scanning and redaction
  • Git signal enrichment and attribution
  • Sharded JSONL upload to HuggingFace Hub
  • Terminal UI (lazytraces) and web review UI
  • Per-project review policy (auto/review)

Changes since v0.1.0

  • Fix publish workflow to correctly target TestPyPI vs PyPI
  • Use pipx for CLI install commands
  • Add Homebrew tap auto-update on release