diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index f696772..6a1fbd1 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -12,7 +12,7 @@ "displayName": "Agent Stack", "source": "./plugins/agent-stack", "description": "Four skills: agent-orchestrator — tool-calling loops, pipelines with checkpoints, provider routing with fallback, memory architecture, plus the wallet side of reselling LLM access; agent-evals — run/trace/thread evals, LLM judges, and fixtures grown from production; agent-interop — MCP servers and clients, A2A agent cards, the MCP Registry, and gateways; agent-harness — system prompts, tool shaping, workflow-vs-agent, and auditing an agent system.", - "version": "0.27.1", + "version": "0.27.2", "author": { "name": "ssheleg", "url": "https://x.com/sshlg93" diff --git a/CHANGELOG.md b/CHANGELOG.md index 77cb651..b47126d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,17 @@ +## 0.27.2 — owner board and release ancestry checks + +- The repository validator now rejects missing boards, shifted rows, duplicate IDs + and declarations hidden outside the primary table. Grouped AG IDs and the + explicitly separate three-column reference summaries retain their own meaning. +- Release validation now requires a full-history checkout and an unconditional + ancestry refusal; conditional, ignored and unreachable guards fail validation. +- Sixteen process controls exercise the real validator. The first eight reproduced + failures on the former gate; independent review found and closed an orphan-row + bypass. AG-06b's command pipe is correctly escaped without changing its meaning. +- Full hosted checks run nightly or on a deliberately promoted frozen candidate, + plus callable release validation. Ordinary pushes and PR edits do not trigger + another full suite. No skill body, routing description or runtime hook changes. + ## 0.27.1 — the temp-tree check reads the whole repository, and the old leak can be reaped by content Closes board rows B-158, AG-06a and AG-06b (sshlg-skills plan R28). diff --git a/SKILL-CARD.md b/SKILL-CARD.md index 5d47ad5..2d39b9a 100644 --- a/SKILL-CARD.md +++ b/SKILL-CARD.md @@ -5,7 +5,7 @@ | Field | Value | |---|---| | Pack | `agent-stack` | -| Version | `0.27.1` | +| Version | `0.27.2` | | Skills | `agent-orchestrator`, `agent-evals`, `agent-interop`, `agent-harness` | | License | MIT | | Source | https://github.com/ssheleg/agent-stack | diff --git a/docs/HANDOFF.md b/docs/HANDOFF.md index 4208672..1f1ea84 100644 --- a/docs/HANDOFF.md +++ b/docs/HANDOFF.md @@ -1,11 +1,12 @@ -# Current work — R30 owner gates +# Current work — agent-stack 0.27.2 -Objective: close agent-stack's missing own-board/release-ancestry checks under the -family's original R30. [Bounded packet and checks](evidence/runs/2026-10-13-r30-owner-gates.md) -is the entry for the next agent. Branch `fix/r30-owner-gates-1013`, basecb8f699. -Eight baseline defects reproduced; candidate16 controls pass after two orphan-row review corrections; independent review and local aggregate pass at7aa4dd3; -hosted integration and publication remain pending. No installed payload changes. +R30 own-board and ancestry validation merged normally through PR47 at +`053c0f8725d28e464c98d063e87618c15174849a`; genuine CI38347333161 passed. +[Release packet](evidence/runs/2026-10-13-release-0.27.2.md) is the current entry. +[Implementation and review](evidence/runs/2026-10-13-r30-owner-gates.md) retain +all reproduced defects and sixteen process controls. -Exact next task: frozen draft-to-ready candidate with genuine hosted checks, -then normal exact-head merge. Preserve nightly CI and normal required -checks. Commit/push and verify exact release source before hub re-pin/install. +Version metadata and changelog now form the bounded0.27.2 candidate. Exact next +task: collect local/strict candidate checks, independent review and eligible PR +checks; normal merge, annotated tag, publication and byte readback, then hub pin +and installed verification. No publication or install completion is claimed yet. diff --git a/docs/evidence/backlog.md b/docs/evidence/backlog.md index ed0af63..ccbbc1f 100644 --- a/docs/evidence/backlog.md +++ b/docs/evidence/backlog.md @@ -48,7 +48,7 @@ row per line, appended, so two runs closing two rows do not land on the same lin | AG-06b | **The 2592 existing trees are reported and left alone.** `find "$TMPDIR" -maxdepth 4 -type f -path '*/copy/sub/b.sh' \| wc -l` → **2592** on 2026-08-20, of which **16 were added by this run's own verification** — one run of the leaking fixture before the port, and one of the v0.12.0 archive's copy of it. They are plain `tmpXXXXXXXX` and indistinguishable from every other program's, so they are named rather than swept. The identical fixture still leaks in **`seo-aeo-audit`**, which another agent holds; referred, not edited. | AG-06 port, 2026-08-20; plan R28 of the hub's 2026-10-11 integration waves | 2 | 0 | 1 | **2** | **closed in v0.27.1 (2026-10-12)** — the trees ARE identifiable by content, so they are reapable without claiming another program's directory: `python3 test/residue.py --reap-own` (dry run by default, `--apply` to remove) claims only an `mkdtemp()`-named, non-symlink child of the temp root holding exactly one of the fixture's five end-state file sets and its directory set byte for byte, plus optionally its own manifest, unchanged for 24 h; root, age floor and the removal window hardened after the PR #45 reading (verification.md, v0.27.1). `test/reap_own_test.py` 6/6 in a sandbox temp root; a planted permissive reaper (any tree holding `sub/b.sh`) was refused: `near-misses were claimed as own: ['tmpextrab01', 'tmpextraf01']`. Real `$TMPDIR`, dry, 2026-10-12: `0 tree(s) match`; the `find` count is 0 — the 2592 trees are already gone, and both leaking suites (`agent-stack`, `seo-aeo-audit`) now use `residue.workspace()`. Nothing in the real `$TMPDIR` was deleted | | B-159 | **`seo-aeo-audit` still has the AG-06a/B-158 hole.** Its temp-tree check reads less than the whole repository and misses aliased calls, and `test/negatives.py:195` makes a bare `tempfile.mkdtemp(prefix="tp-negatives-snap-")` outside any residue ledger (read on its `origin/main`, 2026-10-12). Port agent-stack 0.27.1's whole-repository scan, any-receiver pattern and exact-shape exemptions there, and route that snapshot through the ledger. | agent-stack PR #45 blind reading, 2026-10-12 | 1 | 0 | 1 | **1** | **open** — another repository; referred, not edited | | B-160 | **make-skill's temp-tree check reads `test/` only.** make-skill 0.31.0 has the any-receiver pattern but walks `test/` alone, so a maker in a shipped script is invisible there exactly as AG-06a described here. Port agent-stack 0.27.1's whole-repository scan with exact-path, exact-count, exact-shape exemptions back to make-skill. | agent-stack PR #45 blind reading, 2026-10-12 | 1 | 0 | 1 | **1** | **open** — another repository; referred, not edited | -| B-161 | **The owner validator accepted duplicate declarations and a disabled release ancestry check.** Eight real-validator plants passed on cb8f699; the same seam also hid an even-backslash Markdown pipe in AG-06b. | hub R30, 2026-10-13 | 2 | 0 | 1 | **2** | **open** — implementation candidate and16 process controls; independent review, integration and release pending. [Packet](runs/2026-10-13-r30-owner-gates.md) | +| B-161 | **The owner validator accepted duplicate declarations and a disabled release ancestry check.** Eight real-validator plants passed on cb8f699; the same seam also hid an even-backslash Markdown pipe in AG-06b. | hub R30, 2026-10-13 | 2 | 0 | 1 | **2** | **open** — implementation,16 process controls and independent review merged in PR47 at053c0f8; publication and installed acceptance pending. [Packet](runs/2026-10-13-r30-owner-gates.md) | ## Open, and why diff --git a/docs/evidence/runs/2026-10-13-release-0.27.2.md b/docs/evidence/runs/2026-10-13-release-0.27.2.md new file mode 100644 index 0000000..3fa0c4c --- /dev/null +++ b/docs/evidence/runs/2026-10-13-release-0.27.2.md @@ -0,0 +1,23 @@ +# Agent-stack 0.27.2 release packet + +Objective: publish the accepted R30 owner-validation changes from PR47, merged +at `053c0f8725d28e464c98d063e87618c15174849a`. Source implementation and independent +review are in [the R30 packet](2026-10-13-r30-owner-gates.md). + +Plan frozen before release edits: align package, marketplace, plugin and skill-card +versions; describe the owner gate and CI admission changes; run local aggregate and +strict manifests; obtain genuine exact-head PR checks and normal merge; create an +annotated tag only on that accepted main commit; watch release and read back every +npm payload byte; pass the published source to the hub's next pin/install wave. + +The accepted implementation passed local `npm test` on7aa4dd3 and genuine +[pull-request CI38347333161](https://github.com/ssheleg/agent-stack/actions/runs/38347333161) +on32823f9 (receipt-only successor). New metadata has no check result yet. +No tag, publication or installed state is claimed by this planning record. + +Versions0.27.0/0.27.1 ledger text is historical; its local results must not be +silently relabelled as shipped-artifact verification. Their publication receipt +will be appended only after exact source/tag/registry verification. + +Exact next task: apply the bounded version changes and collect release-candidate +checks. No skill description/body or provider/runtime behavior changes in this cut. diff --git a/docs/evidence/verification.md b/docs/evidence/verification.md index ca19663..e1e6a9c 100644 --- a/docs/evidence/verification.md +++ b/docs/evidence/verification.md @@ -10,6 +10,17 @@ This file exists because its absence read as zero exposure. `sshlg-skills` board --- +## Release candidate — v0.27.2 (2026-10-13) + +Source integration: PR47 merged at `053c0f8725d28e464c98d063e87618c15174849a`. +[Release packet](runs/2026-10-13-release-0.27.2.md) records exact checks and the +remaining publication/install gates. This heading is not a shipped-artifact claim. + +| REQ | What ships | How it was confirmed | Confirmed | +|---|---|---|---| +| B-161 | Header-aware own-board admission and release ancestry guard validation | [R30 packet](runs/2026-10-13-r30-owner-gates.md): eight defects reproduced before fixes, sixteen process controls and independent review passed; genuine CI38347333161 succeeded on32823f9 | observed, source integration; publication pending | +| R30 admission | Nightly, explicit ready-for-review and callable release checks | `.github/workflows/validate.yml`; genuine pull-request run38347333161 | observed, source integration | + ## Release candidate — v0.27.1 (2026-10-12) Board rows B-158, AG-06a, AG-06b (sshlg-skills plan R28). Measured on the branch `fix/ag06` diff --git a/package.json b/package.json index 6a5916c..49bcad8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ssheleg/agent-stack", - "version": "0.27.1", + "version": "0.27.2", "scripts": { "test": "python3 test/validate.py && python3 test/plant_guard_test.py && python3 test/member_owner_gates_test.py && python3 test/reap_own_test.py && node test/installer_test.js && npm run test:audit", "test:audit": "for t in test/audit_regressions/*.py; do python3 \"$t\" || exit 1; done" diff --git a/plugins/agent-stack/.claude-plugin/plugin.json b/plugins/agent-stack/.claude-plugin/plugin.json index dfb1c39..ae54444 100644 --- a/plugins/agent-stack/.claude-plugin/plugin.json +++ b/plugins/agent-stack/.claude-plugin/plugin.json @@ -3,7 +3,7 @@ "name": "agent-stack", "displayName": "Agent Stack", "description": "Four skills: agent-orchestrator — tool-calling loops, pipelines with checkpoints, provider routing with fallback, memory architecture, plus the wallet side of reselling LLM access; agent-evals — run/trace/thread evals, LLM judges, and fixtures grown from production; agent-interop — MCP servers and clients, A2A agent cards, the MCP Registry, and gateways; agent-harness — system prompts, tool shaping, workflow-vs-agent, and auditing an agent system.", - "version": "0.27.1", + "version": "0.27.2", "author": { "name": "ssheleg", "url": "https://x.com/sshlg93"