Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"name": "perun",
"description": "Perun: a suite of skills for building with AI agents. Deep code review, token and cost tools (spend reports, auto-compact with handoff, model-tier guidance), gated agentic delivery (merge train, lanes, destructive-command guard, auto-update), an idea critic, and product, growth, positioning, business-ops and output-safety specialists.",
"skills": "./.claude/skills",
"version": "1.609.0",
"version": "1.610.0",
"author": {
"name": "deep-code-review contributors"
},
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/agentic-delivery/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: >-
license: MIT
metadata:
author: deep-code-review contributors
version: "1.609.0"
version: "1.610.0"
---

# Agentic delivery
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/agentic-delivery/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.609.0
1.610.0
2 changes: 1 addition & 1 deletion .claude/skills/deep-code-review/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: >-
license: MIT
metadata:
author: deep-code-review contributors
version: "1.609.0"
version: "1.610.0"
---

# Deep Code Review
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/deep-code-review/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.609.0
1.610.0
2 changes: 1 addition & 1 deletion .claude/skills/idea-critic/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: >-
license: MIT
metadata:
author: deep-code-review contributors
version: "1.609.0"
version: "1.610.0"
---

# Veles: the evil twin (idea-critic)
Expand Down
2 changes: 1 addition & 1 deletion .claude/skills/idea-critic/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.609.0
1.610.0
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "perun",
"version": "1.609.0",
"version": "1.610.0",
"description": "Perun: a skill suite for AI-agent teams: deep code review, token and cost tools, gated delivery, an idea critic and product specialists.",
"skills": "./.claude/skills",
"interface": {
Expand Down
42 changes: 42 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,48 @@
All notable changes to this repository are documented here. Format loosely
follows Keep a Changelog; versioning follows Semantic Versioning.

## [1.610.0] — 2026-10-28

### Added
- agentic-delivery: `stage_run.py --run-dir DIR` refuses (exit 1) a run dir that already exists; `lkg.py verdict FILE` exits 1 with "rerun" unless the receipt is a pass for HEAD with matching runner blob (`run-ci-tests.sh` reads its own receipt back and honors `PERUN_RUN_DIR`); `wired_check.py --strict --runs FILE` (now the CI step) fails a new script with no caller or no exact-name run in the registered tests; new `vendor_drift.py TARGET` lists vendored skill files that differ from canonical (sha256) and exits 1 on drift or zero overlap (`--skills` flags deleted copies; `update-installed.sh` runs it).
- agentic-delivery: a merge train that parks a PR posts a `perun-train-refused: <head sha>` comment on it; admission skips a PR with that line for its current head, so a dropped PR is not re-ridden until a new push (invariant in `references/merge-queue-worktrees.md`).

size-budget-raise: .claude/skills/agentic-delivery/references/full-map.md 23891→24381 one routing line for the four wave-AE mechanisms
size-budget-raise: .claude/skills/INDEX.md 14569→14671 generated index row for vendor_drift.py
size-budget-raise: .claude/skills/agentic-delivery/INDEX-scripts.md 15097→15241 generated index row for vendor_drift.py
size-budget-raise: .claude/skills/agentic-delivery/references/merge-queue-worktrees.md 43476→44819 one paragraph: head-bound train refusal invariant (author filter, clear, neutralized reason)

### Added
- agentic-delivery: `scripts/admission_check.py` flags a per-PR admission config that omits a test class the batch runs (e.g. browser/e2e) and a stale or ownerless spec-selection map. `scripts/host_accept.py` is the merge-host acceptance checklist (operator reset without extra IAM, auto-reset on missed heartbeats, per-slice memory caps with sshd/agent reserve). `train_land.sh` runs both (rc != 0 refuses the train) whenever the base branch carries their config. The landing watchdog now surfaces the existing `red_main.py` uncovered/oldest-red alarm, and `flake_ledger.py serial-move` records tests moved to the serial project (never quarantined, failure there is BLOCKING as a real bug).

size-budget-raise: .claude/skills/agentic-delivery/references/red-gate-triage.md 25417→27186 one paragraph: admission completeness and map owner, plus watchdog and serial-move notes
size-budget-raise: .claude/skills/agentic-delivery/references/fanout-host-sizing.md 48845→49827 one paragraph: merge-host acceptance checklist

### Added
- agentic-delivery: lane worktrees live outside the watched repo tree. `scripts/lane_worktree.sh <name>` creates `lane/<name>` under `${XDG_CACHE_HOME:-~/.cache}/perun-wt/<repo>` (override `PERUN_WT_ROOT`; `/` refused) and writes a per-lane marker; one host with 129 in-repo lane worktrees (49GB) kept fseventsd at 158% CPU. The `handback_cap.py` SubagentStop hook now removes the stopping lane's worktree with `git worktree remove` (never forced) and deletes its merged branch, only when the marker, repo, agent id (if set) and `lane/` branch match, the tree is strictly under the lane root, HEAD equals its upstream, and the tree is clean including ignored files; any doubt keeps it and reports on stderr (`PERUN_REAP_WORKTREE=0` disables). `perun_doctor.py` gains "lane worktrees in repo" and "lane worktrees out of tree" rows (count and size, `du` capped at 30s, WARN above 20 trees or 20GB). Tests: `scripts/test_lane_worktree_reap.py`. Doc: `worktree-isolation.md`.
size-budget-raise: .claude/skills/agentic-delivery/references/worktree-isolation.md 14713→16482 documents the out-of-tree lane worktree root and the stop-hook reaper in the one worktree reference
- `update-installed.sh` skips the vendored-drift report with one stderr note when `vendor_drift.py` is absent (an older checked-out tag), instead of printing "No such file".
size-budget-raise: .claude/skills/agentic-delivery/references/host-enforcement.md 44866→44913 points the orchestrator-worktree step at lane_worktree.sh

### Added
- agentic-ceo, agentic-delivery: a send to a remote peer session has no read receipt, so the conductor verifies pickup from the peer's durable trail after a bounded wait and never re-sends on silence alone (`multi-session-coordination.md`, linked from the agentic-ceo hard rules, scoped to bare sends so the board ACK rule keeps winning for board directives). `incident-response.md` now says to read the subject's last 2 comments or events before relaying an automated alarm. One eval case each; `scripts/test_peer_send_alarm_relay.py` pins the wording.
size-budget-raise: .claude/skills/agentic-ceo/SKILL.md 7332→7477 one short rule added: bare peer-send pickup check and read-before-relay alarm rule
size-budget-raise: .claude/skills/agentic-delivery/references/incident-response.md 12693→13056 one short rule added: bare peer-send pickup check and read-before-relay alarm rule
size-budget-raise: .claude/skills/agentic-delivery/references/multi-session-coordination.md 72883→73901 one short rule added: bare peer-send pickup check and read-before-relay alarm rule

### Added
- idea-critic: `veche.py` returns `default_action` (proceed when `--reversibility easy`, else hold) and a `COUNCIL_BLOCKING_WORK` alarm when a council cannot decide or runs past `--alarm-s`; seats of each round run in parallel with atomic cap accounting and a failed seat is dropped; critique rounds add an anonymized Borda `peer_ranking`; a malformed `--criteria` error shows the `name:weight` format.

size-budget-raise: .claude/skills/idea-critic/references/council.md 6098→8433 timebox and alarm section, peer ranking and parallel seats notes, and a compact gap table versus the fetched open-source councils

### Added
- agentic-delivery: `scrub_env.sh CMD` now also gives the child an invalid `GH_TOKEN`/`GITHUB_TOKEN`, an empty throwaway `GH_CONFIG_DIR` and a refusing proxy with loopback direct, no ssh agent, no global git config or credential helper (`PERUN_ALLOW_NET=1` drops only the proxy, logged), so a test cannot post to a real PR even when it calls `gh` by absolute path past a PATH stub; `run-ci-tests.sh` runs every ci-test through it and drops `CLAUDE*` session vars.
- agentic-delivery: `bg_admit.py admit SCRIPT` admits a background or shadow job only if it declares `# disk-cap:`, a `trap ... EXIT` cleanup and a `# disk-stop:` rule backed by a df/disk_usage check (`job_lease.py run --admit -- CMD` admits the script CMD actually runs); `bg_admit.py untrapped` lints shell scripts that call mktemp with no trap against the shrink-only `scripts/mktemp-trap-baseline.tsv`.
- Promote-by ratchet: `scripts/promote-by.tsv` lists a promote-by date for every shadow-default policy flag (`train_gate`, `lkg_gate`); `scripts/test_promote_by.py` fails when one is overdue or more than 120 days out (keeping a flag in shadow means recording a decision and moving the date).

size-budget-raise: .claude/skills/INDEX.md 14671→14767 generated index row for bg_admit.py
size-budget-raise: .claude/skills/agentic-delivery/INDEX-scripts.md 15241→15388 generated index row for bg_admit.py

## [1.609.0] — 2026-10-28

### Added
Expand Down
14 changes: 7 additions & 7 deletions SHA256SUMS
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ b1080da06ca20a2807ea7be3a25cb95b94c97a6c2a686401796ffc3adac3ee37 .claude/skills
9521b057ff3db92d1e60923ebd88170713914f7e235ceb45717eb39419daf811 .claude/skills/agentic-ceo/scripts/weekly_receipt.py
1cbb49cb10c054dfc52d7721f1f5c741c97683e8be677463f774ca31f73c7cab .claude/skills/agentic-delivery/INDEX-scripts.md
7e8a02a1f7a363d82c427c4dbbff596f20e6d94c350145599b52d574b550e367 .claude/skills/agentic-delivery/INDEX.md
cb294d4e818a13084f0372e18a9dc786bc684f6af8d6bf16a40e3d71563b9c0e .claude/skills/agentic-delivery/SKILL.md
b96207a886490ea9c86607ea5c7bcae8575832b3688318fbba925bcc194aa0bb .claude/skills/agentic-delivery/VERSION
ad6bd53f58fb0e9215ae6106f3a3367fde773603abe1a52d18aa9e29a5f7da48 .claude/skills/agentic-delivery/SKILL.md
2173de515343f1e614346180abcee9f0dd17c3ea20d2ba2946e591b78672bbf9 .claude/skills/agentic-delivery/VERSION
7ffab2d4a589ac748779b948d02869f290d82f151516a04e0372481de431411d .claude/skills/agentic-delivery/evals/evals.json
fba7699a2d0836b51b7c838d019b1f0cd20570522a362e8a32b8dacfb911298e .claude/skills/agentic-delivery/evals/triggers.json
39140ac0b40907dc2279bb3234ce1d8ffb4db56e8658c7f89cc370f777df0592 .claude/skills/agentic-delivery/references/cost-quality-guardrails.md
Expand Down Expand Up @@ -193,8 +193,8 @@ d98f3e4380da3496061ba63be7beebe75017ab4ee1734eda9a3e798e19007b0e .claude/skills
18f20db537ab784460ad33cf218f7a01ac0a172fc38413f14c0e19e1ce6821cc .claude/skills/contribution/scripts/share_learning.py
6105878af71183aec3ff7c16f546f8044c313a3ae525ec9d4eda608ff737e97f .claude/skills/deep-code-review/INDEX-scripts.md
8f56d90513f2cdac935fa1106b97653734d09a220666d6d77ff5a47db96fc63b .claude/skills/deep-code-review/INDEX.md
16c74e96177e7ad354d063a410abd61d395b7b3ad7c9cfa0e519e8e6d2c044de .claude/skills/deep-code-review/SKILL.md
b96207a886490ea9c86607ea5c7bcae8575832b3688318fbba925bcc194aa0bb .claude/skills/deep-code-review/VERSION
5f7bec6c993539270612756e76b3c4e6d43989b528b2be55b2bd48a09593ba6d .claude/skills/deep-code-review/SKILL.md
2173de515343f1e614346180abcee9f0dd17c3ea20d2ba2946e591b78672bbf9 .claude/skills/deep-code-review/VERSION
392371349dc5757dbabc27d7a1e7fc38742b92c18e42d3fc7e5fb82b50d2c230 .claude/skills/deep-code-review/evals/evals.json
13dbb52e4bf61b1093302e094151def167371d26e7cf67a026f3beeb09d34378 .claude/skills/deep-code-review/evals/triggers.json
b84e3a2b88dc189f041784e76b97e68ad879915814e00f4b37cd27513746d6f1 .claude/skills/deep-code-review/references/a11y-aria.md
Expand Down Expand Up @@ -402,8 +402,8 @@ e951eaa63fd0d1870701d69c89c29ef4fe74dbad9b680ab6ef0a4e993fb8bc20 .claude/skills
fd316c63bbf1cc0ea64322d7d923d66692eaf7b545c056367bfecca35146c862 .claude/skills/growth-analytics/references/full-map.md
2f1d7499e9ed7ae59f550b5c00043e465b2a4e885821ad153438e2e33fcccb45 .claude/skills/growth-analytics/scripts/readout_check.py
5be54df47bce30f18c77b2b3f7fc6cfb9e58c59bf436f90e7e987122b6329557 .claude/skills/idea-critic/INDEX.md
db3a728b4f7e974be9c45d333137ec97188bfd90afb084b03beaff987a0975a2 .claude/skills/idea-critic/SKILL.md
b96207a886490ea9c86607ea5c7bcae8575832b3688318fbba925bcc194aa0bb .claude/skills/idea-critic/VERSION
aba0d02f46c6e9231ebe639f89df7202000afa693a29951fac277c64cf59cfce .claude/skills/idea-critic/SKILL.md
2173de515343f1e614346180abcee9f0dd17c3ea20d2ba2946e591b78672bbf9 .claude/skills/idea-critic/VERSION
0eaff6a652b6588e819d1a85caa697228bed504934dcb4d34097ebd69aef623a .claude/skills/idea-critic/evals/evals.json
0e1c0db300661a1ab1a427a7157c75e2ed67130ab24d5c6cb02ec3ff9e793f58 .claude/skills/idea-critic/evals/heldout.json
d8098c5ced63e8b8608867dd144091049563a0553cf62d27ce05b9d52ac54266 .claude/skills/idea-critic/evals/triggers.json
Expand All @@ -422,7 +422,7 @@ ffa9792bd3dc750725d85e32f91a8051d2f21932d035f3f4e47fcccb66186860 .claude/skills
0b3872c37c94e1db02a094ccdb04a39d1a245b1089f801729c2c1827a154ff6e .claude/skills/idea-critic/scripts/lenses/skeptic.txt
e3c08eee63d6da353029bfcc78f0ba7638d75b3acb02fd0af045e3c399a857a6 .claude/skills/idea-critic/scripts/lenses/user-advocate.txt
5baa5b2f797a24208cac893de5ba34bda548590c0340ca41826bbcdc60dabf6c .claude/skills/idea-critic/scripts/validate_verdict.py
bdaa72ccc8ce87d58ad7d7f39b87d0151bb1af9ced0c5c61cad60886ae0d6daa .claude/skills/idea-critic/scripts/veche.py
99c575ad34fb286a0e4ea9551c8d07505a4a4731349f67cf36cae6ff8d990f87 .claude/skills/idea-critic/scripts/veche.py
b812c50e074a71f342c5a9cf9d032f31be84768cd231840a0006c26c66536ccf .claude/skills/positioning/INDEX.md
595e209389ef87fded12b1f0b9a7f368449bc622e8b431f74a4f603438ed20b8 .claude/skills/positioning/SKILL.md
f5e5c9534532840fcd45bb002e69ed85c61dba2753450e26b448b7df1481e24d .claude/skills/positioning/VERSION
Expand Down
8 changes: 0 additions & 8 deletions changelog.d/wave-ae-run-id-verdict-wired-drift.md

This file was deleted.

5 changes: 0 additions & 5 deletions changelog.d/wave-af-admission-sheriff-hostaccept.md

This file was deleted.

5 changes: 0 additions & 5 deletions changelog.d/wave-ag-lane-wt-root.md

This file was deleted.

5 changes: 0 additions & 5 deletions changelog.d/wave-ah-peer-send-alarm-relay.md

This file was deleted.

4 changes: 0 additions & 4 deletions changelog.d/wave-aj-veche-timebox.md

This file was deleted.

Loading
Loading