Skip to content

Releases

v1.14.0

Choose a tag to compare

@alsevilla alsevilla released this 05 Nov 05:40
8b8852c

GitHub source release at 8b8852c (#52). Update with pi update git:github.com/alsevilla/agent-harness and /reload (wait until the footer shows no running jobs), or pin @v1.14.0.

Worker cost
Threshold-triggered worker masking with budget fallbacks. Claude Haiku 5.5 prices a request over 100k input tokens at 5x. From about 80k estimated tokens (system prompt included) a worker's request is shortened step by step, re-measured after each, until it fits a 95k budget: main's stable batching, then every older large output, then large outputs except the latest bounded to head and tail; if it is still over, the host is asked to compact once. Best effort, not a hard bound. Tune with PI_SUBAGENT_WORKER_MASK_TOKENS (0 off) and PI_SUBAGENT_WORKER_TOKEN_BUDGET.
Measure it. /subagent usage now shows each role's peak request (provider input + cache read + cache write) and how many requests were over 100,000.
Tool discipline for workers (from Claude Code's working rules): independent calls in one turn, partial reads with offset and limit, the read/grep/find tools instead of shell cat/grep, no sleep polling, no interactive commands, no files the task does not need.
Reloads and sessions
Stopped jobs are named. A /reload or session change aborts running background jobs; the harness now records them per originating session and the next session (the same one after /reload, or its successor after /new, resume or fork) shows a notice, tells main in its state card that no result will arrive, and explains the job on result instead of a bare "epoch mismatch". Parallel Pi sessions never touch each other's records.
Verification and limits
npm test: 961 passed, 0 failed, 7 skipped. With a Pi 1.5.0 host: 1527 passed; the 11 failures need the owner's installed setup (subscription connector, Ponytail, Serena/Graphify integrations, a git identity) and match the previous release. The masking estimate is approximate (characters / 4) and has not yet been measured against real runs; compare /subagent usage peak requests before and after. Source release only: no npm publication.

v1.13.0

Choose a tag to compare

@alsevilla alsevilla released this 05 Nov 04:45
7072987

GitHub source release at 7072987 (#49). Update with pi update git:github.com/alsevilla/agent-harness, or pin @v1.13.0.

Token efficiency
Workers skip duplicate reads. A repeat read of the same file and range that returns exactly the same text becomes a one-line note pointing at the earlier copy. Changed text, other ranges, errors and images pass through; an edit, write or compaction resets it. (Ledger, arXiv 2608.00808; CORVUS, 2607.22711)
Serena where it pays. Read or grep a file or symbol the packet names; grep for renames and every occurrence (it also finds comments and strings); Serena when grep matches are noisy or for unfamiliar code. (2608.13568)
Better packets. When the intended structure is known, the packet carries a code skeleton (signatures, types, module layout) beside the behavior and checks (Skeleton Coding, 2610.38214). A fix round passes the failed attempt's REPORT path and failing output as they are, not a summary (2610.41433).
Keep main lean. The footer adds "consider /new" once main's context reaches 100k tokens. README: run main at medium thinking and start /new after each merged task; /reload loads new code but keeps the conversation. (DACS, 2604.07911; 2606.01351)
README: keep a project's AGENTS.md to rules and guardrails, with detail in .agents/skills/ (2602.11988, 2607.27250).
Fixes
No more "Tool codemode not found". Pi's base prompt says "Additional tools may be available" and names codemode; main now gets two rules: call only declared tools, and batch reads with parallel read calls (within its 3-file limit) or a delegation.
Ponytail in the live view. The worker line shows ponytail: loaded when the worker launched with the Ponytail extension; it injects mode text and has no tool calls to count.
Verification and limits
npm test: 948 passed, 0 failed, 7 skipped. With a Pi 1.5.0 host: 1514 passed; the 11 failures need the owner's installed setup (subscription connector, Ponytail, Serena/Graphify integrations, a git identity) and match the previous release. Source release only: no npm publication.

v1.12.0: Release 1.12.0 (#45)

Choose a tag to compare

@alsevilla alsevilla released this 05 Nov 02:34
bf64889

v1.12.0

GitHub source release at bf6488901fdac66ef3644fa4b2f73a187eeed852 (#45). Install or update with pi update git:github.com/alsevilla/agent-harness, or pin @v1.12.0.

Orchestration and cost

  • AGENTS.md is a 7-step protocol for main; fixed T1/T2/T3 subagent shapes; one economy planner before T3 multi-module work.
  • Task packets name known locations (files, symbols, failing tests) and a stop condition; workers start there, stop there, and send long test/build/install output to a _scratch log.
  • reviewer and planner run at medium thinking (was high).
  • Shared prompt prefix first in child prompts (cache reuse); main's older large tool outputs and older subagent results are shortened in its requests.
  • /subagent usage: per-role usage, cost per completed task and main's context size; footer status line after each main turn.
  • Handoff check: a worker that ends without a STATUS line gets one follow-up to write its handoff.

Delivery

  • Branch-by-default candidates, one merge approval, full post-merge cleanup of the worktree or branch and its _scratch/_evidence.
  • Trusted release-engineer: commit, feature push and PR create/edit without extra grants; merge and release keep their own approvals.

Safety guard

  • Read-only roles enforced by the guard; read before edit; no unresolvable deletes (rm -rf $DIR/ and peers).
  • Your own allow/deny rules in harness-permissions.json.
  • Pi package commands (pi install/update/remove/uninstall/config) are PI_PACKAGE; pi list, --help and --version run; only agent launches are LAUNCH_PI.
  • Block messages say when an approval exists for other text, another folder, or was already used.
  • Opt-in OS sandbox for workers (PI_SUBAGENT_SANDBOX): bubblewrap on Linux, Seatbelt on macOS. Path comparisons fold case on Windows and macOS.

General-purpose harness

  • Stack-specific content removed: the Rust/Axum, SQLite/SQLx and SolidJS skills, Cargo build defaults, and project deployment notes now live with their project. Roles follow each project's own framework; platform-worker covers infrastructure-as-code, manifests, GitOps and CI in general.
  • Copilot CLI plugin fixed; short README; policy titled "Engineering harness policy".

Verification and limits

npm test: 940 passed, 0 failed, 7 skipped. With a Pi 1.5.0 host: 1504 passed; the 11 failures need the owner's installed setup (subscription connector, Ponytail, Serena/Graphify integrations, a git identity) and match master. macOS Seatbelt and live Pi/Copilot dispatch were not run. Source release only: no npm publication.

v1.11.0

Choose a tag to compare

@alsevilla alsevilla released this 24 Oct 08:26
3b17af4

v1.11.0

GitHub source release from PR #12 at 3b17af4928818a959d08039b04a7f31e2961549a.

  • Guarded post-merge cleanup checks and guidance; Node-only tooling and validation; strict latest Pi SDK identity checks.
  • Optional read-only planner and frontend design-system artifact guidance.
  • Current native role counts aligned to 21; historical observations preserved. Optional Defuddle guidance does not install or bundle a dependency.
  • Package and plugin versions are 1.11.0. Instruction caching remains deferred.

Verification and limits

Final independent verification: 1566 total, 1559 passed, 0 failed, 7 skipped; configuration scanner passed and independent review accepted. Tested SDK/latest-registry snapshot was 1.4.0, not a future support pin.

Node 22.19, POSIX, live Pi/Copilot dispatch, and Raspberry Pi/Linux versus Windows NUC parity were not verified. Existing skip, external-writer race, PATH/global-config trust, and cancellation limitations remain. Read-observation diagnostics are caller-declared, not attestation. No token or performance savings are claimed.

Source release only: no npm publication, runtime activation, deployment, cleanup, or database/service migration. Recovery requires separately authorized corrective source/release work; existing tags must not be moved or overwritten.

🤖 Generated with Pi, co-authored with Codex and Claude

Agent Harness v1.10.1

Choose a tag to compare

@alsevilla alsevilla released this 22 Oct 12:36
fff154d

agent-harness v1.10.1

GitHub release only (no npm publish). Package and Copilot plugin metadata both declare 1.10.1.

Changes

  • Shared module paths are portable (agent/skills/... resolved under the verified installed root) and the Copilot plugin resolves the correct repository root.
  • Copilot native hooks are static: session-start and subagentStart add installed-module-root and host-boundary context.
  • The Copilot preToolUse guard is deny-only and best-effort: it blocks obvious merge, release and tag-publication shell commands; ordinary commit, feature push and PR create/edit pass. Its timeout fails open and hooks can be disabled.

Known limits

  • Copilot cannot do trusted merge or release: no trusted operator approval exists on the verified host, and an ask_user answer is not authorization. The operator merges/releases outside the session.
  • The guard does not catch persistent Git settings or API/GraphQL forms. Use server-side tag rules, branch protection/rulesets and least-privilege tokens.
  • Read-only roles lack a native edit tool but keep shell access; this is not OS isolation.
  • This release's Pi harness workflow can merge and release with genuine delivery grants; the Copilot plugin cannot.

Testing scope

Automated only. Focused independent root-resolution review at ed23496 (before the metadata bump): 79 pass / 0 fail. Earlier unchanged-implementation evidence: root 93 pass / 1 optional skip and subagent 161 pass / 0 fail. Full suites were not re-run for this metadata bump; version-consistency and Copilot package/compat/shared-policy/portable-path tests passed (49 pass / 0 fail).
Live Copilot scenarios S1-S7: NOT RUN. No live parity is claimed. See docs/copilot-acceptance.md.

v1.10.0

Choose a tag to compare

@alsevilla alsevilla released this 21 Oct 15:36
7937b8e

v1.10.0

Features and API changes

  • Trusted release-engineer delivery supports ordinary commits, non-force feature pushes and PR preparation without redundant delivery approvals.
  • Merge and GitHub release approvals are separate exact-target actions. Merge approvals bind the final candidate fingerprint and full source SHA; release approvals identify the actual merged commit, version and latest intent.
  • Known authorized PR bases must be forwarded as prBase in the actual Pi dispatch entry for PR creation/editing; prose alone does not bind the child. Legacy omission remains a documented limitation.
  • Copilot CLI preview shares canonical agents, skills and startup policy. A read-only compatibility helper diagnoses unchanged role-registry requirements; it does not enforce native models, effort or fallback ordering.

Upgrade and recovery

Reload/restart the parent at a safe point after active workers finish to expose new tools and schemas. Saving files does not upgrade an active runtime; existing workers retain their toolsets. Legacy combined merge-plus-release grants are refused by the new contract: request separate action-specific approvals using only the currently exposed native interface. Do not invent new fields in an older runtime. Never treat merge approval as release approval.

No database migration, package publication or service deployment is part of this release. Preserve configuration before upgrading. Recovery is a deliberate return to a known-good source/runtime with grants re-established explicitly, not a tag move or an assumed restoration of in-memory approvals.

Verification and known limitations

Local functional evidence reused for unchanged source: Bun 769 passed / 5 skipped and Node 124 passed. Independent version-metadata checks freshly passed 55 tests. These are local results, not GitHub CI claims; the full suite was not rerun for the four-file, five-literal version bump.

The retained finite Copilot 1.0.98 capture supports only bounded observed dispatch/refusal/parallel-overlap facts. Native question/cancellation, positive model honoring, effort, ordered fallback, all-role execution, isolation and hard authorization parity remain unverified. The helper is diagnostic, not proof of model-bound execution readiness. Full Copilot/Pi parity and cross-platform runtime parity are not claimed.

Source packaging is derived from the exact prepared commit; no installer, binary, dependency update or npm publication is included. Publication must target the separately verified squash commit after merge, not assume the feature-branch SHA is the release target.

v1.9.1

Choose a tag to compare

@alsevilla alsevilla released this 20 Oct 10:52
da57440

v1.9.1

This GitHub source release includes fingerprint-bound delivery grants and ordinary pull-request workflow fixes, alongside aligned Pi package and Copilot plugin version metadata. Delivery grants bind authorization to the reviewed candidate fingerprint; ordinary PR operations remain distinct from merge and release authorization.

Optional delivery-grant workflows have environment and invocation constraints; they are not required for ordinary PR delivery. This is a GitHub source release only; no package registry publication is planned.

v1.9.0

Choose a tag to compare

@alsevilla alsevilla released this 19 Oct 12:34
efe2773

v1.9.0

  • Correct model provenance across foreground, background, monitor and retained handoffs: keep requested identity separate from child-reported route/request and response model. Preserve unknown completed messages and earlier-attempt uncertainty; include only actually launched children in fallback attempt history.
  • Add opt-in Pi modelSlot: "fallback" with explicit modelTier, using the first usable configured fallback in the same tier without replaying back to its primary.
  • Strengthen content-fingerprint and independent-review guidance and routing regression fixtures.
  • Remove the external compaction integration while preserving Pi's normal compaction behavior.
  • Align Pi package and Copilot CLI preview source versions to 1.9.0.

Verification and scope

Independent verification passed and review approved the exact integrated candidate, closing all three provenance findings. Reused byte-matched worker results: Bun 676 passed / 4 skipped, Python 105 passed and configuration scan zero errors. Independent focused verification and review passed; release smoke added 16 Copilot packaging/bootstrap tests and Pi manifest/export checks. Merged tree is identical to the checked PR head; source archive integrity, versions and contents passed.

Child-reported identity is not provider attestation. Absent responseModel remains served UNVERIFIED; an unknown marker means at least one unknown message, not its count. No upstream-provider inference, live provider independence, token savings, Linux/macOS or Windows/Linux runtime parity is claimed. Existing platform/ACL/symlink skips and Copilot preview limitations remain.

Distribution and activation

Source-only GitHub release, following v1.8.0: no uploaded binary/package assets and no npm publication. GitHub supplies its normal source archives. Pi uses the repository's native package; Copilot remains a separately installed limited preview. No install, deployment or live configuration change was performed.

Reload/restart Pi at a safe point after active workers finish to activate the updated extension schema and behavior. No automatic reload. No database migration or new configuration requirement; recovery is selecting the prior source release/reverting the scoped change, not moving this release tag.

Source: squash-merged PR #8, commit efe2773.

v1.8.0

Choose a tag to compare

@alsevilla alsevilla released this 15 Oct 16:46
7f87803

v1.8.0

GitHub source release of the shared Pi/Copilot engineering harness.

Changes since v1.7.0

  • Pi roles use agent/roles.json as their single configuration source. Native Copilot agents omit the model field and inherit the outer session model.
  • LEARN preserves focused local Markdown records with a link index and verified readback; local knowledge is not published implicitly.
  • Worktree cleanup distinguishes routine merged-checkout removal from explicitly authorized retirement with preservation and idleness checks.
  • Expanded offline routing evaluation checks recorded dispatch arguments, provenance, dependency ancestry and project-scope tier restrictions. This is not a measured live-agent accuracy result.
  • Include the requested docs/plans/ ignore rule and align release metadata to 1.8.0.

Verification

Fresh full Bun suite: 658 passed, 3 skipped, 0 failed (661 tests across 37 files); focused package tests: 9 passed. Python routing regression: 103 passed and self-check PASS during preparation, reused unchanged. Run with Bun 1.4.2, Node 24.20.0 and the actual installed Pi SDK 1.2.0. Non-Git test fixtures used an isolated outside-checkout TEMP; no assertions were weakened.

The three skips cover Windows case sensitivity, unavailable symlink creation and a neutral-cwd reader test explicitly skipped under Bun. Node 22, typecheck, live host installation and marketplace/update flows were not verified by this release run.

Boundaries

  • Source-only GitHub release; no npm publishing, deployment or generated binary assets.
  • Copilot remains a native preview, not Pi runtime/control/safety parity. Per-role Copilot tier and reasoning-effort enforcement is not implemented.
  • No Claudex adaptation, automatic memory pipeline, live model accuracy or token-savings claim.
  • Private/local knowledge and planning documents are excluded from the release changes.

🤖 Generated with Pi, co-authored with Codex and Claude

v1.7.0

Choose a tag to compare

@alsevilla alsevilla released this 14 Oct 17:32
d68c9f6

Agent Harness v1.7.0

Highlights

  • GitHub Copilot CLI native plugin preview: marketplace packaging, the shared 20-agent/six-skill source, and SessionStart context from the canonical policy and skill index.
  • Configurable per-task Pi model tiers in agent/roles.json, with tier-only package declarations, explicit defaults, ordered fallbacks and task selection. Omission retains each role's configured default model and effort.
  • Token-efficient orchestration guidance and regression fixes for policy/source boundaries.
  • Separate Pi and Copilot CLI installation instructions, and curated durable lessons in the existing knowledge documentation.

Installation

Install separately for each host; see the repository README for the full steps and limits.

copilot plugin marketplace add alsevilla/agent-harness
copilot plugin install agent-harness@alsevilla

Verification and boundaries

The preparation full Bun suite passed: 585 passed, 0 failed, 3 skipped. The final README release-label change was followed by 9 passing focused package checks. This is a GitHub source release; no npm publication, deployment or generated package assets.

Copilot remains a limited native preview, not Pi runtime parity. Pi extensions, model-tier/fallback controls, grants and job lifecycle are not ported to Copilot. Remote marketplace installation, all-role live-host execution, Node 22.19 validation and measured token savings were not established. QMD refresh remains separate from saving knowledge.

🤖 Generated with Pi, co-authored with Codex and Claude