Skip to content

Releases: protoLabsAI/projectBoard-plugin

v0.25.0 — Max-Mode candidate selection + readable board errors

Choose a tag to compare

@mabry1985 mabry1985 released this 02 Jul 08:38
1e40213

Added

  • Execution-grounded Max-Mode candidate selection (ADR 0064) — the loop grounds candidate picks in execution results. (#59)

Fixed

  • An unusable board now fails readably instead of cryptically. GET /features and GET /features/{fid} were the only store-touching routes outside _guard — on a board with no repo bound / no .beads / br missing, the BoardError escaped as a text/plain 500 and the console view showed WebKit's SyntaxError: The string did not match the expected pattern. Both routes now answer JSON 400 with the actionable message, and the view's fetch helper surfaces detail (or the HTTP status for non-JSON bodies) instead of a raw parse error — previously a JSON 400 would have silently rendered an empty board. (#60)

v0.24.0 — share node_modules with coder worktrees

Choose a tag to compare

@mabry1985 mabry1985 released this 22 Jun 05:45
c4a2133

create_worktree now symlinks the main repo's node_modules into each coder worktree (root + monorepo workspace packages), so npm/pnpm pre-PR gates + builds resolve deps without a per-worktree install. Best-effort, no-op for non-node repos. 196 tests.

v0.18.0

Choose a tag to compare

@mabry1985 mabry1985 released this 16 Jun 19:26
ad18484

Batched release of everything since v0.4.1 — the loop's autonomy + the self-improving flywheel.

Loop reliability

  • Same-tier CI-fix budget before escalating (v0.12.0) — a red check gets ci_fix_max same-tier fixes (error injected) before climbing a model tier, so a one-line lint nit no longer burns smart→reasoning→opus.
  • Pre-PR local gate (v0.13.0) — runs the repo's real checks in the worktree and hands the coder the failure to fix before opening a PR; opens anyway after the budget (CI stays the backstop).
  • Auto-rebase on conflict (v0.14.0) — a sibling merge that stales a PR is rebased onto base in a detached worktree (clean → force-push, no coder; conflict → bounded coder re-resolve).
  • Specific CI failure recorded (v0.16.0) — the attempt comment carries the real error (golden-map / F841 / schema), not the Failing checks: header.

Self-improving flywheel (the loop learns from itself)

  • loop-retro (v0.15.x) mines the board's attempt/outcome history into recurring failure classes + flow stats (board_retro tool + retro.py).
  • Distill → grounding (v0.17.x) — schedule-safe, propose-over-create: writes a dated retro report and (v0.18.0) writes lessons to the knowledge graph (loop-lessons).
  • Inject into coders (v0.18.0) — the loop reads relevant loop-lessons from the KG (graph.sdk.knowledge_search) and injects a "Known gotchas for this area" block into each coder's prompt, so known failures are heeded on attempt 1.

Plus earlier autonomy/resilience work (goal-verify gate, keep-worktree retries, format fixups). Releases now run on the fleet protoLabsAI/release-tools cadence (LLM notes + Discord).

v0.4.1 — docs/accuracy patch

Choose a tag to compare

@mabry1985 mabry1985 released this 13 Jun 07:20
a7d8cc3

A small accuracy patch over v0.4.0 — documentation + one error message only, no behaviour change.

Fixes (#16)

  • The board's "projection over beads" claim is now consistent. store.py has no separate store of its own — every read/write shells br, and beads-rust owns the .beads/*.db + JSONL. A stale module docstring still called the board "a SQLite data model" (a leftover from before the beads migration); corrected.
  • Correct beads-rust reference. The dependency is beads-rust — the br CLI (crate beads_rust), not the stale, write-broken homebrew bd. The README now links the real repo (Dicklesworthstone/beads_rust), recommends cargo install beads_rust, warns off bd, and the "CLI not on PATH" error says the same. (The code already defaulted to br.)

Full diff: v0.4.0...v0.4.1

v0.4.0 — resilience, parallel-correctness & PR reconciliation

Choose a tag to compare

@mabry1985 mabry1985 released this 13 Jun 06:42
ddd0980

The plugin's first hardening release: a tested, CI-gated, resilient autonomous board-driver. Everything since v0.2.0 (PRs #4#13).

Highlights

Testing & CI

  • First test suite — 116 tests, runs standalone (no protoAgent host needed).
  • CI on the org's Namespace runner (ruff lint + format + pytest).
  • ruff-clean source; manifest ↔ pyproject version coherence.

Throughput

  • Parallel drivesmax_concurrent > 1 builds several features at once, each in its own worktree.
  • Merge-poll / PR reconcile Done edge — works without a public webhook URL.

P0 — resilience (survives unattended)

  • Failure classification + backoff — transient failures (rate-limit / network / merge-conflict) retry with backoff; capability failures escalate a tier or block; terminal failures (auth / unknown) block. No more "any failure → permanently blocked."
  • Stuck-coder watchdog (coder_timeout_s, default 30 min) — a hung coder is killed and reaped; every await in a drive is now bounded.
  • Crash recovery on boot — features stranded in_progress by a previous run are resumed (adopt an open PR) or reset to ready.

P1 — concurrency-correctness

  • Hot-file overlap guard — two parallel coders never edit the same file (a guaranteed conflict).
  • Review-queue WIP limit (max_pending_reviews, default 5) — don't pile up PRs faster than they merge.
  • Periodic health sweep (health_sweep_interval_s) — reclaim slots from dead drives, reap orphaned worktrees.
  • Foundation-aware dependency gate — opt-in dep_gate: review releases non-foundation blockers at in_review; foundation=True features always gate dependents on merge.

P2 — reconciliation

  • PR reconcilein_review features are reconciled to their PR's real state: merged → done, closed-unmerged → blocked (the last "stuck-forever" class).

Compatibility

  • Requires protoAgent ≥ 0.27.0, the br (beads) CLI, git + gh, and the delegates plugin with an acp coder.
  • Ships disabled; new config knobs all have safe defaults (serial, merge-gated, watchdog on). No breaking changes — install/enable as before.

Full diff: v0.2.0...v0.4.0

v0.2.0 — gated operator API + DS plugin-kit adoption

Choose a tag to compare

@mabry1985 mabry1985 released this 13 Jun 01:16
49b4a2c

Security: the operator CRUD/transition routes move to the bearer-gated /api/plugins/project_board prefix (plugin-view rule 2) — previously creatable/transitionable without the bearer on token-gated deployments. Public-of-necessity stays: /board, /webhook/pr (HMAC), /features/{fid}/ci. Kit: dynamic-import plugin-kit.js (ESM — protoContent#224), initPluginView + slug-aware authed apiFetch. Needs protoAgent ≥0.27 (unchanged). From the 2026-06-12 plugin-ecosystem hardening pass.