blun-king-cli 9.1.567 → 9.1.570
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/agent-spine-plugin/.claude-plugin/marketplace.json +1 -1
- package/agent-spine-plugin/.claude-plugin/plugin.json +1 -1
- package/agent-spine-plugin/.codex-plugin/plugin.json +2 -1
- package/agent-spine-plugin/CHANGELOG.md +1581 -0
- package/agent-spine-plugin/README.md +30 -4
- package/agent-spine-plugin/blun.plugin.json +3 -3
- package/agent-spine-plugin/docs/acceptance.md +61 -0
- package/agent-spine-plugin/docs/assignment-continuation.md +48 -0
- package/agent-spine-plugin/docs/host-integration.md +178 -0
- package/agent-spine-plugin/docs/preflight-recall.md +69 -0
- package/agent-spine-plugin/docs/preservation-contract.md +53 -0
- package/agent-spine-plugin/docs/quality-gates.md +50 -0
- package/agent-spine-plugin/docs/releasing.md +85 -0
- package/agent-spine-plugin/docs/session-timeline.md +251 -0
- package/agent-spine-plugin/docs/source-roots.md +113 -0
- package/agent-spine-plugin/docs/structured-completion.md +67 -0
- package/agent-spine-plugin/docs/world-model.md +94 -0
- package/agent-spine-plugin/hooks/codex.json +2 -2
- package/agent-spine-plugin/hooks/hooks.json +1 -1
- package/agent-spine-plugin/hooks/version.json +1 -1
- package/agent-spine-plugin/package.json +13 -3
- package/agent-spine-plugin/scripts/check-codex-install.js +226 -0
- package/agent-spine-plugin/scripts/check-hosts.js +14 -5
- package/agent-spine-plugin/scripts/check-install-hook.js +226 -0
- package/agent-spine-plugin/scripts/check-install-selfstarter.js +154 -0
- package/agent-spine-plugin/scripts/check-install.js +478 -0
- package/agent-spine-plugin/scripts/check-line-budget.js +58 -0
- package/agent-spine-plugin/scripts/check-syntax.js +29 -0
- package/agent-spine-plugin/scripts/github-actions.js +11 -0
- package/agent-spine-plugin/scripts/hermetic-process.js +183 -0
- package/agent-spine-plugin/scripts/release-check.js +145 -0
- package/agent-spine-plugin/scripts/run-acceptance.js +19 -0
- package/agent-spine-plugin/scripts/run-checks.js +47 -0
- package/agent-spine-plugin/scripts/run-tests-hermetic.js +89 -0
- package/agent-spine-plugin/skills/agent-spine/SKILL.md +16 -2
- package/agent-spine-plugin/spine-example/1-identity.md +12 -0
- package/agent-spine-plugin/spine-example/2-voice.md +6 -0
- package/agent-spine-plugin/spine-example/3-conduct.md +8 -0
- package/agent-spine-plugin/spine-example/4-history.md +4 -0
- package/agent-spine-plugin/src/cli-agent.js +296 -0
- package/agent-spine-plugin/src/cli-attention.js +95 -0
- package/agent-spine-plugin/src/cli-autonomy.js +36 -0
- package/agent-spine-plugin/src/cli-common.js +71 -0
- package/agent-spine-plugin/src/cli-continuity.js +116 -0
- package/agent-spine-plugin/src/cli-core.js +128 -0
- package/agent-spine-plugin/src/cli-diagnostics.js +291 -0
- package/agent-spine-plugin/src/cli-host.js +21 -0
- package/agent-spine-plugin/src/cli-learning.js +305 -0
- package/agent-spine-plugin/src/cli-premortem.js +16 -0
- package/agent-spine-plugin/src/cli-sharing.js +230 -0
- package/agent-spine-plugin/src/cli.js +40 -1350
- package/agent-spine-plugin/src/codex-reader-launcher.js +182 -0
- package/agent-spine-plugin/src/hook.js +185 -567
- package/agent-spine-plugin/src/index.js +16 -2
- package/agent-spine-plugin/src/lib/acceptance.js +113 -11
- package/agent-spine-plugin/src/lib/action-lesson-recall.js +53 -0
- package/agent-spine-plugin/src/lib/attention-context.js +167 -0
- package/agent-spine-plugin/src/lib/attention-events.js +113 -0
- package/agent-spine-plugin/src/lib/attention-privacy.js +72 -0
- package/agent-spine-plugin/src/lib/attention-schema.js +164 -0
- package/agent-spine-plugin/src/lib/attention-storage.js +93 -0
- package/agent-spine-plugin/src/lib/attention.js +9 -600
- package/agent-spine-plugin/src/lib/audit-premortem.js +223 -0
- package/agent-spine-plugin/src/lib/audit.js +56 -6
- package/agent-spine-plugin/src/lib/autonomy-policy.js +110 -0
- package/agent-spine-plugin/src/lib/autonomy-store.js +202 -0
- package/agent-spine-plugin/src/lib/autonomy.js +8 -0
- package/agent-spine-plugin/src/lib/briefing.js +67 -4
- package/agent-spine-plugin/src/lib/catalog-document-read.js +51 -0
- package/agent-spine-plugin/src/lib/catalog.js +1 -1
- package/agent-spine-plugin/src/lib/codex-installation.js +231 -0
- package/agent-spine-plugin/src/lib/codex-skill-installation.js +211 -0
- package/agent-spine-plugin/src/lib/context.js +3 -1
- package/agent-spine-plugin/src/lib/delivery-agent-usage.js +224 -0
- package/agent-spine-plugin/src/lib/delivery-assignment.js +220 -0
- package/agent-spine-plugin/src/lib/delivery-command-actions.js +453 -0
- package/agent-spine-plugin/src/lib/delivery-knowledge.js +78 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-binding.js +107 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-closure.js +171 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-codec.js +45 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-correction.js +101 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-file.js +21 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-index.js +493 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-inspection.js +37 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-recovery.js +120 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-rejection.js +65 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-results.js +28 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-session-guard.js +46 -0
- package/agent-spine-plugin/src/lib/delivery-premortem-write-ledger.js +285 -0
- package/agent-spine-plugin/src/lib/delivery-premortem.js +499 -0
- package/agent-spine-plugin/src/lib/delivery-shell-heredoc.js +115 -0
- package/agent-spine-plugin/src/lib/delivery-shell-substitutions.js +111 -0
- package/agent-spine-plugin/src/lib/delivery-shell-wrapper.js +64 -0
- package/agent-spine-plugin/src/lib/delivery-target.js +73 -0
- package/agent-spine-plugin/src/lib/delivery-verification.js +445 -0
- package/agent-spine-plugin/src/lib/documents.js +27 -5
- package/agent-spine-plugin/src/lib/filesystem-retry.js +2 -0
- package/agent-spine-plugin/src/lib/gateway-common.js +68 -0
- package/agent-spine-plugin/src/lib/gateway-control.js +302 -0
- package/agent-spine-plugin/src/lib/gateway-delivery.js +103 -0
- package/agent-spine-plugin/src/lib/gateway-execution.js +350 -0
- package/agent-spine-plugin/src/lib/gateway-host-lifecycle.js +185 -0
- package/agent-spine-plugin/src/lib/gateway-inspection.js +85 -0
- package/agent-spine-plugin/src/lib/gateway-knowledge.js +129 -0
- package/agent-spine-plugin/src/lib/gateway-policy-provenance.js +197 -0
- package/agent-spine-plugin/src/lib/gateway-premortem-disposition.js +82 -0
- package/agent-spine-plugin/src/lib/gateway-premortem.js +363 -0
- package/agent-spine-plugin/src/lib/gateway-runs.js +300 -0
- package/agent-spine-plugin/src/lib/gateway-runtime-identity.js +31 -0
- package/agent-spine-plugin/src/lib/gateway-runtime-records.js +21 -0
- package/agent-spine-plugin/src/lib/gateway-runtime.js +18 -1623
- package/agent-spine-plugin/src/lib/gateway-state-transaction.js +356 -0
- package/agent-spine-plugin/src/lib/gateway-state.js +342 -0
- package/agent-spine-plugin/src/lib/hook-artifact-guards.js +356 -0
- package/agent-spine-plugin/src/lib/hook-audit.js +16 -2
- package/agent-spine-plugin/src/lib/hook-briefing-use.js +68 -0
- package/agent-spine-plugin/src/lib/hook-context.js +424 -0
- package/agent-spine-plugin/src/lib/hook-final-message.js +26 -0
- package/agent-spine-plugin/src/lib/hook-input.js +27 -0
- package/agent-spine-plugin/src/lib/hook-output.js +140 -0
- package/agent-spine-plugin/src/lib/hook-premortem.js +257 -0
- package/agent-spine-plugin/src/lib/hook-process-advisory.js +37 -0
- package/agent-spine-plugin/src/lib/hook-protection.js +95 -0
- package/agent-spine-plugin/src/lib/hook-stop-verification.js +84 -0
- package/agent-spine-plugin/src/lib/hook-timeline.js +91 -0
- package/agent-spine-plugin/src/lib/identifier-analysis.js +446 -0
- package/agent-spine-plugin/src/lib/indexed-memory.js +23 -6
- package/agent-spine-plugin/src/lib/knowledge-evidence.js +431 -0
- package/agent-spine-plugin/src/lib/learning-applications.js +441 -0
- package/agent-spine-plugin/src/lib/learning-candidates.js +274 -0
- package/agent-spine-plugin/src/lib/learning-context.js +130 -0
- package/agent-spine-plugin/src/lib/learning-delivery-contracts.js +310 -0
- package/agent-spine-plugin/src/lib/learning-evaluation-contracts.js +350 -0
- package/agent-spine-plugin/src/lib/learning-evaluation-registration.js +372 -0
- package/agent-spine-plugin/src/lib/learning-evaluation-revocation.js +292 -0
- package/agent-spine-plugin/src/lib/learning-evidence-contracts.js +321 -0
- package/agent-spine-plugin/src/lib/learning-findings.js +458 -0
- package/agent-spine-plugin/src/lib/learning-measurement-contracts.js +285 -0
- package/agent-spine-plugin/src/lib/learning-measurements.js +265 -0
- package/agent-spine-plugin/src/lib/learning-outcome-contracts.js +165 -0
- package/agent-spine-plugin/src/lib/learning-outcomes.js +343 -0
- package/agent-spine-plugin/src/lib/learning-reconciliation.js +290 -0
- package/agent-spine-plugin/src/lib/learning-retry-contracts.js +188 -0
- package/agent-spine-plugin/src/lib/learning-schema.js +229 -0
- package/agent-spine-plugin/src/lib/learning-scope-targets.js +424 -0
- package/agent-spine-plugin/src/lib/learning-state-upgrade.js +477 -0
- package/agent-spine-plugin/src/lib/learning-status-configuration.js +476 -0
- package/agent-spine-plugin/src/lib/learning-storage.js +203 -0
- package/agent-spine-plugin/src/lib/learning-trial-recovery.js +218 -0
- package/agent-spine-plugin/src/lib/learning-validation-contracts.js +375 -0
- package/agent-spine-plugin/src/lib/learning-validation-renewal.js +298 -0
- package/agent-spine-plugin/src/lib/learning-validation-runtime.js +234 -0
- package/agent-spine-plugin/src/lib/learning.js +36 -6923
- package/agent-spine-plugin/src/lib/lesson-recall-session.js +172 -0
- package/agent-spine-plugin/src/lib/mcp-autonomy-tools.js +37 -0
- package/agent-spine-plugin/src/lib/mcp-delivery-completion.js +124 -0
- package/agent-spine-plugin/src/lib/mcp-delivery-tools.js +45 -0
- package/agent-spine-plugin/src/lib/mcp-premortem.js +68 -0
- package/agent-spine-plugin/src/lib/mcp-runtime.js +269 -0
- package/agent-spine-plugin/src/lib/mcp-source-context.js +51 -0
- package/agent-spine-plugin/src/lib/mcp-timeline-tools.js +164 -0
- package/agent-spine-plugin/src/lib/mcp-world-tools.js +52 -0
- package/agent-spine-plugin/src/lib/owned-file-lock.js +30 -10
- package/agent-spine-plugin/src/lib/project-portfolio.js +176 -0
- package/agent-spine-plugin/src/lib/selfstarter-core.js +382 -0
- package/agent-spine-plugin/src/lib/selfstarter-jobs.js +149 -0
- package/agent-spine-plugin/src/lib/selfstarter-lease.js +204 -0
- package/agent-spine-plugin/src/lib/selfstarter-policy.js +90 -0
- package/agent-spine-plugin/src/lib/selfstarter-workspace.js +111 -0
- package/agent-spine-plugin/src/lib/selfstarter.js +11 -911
- package/agent-spine-plugin/src/lib/session-timeline-auth.js +316 -0
- package/agent-spine-plugin/src/lib/session-timeline-codex.js +58 -0
- package/agent-spine-plugin/src/lib/session-timeline-contract.js +48 -0
- package/agent-spine-plugin/src/lib/session-timeline-enrollment-source.js +41 -0
- package/agent-spine-plugin/src/lib/session-timeline-enrollment-storage.js +132 -0
- package/agent-spine-plugin/src/lib/session-timeline-enrollment-transport.js +17 -0
- package/agent-spine-plugin/src/lib/session-timeline-enrollment.js +500 -0
- package/agent-spine-plugin/src/lib/session-timeline-event-extract.js +157 -0
- package/agent-spine-plugin/src/lib/session-timeline-host-origin.js +74 -0
- package/agent-spine-plugin/src/lib/session-timeline-host-receipt.js +117 -0
- package/agent-spine-plugin/src/lib/session-timeline-invocation.js +201 -0
- package/agent-spine-plugin/src/lib/session-timeline-king.js +79 -0
- package/agent-spine-plugin/src/lib/session-timeline-prior.js +59 -0
- package/agent-spine-plugin/src/lib/session-timeline-provider.js +34 -0
- package/agent-spine-plugin/src/lib/session-timeline-query.js +55 -0
- package/agent-spine-plugin/src/lib/session-timeline-results.js +31 -0
- package/agent-spine-plugin/src/lib/session-timeline-root.js +11 -0
- package/agent-spine-plugin/src/lib/session-timeline-search.js +82 -0
- package/agent-spine-plugin/src/lib/session-timeline-sid-acl.js +217 -0
- package/agent-spine-plugin/src/lib/session-timeline-source.js +83 -0
- package/agent-spine-plugin/src/lib/session-timeline-state.js +45 -0
- package/agent-spine-plugin/src/lib/session-timeline-transport.js +50 -0
- package/agent-spine-plugin/src/lib/session-timeline-windows-acl.js +148 -0
- package/agent-spine-plugin/src/lib/session-timeline.js +453 -0
- package/agent-spine-plugin/src/lib/source-roots.js +69 -136
- package/agent-spine-plugin/src/lib/source-tree-scan.js +178 -0
- package/agent-spine-plugin/src/lib/task-knowledge-context.js +78 -0
- package/agent-spine-plugin/src/lib/timeline-tool-guard.js +202 -0
- package/agent-spine-plugin/src/lib/world-knowledge.js +249 -0
- package/agent-spine-plugin/src/lib/world-model.js +278 -0
- package/agent-spine-plugin/src/mcp.js +20 -161
- package/agent-spine-plugin/src/version.js +1 -1
- package/agent-spine-plugin/src/worker.js +22 -5
- package/bin/agent-resume-snapshot.cjs +2 -2
- package/bin/agentspine-king-goal-inbox.mjs +111 -0
- package/bin/agentspine-king-goal-intake.mjs +106 -0
- package/bin/baseline-skill-performance-policy.cjs +1 -16
- package/bin/core-bootstrap.js +3 -0
- package/bin/curiosity-scout-policy.cjs +5 -1
- package/bin/input-draft-persistence.cjs +2 -2
- package/bin/king-tui-function-contract.json +33 -0
- package/bin/launcher-restart-policy.cjs +150 -0
- package/bin/launcher-runtime.js +56 -44
- package/bin/managed-context-startup-policy.cjs +27 -0
- package/bin/managed-plugin-selection.cjs +116 -0
- package/bin/mistake-relevance-policy.cjs +1 -1
- package/bin/observer-hooks.cjs +14 -0
- package/bin/oversized-context-offload-policy.cjs +86 -0
- package/bin/plugin-bootstrap.js +7 -40
- package/bin/proactive-compaction-policy.cjs +1 -1
- package/bin/provider-model-refresh-deadline.cjs +53 -0
- package/bin/provider-model-refresh-policy.cjs +107 -0
- package/bin/release-artifact-freeze-policy.cjs +30 -0
- package/bin/repeated-user-message-projection.cjs +3 -126
- package/bin/research-page-result.cjs +74 -0
- package/bin/runtime-exit-ledger.cjs +1 -0
- package/bin/session-compaction-policy.cjs +84 -0
- package/bin/skill-listing-performance-policy.cjs +2 -2
- package/bin/standard-tools-bootstrap.js +0 -37
- package/bin/subagent-skill-policy.cjs +3 -1
- package/bin/telegram-approval-relay.cjs +12 -7
- package/bin/telegram-private-conversation-policy.cjs +3 -2
- package/bin/telegram-queue-handoff-policy.cjs +24 -0
- package/bin/thinking-activity-status-policy.cjs +1 -1
- package/bin/thinking-only-guard.cjs +16 -12
- package/bin/tool-call-loop-policy.cjs +0 -2
- package/bin/tool-result-offload-policy.cjs +11 -2
- package/bin/tui-functional-contract.cjs +55 -0
- package/bin/update-notice.js +18 -14
- package/bin/user-message-offload-policy.cjs +1 -1
- package/bin/user-prompt-hook-origin-policy.cjs +34 -0
- package/bin/windows-node-crash-dump.cjs +110 -0
- package/blun.mjs +2861 -1173
- package/codebase-index/codebase_index.py +4 -3
- package/package.json +5 -18
- package/standard-skills/research-evidence/SKILL.md +39 -0
- package/standard-skills/research-evidence/references/evidence-format.md +82 -0
- package/standard-skills/research-evidence/scripts/evidence-collection.cjs +254 -0
- package/standard-skills/research-evidence/scripts/score-report.cjs +112 -0
- package/standard-skills/web-lesen/SKILL.md +37 -22
- package/standard-skills/web-lesen/scripts/crawl_public.py +376 -0
- package/telegram-plugin/DELIVERY.md +36 -0
- package/telegram-plugin/bin/telegram-approval-relay.cjs +13 -7
- package/telegram-plugin/bin/telegram-launcher-status-queue.cjs +122 -0
- package/telegram-plugin/bin/telegram-private-conversation-policy.cjs +3 -2
- package/telegram-plugin/bin/telegram-reply-parts.cjs +149 -0
- package/telegram-plugin/dist/bridge.mjs +7 -56
- package/telegram-plugin/dist/mcp-server.mjs +33 -4
- package/agent-spine-plugin/skill/SKILL.md +0 -76
- package/bin/mnemo-connect-heartbeat.cjs +0 -204
- package/bin/mnemo-tool-agent-policy.cjs +0 -22
- package/telegram-plugin/bin/telegram-mnemo-capture.cjs +0 -297
|
@@ -0,0 +1,1581 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to AgentSpine will be documented here. The project follows [Semantic Versioning](https://semver.org/).
|
|
4
|
+
|
|
5
|
+
## [Unreleased]
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- Added a native King agent-wire history adapter with an explicit protected source/protocol mapping, provider-separated lifecycle binding, bounded objective `tool.result` extraction, and stable session/message references. It never scans `BLUN_HOME`, reuses Codex rollout parsing, or changes King permissions.
|
|
10
|
+
- Added an explicitly enrolled native Codex rollout adapter for bounded same-task historical tool-result recall, with project/session header verification, native message references, unchanged source bytes and independent provider contracts. Live-host acceptance remains open.
|
|
11
|
+
|
|
12
|
+
- Added bounded, sourced structured recall for one exact continued task.
|
|
13
|
+
- Added restart- and compaction-safe normal-task continuation capsules to structured knowledge. A bounded confirmed checkpoint carries the current objective, last verified step with source reference, open questions and next step; terminal checkpoints prevent completed work from being resumed.
|
|
14
|
+
- Added an evidence-derived structured knowledge view over the durable world model. Facts, user preferences, decisions with rationale, task state, and error lessons retain source/time/scope plus optional stable session/message references across restart; explicit corrections preserve superseded history while briefing carries only bounded current entries.
|
|
15
|
+
- Added same-task prior-session evidence recall to the existing timeline search tool. Restart and compaction hooks expose only a small sidecar availability hint; an explicit `includePriorSessions` query ranks the signed index first, then verifies at most one matching immutable source and returns bounded redacted evidence with stable session and message references.
|
|
16
|
+
- Added provider-neutral, per-project autonomy levels for bounded observation, proactive advice, reversible local execution and publication. Execute/publish decisions remain an additional fail-closed gate over exact existing execution grants; publication also requires a separate local confirmation.
|
|
17
|
+
- Added a restart-safe project portfolio for explicit local roots or public repository references. Bounded source-identity-checked scans, evidence-classified observations, exact tenant/group isolation, deduplication and one-at-a-time rate-limited notices feed the session briefing without discovering sibling projects or changing source bytes.
|
|
18
|
+
|
|
19
|
+
### Security
|
|
20
|
+
|
|
21
|
+
- Task recall opens no source, grants no authority, excludes unsafe state, and returns at most six entries.
|
|
22
|
+
- Task continuation is context-only and derived only from current, confirmed, conflict-free, exactly scoped checkpoints. Proposed, stale, conflicting, foreign and malformed checkpoints are never resumable; completed checkpoints require a passed verified step and no remaining work.
|
|
23
|
+
- Structured knowledge remains context-only: repeated model suggestions stay assumptions, unresolved conflicting values cannot enter facts, foreign project/group/private records remain excluded, and secret-shaped values or rationales fail both ingestion and persisted-state validation.
|
|
24
|
+
- Prior-session recall requires the current private host enrollment and exact host, entity, user, tenant, project, task and compatible goal binding. Current-session, foreign-task, foreign-project and group sources are excluded; changed prior snapshots, replayed invocations and tampered sidecars return no history.
|
|
25
|
+
- Autonomy configuration cannot create tool, delegation, credential, payment, production, identity or policy authority. Linked roots, credential-bearing URLs, wildcard capabilities, stale evidence, foreign scope and manipulated state are rejected. Public repository references are never fetched by the portfolio scanner.
|
|
26
|
+
|
|
27
|
+
### Tests
|
|
28
|
+
|
|
29
|
+
- Synthetic King sessions A/B prove measured `FAIL 0/15` recall after restart and compaction while exact gateway binding, wrong protocol/path/scope/provider, replay/race, source mutation, unknown records, and source-byte preservation remain enforced.
|
|
30
|
+
- A CSS-archive Before/After restores its sourced backup lesson after restart and `PostCompact`; boundary tests remain green.
|
|
31
|
+
- Synthetic Before/After probes show that a legacy task-state cannot reconstruct work, while the structured checkpoint restores exactly one sourced next step after a separate-process restart and `PostCompact`. Correction, completion, MCP, scope, conflict, proposal, tamper, bounds and source-byte tests prevent false continuation.
|
|
32
|
+
- Synthetic restart, correction, contradiction, repetition, MCP, briefing-budget, group/project/privacy, tamper and byte-preservation probes show that the new view reduces reconstruction ambiguity without promoting guesses or rereading historical state into every briefing.
|
|
33
|
+
- A multi-megabyte synthetic prior session with 2,500 unrelated memory links and four old failure lessons proves the Before/After boundary: current-session search finds nothing after restart, while the explicit prior-session query returns only the `12:40` Suite 0 result and its source references. Lifecycle latency, compaction, replay, foreign task/group scope, changed-source rejection and byte preservation are covered.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
|
|
37
|
+
- Reuse host-verified, assignment-bound briefing observations in MCP delivery preparation without a second content fetch; keep missing proof advisory and document provider-specific history limits.
|
|
38
|
+
|
|
39
|
+
- Integrated the preserved attention refactoring: six modules (each below 500 lines), unchanged function bodies and public API, and removal of its legacy line-budget exception. Package allowance grows by 4 KiB for explicit module boundaries.
|
|
40
|
+
- BLUN now routes the two exact King-generated timeline MCP names through AgentSpine's existing host-bound invocation guard. Claude's separately qualified names remain exact, while foreign servers and near aliases still receive no permit.
|
|
41
|
+
|
|
42
|
+
### Evidence limits
|
|
43
|
+
|
|
44
|
+
- The King repository adapter is pinned to public BLUN Code `1.0.109` commit `fbb97459` and vendored King SDK `0.12.1` format evidence. Fredrik's actual source/protocol mapping, installed format, live A/B recall, and host block enforcement remain unverified; no live configuration was changed.
|
|
45
|
+
- Public BLUN Code 1.0.109 naming evidence and synthetic hook/MCP tests establish the repository contract only. The separate King host bug that ignores a returned `{decision:"block"}` and Fredrik's live installation remain unverified external boundaries.
|
|
46
|
+
|
|
47
|
+
## [0.73.0] - 2026-09-05
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- Added a bounded, provider-neutral session-timeline sidecar for host-owned transcripts. The verified Claude adapter keeps the existing regular transcript as primary source and exposes only explicit bounded MCP indexing plus exact-time or two-term evidence search after a host-issued opaque receipt and local immutable-snapshot enrollment. A signed state/head pair detects state-only and mixed rollback while its integrity anchor remains intact.
|
|
52
|
+
- Added digest-bound time/offset room IDs and a continuation capsule that carries only current task, goal, step, selected-lesson digest, objective outcome status, and recent room IDs across restart and compaction.
|
|
53
|
+
|
|
54
|
+
### Security
|
|
55
|
+
|
|
56
|
+
- Timeline capture and retrieval require exact locally enrolled host, session, entity, user, tenant, project, task, and optional goal-step scope. Group and unknown visibility are excluded. A non-symlinked host profile/projects root, regular source, source identity, bounded prefix digest, state signature, and descriptor binding are revalidated before any result; changed snapshots require a fresh receipt and local renewal.
|
|
57
|
+
- Only direct structured tool or runner results with a direct UTC timestamp become objective cards. Generic chat, nested tool-looking claims, unstructured timestamps, raw transcript access, and authority-shaped interpretations are excluded. Cards are bounded, secret-redacted, marked `untrusted-session-history`, and remain context-only.
|
|
58
|
+
|
|
59
|
+
### Tests
|
|
60
|
+
|
|
61
|
+
- Synthetic 2,500-link memory scenarios include four old CSS-archive error lessons and prove a bounded `12:40` objective-result retrieval after compaction and restart without opening unrelated links. Timeline probes cover exact-time and two-term recall, source-blind lifecycle status, final JSONL records, foreign scope/group rejection, source/state tampering, profile-root symlinks, secret redaction, concurrent indexing, and source-byte preservation.
|
|
62
|
+
|
|
63
|
+
## [0.72.7] - 2026-09-05
|
|
64
|
+
|
|
65
|
+
### Added
|
|
66
|
+
|
|
67
|
+
- The locally confirmed Codex installer now publishes the shared provider-neutral `skills/agent-spine/SKILL.md` into the documented user skill root while registering the stable MCP launcher. The skill copy has a digest-sealed ownership marker, atomic replacement, bounded input and lock-checked crash recovery.
|
|
68
|
+
- The common skill now states the operational readiness contract: skill text grants no tools, writing requires four available MCP tools and three fresh assignment-bound preflight calls, continuation keeps the exact assignment, and unknown recovery events remain mismatches.
|
|
69
|
+
|
|
70
|
+
### Security and evidence limits
|
|
71
|
+
|
|
72
|
+
- Synthetic install/update/restart verifies exact skill bytes, four listed tools, a real source read, existing-session continuity and bound briefing/knowledge/premortem calls. Foreign skills, foreign Codex configuration, project sources and unknown external state remain byte-identical.
|
|
73
|
+
- Unmanaged skill directories, symlinked destinations, tampering, staged crashes and parallel updates are rejected or recovered without clearing state. Repository checks do not prove native `skills/list`, `mcpServerStatus/list`, host trust or an Otto restart; no live profile or CodexLink configuration was changed.
|
|
74
|
+
|
|
75
|
+
## [0.72.6] - 2026-09-05
|
|
76
|
+
|
|
77
|
+
### Added
|
|
78
|
+
|
|
79
|
+
- `agentspine host-install codex --confirm-local-host-install` installs one stable, managed MCP launcher under the selected Codex home. The `config.toml` entry no longer points at a versioned package cache; updates atomically replace a sealed registration behind the same launcher path while preserving every byte outside AgentSpine's marked block.
|
|
80
|
+
- The launcher verifies the canonical package root, regular non-symlink entrypoint, package and runtime digests, exact AgentSpine version, MCP server identity and the four required delivery/read tools before it completes `initialize`. No state-bearing tool call is forwarded before that check.
|
|
81
|
+
|
|
82
|
+
### Security and evidence limits
|
|
83
|
+
|
|
84
|
+
- Synthetic install/update/restart exercises a 0.72.5 cache followed by 0.72.6, removes the old cache, lists tools, reads an existing session source and performs the bound briefing, knowledge and premortem calls. A wrong `PLUGIN_ROOT` is ignored; foreign Codex configuration, unknown external state and source bytes remain unchanged.
|
|
85
|
+
- Unmanaged duplicate registrations, malformed managed blocks, symlinked homes/configuration/package roots, tampered registrations, staged crashes and parallel updates are rejected or recovered without deleting state. This is repository evidence only: no live Codex profile, Otto session, trust decision or CodexLink configuration was changed.
|
|
86
|
+
|
|
87
|
+
## [0.72.5] - 2026-09-05
|
|
88
|
+
|
|
89
|
+
### Fixed
|
|
90
|
+
|
|
91
|
+
- Delivery verification now distinguishes a successful hook/tool transport from a successful test process. The current write is verified only by a structured `exit_code: 0` / `exitCode: 0` result or the existing command-bound final success marker. `success: true`, `isError: false`, a still-running session, prose claiming tests passed and an old unbound marker remain unverified.
|
|
92
|
+
- Native-shaped Codex `PostToolUse` probes cover canonical `Bash` with `tool_input.command`, the Work `exec_command` result, and PowerShell-style `exitCode`. Exit 1, interrupted execution, transport-only results and text-embedded exit claims stay blocked; synthetic source bytes remain unchanged.
|
|
93
|
+
|
|
94
|
+
### Evidence limits
|
|
95
|
+
|
|
96
|
+
- The probes reproduce the documented Codex hook wire contract and measured Work tool result shape. They do not claim a live Otto restart, installation or state migration. CodexLink remains outside AgentSpine.
|
|
97
|
+
|
|
98
|
+
## [0.72.4] - 2026-09-05
|
|
99
|
+
|
|
100
|
+
### Added
|
|
101
|
+
|
|
102
|
+
- Ordinary assignments can store structured completion checks with `complete_delivery` and finish with a normal user-facing summary. Exact assignment and latest-write binding, the three mandatory preflight calls and observed successful post-write tests remain required. Stop rechecks current evidence; goal deliveries keep their existing checkpoint/outcome route.
|
|
103
|
+
- Hook/MCP regressions cover normal-summary red/green, separate-process restart, concurrent retries, actual crash before atomic replacement, stale writes, foreign bindings, replay and manipulated closure metadata without changing source bytes.
|
|
104
|
+
|
|
105
|
+
### Fixed and evidence limits
|
|
106
|
+
|
|
107
|
+
- A later failed or unverified test invalidates earlier successful delivery verification. A real child-process test with an incorrect artifact expectation reproduces the previous false acceptance.
|
|
108
|
+
- Child artifact tests now clear inherited `NODE_TEST_CONTEXT` and assert executed TAP test/failure counts. This corrects the 0.72.3 harness, where a skipped recursive child runner could exit successfully; the earlier positive exit status alone was insufficient evidence.
|
|
109
|
+
- Selfstarter audit assertions expose the failed gates. The CI 147 intermittent Windows failure remains unexplained despite a subsequent passing diagnostic matrix; assertions and deadlines are unchanged.
|
|
110
|
+
- The initial completion guidance exceeded the existing preflight injection limit on long host paths. Shorter equivalent guidance and a long-path Acceptance regression keep all mandatory stages within the unchanged budget; user source bytes are not truncated.
|
|
111
|
+
- Native Codex/PowerShell envelopes, host registration/update acceptance and unknown external recovery events remain open. No live installation, restart, state repair or CodexLink change is included.
|
|
112
|
+
|
|
113
|
+
## [0.72.3] - 2026-09-05
|
|
114
|
+
|
|
115
|
+
### Fixed
|
|
116
|
+
|
|
117
|
+
- Host-explicit continuation now retains one unfinished assignment and its exact premortem across supplementary prompts, restart and compaction. Closed assignments and foreign session, entity, group, task or goal-step bindings cannot be continued; normal new-delivery prompts still require fresh preflight receipts.
|
|
118
|
+
- Delivery knowledge queries record not-yet-created target files as an explicit absent baseline. Existing ancestors remain project-bound and non-symlinked, permission errors still abort the query, and target inspection never enumerates a directory tree.
|
|
119
|
+
|
|
120
|
+
### Evidence and limits
|
|
121
|
+
|
|
122
|
+
- Red/green probes reproduce the lost continuation requirement and ENOENT new-file failure. The combined Hook/MCP regression completes two assignments with real child-process artifact tests, preserves open write obligations through supplementary input, and rejects the first assignment's test as proof for the second write.
|
|
123
|
+
- Negative probes cover scope drift, completed receipts, concurrent prompts, source bytes, parent replacement, permission failure and actual process exit during continuation followed by lock-lease recovery. Synthetic unknown events/schemas remain unchanged and unaccepted; no external event semantics or live compatibility are inferred.
|
|
124
|
+
- Native Codex/PowerShell result-envelope diagnosis, installation registration, loaded-reader compatibility and structured MCP closure remain separate pending work. No live configuration, session or CodexLink state is changed.
|
|
125
|
+
|
|
126
|
+
## [0.72.2] - 2026-09-04
|
|
127
|
+
|
|
128
|
+
### Fixed
|
|
129
|
+
|
|
130
|
+
- Every new host prompt now starts a durable assignment identifier and its own requirement, briefing receipt, knowledge receipt and premortem. Later tool events, restart and compaction resolve the same active assignment; another prompt cannot reuse a completed delivery's receipts.
|
|
131
|
+
- A contradictory premortem registration is rejected into a separate integrity-sealed receipt before the valid lane is changed. The first registration, closure and goal outcome remain usable instead of becoming permanently conflicted.
|
|
132
|
+
- The new MCP and CLI recovery path creates a fresh assignment-bound requirement for a preserved legacy 0.72 conflict. It links predecessor and replacement while retaining the original conflict, registration, audit history and source bytes.
|
|
133
|
+
|
|
134
|
+
### Security and tests
|
|
135
|
+
|
|
136
|
+
- Assignment lookup is bound to host, session, project and any established entity, group or task. Foreign or inactive assignment IDs, replayed old prompts and scope drift are denied without granting permissions.
|
|
137
|
+
- Real Hook/MCP/CLI tests cover assignment A completion, assignment B isolation, conflicting registration, correction, successful B completion, parallel prompts, replay, foreign scope, restart, compaction and idempotent legacy recovery.
|
|
138
|
+
|
|
139
|
+
## [0.72.1] - 2026-09-04
|
|
140
|
+
|
|
141
|
+
### Fixed
|
|
142
|
+
|
|
143
|
+
- MCP session briefing and delivery knowledge queries now resolve the same bounded native sources as hooks. Each knowledge query shares one catalog across every contract read and its nested briefing, instead of scanning the directory tree once per contract plus once for the briefing.
|
|
144
|
+
- Home-root and host-profile exclusions remain effective through the MCP path. Generic hosts use bounded project sources without borrowing another provider's profile. MCP resolve/read calls use the same bounded source selection.
|
|
145
|
+
- Caller-supplied internal catalogs, source registries, environments and alternate state roots are rejected. Requirement-bound briefing scope is checked before source discovery. Incomplete required discovery issues no successful preflight receipt and can be retried without resetting state.
|
|
146
|
+
- Contract reads verify the selected source's digest and file identity using bounded handle reads; changed, replaced, deleted and symlinked sources yield no content.
|
|
147
|
+
|
|
148
|
+
### Evidence and limits
|
|
149
|
+
|
|
150
|
+
- Synthetic real-protocol Before/After: six contracts caused seven directory enumerations before this change and one afterward. Home-cwd probes for Codex, Claude and generic mode perform zero reads or enumeration in the unrelated home subtree and preserve source bytes.
|
|
151
|
+
- This is a repository-level MCP repair, not proof of native tool discovery in any installed host. The reported manifest mismatch, registration-conflict recovery and real F79 outcome remain separate open work.
|
|
152
|
+
|
|
153
|
+
## [0.72.0] - 2026-09-04
|
|
154
|
+
|
|
155
|
+
### Changed
|
|
156
|
+
|
|
157
|
+
- Split the 6,923-line outcome-bound learning runtime into 24 cohesive schema, state, evidence, evaluation, validation, measurement, delivery, outcome, reconciliation, context, and diagnostic modules behind the unchanged 34-export compatibility surface.
|
|
158
|
+
- Split the 4,250-line learning regression suite into a shared synthetic fixture and 12 independently bounded behavioral suites. Every resulting production and test file is below 500 physical lines, and both legacy line-budget exceptions are removed.
|
|
159
|
+
|
|
160
|
+
### Security
|
|
161
|
+
|
|
162
|
+
- Stored schemas, immutable evidence and revocation lineages, evaluator-root independence, trial deadlines, Canary admission, blocking-defect precedence, group isolation, atomic locks, and context-only authority retain byte-equivalent implementations.
|
|
163
|
+
- The refactor introduces no new permissions, delegation, external effects, or model-derived evidence and does not modify user-owned sources.
|
|
164
|
+
|
|
165
|
+
### Tests
|
|
166
|
+
|
|
167
|
+
- Exact declaration-body, public-export, and test-name parity checks prove the mechanical Before/After boundary before the full learning, hook, audit, install, upgrade, package, and hermetic suites execute.
|
|
168
|
+
- All 50 existing learning scenarios remain intact, including concurrency, restart, corrupt-state, legacy v10-v29 upgrade, revocation, rollback, source-byte preservation, and CLI workflows.
|
|
169
|
+
|
|
170
|
+
## [0.71.0] - 2026-09-04
|
|
171
|
+
|
|
172
|
+
### Added
|
|
173
|
+
|
|
174
|
+
- A durable provider-neutral world model stores immutable provenance-bound assertions about world, user, relationship, team, and project subjects outside user-owned files.
|
|
175
|
+
- Session briefing now carries unexpired, non-conflicting measured or explicitly user-confirmed facts and separately exposes model proposals, stale evidence, and contradictions as uncertainty.
|
|
176
|
+
|
|
177
|
+
### Security
|
|
178
|
+
|
|
179
|
+
- Model output can never become an established fact or supersede one. A contradictory measured value removes the predicate from facts until a new established assertion explicitly supersedes the conflict.
|
|
180
|
+
- Exact project, group, and private scopes are enforced. Authority-shaped predicates and nested values, future observations, reused IDs, altered value digests, invalid state, and oversized values fail closed.
|
|
181
|
+
- Owned locks, atomic replacement, bounded state, and idempotent receipts preserve concurrent updates, crash recovery, and byte-exact user sources.
|
|
182
|
+
|
|
183
|
+
### Tests
|
|
184
|
+
|
|
185
|
+
- Synthetic scenarios cover persistence across restart-style reads, briefing integration, measured/user/model evidence separation, expiry, conflict and resolution, group isolation, private context, concurrency, idempotency, tamper rejection, MCP portability, and source-byte preservation.
|
|
186
|
+
- The documented Before/After boundary is observable: `0.70.0` had no world-model tools or briefing section; `0.71.0` resolves the complete synthetic context set while withholding every unsafe or uncertain assertion.
|
|
187
|
+
|
|
188
|
+
## [0.70.0] - 2026-09-04
|
|
189
|
+
|
|
190
|
+
### Changed
|
|
191
|
+
|
|
192
|
+
- Split the 911-line rights-bound self-starter into core-state, workspace, owner-policy, job-lifecycle and leased-effect domains behind the unchanged 18-export public interface.
|
|
193
|
+
- Every self-starter production and test file is below 500 physical lines; the legacy budget exception is gone.
|
|
194
|
+
- The package gate now bounds both the packed archive at 512 KiB and the unpacked tree at 2.25 MiB, retaining a finite release boundary after the module split.
|
|
195
|
+
|
|
196
|
+
### Security
|
|
197
|
+
|
|
198
|
+
- Execution grants, task and group binding, finite capabilities, workspace fingerprints, leases, effect checkpoints, crash recovery and context-only authority keep their existing fail-closed behavior.
|
|
199
|
+
|
|
200
|
+
### Tests
|
|
201
|
+
|
|
202
|
+
- Added exact public-surface ownership coverage alongside all existing self-starter lifecycle, concurrency, tamper, retry, restart and byte-preservation scenarios.
|
|
203
|
+
|
|
204
|
+
## [0.69.0] - 2026-09-04
|
|
205
|
+
|
|
206
|
+
### Changed
|
|
207
|
+
|
|
208
|
+
- Split the 1,488-line CLI into seven domains while preserving all 114 commands and behavior.
|
|
209
|
+
- Every CLI file is below 500 lines; its legacy budget exception is gone.
|
|
210
|
+
|
|
211
|
+
### Tests
|
|
212
|
+
|
|
213
|
+
- Added exact command-ownership coverage alongside 98 existing CLI invocations.
|
|
214
|
+
|
|
215
|
+
## [0.68.0] - 2026-09-04
|
|
216
|
+
|
|
217
|
+
### Changed
|
|
218
|
+
|
|
219
|
+
- The 1,485-line gateway runtime is decomposed into bounded contract, execution, state, control, run-lifecycle, delivery and inspection modules. The original import path remains a compatibility surface with the same 25 public exports.
|
|
220
|
+
- The 1,325-line gateway regression suite is split by channel delivery, plans, exploration, strategy transfer, continuity, host lifecycle, adapters and security. Every resulting production and test file stays below 500 physical lines.
|
|
221
|
+
- Gateway runtime and test files no longer use legacy line-budget exceptions; future growth is enforced by the ordinary 500-line gate.
|
|
222
|
+
|
|
223
|
+
### Tests
|
|
224
|
+
|
|
225
|
+
- Before/After checks compare the exact public export manifest and preserve all 56 executed gateway behaviors, including team handoff, resource serialization, objective outcomes, bounded exploration, upgrade, lock ownership, atomic pair commits and crash recovery.
|
|
226
|
+
- Both hermetic profiles, visible Acceptance, Audit, Fresh Install, Upgrade, host, package and release checks cover the decomposed modules.
|
|
227
|
+
|
|
228
|
+
## [0.67.0] - 2026-09-04
|
|
229
|
+
|
|
230
|
+
### Added
|
|
231
|
+
|
|
232
|
+
- Writing deliveries now require three real, ordered AgentSpine MCP calls before their first mutation: the current session briefing, a bounded knowledge query over affected target fingerprints, contracts and recent errors, and the existing three-item premortem registration.
|
|
233
|
+
- Each call writes a context-only, integrity-sealed receipt bound to the exact hook requirement, host session and active goal step. The hook verifies the same receipt chain before writing and completion.
|
|
234
|
+
|
|
235
|
+
### Fixed
|
|
236
|
+
|
|
237
|
+
- Catalog discovery now skips and audits unreadable or vanished directory entries with the same traversal-error policy as host source discovery, so catalog-backed MCP tools continue past protected Windows folders without changing their permissions.
|
|
238
|
+
|
|
239
|
+
### Security
|
|
240
|
+
|
|
241
|
+
- A verified missing briefing or knowledge call blocks with the exact missing stage. Text claims, receipts from another session or goal step, conflicting calls and consumed receipts cannot satisfy the gate or grant permissions.
|
|
242
|
+
- Read-only work remains unrestricted. Parser, scanner and filesystem uncertainty remains audited and fail-open; exact missing, conflicting, late, finalized or reused evidence remains fail-closed.
|
|
243
|
+
- A completed non-goal delivery can begin a fresh three-call cycle in the same host session, but cannot reuse the prior receipts. Goal-step finalization remains terminal.
|
|
244
|
+
|
|
245
|
+
### Tests
|
|
246
|
+
|
|
247
|
+
- A synthetic permission-denied catalog fixture verifies fail-open discovery, the allow audit, source byte preservation and the corresponding failing mutant.
|
|
248
|
+
- Before/After regressions exercise real MCP calls and prove missing-stage denial, successful three-stage admission, foreign-session and foreign-step isolation, text-claim rejection, single-use receipts, concurrent deduplication, crash-safe state integrity, bounded verification latency and source-byte preservation.
|
|
249
|
+
- Full hook, goal-race, restart, compact-context, Acceptance, Fresh Install, Upgrade, package and cross-platform release paths use the new contract.
|
|
250
|
+
|
|
251
|
+
## [0.66.1] - 2026-09-04
|
|
252
|
+
|
|
253
|
+
### Fixed
|
|
254
|
+
|
|
255
|
+
- Hermetic test workers now have a bounded per-file deadline and terminate the complete descendant process tree on Windows, macOS and Linux. A leaked child can no longer hold every matrix job silently until GitHub's six-hour limit.
|
|
256
|
+
- MCP subprocess tests now close stdin and await the server's confirmed exit, removing the unjoined pipe lifecycle that held the Windows matrix open after assertions had passed.
|
|
257
|
+
- MCP subprocesses are explicitly closed before Windows removes their fixtures, preventing `EBUSY` cleanup failures and ensuring test teardown cannot retain a runner.
|
|
258
|
+
- Every test file reports `START` immediately and a terminal `PASS`, `FAIL` or `TIMEOUT` line. CI therefore identifies the exact blocked file while retaining the prior isolated empty/populated profiles and four-worker concurrency.
|
|
259
|
+
- The CI matrix has an independent 20-minute outer deadline. The per-file limit can be adjusted from 1 to 900 seconds with `AGENTSPINE_TEST_FILE_TIMEOUT_MS`; its default is three minutes.
|
|
260
|
+
- The intentional 50,000-file offline stress probe has its own five-minute ceiling, while ordinary test files keep the three-minute deadline and explicit environment overrides remain authoritative.
|
|
261
|
+
- Repository text is checked out with LF on every host, so npm's 2 MiB unpacked-size safety boundary has the same byte meaning on Windows, macOS and Linux instead of growing through CRLF conversion.
|
|
262
|
+
|
|
263
|
+
### Tests
|
|
264
|
+
|
|
265
|
+
- A synthetic never-ending parent and descendant prove the runner returns code 124 within the bound and leaves neither process alive; a successful child proves normal output and completion semantics remain intact.
|
|
266
|
+
- The premortem conflict race now uses the hook's deterministic post-intent fence rather than filesystem scheduling, and the release contract asserts the cross-platform LF policy.
|
|
267
|
+
|
|
268
|
+
## [0.66.0] - 2026-09-03
|
|
269
|
+
|
|
270
|
+
### Added
|
|
271
|
+
|
|
272
|
+
- Before the first write-class mutation in a session, including `Write`, `Edit`, `apply_patch` and recognized common shell-mediated mutations, and separately for each active goal-plan step, the hook now requires exactly three context-only premortem statements: baseline/environment, contract/tests and delivery path, each paired with one concrete check.
|
|
273
|
+
- The MCP registration receipt derives immutable check IDs, binds the premortem to the exact session and step, and stores it in isolated AgentSpine state. Closed goal work carries the premortem text, digest and three check results in a separate checkpoint and outcome receipt without changing the caller-owned checkpoint.
|
|
274
|
+
|
|
275
|
+
### Security
|
|
276
|
+
|
|
277
|
+
- A verified missing, late or conflicting premortem blocks direct mutations and recognized common shell-mediated mutations at the first attempted write. After the existing post-write test gate, `Stop` and `SubagentStop` block a written delivery until all three original checks are reported as passed against the exact artifact digest and latest observed mutation digest; any later mutation invalidates the earlier closure.
|
|
278
|
+
- Durable `PreToolUse` mutation intents keep oversized `PostToolUse` payloads from being mistaken for read-only work. Ambiguous Codex test output is not accepted as success: the hook requires structured success evidence or a parser-bound terminal success marker and returns the portable proof command when evidence is missing.
|
|
279
|
+
- Delivery verification follows an exact authenticated queue attempt across host-session restarts and is otherwise session-bound. Host `Stop` events that omit `turn_id` still resolve the preceding session writes instead of opening a false read-only lane.
|
|
280
|
+
- Read-only sessions remain unrestricted. Parser, filesystem and local-state uncertainty is audited and fails open; premortem records are context only and cannot grant identity, permissions, tools or policy exceptions. Durable goal receipts retain only session and binding digests, not raw session identifiers.
|
|
281
|
+
- Project-scan truncation changes context completeness only. Protected-source, policy, identity, permission, execution-grant, aggregate-byte and mandatory-source violations keep their existing fail-closed behavior.
|
|
282
|
+
- Waiting-job pauses are scoped to the current stop event and cannot become reusable completion bypasses. Shell mutation detection unwraps bounded `sudo`, `env`, `command`, `builtin` and `exec` prefixes, and goal completion recovers verified state files whose index write was interrupted.
|
|
283
|
+
- Once an external host runner has been invoked, any thrown or invalid outcome is recorded as ambiguous and blocks its queue item and bound goal for owner review rather than replaying a possibly completed effect.
|
|
284
|
+
- A host-effect (including legacy unknown-effect) lease cannot complete until the exact durable `markGatewayHostStarted` marker exists. Leased lanes must also match the queue lease's worker, claim time and expiry exactly; an orphaned or stale generation is a failed-closed runtime finding.
|
|
285
|
+
- Recovering a stale premortem scope lock now writes a durable fenced finalization before any read-only conclusion. A delayed writer cannot turn that recovered scope into a clean completion.
|
|
286
|
+
|
|
287
|
+
### Changed
|
|
288
|
+
|
|
289
|
+
- MCP dispatch moved into bounded runtime modules, reducing `src/mcp.js` below 500 physical lines and removing its legacy line-budget exception. Existing tools and wire semantics remain unchanged while the new `record_delivery_premortem` tool registers the context-only artifact.
|
|
290
|
+
- The Codex plugin manifest now selects `hooks/codex.json` explicitly, preventing Codex's default plugin discovery from loading the Claude-specific bundle. Installed-package checks exercise Codex with both documented compatibility root variables and retain its strict top-level blocking protocol.
|
|
291
|
+
- Optional project Markdown discovery now retains at most 240 files and stops at its directory-entry or time budget. Required host instructions keep priority; excess files are deterministically skipped with a visible, audited incomplete-context warning instead of disabling every tool in a large workspace.
|
|
292
|
+
- Goal-runtime policy changes now use an ownership-fenced, digest-bound paired transaction, and host execution records an exact lease before invoking an external runner. Restart recovery rolls a prepared pair forward once and treats a crash after the external effect as ambiguous instead of replaying it.
|
|
293
|
+
|
|
294
|
+
### Tests
|
|
295
|
+
|
|
296
|
+
- Before/After tests cover a write without a premortem, a correctly registered and closed delivery, late registration, a read-only session, session and gateway-attempt isolation, closure invalidation after later writes, goal-step receipt binding, concurrency, conflicting registration, tamper visibility and source byte preservation.
|
|
297
|
+
- Availability and crash tests cover 241 project Markdown files, more than 8,192 flat directory entries, deadline truncation, native-source priority, visible hook warnings, stale lock ownership, torn policy/runtime commits and a hard process exit after one external effect.
|
|
298
|
+
- Adversarial regressions cover a stale pause marker, option-bearing shell wrappers, a state/index crash gap and a caught host error after one observable effect.
|
|
299
|
+
- Gateway and premortem race regressions prove that an unmarked host-effect completion is rejected, a mismatched lane generation is visible to audit, and stale scope-lock recovery remains blocked before and after a delayed writer resumes.
|
|
300
|
+
|
|
301
|
+
## [0.65.0] - 2026-09-03
|
|
302
|
+
|
|
303
|
+
### Changed
|
|
304
|
+
|
|
305
|
+
- The PostToolUse undeclared-call guard now compares canonical identifier-name sets before and after a JavaScript write. Existing undeclared calls remain visible as exact `file:line: name` warnings but do not block unrelated work; only names introduced by the current write block.
|
|
306
|
+
- PreToolUse records a bounded, tool-delivery-bound snapshot outside the project. PostToolUse prefers explicit original edit content, then the exact snapshot, then the last audited state. New files have an empty previous set, and removing findings is accepted.
|
|
307
|
+
|
|
308
|
+
### Security
|
|
309
|
+
|
|
310
|
+
- Parser, file and local state uncertainty remains fail-open and auditable. A denial requires a verified new undeclared name; stored comparison state is diagnostic only and grants no permissions, identity, tools or policy exceptions.
|
|
311
|
+
|
|
312
|
+
### Tests
|
|
313
|
+
|
|
314
|
+
- Before/After tests prove that an unchanged pre-existing finding passes with a warning, adding one new undeclared name blocks and names only that addition, removing a finding passes, and an undeclared call in a brand-new file blocks.
|
|
315
|
+
|
|
316
|
+
## [0.64.0] - 2026-09-03
|
|
317
|
+
|
|
318
|
+
### Changed
|
|
319
|
+
|
|
320
|
+
- The host hook lifecycle is split into bounded context/lifecycle and source-protection modules. The installed entrypoint, public runtime exports, payload schemas, event ordering and persisted state formats remain unchanged.
|
|
321
|
+
- `src/hook.js` is reduced from 865 to fewer than 500 physical lines, and its legacy line-budget exception is removed. Each new module is independently subject to the ordinary 500-line ceiling.
|
|
322
|
+
- `PreToolUse` verifies an explicitly stated assignment baseline against `.blun-snapshot-stand.json` before direct writes. `PostToolUse` reports undeclared JavaScript calls with exact file and line locations, including support for a bounded project allowlist. `Stop` and `SubagentStop` verify explicitly claimed exchange artifacts and digest prefixes after the existing test-evidence gate.
|
|
323
|
+
|
|
324
|
+
### Security
|
|
325
|
+
|
|
326
|
+
- Filesystem and parser uncertainty in the new guards is audited and fails open. Only a verified baseline mismatch, undeclared call, missing claimed artifact or mismatching claimed digest blocks; protected-source mutations, delivery verification, self-starter authorization, pre-answer recall and learning gates remain fail closed.
|
|
327
|
+
|
|
328
|
+
### Tests
|
|
329
|
+
|
|
330
|
+
- Before/After tests prove that a baseline mismatch blocks while a prefix match passes, an undeclared call is reported while a multi-line variable declaration is accepted, and a missing claimed artifact blocks while a matching digest prefix passes. The complete hook suite verifies installed Claude and Codex entrypoints, bounded overflow, protected writes and shell mutations, ordinary writes and reads, and generic-host preflight after the split.
|
|
331
|
+
|
|
332
|
+
## [0.63.0] - 2026-09-03
|
|
333
|
+
|
|
334
|
+
### Added
|
|
335
|
+
|
|
336
|
+
- `Stop` and `SubagentStop` now require a successful `node --test`, `npm test`, `npm run check`, or `pytest` command after the latest observed write before accepting a completed delivery. The verification lane survives restart and remains bound to the exact task when available.
|
|
337
|
+
|
|
338
|
+
### Changed
|
|
339
|
+
|
|
340
|
+
- Reaching the bounded limit of 16 self-help requirements, research resolutions, or knowledge gaps now blocks the exact plan step for local review instead of throwing and terminating the worker tick.
|
|
341
|
+
- Hook output formatting moved to a focused module, reducing the oversized hook lifecycle file without changing its public exports or host payloads.
|
|
342
|
+
|
|
343
|
+
### Security
|
|
344
|
+
|
|
345
|
+
- Test evidence is outcome-bound and rejects failed commands, test-before-write ordering, conflicting tool delivery IDs, tampered state, shell pipelines, failure-masking operators, and commands that merely print a test name. Read-only tools do not invalidate a valid post-write test.
|
|
346
|
+
- Active jobs paused as waiting remain resumable and do not masquerade as completed deliveries. Corrupt verification state blocks completion cleanly without modifying user sources.
|
|
347
|
+
|
|
348
|
+
### Tests
|
|
349
|
+
|
|
350
|
+
- Synthetic Before/After coverage proves an untested write changes from accepted to blocked, six concurrent duplicate reports converge, restart preserves task verification, and a seventeenth full self-help cycle becomes a durable blocker without killing the worker.
|
|
351
|
+
|
|
352
|
+
## [0.62.0] - 2026-09-03
|
|
353
|
+
|
|
354
|
+
### Added
|
|
355
|
+
|
|
356
|
+
- Bounded repository-first self-help can now escalate an unresolved conflict between two independent public primary sources into exactly one durable owner decision. The report binds both conflicting SHA-256 digests, one question, a reason and 2-8 distinct options.
|
|
357
|
+
- The owner-input gap survives restart and resumes the exact plan step once through the existing locally confirmed clarification path.
|
|
358
|
+
|
|
359
|
+
### Security
|
|
360
|
+
|
|
361
|
+
- Escalation is rejected unless repository evidence was exhausted first and two fresh conflicting sources come from different public HTTPS origins. Missing digests, duplicate options, altered bindings and forged persisted reports fail closed.
|
|
362
|
+
- External material, options and answers remain context only; they cannot grant identity, tools, permissions, delegation or policy exceptions. Foreign project groups receive no goal context.
|
|
363
|
+
|
|
364
|
+
### Tests
|
|
365
|
+
|
|
366
|
+
- A synthetic Before/After scenario proves that the prior forced-answer dead end becomes one evidence-bound decision, six concurrent identical answers converge on one continuation, torn-write recovery restores one wake, and source Markdown remains byte-exact.
|
|
367
|
+
|
|
368
|
+
## [0.61.0] - 2026-09-03
|
|
369
|
+
|
|
370
|
+
### Added
|
|
371
|
+
|
|
372
|
+
- Objective goal-plan knowledge gaps now create one digest-bound repository-first self-help requirement instead of immediately asking the user. The exact pending question and reason are injected into the next provider-neutral work item and survive restart reconciliation.
|
|
373
|
+
- Successful bounded research resolves the matching requirement and continues the same plan. Genuine owner decisions retain the existing one-question, locally confirmed clarification path.
|
|
374
|
+
|
|
375
|
+
### Security
|
|
376
|
+
|
|
377
|
+
- A host cannot bypass required self-help by repeating the objective question, changing it, or relabeling it as owner input. These regressions block the exact step and are recorded without exposing another project group.
|
|
378
|
+
- Requirement identity, plan binding, request queue, timestamp and content are integrity-bound. External material remains untrusted context and cannot grant rights, tools, identity or policy exceptions.
|
|
379
|
+
|
|
380
|
+
### Changed
|
|
381
|
+
|
|
382
|
+
- Goal knowledge transitions moved behind a focused 101-line module. The oversized gateway runtime shrank from 1,569 to 1,520 physical lines, and its reduced line budget is now enforced.
|
|
383
|
+
|
|
384
|
+
## [0.60.0] - 2026-09-03
|
|
385
|
+
|
|
386
|
+
### Added
|
|
387
|
+
|
|
388
|
+
- Goal-plan workers now receive a provider-neutral self-help contract. They inspect repository evidence first and, when that evidence is insufficient, triangulate at least two independent public HTTPS primary sources before returning an objective answer instead of immediately asking the user.
|
|
389
|
+
- Successful self-help stores only bounded provenance metadata, SHA-256 digests and a conclusion. The resolved knowledge gap and its continuation survive restart and compaction without retaining external source content.
|
|
390
|
+
- A line-budget check caps every new JavaScript production or test file at 500 physical lines and prevents every known legacy oversized file from growing beyond its recorded reduced baseline.
|
|
391
|
+
|
|
392
|
+
### Security
|
|
393
|
+
|
|
394
|
+
- External evidence is permanently marked untrusted and cannot grant identity, permissions, tools, delegation, production access or policy exceptions. Private/local URLs, credentials, stale or future observations, reordered research, missing commit/license/version provenance and forged digests fail closed.
|
|
395
|
+
- Repository-only resolution is permitted only when the repository evidence is explicitly sufficient. Otherwise two different public origins are mandatory; one-source confirmation cannot resolve the gap.
|
|
396
|
+
|
|
397
|
+
### Changed
|
|
398
|
+
|
|
399
|
+
- Knowledge-evidence validation moved out of the oversized gateway runtime into a 261-line focused module. The gateway runtime shrank from 1,623 to 1,569 physical lines while retaining its public schemas and compatibility with older stored plans.
|
|
400
|
+
|
|
401
|
+
## [0.59.1] - 2026-09-03
|
|
402
|
+
|
|
403
|
+
### Fixed
|
|
404
|
+
|
|
405
|
+
- Raw `EPERM` and `EACCES` directory-enumeration failures, plus scanner-tagged incomplete traversals, now fail open for every native hook event. In particular, `PostToolUse`, `Stop`, and `SubagentStop` return successfully instead of terminating the host lifecycle with exit code 2.
|
|
406
|
+
- Every fail-open hook scan records the actual event, phase, error code, and affected path in the local audit log. Policy, identity, grant, scope, and protected-source violations remain fail closed.
|
|
407
|
+
- When the console starts at the exact configured Claude, Codex, or BLUN profile root, project-source discovery and self-starter fingerprinting no longer recurse through the profile tree. Nested project roots remain bounded and fully enforced.
|
|
408
|
+
|
|
409
|
+
### Tests
|
|
410
|
+
|
|
411
|
+
- The unprivileged Windows lane creates a real ACL-denied directory with `icacls` and verifies direct and installed-entrypoint `PostToolUse` and `Stop` success, audit evidence, skipped traversal, and unchanged source bytes. The macOS lane repeats the denial with mode `000`.
|
|
412
|
+
|
|
413
|
+
## [0.59.0] - 2026-09-03
|
|
414
|
+
|
|
415
|
+
### Added
|
|
416
|
+
|
|
417
|
+
- Owner-confirmed execution decisions can precommit two to four bounded attempts. After an objectively measured, non-blocking failure, the worker continues with exactly one remaining sufficient strategy from the same minimum-risk class.
|
|
418
|
+
- Every host request receives a content-free execution-attempt contract containing the frozen strategy, attempt number, budget, decision digest and previous outcome digest. Scoped gateway context exposes only the current agent's pending attempt.
|
|
419
|
+
|
|
420
|
+
### Security
|
|
421
|
+
|
|
422
|
+
- Exploration never enters a higher-risk strategy class, never grants a tool or permission, and never starts from missing, malformed, future-dated or reused evidence. A blocking defect stops immediately regardless of its numeric score.
|
|
423
|
+
- Attempt order, budget and outcome lineage are covered by immutable digests. Cross-group context, altered orders and duplicate source evidence fail closed.
|
|
424
|
+
|
|
425
|
+
### Changed
|
|
426
|
+
|
|
427
|
+
- A valid non-blocking objective failure can advance one frozen alternative atomically instead of always pausing for owner retry. Budget exhaustion still blocks the exact step and requires a new goal ID; restart reconciliation recreates one lost continuation without duplicating an attempt.
|
|
428
|
+
|
|
429
|
+
## [0.58.0] - 2026-09-03
|
|
430
|
+
|
|
431
|
+
### Added
|
|
432
|
+
|
|
433
|
+
- Owner-confirmed execution decisions can declare a bounded transfer key and evidence lifetime. Two independent successful goals with distinct objective source digests make the exact strategy reusable by a new matching task in the same project and group.
|
|
434
|
+
- Every applied transfer freezes a content-free proof lineage containing only source goal, step and outcome IDs, completion times and SHA-256 digests.
|
|
435
|
+
|
|
436
|
+
### Security
|
|
437
|
+
|
|
438
|
+
- Transfer never leaves the lowest-risk sufficient strategy class, never crosses project or group scope, and never grants a tool or permission. Stale evidence, mismatched evaluator contracts and fabricated proof lineages are rejected.
|
|
439
|
+
- One matching failed outcome or blocking defect overrides all prior successes and withdraws the strategy from future tasks; no average score can keep it active.
|
|
440
|
+
|
|
441
|
+
### Changed
|
|
442
|
+
|
|
443
|
+
- Strategy selection prefers an eligible proven strategy over a cheaper unproven alternative only when their declared risk is equal. The ordinary deterministic risk/cost/ID order remains the fallback after expiry or regression.
|
|
444
|
+
|
|
445
|
+
## [0.57.0] - 2026-09-03
|
|
446
|
+
|
|
447
|
+
### Added
|
|
448
|
+
|
|
449
|
+
- Owner-confirmed plan steps can precommit required capability classes, two to eight candidate strategies, bounded risk and cost, and an objective metric gate. The lowest-risk sufficient strategy is selected deterministically before host execution.
|
|
450
|
+
- Completed execution reports retain content-free, SHA-256-bound objective outcomes with the exact selected strategy, used capability classes, evaluator, metric, case count and blocking-defect result.
|
|
451
|
+
|
|
452
|
+
### Security
|
|
453
|
+
|
|
454
|
+
- Capability classes and strategy selection are context only and never grant a host tool or permission. Strategy, evaluator, metric and threshold drift fail closed, and scoped gateway context does not expose another agent's plan.
|
|
455
|
+
- A model or runner completion claim without the exact objective evidence blocks the step. No favorable aggregate can overrule a blocking defect.
|
|
456
|
+
|
|
457
|
+
### Changed
|
|
458
|
+
|
|
459
|
+
- Failed objective gates pause the exact step for owner-confirmed retry. Restart reconciliation recreates one lost wake, while a passing gate advances the dependency plan exactly once.
|
|
460
|
+
|
|
461
|
+
## [0.56.0] - 2026-09-03
|
|
462
|
+
|
|
463
|
+
### Added
|
|
464
|
+
|
|
465
|
+
- Goal-plan steps can bind up to 16 immutable shared-resource IDs. Conflicting work is serialized within the exact project and group, while independent resources and foreign groups continue concurrently.
|
|
466
|
+
- Scoped gateway context exposes content-free resource waits only to the affected agent, including the blocking queue IDs needed to explain why a ready step has not started.
|
|
467
|
+
|
|
468
|
+
### Security
|
|
469
|
+
|
|
470
|
+
- Resource definitions are covered by the plan digest and remain context-only: they cannot grant tools, identity, delegation or policy exceptions. Definition tampering fails closed, and equal resource names never cross a group boundary.
|
|
471
|
+
|
|
472
|
+
### Changed
|
|
473
|
+
|
|
474
|
+
- Competing ready steps are ordered by the current owner-confirmed goal priority rather than mutable queue priority. Normal completion and existing crash-recovery lease expiry release the resource deterministically.
|
|
475
|
+
|
|
476
|
+
## [0.55.0] - 2026-09-03
|
|
477
|
+
|
|
478
|
+
### Added
|
|
479
|
+
|
|
480
|
+
- Goal-plan steps can be immutably assigned to different authenticated agent personas, enabling provider-neutral Codex-to-Claude-to-Codex handoffs across one dependency graph.
|
|
481
|
+
- Each assignee receives the exact current step, checkpoint and context through its own authenticated host/profile binding; scoped gateway context includes a shared plan for every assigned teammate.
|
|
482
|
+
|
|
483
|
+
### Security
|
|
484
|
+
|
|
485
|
+
- Every step assignee must already be active in the lead agent's authenticated tenant and exact project group. The assignment digest, queue, claim and completion all bind the same persona; cross-group and manipulated handoffs fail closed.
|
|
486
|
+
- If a step assignee leaves, reconciliation cancels runnable work and pauses the exact step before host execution. Rejoining still requires the existing local owner-confirmed resume path and never grants tools or authority.
|
|
487
|
+
|
|
488
|
+
### Changed
|
|
489
|
+
|
|
490
|
+
- Torn-write recovery recreates exactly one wake for the current step's assignee, per-agent lanes serialize concurrent workers, and historical single-agent plans retain lead-agent routing without migration.
|
|
491
|
+
|
|
492
|
+
## [0.54.0] - 2026-09-03
|
|
493
|
+
|
|
494
|
+
### Added
|
|
495
|
+
|
|
496
|
+
- Goal-plan workers can stop the exact current step on a bounded knowledge gap, expose one durable clarification, and resume with the resolved context after restart.
|
|
497
|
+
- `goal-clarify` binds the answer to the exact goal, step, immutable plan definition and original request; owner input remains distinct from an objective observation with a required SHA-256 source digest.
|
|
498
|
+
|
|
499
|
+
### Security
|
|
500
|
+
|
|
501
|
+
- Knowledge-gap questions and answers are context-only and reject secrets plus authority-shaped content. Conflicting resolutions, weak provenance, duplicate questions, cross-agent context reads and state manipulation fail closed.
|
|
502
|
+
|
|
503
|
+
### Changed
|
|
504
|
+
|
|
505
|
+
- Six concurrent identical resolutions converge on one answer and one runnable continuation; reconciliation leaves an open question paused instead of generating repeated wakes.
|
|
506
|
+
|
|
507
|
+
## [0.53.0] - 2026-09-02
|
|
508
|
+
|
|
509
|
+
### Added
|
|
510
|
+
|
|
511
|
+
- Owner-confirmed focused goals can carry a bounded, immutable dependency graph with 1-32 objective steps, per-step success criteria, checkpoints and explicit current-step binding.
|
|
512
|
+
- The durable worker advances only the exact leased step, opens the next dependency-ready step deterministically, reconstructs one missing runnable step after a torn policy/runtime write, and requires renewed owner confirmation to resume a blocked step.
|
|
513
|
+
|
|
514
|
+
### Security
|
|
515
|
+
|
|
516
|
+
- Cycles, unknown dependencies, definition-digest drift and stale-step completion fail closed. Six concurrent workers still lease exactly one step, while goal plans remain context-only and cannot create tools, rights, delegation or policy exceptions.
|
|
517
|
+
|
|
518
|
+
### Changed
|
|
519
|
+
|
|
520
|
+
- `goal-assign` accepts `--plan plan.json`; existing flat goals and historical queue records remain compatible.
|
|
521
|
+
|
|
522
|
+
## [0.52.1] - 2026-09-02
|
|
523
|
+
|
|
524
|
+
### Fixed
|
|
525
|
+
|
|
526
|
+
- Bounded source and workspace-fingerprint walkers skip inaccessible or disappearing directories and entries and report deterministic diagnostics.
|
|
527
|
+
- Edit, Write, apply_patch, Bash, and exec_command remain allowed when source or self-starter filesystem scanning fails; a best-effort local audit record retains the error and path.
|
|
528
|
+
- Real Windows `icacls` and unprivileged POSIX permission probes verify the two walkers, hook decision, audit record, and source-byte preservation.
|
|
529
|
+
|
|
530
|
+
## [0.52.0] - 2026-09-02
|
|
531
|
+
|
|
532
|
+
### Added
|
|
533
|
+
|
|
534
|
+
- New initial evaluation v28 and bounded retry v29 contracts atomically register content-free, exact-scope candidate-evidence lineage receipts and bind their digest into candidate admission v4.
|
|
535
|
+
|
|
536
|
+
### Changed
|
|
537
|
+
|
|
538
|
+
- A locally attested user-feedback or objective-test anchor is single-use for experiment admission within its exact scope. Its lineage tombstone survives ordinary candidate deletion and subject purge; historical v1-v27 evaluations remain readable.
|
|
539
|
+
|
|
540
|
+
### Security
|
|
541
|
+
|
|
542
|
+
- Six candidates racing with the same evidence produce one contract, while the other five fail closed. Evidence-digest or independence-digest replay, exact-ID recreation after deletion, and re-signed lineage manipulation fail closed after restart; foreign scopes remain independent and receive zero matching diagnostics, and user-owned sources remain byte-for-byte unchanged.
|
|
543
|
+
|
|
544
|
+
## [0.51.0] - 2026-09-02
|
|
545
|
+
|
|
546
|
+
### Added
|
|
547
|
+
|
|
548
|
+
- `learn-evidence-source-attestation-revoke` records one immutable, content-free local revocation for an exact evidence-source attestation and its evaluation, candidate-admission, target and scope digests.
|
|
549
|
+
|
|
550
|
+
### Changed
|
|
551
|
+
|
|
552
|
+
- Revoking a mistaken local source confirmation immediately withholds its active or validated lesson, blocks measurements, projections, deliveries, outcomes and revalidation, and causes the next locked evaluation pass to roll back the complete dependent lineage while restoring a safe predecessor.
|
|
553
|
+
|
|
554
|
+
### Security
|
|
555
|
+
|
|
556
|
+
- Explicit local confirmation is mandatory. Six concurrent identical withdrawals converge on one receipt; conflicting replay and re-signed binding manipulation fail closed after restart, foreign scopes receive zero counts or diagnostics, reasons remain digest-only, and user-owned sources remain byte-for-byte unchanged.
|
|
557
|
+
|
|
558
|
+
## [0.50.0] - 2026-09-02
|
|
559
|
+
|
|
560
|
+
### Added
|
|
561
|
+
|
|
562
|
+
- New initial evaluation v26 and bounded retry v27 contracts embed content-free, locally confirmed source attestations for the exact qualifying evidence cohort.
|
|
563
|
+
|
|
564
|
+
### Changed
|
|
565
|
+
|
|
566
|
+
- `user-statement` and `test` labels no longer qualify by themselves. Evaluation registration now requires `--confirm-local-evidence-sources`, and the admission binds each qualifying digest to either explicit user feedback or an objective test without storing source content or evidence IDs.
|
|
567
|
+
|
|
568
|
+
### Security
|
|
569
|
+
|
|
570
|
+
- Missing confirmation leaves zero contracts. Re-signed source-class manipulation fails closed after restart, six parallel confirmed registrations converge on one contract, foreign scopes receive zero diagnostics, and historical v1-v25 evaluations remain readable.
|
|
571
|
+
|
|
572
|
+
## [0.49.0] - 2026-09-02
|
|
573
|
+
|
|
574
|
+
### Added
|
|
575
|
+
|
|
576
|
+
- New initial evaluation v24 and bounded retry v25 contracts embed a content-free, digested `agentspine.learning-evidence-source-policy/v1`. It freezes an admission quorum requiring at least one fresh independent explicit-user or objective-test anchor before measurement.
|
|
577
|
+
|
|
578
|
+
### Changed
|
|
579
|
+
|
|
580
|
+
- Interaction-only and document-only evidence cohorts can no longer open a behavior evaluation contract, even when their confidence and independent-evidence counts pass. Historical v1-v23 contracts remain readable, and retry comparison v4 binds the same source policy across corrective trials.
|
|
581
|
+
|
|
582
|
+
### Security
|
|
583
|
+
|
|
584
|
+
- Re-signed source-class or quorum weakening fails closed after restart. Six concurrent eligible registrations still converge on one contract, exact-scope diagnostics expose only matching counts and a policy digest, foreign groups receive zero, and user-owned sources remain byte-for-byte unchanged.
|
|
585
|
+
|
|
586
|
+
## [0.48.0] - 2026-09-02
|
|
587
|
+
|
|
588
|
+
### Added
|
|
589
|
+
|
|
590
|
+
- New initial evaluation v22 and bounded retry v23 contracts embed a content-free, digested `agentspine.learning-blocking-defect-policy/v1`. It freezes the covered phases, any-defect aggregation rule, pre-Canary rejection and post-Canary rollback before a measurement exists.
|
|
591
|
+
|
|
592
|
+
### Changed
|
|
593
|
+
|
|
594
|
+
- One eligible baseline receipt with a blocking defect now prevents Canary admission even when every numeric score and the cohort average would otherwise pass. Existing after-Canary and revalidation rollback behavior remains unchanged, and historical v1-v21 contracts remain readable.
|
|
595
|
+
|
|
596
|
+
### Security
|
|
597
|
+
|
|
598
|
+
- Re-signed phase, aggregation or action manipulation fails closed after restart. A favorable replay cannot replace the precommitted defective evaluator slot, exact-scope diagnostics expose only matching counts and the policy digest, foreign groups receive zero, and user-owned sources remain byte-for-byte unchanged.
|
|
599
|
+
|
|
600
|
+
## [0.47.0] - 2026-09-02
|
|
601
|
+
|
|
602
|
+
### Added
|
|
603
|
+
|
|
604
|
+
- New initial evaluation v20 and bounded retry v21 contracts embed `agentspine.learning-candidate-admission/v2`. Its content-free evidence cohort freezes one digest, independence digest, evidence class and observation time per fresh candidate proof together with a digested maximum-age policy.
|
|
605
|
+
|
|
606
|
+
### Changed
|
|
607
|
+
|
|
608
|
+
- Candidate admission now evaluates confidence and independence only across evidence observed within the contract's frozen age window. Stale evidence is excluded, future-dated evidence rejects registration, and later configuration changes cannot shorten or widen an existing cohort. Historical v1-v19 contracts remain readable.
|
|
609
|
+
|
|
610
|
+
### Security
|
|
611
|
+
|
|
612
|
+
- Re-signed cohort, timestamp, independence and policy manipulation fails closed after restart. Six concurrent registrations still converge on one contract, scoped CLI and Context MCP diagnostics expose only matching counts and digests, foreign groups receive zero, and user-owned sources remain byte-for-byte unchanged.
|
|
613
|
+
|
|
614
|
+
## [0.46.0] - 2026-09-02
|
|
615
|
+
|
|
616
|
+
### Added
|
|
617
|
+
|
|
618
|
+
- New initial evaluation v18 and bounded retry v19 contracts embed a content-free, digested `agentspine.learning-candidate-admission/v1` receipt. It binds the exact candidate target and scope, frozen confidence and evidence gates, observed confidence, distinct evidence count and admission time before measurement.
|
|
619
|
+
|
|
620
|
+
### Changed
|
|
621
|
+
|
|
622
|
+
- Behavior evaluation registration now rejects candidates that have not already met both frozen gates. At least two distinct evidence items are required even if mutable configuration is lower; failed admission creates no evaluation contract or measurement lineage. Historical v1-v17 contracts remain readable.
|
|
623
|
+
|
|
624
|
+
### Security
|
|
625
|
+
|
|
626
|
+
- Re-signed admission-count, target, scope or gate manipulation fails closed after restart. Parallel admission is idempotent, exact-scope diagnostics expose only a content-free matching count and digest, foreign groups receive zero, and user-owned sources remain byte-for-byte unchanged.
|
|
627
|
+
|
|
628
|
+
## [0.45.0] - 2026-09-02
|
|
629
|
+
|
|
630
|
+
### Added
|
|
631
|
+
|
|
632
|
+
- New initial evaluation v16 and bounded retry v17 contracts freeze the candidate `minConfidence` and `minEvidence` gates before any benchmark outcome is admitted. Scoped status, Doctor, audit and read-only Context MCP diagnostics expose only content-free matching counts and digests.
|
|
633
|
+
|
|
634
|
+
### Changed
|
|
635
|
+
|
|
636
|
+
- Automatic behavior promotion and retry-state validation use the contract's frozen candidate gates. Later `learn-config` changes apply only to future contracts; historical v1-v15 contracts remain readable with their original behavior.
|
|
637
|
+
|
|
638
|
+
### Security
|
|
639
|
+
|
|
640
|
+
- Lowering mutable confidence or evidence requirements cannot admit a previously ineligible candidate, while raising them cannot invalidate or prolong an already registered experiment. Threshold tampering fails closed, foreign scopes receive zero diagnostics, and user-owned sources remain byte-for-byte unchanged.
|
|
641
|
+
|
|
642
|
+
## [0.44.0] - 2026-09-02
|
|
643
|
+
|
|
644
|
+
### Changed
|
|
645
|
+
|
|
646
|
+
- Scoped `learn-status` and read-only `learning_outcome_status` now derive every top-level evaluator, binding, lease, retry, exhaustion, staleness and revocation aggregate from the candidate records visible to that exact scope. Unscoped Doctor and audit remain project-wide.
|
|
647
|
+
|
|
648
|
+
### Security
|
|
649
|
+
|
|
650
|
+
- A foreign group or project can no longer infer whether another scope has registered or revoked evaluator roots, evaluation bindings, validation leases, retry contracts, terminal exhaustion, or any proof-revocation class. Exact-scope records, claims, identifiers and user-source bytes remain unchanged.
|
|
651
|
+
|
|
652
|
+
## [0.43.0] - 2026-09-02
|
|
653
|
+
|
|
654
|
+
### Added
|
|
655
|
+
|
|
656
|
+
- New initial experiments use `agentspine.learning-evaluation/v14`; bounded retries use v15. Both embed a content-free, digested `agentspine.learning-staleness-policy/v1` that fixes outcome age and Canary lifetime before any result is admitted.
|
|
657
|
+
- Scoped status, Doctor and audit report staleness-bound contract counts and policy digests without exposing claims, evidence, benchmark content or identities.
|
|
658
|
+
|
|
659
|
+
### Changed
|
|
660
|
+
|
|
661
|
+
- Outcome freshness, initial Canary expiry, validation renewal and revalidation now use the immutable contract policy. Later `learn-config` changes apply only to future contracts.
|
|
662
|
+
- A v15 retry comparison includes the frozen staleness-policy digest, so a corrective attempt cannot widen its evidence window or Canary lifetime. Historical v1-v13 contracts remain readable.
|
|
663
|
+
|
|
664
|
+
### Security
|
|
665
|
+
|
|
666
|
+
- Widening mutable configuration can no longer resurrect stale Before/After evidence or extend an already registered experiment. Policy tampering fails closed on reload, foreign groups receive neither counts nor digests, and user-owned sources remain byte-for-byte unchanged.
|
|
667
|
+
|
|
668
|
+
## [0.42.0] - 2026-09-02
|
|
669
|
+
|
|
670
|
+
### Added
|
|
671
|
+
|
|
672
|
+
- Learning mutations use an owner-bound `agentspine.owned-file-lock/v1` lease with a renewable heartbeat and a final ownership assertion before state replacement.
|
|
673
|
+
- A real six-process race test holds the leading mutation beyond a shortened stale threshold, recovers a synthetic crash remnant and preserves a deliberately substituted foreign lease.
|
|
674
|
+
|
|
675
|
+
### Changed
|
|
676
|
+
|
|
677
|
+
- Stale learning-lock takeover now rechecks file identity before removal. Successful cleanup deletes only the exact token still owned by the completing process.
|
|
678
|
+
|
|
679
|
+
### Security
|
|
680
|
+
|
|
681
|
+
- A long evaluation can no longer be mistaken for a crashed writer and overwritten. Lost or manipulated ownership aborts before state commit; the former owner cannot delete its successor's lock, and user sources remain byte-for-byte unchanged.
|
|
682
|
+
|
|
683
|
+
## [0.41.0] - 2026-09-02
|
|
684
|
+
|
|
685
|
+
### Added
|
|
686
|
+
|
|
687
|
+
- A content-free `agentspine.learning-trial-retry-exhaustion/v1` receipt binds the failed corrective Canary to its root evaluation, exact corrective contract, terminal failure, target, scope and fixed attempt 2-of-2 budget.
|
|
688
|
+
- Scoped status, Doctor and audit expose terminal exhaustion counts and state without disclosing claims, evidence, benchmark content or revocation reasons.
|
|
689
|
+
|
|
690
|
+
### Changed
|
|
691
|
+
|
|
692
|
+
- The second failed Canary now records retry exhaustion atomically with rollback. Revoking that timeout leaves the terminal receipt intact and still requires a genuinely new learning lineage.
|
|
693
|
+
|
|
694
|
+
### Security
|
|
695
|
+
|
|
696
|
+
- Parallel reconciliation creates exactly one terminal receipt. Root, contract, failure, target, scope and attempt substitution fail closed after restart; foreign groups receive neither the receipt nor its count; subject purge removes the complete lineage atomically.
|
|
697
|
+
|
|
698
|
+
## [0.40.0] - 2026-09-02
|
|
699
|
+
|
|
700
|
+
### Added
|
|
701
|
+
|
|
702
|
+
- Claude Code, Codex and BLUN mark only their optional PostToolUse registration as a silent-oversize lane.
|
|
703
|
+
- The installed-entrypoint test sends a synthetic 70 KiB image result and proves exit 0, empty stdout, empty stderr, byte-preserved sources and zero partial runtime state.
|
|
704
|
+
|
|
705
|
+
### Changed
|
|
706
|
+
|
|
707
|
+
- Oversized PostToolUse results are drained and skipped before JSON parsing, so image reads no longer produce a red lifecycle-hook error.
|
|
708
|
+
|
|
709
|
+
### Security
|
|
710
|
+
|
|
711
|
+
- The 64 KiB fail-closed limit remains unchanged for UserPromptSubmit, PreToolUse, session, compaction and completion hooks. Calling the adapter without the PostToolUse-only marker still exits 2 on the same oversized payload.
|
|
712
|
+
|
|
713
|
+
## [0.39.0] - 2026-09-02
|
|
714
|
+
|
|
715
|
+
### Added
|
|
716
|
+
|
|
717
|
+
- `agentspine.learning-evaluation/v13` embeds `agentspine.learning-trial-retry/v3`, freezing the corrective Canary as attempt 2 of 2 and binding it to the exact root evaluation and comparison contract.
|
|
718
|
+
- Scoped status, Doctor and audit distinguish bounded retry contracts without exposing lesson, evidence, benchmark or revocation content.
|
|
719
|
+
|
|
720
|
+
### Changed
|
|
721
|
+
|
|
722
|
+
- A locally revoked false timeout can admit one fresh comparable corrective trial. A failed corrective trial remains terminal even if its timeout is later revoked; continuing requires a genuinely new learning lineage instead of repeated selection.
|
|
723
|
+
|
|
724
|
+
### Security
|
|
725
|
+
|
|
726
|
+
- Third-attempt admission, concurrent budget races, rewritten attempt counters and root redirection fail closed. Historical v11 and v12 retry contracts remain readable.
|
|
727
|
+
|
|
728
|
+
## [0.38.0] - 2026-09-02
|
|
729
|
+
|
|
730
|
+
### Added
|
|
731
|
+
|
|
732
|
+
- `agentspine.learning-evaluation/v12` embeds `agentspine.learning-trial-retry/v2`, binding each retry to the exact objective comparison contract of its failed predecessor.
|
|
733
|
+
- Scoped status and Doctor distinguish comparison-bound retry contracts without exposing claims, benchmark content, evidence or revocation reasons; audit validates the complete comparison lineage.
|
|
734
|
+
|
|
735
|
+
### Changed
|
|
736
|
+
|
|
737
|
+
- A retry must preserve the predecessor metric, benchmark digests and case floor, evaluator identities and roots, pairing rules, and promotion thresholds. A corrected completion timeout remains possible without moving the measurement goalposts.
|
|
738
|
+
|
|
739
|
+
### Security
|
|
740
|
+
|
|
741
|
+
- Dataset, protocol, metric, threshold and evaluator drift after a revoked timeout fail closed. Digest redirection, concurrent duplicate admission, cross-group diagnostics and delete/replay windows remain blocked.
|
|
742
|
+
|
|
743
|
+
## [0.37.0] - 2026-09-02
|
|
744
|
+
|
|
745
|
+
### Added
|
|
746
|
+
|
|
747
|
+
- `agentspine.learning-evaluation/v11` embeds a content-free retry admission that binds a new candidate and contract to one exact locally revoked initial-trial failure.
|
|
748
|
+
- CLI, Doctor and scoped status expose retry-bound evaluation counts without exposing claims, evidence or revocation reasons; audit validates the complete retry lineage.
|
|
749
|
+
|
|
750
|
+
### Changed
|
|
751
|
+
|
|
752
|
+
- Repeating the same failed behavior and scope now requires the latest matching revocation, explicit local retry confirmation, a distinct candidate, evidence observed after revocation and a new evaluation contract.
|
|
753
|
+
- Retry admission retains the original failed Canary as terminal and keeps the safe predecessor active until the new independent experiment succeeds.
|
|
754
|
+
|
|
755
|
+
### Security
|
|
756
|
+
|
|
757
|
+
- Reused or stale evidence, an older revocation, redirected target or scope, concurrent duplicate admission, cross-group diagnostics and predecessor deletion with a live dependent retry fail closed.
|
|
758
|
+
|
|
759
|
+
## [0.36.0] - 2026-09-02
|
|
760
|
+
|
|
761
|
+
### Added
|
|
762
|
+
|
|
763
|
+
- A locally confirmed `agentspine.learning-trial-failure-revocation/v1` receipt withdraws one exact false initial-trial timeout while binding its contract, evaluator registry, application, target and scope.
|
|
764
|
+
- `learn-trial-failure-revoke` plus Doctor, audit, scoped status and read-only Context MCP diagnostics expose the content-free withdrawal state.
|
|
765
|
+
|
|
766
|
+
### Changed
|
|
767
|
+
|
|
768
|
+
- Invalid timeout proof no longer remains indistinguishable from a genuine blocking defect. Its explanation is retained only as a digest, while the original failure receipt and all underlying evidence remain immutable.
|
|
769
|
+
- Revocation never resurrects the rolled-back Canary or reuses its expired cohort. A retry requires a fresh candidate and evaluation contract, and the restored safe predecessor remains active.
|
|
770
|
+
|
|
771
|
+
### Security
|
|
772
|
+
|
|
773
|
+
- Missing local confirmation, redirected failure, contract, application, target, scope or evaluator bindings, conflicting replay and cross-group diagnostics fail closed. Six concurrent identical requests create one receipt.
|
|
774
|
+
|
|
775
|
+
## [0.35.0] - 2026-09-02
|
|
776
|
+
|
|
777
|
+
### Added
|
|
778
|
+
|
|
779
|
+
- A locally confirmed `agentspine.learning-validation-revocation/v1` receipt binds one exact validation lease to its candidate target, scope, evaluation and immutable evaluator-registry binding while retaining the explanation only as a digest.
|
|
780
|
+
- `learn-validation-revoke` plus scoped status, Doctor, audit and read-only Context MCP diagnostics expose content-free validation-withdrawal state.
|
|
781
|
+
|
|
782
|
+
### Changed
|
|
783
|
+
|
|
784
|
+
- Revoking an invalid validation decision immediately withholds its dependent lesson and atomically restores a safe superseded predecessor without changing the underlying evaluation, measurements or outcomes.
|
|
785
|
+
- Renewal cannot hide an invalid predecessor: revocation traverses the active lease's immutable predecessor chain, and revoked validation cannot accept later projections, deliveries, renewal measurements or another renewal.
|
|
786
|
+
|
|
787
|
+
### Security
|
|
788
|
+
|
|
789
|
+
- Validation withdrawal is fail-closed: candidate, target, scope, lease, contract and evaluator-binding substitution fail on load; six concurrent retries create one receipt; conflicting retries are rejected; and foreign scopes receive no diagnostics.
|
|
790
|
+
|
|
791
|
+
## [0.34.0] - 2026-09-02
|
|
792
|
+
|
|
793
|
+
### Added
|
|
794
|
+
|
|
795
|
+
- A locally confirmed `agentspine.learning-evaluation-revocation/v1` receipt binds one exact evaluation contract to its candidate target and immutable evaluator-registry binding while retaining the explanation only as a digest.
|
|
796
|
+
- `learn-evaluation-revoke` plus scoped status, Doctor, audit and read-only Context MCP diagnostics expose content-free contract-withdrawal state.
|
|
797
|
+
|
|
798
|
+
### Changed
|
|
799
|
+
|
|
800
|
+
- Revoking an invalid benchmark, protocol, scope or threshold contract immediately withholds every dependent active or validated lesson and atomically restores a safe superseded predecessor.
|
|
801
|
+
- Revoked contracts cannot accept measurements, projections, deliveries, outcomes, promotion or validation renewal. Their existing immutable evidence is not rewritten or over-revoked.
|
|
802
|
+
|
|
803
|
+
### Security
|
|
804
|
+
|
|
805
|
+
- Contract withdrawal is fail-closed: candidate, target, contract and evaluator-binding substitution fail on load; six concurrent retries create one receipt; conflicting retries are rejected; and foreign scopes receive no diagnostics.
|
|
806
|
+
|
|
807
|
+
## [0.33.0] - 2026-09-02
|
|
808
|
+
|
|
809
|
+
### Added
|
|
810
|
+
|
|
811
|
+
- A locally confirmed `agentspine.learning-application-revocation/v1` receipt binds one exact projected turn to its evaluation, candidate target, application and optional delivery and outcome digests without retaining the explanation in plaintext.
|
|
812
|
+
- `learn-application-revoke` plus scoped status, Doctor, audit and read-only Context MCP diagnostics expose only content-free revocation state.
|
|
813
|
+
|
|
814
|
+
### Changed
|
|
815
|
+
|
|
816
|
+
- Revoking an invalid preflight, scope or projection binding immediately withholds every dependent active or validated lesson. Evaluation then rolls it back atomically and restores a safe superseded predecessor.
|
|
817
|
+
- A revoked projection cannot produce a delivery, measurement, outcome, promotion or validation renewal. Existing delivery, measurement and outcome receipts remain immutable and unrevoked. Legacy state upgrades with an empty application-revocation ledger; candidate deletion and subject purge remove matching receipts.
|
|
818
|
+
|
|
819
|
+
### Security
|
|
820
|
+
|
|
821
|
+
- Projection withdrawal is fail-closed: candidate, contract, target, application, delivery and outcome substitution fail on load; six concurrent retries create one receipt; conflicting retries and replacement of revoked cohort admissions are rejected; and foreign scopes receive no diagnostics.
|
|
822
|
+
|
|
823
|
+
## [0.32.0] - 2026-09-02
|
|
824
|
+
|
|
825
|
+
### Added
|
|
826
|
+
|
|
827
|
+
- A locally confirmed `agentspine.learning-outcome-revocation/v1` receipt binds one exact measured result to its evaluation, target, measurement, application and delivery digests without retaining the explanation in plaintext.
|
|
828
|
+
- `learn-outcome-revoke` plus scoped status, Doctor, audit and read-only Context MCP diagnostics expose only content-free revocation state.
|
|
829
|
+
|
|
830
|
+
### Changed
|
|
831
|
+
|
|
832
|
+
- Revoking an invalid outcome immediately withholds every dependent active or validated lesson and traverses renewed validation leases back through their immutable predecessor chain. Evaluation then rolls the lesson back atomically and restores a safe superseded predecessor.
|
|
833
|
+
- The underlying immutable measurement remains retained and unrevoked. Legacy state upgrades with an empty outcome-revocation ledger; candidate deletion and subject purge remove matching receipts.
|
|
834
|
+
|
|
835
|
+
### Security
|
|
836
|
+
|
|
837
|
+
- Outcome withdrawal is fail-closed: candidate, contract, outcome, measurement, application and delivery substitution fail on load; six concurrent retries create one receipt; revoked outcomes cannot be replayed; and foreign scopes receive no diagnostics.
|
|
838
|
+
|
|
839
|
+
## [0.31.0] - 2026-09-01
|
|
840
|
+
|
|
841
|
+
### Added
|
|
842
|
+
|
|
843
|
+
- A locally confirmed `agentspine.learning-delivery-revocation/v1` receipt binds one exact model-turn delivery to its evaluation contract, candidate target, application and any consumed outcome without retaining the explanation in plaintext.
|
|
844
|
+
- `learn-delivery-revoke` plus scoped status, Doctor, audit and read-only Context MCP diagnostics expose only content-free revocation state.
|
|
845
|
+
|
|
846
|
+
### Changed
|
|
847
|
+
|
|
848
|
+
- Revoking an invalid `Stop` or delivery proof immediately withholds any dependent active or validated lesson from the next exact-scope context pass. Evaluation then rolls it back atomically and restores a safe superseded predecessor.
|
|
849
|
+
- Revoked deliveries cannot support a new measurement, outcome, promotion or validation renewal. Legacy state upgrades with an empty delivery-revocation ledger; candidate deletion and subject purge remove matching receipts.
|
|
850
|
+
|
|
851
|
+
### Security
|
|
852
|
+
|
|
853
|
+
- Delivery withdrawal is fail-closed: candidate, contract, application, delivery and outcome substitution fail on load; six concurrent retries create one immutable receipt; foreign groups receive no diagnostics; and a later favorable turn cannot replace the revoked proof.
|
|
854
|
+
|
|
855
|
+
## [0.30.0] - 2026-09-01
|
|
856
|
+
|
|
857
|
+
### Added
|
|
858
|
+
|
|
859
|
+
- A locally confirmed `agentspine.learning-measurement-revocation/v1` receipt binds the exact measurement, evaluation contract, candidate target and consumed outcome digests without retaining the revocation explanation in plaintext.
|
|
860
|
+
- `learn-measurement-revoke` plus scoped status, Doctor, audit and read-only Context MCP diagnostics expose only content-free revocation state.
|
|
861
|
+
|
|
862
|
+
### Changed
|
|
863
|
+
|
|
864
|
+
- Revoking measurement evidence immediately withholds an affected active or validated Canary from the next exact-scope context pass. Evaluation then rolls it back atomically and restores a safe superseded predecessor.
|
|
865
|
+
- Revoked measurements cannot be consumed, reused for promotion or validation renewal, or removed by stale-measurement cleanup. Legacy state upgrades with an empty measurement-revocation ledger; candidate deletion and subject purge remove matching receipts.
|
|
866
|
+
|
|
867
|
+
### Security
|
|
868
|
+
|
|
869
|
+
- Measurement withdrawal is fail-closed: candidate, contract, measurement and outcome substitution fail on load; concurrent retries create one immutable receipt; foreign groups receive no diagnostics; and no later result or favorable average can replace the revoked evidence.
|
|
870
|
+
|
|
871
|
+
## [0.29.0] - 2026-09-01
|
|
872
|
+
|
|
873
|
+
### Added
|
|
874
|
+
|
|
875
|
+
- A locally confirmed `agentspine.learning-evidence-revocation/v1` receipt binds an exact evidence item, its SHA-256 digest and the frozen candidate target without retaining the revocation explanation in plaintext.
|
|
876
|
+
- `learn-evidence-revoke` provides a local-only CLI path; scoped status, Doctor and read-only Context MCP diagnostics report revocation counts and withheld lessons.
|
|
877
|
+
|
|
878
|
+
### Changed
|
|
879
|
+
|
|
880
|
+
- Revoked evidence immediately removes an accepted lesson from the next matching context pass. Evaluation then rolls it back atomically, restores a safe superseded predecessor and prevents the frozen candidate from being reviewed or promoted again.
|
|
881
|
+
- Legacy learning state upgrades with an empty revocation ledger. Candidate deletion and subject purge remove matching receipts, while diagnostics remain isolated from foreign groups.
|
|
882
|
+
|
|
883
|
+
### Security
|
|
884
|
+
|
|
885
|
+
- Evidence withdrawal is fail-closed: IDs cannot be redirected to another evidence item or candidate revision, concurrent retries create one receipt, state tampering fails on load, and no later average or replacement observation can rehabilitate the revoked target.
|
|
886
|
+
|
|
887
|
+
## [0.28.0] - 2026-09-01
|
|
888
|
+
|
|
889
|
+
### Added
|
|
890
|
+
|
|
891
|
+
- `agentspine.learning-evaluation/v10` freezes a content-free completion policy for each initial Before/After experiment, including the delivery and outcome deadlines and the blocking classification of either omission.
|
|
892
|
+
- `agentspine.learning-application/v7` carries the exact policy digest and outcome deadline into every admitted Canary turn; a missed deadline produces one immutable `agentspine.learning-trial-failure/v1` receipt.
|
|
893
|
+
|
|
894
|
+
### Changed
|
|
895
|
+
|
|
896
|
+
- A missing model-stop delivery or measured outcome now suppresses the Canary from context immediately and causes one atomic rollback. Late or backdated measurements cannot repair the failed trial, while evaluation v1-v9 and application v1-v6 state remains readable.
|
|
897
|
+
- Status, Doctor and audit distinguish deadline-bound contracts, pending and stale initial outcomes, and delivery- versus outcome-timeout receipts without exposing lesson, prompt, response or evaluator content.
|
|
898
|
+
|
|
899
|
+
### Security
|
|
900
|
+
|
|
901
|
+
- Crashes, withheld `Stop` events and deliberately unmeasured first turns can no longer remain pending indefinitely or be replaced by a later favorable result. No aggregate score can override the resulting blocking defect.
|
|
902
|
+
|
|
903
|
+
## [0.27.0] - 2026-09-01
|
|
904
|
+
|
|
905
|
+
### Added
|
|
906
|
+
|
|
907
|
+
- `agentspine.learning-evaluation/v9` freezes a content-free digest of the exact candidate claim, evidence set, confidence, scope, privacy and review boundary that the trial is intended to prove.
|
|
908
|
+
- `agentspine.learning-application/v6` carries that same target digest into each admitted initial Canary turn; status, Doctor and audit expose target-bound contract and application counts without exposing lesson text.
|
|
909
|
+
|
|
910
|
+
### Changed
|
|
911
|
+
|
|
912
|
+
- Evidence cannot be appended after an active v9 evaluation exists; changed guidance requires a separately deduplicated superseding candidate and a new contract.
|
|
913
|
+
- Evaluation v1-v8 and application v1-v5 state remains readable, including the precommitted initial cohorts introduced by 0.26.
|
|
914
|
+
|
|
915
|
+
### Security
|
|
916
|
+
|
|
917
|
+
- Candidate, contract, Canary and admitted-turn substitution now fail closed on every state load. A result measured for one evidence-backed lesson revision cannot promote or validate altered guidance under the same learning ID.
|
|
918
|
+
|
|
919
|
+
## [0.26.0] - 2026-09-01
|
|
920
|
+
|
|
921
|
+
### Added
|
|
922
|
+
|
|
923
|
+
- `agentspine.learning-evaluation/v8` precommits the complete initial Before/After trial cohort: phase, evaluator ID, principal root, provider run ID, frozen benchmark digest and exact case count are fixed before results exist.
|
|
924
|
+
- `agentspine.learning-application/v5` atomically admits the first exact-scope Canary projections into those frozen After slots before delivery or scoring.
|
|
925
|
+
|
|
926
|
+
### Changed
|
|
927
|
+
|
|
928
|
+
- Measurement, outcome, validation-lease, status, Doctor and audit checks bind the first experiment to its trial and admission cohort; evaluation v1-v7 and application v1-v4 state remains readable.
|
|
929
|
+
- Stale cleanup retains incomplete initial admissions as evidence while continuing to purge ordinary expired projection residue.
|
|
930
|
+
|
|
931
|
+
### Security
|
|
932
|
+
|
|
933
|
+
- A favorable baseline or Canary rerun cannot replace its precommitted provider run, and a later successful turn cannot hide a failed, crashed or withheld first admitted turn. Run, root, case-count, admission, delivery and digest substitution fail closed.
|
|
934
|
+
|
|
935
|
+
## [0.25.0] - 2026-09-01
|
|
936
|
+
|
|
937
|
+
### Added
|
|
938
|
+
|
|
939
|
+
- `agentspine.learning-revalidation-window/v4` precommits a content-free measurement trial for every renewal slot: evaluator ID, principal root, provider run ID, frozen benchmark digest and exact case count are fixed before projection.
|
|
940
|
+
- `agentspine.learning-application/v4` admissions and `agentspine.learning-validation/v5` leases retain the exact trial, application, delivery and measurement lineage that extended the evidence lease.
|
|
941
|
+
|
|
942
|
+
### Changed
|
|
943
|
+
|
|
944
|
+
- New renewal windows select `first-admitted-trials`; status and Doctor distinguish precommitted trials, admitted applications and completed deliveries.
|
|
945
|
+
- Revalidation-window v1-v3, application v1-v3 and validation-lease v1-v4 history remains readable.
|
|
946
|
+
|
|
947
|
+
### Security
|
|
948
|
+
|
|
949
|
+
- A failed evaluator run cannot be discarded and repeated under a later high-scoring run ID. Run substitution, evaluator aliasing, case-count drift, trial tampering, omission and replay fail closed while blocking defects still override every aggregate score.
|
|
950
|
+
|
|
951
|
+
## [0.24.0] - 2026-09-01
|
|
952
|
+
|
|
953
|
+
### Added
|
|
954
|
+
|
|
955
|
+
- Immutable `agentspine.learning-application/v3` receipts atomically admit the first exact-scope revalidation projections into frozen evaluator-root slots before model completion is known.
|
|
956
|
+
- Content-free `agentspine.learning-validation/v4` leases bind every admitted application and its matching completed-turn delivery to the renewed evidence proof.
|
|
957
|
+
|
|
958
|
+
### Changed
|
|
959
|
+
|
|
960
|
+
- New `agentspine.learning-revalidation-window/v3` windows select `first-admitted-turns`; later projections remain normal context evidence but cannot replace an admitted cohort slot.
|
|
961
|
+
- Doctor and learning status distinguish admitted applications from completed deliveries. Revalidation-window v1/v2, application v1/v2 and validation-lease v1-v3 history remains readable.
|
|
962
|
+
|
|
963
|
+
### Security
|
|
964
|
+
|
|
965
|
+
- Withholding `Stop`, crashing, delaying or purging a bad admitted turn cannot remove it from renewal. An incomplete admitted slot remains visible and blocks evidence extension; admission-order, slot, root, application and delivery tampering fails closed.
|
|
966
|
+
|
|
967
|
+
## [0.23.0] - 2026-09-01
|
|
968
|
+
|
|
969
|
+
### Added
|
|
970
|
+
|
|
971
|
+
- Immutable `agentspine.learning-revalidation-window/v2` receipts precommit every renewal to the first completed exact-scope turns and assign the frozen evaluator roots to deterministic turn slots before results exist.
|
|
972
|
+
- Content-free `agentspine.learning-validation/v3` leases retain the window digest, ordered delivery digests and evaluator-root assignments that proved the renewed lesson.
|
|
973
|
+
|
|
974
|
+
### Changed
|
|
975
|
+
|
|
976
|
+
- Learning status and Doctor report fixed-cohort selection, required and completed renewal deliveries, and selection-bound validation leases.
|
|
977
|
+
- Existing revalidation-window v1 and validation-lease v1/v2 history remains readable; new renewal windows use the stricter fixed-cohort contract.
|
|
978
|
+
|
|
979
|
+
### Security
|
|
980
|
+
|
|
981
|
+
- A later high-scoring turn can no longer replace an earlier completed renewal turn, and evaluator roots cannot be reassigned between turns after their results are visible. Missing, reordered, tampered or selectively omitted cohort evidence fails closed.
|
|
982
|
+
|
|
983
|
+
## [0.22.0] - 2026-09-01
|
|
984
|
+
|
|
985
|
+
### Added
|
|
986
|
+
|
|
987
|
+
- Explicit local revalidation windows let a current validated behavior lesson collect fresh, root-paired measurements from distinct completed model turns before its evidence expires.
|
|
988
|
+
- Immutable, content-free `agentspine.learning-validation/v2` leases bind the prior lease, frozen baseline cohort, fresh measurement, application and delivery digests, measured improvement and extended expiry.
|
|
989
|
+
|
|
990
|
+
### Changed
|
|
991
|
+
|
|
992
|
+
- The native hook records turn applications for explicitly revalidating lessons without exposing measurement administration through MCP or widening the lesson's exact scope.
|
|
993
|
+
- Status and Doctor diagnostics expose renewed leases and active revalidation windows; consumed renewal measurements cannot be purged or replayed.
|
|
994
|
+
|
|
995
|
+
### Security
|
|
996
|
+
|
|
997
|
+
- Revalidation cannot extend a timestamp by assertion. It requires the original contract and evaluator registry binding, fresh independent roots, distinct delivered turns, unchanged measurement kind and case coverage, and frozen improvement thresholds. Any blocking defect or paired regression rolls back atomically.
|
|
998
|
+
|
|
999
|
+
## [0.21.0] - 2026-09-01
|
|
1000
|
+
|
|
1001
|
+
### Added
|
|
1002
|
+
|
|
1003
|
+
- Immutable, content-free `agentspine.learning-validation/v1` leases bind each validated behavior lesson to the exact evaluation, evaluator-registry binding, scope, metric, before/after outcome digests, measured improvement and evidence expiry.
|
|
1004
|
+
- Status, Doctor and audit diagnostics distinguish current, stale, revoked and unproven validated lessons.
|
|
1005
|
+
|
|
1006
|
+
### Changed
|
|
1007
|
+
|
|
1008
|
+
- Evaluation expiry and evaluator-root revocation now remove affected validated lessons from preflight context before the next model turn, not only active Canaries. Reconciliation rolls them back atomically and restores any superseded lesson.
|
|
1009
|
+
- Evaluation v1-v6 history remains readable; new v7 validations require a current evidence lease.
|
|
1010
|
+
- Windows lock metadata access races are retried with the same bounded policy as lock creation, preventing transient `EPERM`, `EACCES` or `EBUSY` failures during parallel learning turns.
|
|
1011
|
+
|
|
1012
|
+
### Security
|
|
1013
|
+
|
|
1014
|
+
- A forged `validated` status, missing or altered lease, stale evidence, changed registry binding or revoked evaluator root fails closed. Validation leases contain only stable IDs, digests, scope, metric and timestamps; no prompt, answer, dataset, evaluator or user content.
|
|
1015
|
+
|
|
1016
|
+
## [0.20.0] - 2026-09-01
|
|
1017
|
+
|
|
1018
|
+
### Added
|
|
1019
|
+
|
|
1020
|
+
- A separate content-free evaluator registry requires explicit local confirmation before a principal root can enter a new learning experiment. Immutable `agentspine.learning-evaluator-binding/v1` receipts bind evaluation v7 to the exact active registry records.
|
|
1021
|
+
- CLI registration and revocation plus status, Doctor and audit diagnostics expose active and revoked roots, binding counts and inactive contracts without storing evaluator content.
|
|
1022
|
+
|
|
1023
|
+
### Changed
|
|
1024
|
+
|
|
1025
|
+
- New evaluations resolve their roots from the local registry instead of trusting IDs or digests supplied only with the evaluation command. Evaluation v1-v6 history remains readable.
|
|
1026
|
+
- Revoking a bound root removes an affected active Canary from preflight context immediately and causes the next evaluation pass to roll it back.
|
|
1027
|
+
|
|
1028
|
+
### Security
|
|
1029
|
+
|
|
1030
|
+
- Unconfirmed roots, duplicate principal aliases, replaced records, missing bindings and post-revocation measurements or outcomes fail closed. Registry records remain context-only and cannot create identity, rights, credentials, tools, delegation or policy exceptions.
|
|
1031
|
+
|
|
1032
|
+
## [0.19.0] - 2026-09-01
|
|
1033
|
+
|
|
1034
|
+
### Added
|
|
1035
|
+
|
|
1036
|
+
- Immutable `agentspine.learning-evaluation/v6` contracts bind every evaluator ID to one distinct, locally attested SHA-256 principal root. New `agentspine.learning-measurement/v2`, measurement-lineage v2 and outcome v9 receipts carry that root without storing evaluator identity content.
|
|
1037
|
+
- CLI evaluation registration requires `--evaluator-roots id=sha256,...`; status, Doctor and audit expose root-bound receipts and independent root counts.
|
|
1038
|
+
|
|
1039
|
+
### Changed
|
|
1040
|
+
|
|
1041
|
+
- Evaluator independence and before/after pairing now use frozen principal roots. Evaluation v1-v5, measurement and lineage v1, and outcome v1-v8 history remains readable.
|
|
1042
|
+
|
|
1043
|
+
### Security
|
|
1044
|
+
|
|
1045
|
+
- Two evaluator aliases for the same attested principal can no longer satisfy independence, replay one external run, or create a second paired vote. Duplicate roots, root/run replay, root drift and digest-valid contract/measurement mismatches fail closed.
|
|
1046
|
+
|
|
1047
|
+
## [0.18.0] - 2026-09-01
|
|
1048
|
+
|
|
1049
|
+
### Added
|
|
1050
|
+
|
|
1051
|
+
- Immutable `agentspine.learning-evaluation/v5` contracts freeze same-evaluator pairing and one counted outcome per evaluator and phase; `agentspine.learning-outcome/v8` receipts prove the paired cohort.
|
|
1052
|
+
- Doctor, status and audit report paired-evaluator receipts and completed before/after pairs.
|
|
1053
|
+
|
|
1054
|
+
### Changed
|
|
1055
|
+
|
|
1056
|
+
- Canary improvement is now the mean of per-evaluator before/after deltas. Different evaluator cohorts cannot validate a lesson, repeated evaluator runs cannot overweight the score, and every counted after-result requires a distinct completed model turn.
|
|
1057
|
+
- Concurrent identical measurement retries accept the already committed timestamp instead of misclassifying lock-order inversion as future-dated evidence; genuinely new future measurements still fail closed.
|
|
1058
|
+
- Evaluation v1-v4 and outcome v1-v7 history remains readable; only new v5/v8 experiments require paired cohorts.
|
|
1059
|
+
|
|
1060
|
+
### Security
|
|
1061
|
+
|
|
1062
|
+
- Evaluator drift, duplicate weighting, same-turn double counting and digest-valid injected duplicate pairs fail closed. Pairing remains content-free and context-only and cannot grant identity, rights, credentials, tools or policy exceptions.
|
|
1063
|
+
|
|
1064
|
+
## [0.17.0] - 2026-09-01
|
|
1065
|
+
|
|
1066
|
+
### Added
|
|
1067
|
+
|
|
1068
|
+
- Immutable `agentspine.learning-measurement/v1` receipts register an external evaluator run before it can become an outcome; `agentspine.learning-evaluation/v4` and `agentspine.learning-outcome/v7` bind the exact contract, scope, phase, metric, coverage, evaluator, run, source identity, application and delivery lineage.
|
|
1069
|
+
- CLI, Doctor, audit and read-only outcome status expose registered, consumed, stale-unconsumed and lineage-bound measurements. Explicit local purge removes only stale unconsumed receipts while a digest-only replay tombstone remains.
|
|
1070
|
+
|
|
1071
|
+
### Changed
|
|
1072
|
+
|
|
1073
|
+
- New outcome recording consumes one exact measurement receipt instead of accepting mutable measurement facts inline. Source digests and evaluator/run pairs are single-use across all evaluation contracts in one project.
|
|
1074
|
+
- Evaluation v1-v3 and outcome v1-v6 history remains readable; only new v4 contracts require the measurement-registration boundary.
|
|
1075
|
+
|
|
1076
|
+
### Security
|
|
1077
|
+
|
|
1078
|
+
- Cross-contract replay, evaluator/run replay, metric or scope substitution, duplicate consumption and digest-valid state injection fail closed. Measurement receipts remain content-free, context-only and cannot grant identity, rights, credentials, tools or policy exceptions.
|
|
1079
|
+
|
|
1080
|
+
## [0.16.0] - 2026-09-01
|
|
1081
|
+
|
|
1082
|
+
### Added
|
|
1083
|
+
|
|
1084
|
+
- New `agentspine.learning-evaluation/v3` contracts require every measurement to identify its external evaluator result by SHA-256; `agentspine.learning-outcome/v6` binds that provenance to the existing dataset, case, scope, application and delivery receipts.
|
|
1085
|
+
- CLI, Doctor, audit and read-only outcome status distinguish provenance-bound measurements from readable legacy history.
|
|
1086
|
+
|
|
1087
|
+
### Changed
|
|
1088
|
+
|
|
1089
|
+
- A measurement source can appear only once within an evaluation contract, across before and after phases. Distinct evaluator and receipt IDs no longer make replayed evidence independent.
|
|
1090
|
+
- Legacy v1/v2 evaluation contracts and v1-v5 outcomes remain readable; only new experiments require unique provenance.
|
|
1091
|
+
|
|
1092
|
+
### Security
|
|
1093
|
+
|
|
1094
|
+
- Missing, malformed, replayed or state-injected measurement provenance fails closed. Provenance receipts retain only digests and never evaluator output, benchmark cases, prompts, answers, transcripts, credentials or authority.
|
|
1095
|
+
|
|
1096
|
+
## [0.15.0] - 2026-09-01
|
|
1097
|
+
|
|
1098
|
+
### Added
|
|
1099
|
+
|
|
1100
|
+
- Immutable `agentspine.learning-evaluation/v2` contracts and content-free `agentspine.learning-outcome/v5` receipts bind every new measurement to the exact registered dataset digest and its measured case count.
|
|
1101
|
+
- CLI, Doctor, audit and read-only outcome status expose coverage-bound and legacy measurements separately.
|
|
1102
|
+
|
|
1103
|
+
### Changed
|
|
1104
|
+
|
|
1105
|
+
- The registered `minCases` floor is now enforced for every before and after measurement. Legacy v1 evaluation contracts and v1-v4 outcomes remain readable, while new experiments require explicit coverage proof.
|
|
1106
|
+
|
|
1107
|
+
### Security
|
|
1108
|
+
|
|
1109
|
+
- Missing case counts, cherry-picked subsets, dataset drift, tampered coverage bindings and conflicting retry IDs fail closed before they can promote or validate a Canary. Coverage receipts retain no benchmark cases, prompts, answers, transcripts, credentials or authority.
|
|
1110
|
+
|
|
1111
|
+
## [0.14.0] - 2026-09-01
|
|
1112
|
+
|
|
1113
|
+
### Added
|
|
1114
|
+
|
|
1115
|
+
- Content-free `agentspine.learning-delivery/v1` receipts prove that a preflight-bound Canary projection reached a matching native `Stop` or `SubagentStop` in the exact host session and scope.
|
|
1116
|
+
- `agentspine.learning-outcome/v4` binds every new after-measurement to both the projection and completed-turn delivery receipts; CLI, Doctor, audit and read-only status expose pending, stale, completed and delivered evidence separately.
|
|
1117
|
+
- Locally confirmed `learn-delivery-purge` removes expired, unconfirmed projections after crash recovery without touching user sources, completed receipts or lessons.
|
|
1118
|
+
|
|
1119
|
+
### Changed
|
|
1120
|
+
|
|
1121
|
+
- New `agentspine.learning-application/v2` projections bind the host session and a five-minute completion deadline. A concurrent second projection in the same session degrades safely until the first completes or expires.
|
|
1122
|
+
- Canary validation counts only completed model turns for new v4 outcomes. Projection alone can no longer manufacture a successful learning application.
|
|
1123
|
+
|
|
1124
|
+
### Security
|
|
1125
|
+
|
|
1126
|
+
- Delivery receipts store no prompt, answer, transcript, credential or authority. Cross-session, cross-scope, stale, duplicate-conflicting and forged completion attempts are rejected or ignored without blocking the normal answer path.
|
|
1127
|
+
|
|
1128
|
+
## [0.13.0] - 2026-09-01
|
|
1129
|
+
|
|
1130
|
+
### Added
|
|
1131
|
+
|
|
1132
|
+
- Immutable `agentspine.learning-evaluation/v1` contracts bind each automatic behavior experiment to a predeclared task, dataset, evaluator protocol, exact scope, evaluator allowlist, case floor, expiry and promotion thresholds.
|
|
1133
|
+
- `agentspine.learning-outcome/v3` receipts bind both baseline and post-application measurements to one evaluation contract; CLI, Doctor, audit and read-only status expose planned versus legacy-unplanned evidence.
|
|
1134
|
+
|
|
1135
|
+
### Changed
|
|
1136
|
+
|
|
1137
|
+
- Automatic Canary promotion and validation use the thresholds frozen in the evaluation contract, so later configuration changes cannot manufacture improvement or suppress a regression.
|
|
1138
|
+
- Benchmark registration is an explicit local operation; outcome recording rejects missing, stale, cross-scope, metric-drifted and evaluator-drifted contracts.
|
|
1139
|
+
|
|
1140
|
+
### Security
|
|
1141
|
+
|
|
1142
|
+
- Evaluation state stores only stable IDs, SHA-256 digests, numeric thresholds, scope and timestamps. Task content, datasets, protocols, prompts, transcripts, credentials and authority remain outside learning state.
|
|
1143
|
+
- Model suggestions still cannot promote learning, protected lessons cannot receive automatic evaluation contracts, and a single blocking defect still forces immediate rollback.
|
|
1144
|
+
|
|
1145
|
+
## [0.12.0] - 2026-09-01
|
|
1146
|
+
|
|
1147
|
+
### Added
|
|
1148
|
+
|
|
1149
|
+
- Content-free `agentspine.learning-application/v1` receipts prove that an active behavior Canary was actually projected after one exact hard preflight was consumed.
|
|
1150
|
+
- `agentspine.learning-outcome/v2` binds every new after-measurement to one exact application while retaining v1 baseline and historical compatibility.
|
|
1151
|
+
- CLI, Doctor, audit and read-only MCP status expose application counts, bound after-receipts, awaiting applications and ignored legacy-unbound evidence.
|
|
1152
|
+
|
|
1153
|
+
### Changed
|
|
1154
|
+
|
|
1155
|
+
- Canary validation now requires both independent evaluators and distinct applied turns; multiple evaluators of one turn cannot satisfy the application threshold.
|
|
1156
|
+
- Hook application recording is idempotent across retries, exact-scope bound, and omitted entirely for turns without an active Canary.
|
|
1157
|
+
|
|
1158
|
+
### Security
|
|
1159
|
+
|
|
1160
|
+
- Unbound, stale, cross-persona, cross-user, cross-tenant, cross-project, cross-group and cross-task after-results are rejected before they can affect validation or rollback.
|
|
1161
|
+
- Application receipts store only IDs, digests, scope and timestamps; prompts, briefings, answers, transcripts, credentials and authority remain absent.
|
|
1162
|
+
|
|
1163
|
+
## [0.11.4] - 2026-09-01
|
|
1164
|
+
|
|
1165
|
+
### Fixed
|
|
1166
|
+
|
|
1167
|
+
- Nonexistent descendants inherit the canonical identity of their nearest existing ancestor, preventing macOS aliases and Windows namespace normalization from misclassifying an internal state directory as external before its first write.
|
|
1168
|
+
|
|
1169
|
+
## [0.11.3] - 2026-09-01
|
|
1170
|
+
|
|
1171
|
+
### Fixed
|
|
1172
|
+
|
|
1173
|
+
- Scanner exclusion roots are canonicalized before comparison, so macOS `/var` → `/private/var` aliases and Windows path normalization cannot reintroduce private AgentSpine state into a home-root catalog.
|
|
1174
|
+
|
|
1175
|
+
## [0.11.2] - 2026-09-01
|
|
1176
|
+
|
|
1177
|
+
### Fixed
|
|
1178
|
+
|
|
1179
|
+
- Exact user-home working directories may keep authenticated AgentSpine state below the home only when that state root is explicitly excluded from source discovery; the installed hook no longer deadlocks on its own signing identity.
|
|
1180
|
+
- Generic catalog discovery now prunes the configured AgentSpine state subtree before opening Markdown, so signing keys, persona rosters, receipts, and generated state cannot become project context.
|
|
1181
|
+
|
|
1182
|
+
### Security
|
|
1183
|
+
|
|
1184
|
+
- The exception is limited to an exact OS/`HOME`/`USERPROFILE` home root. State inside an ordinary nested project remains fail-closed, symlinks remain untraversed, and user Markdown remains byte-preserved.
|
|
1185
|
+
|
|
1186
|
+
## [0.11.1] - 2026-09-01
|
|
1187
|
+
|
|
1188
|
+
### Fixed
|
|
1189
|
+
|
|
1190
|
+
- Installed hooks reuse the already bounded host-source catalog throughout scope, continuity, learning, attention, persona, relationship, and briefing reads instead of recursively rebuilding it from the active working directory.
|
|
1191
|
+
- Windows profile homes are recognized through canonical OS, `USERPROFILE`, `HOME`, and `HOMEDRIVE`/`HOMEPATH` identities, including case-insensitive paths and homes that contain a project marker; their recursive project tree is never enumerated.
|
|
1192
|
+
|
|
1193
|
+
### Security
|
|
1194
|
+
|
|
1195
|
+
- Direct host-native `CLAUDE.md` and `AGENTS.md` chain files remain fully injected and byte-preserved while unrelated home descendants are excluded from context and indexing.
|
|
1196
|
+
|
|
1197
|
+
## [0.11.0] - 2026-08-31
|
|
1198
|
+
|
|
1199
|
+
### Added
|
|
1200
|
+
|
|
1201
|
+
- Provider-neutral `agentspine.learning-outcome/v1` receipts for content-free, normalized fixed-task before/after measurements bound to exact persona, user, tenant, project, group, task, metric, and evaluator scopes
|
|
1202
|
+
- Default-off outcome-gated `behavior` candidates with independent-evaluator thresholds, objective-evidence requirements, bounded canary application, measured validation, contradiction detection, staleness gates, and read-only MCP diagnostics
|
|
1203
|
+
- Local CLI commands for recording outcome receipts and inspecting promotion, canary, regression, and expiry state
|
|
1204
|
+
|
|
1205
|
+
### Changed
|
|
1206
|
+
|
|
1207
|
+
- Session briefings project outcome-gated behavior only into the exact matching scope and exclude expired canaries with a visible degraded diagnostic
|
|
1208
|
+
- Learning-state upgrades add outcome configuration and receipts without rewriting existing candidates or user-authored Markdown
|
|
1209
|
+
|
|
1210
|
+
### Security
|
|
1211
|
+
|
|
1212
|
+
- Model suggestions are retained separately but never count toward automatic promotion or canary validation
|
|
1213
|
+
- Any blocking defect overrides aggregate scores and immediately rolls back the canary; regressions, insufficient improvement, and expiry also fail closed through rollback
|
|
1214
|
+
- Outcome receipts contain no prompts, answers, transcripts, credentials, rights, delegation, tool access, production, payment, or policy authority
|
|
1215
|
+
- Codex plugin metadata omits the validator-rejected `hooks` field; the separate versioned Codex host adapter remains packaged and independently validated
|
|
1216
|
+
|
|
1217
|
+
## [0.10.1] - 2026-08-31
|
|
1218
|
+
|
|
1219
|
+
### Changed
|
|
1220
|
+
|
|
1221
|
+
- Claude mandatory instructions retain the 8 KiB standard budget but may use one explicit, receipt-bound overflow up to 16 KiB; Codex and generic instruction hosts remain capped at 8 KiB
|
|
1222
|
+
- Relationship deadlines return a visible `degraded` context and abort the active graph read instead of aborting the turn
|
|
1223
|
+
|
|
1224
|
+
### Fixed
|
|
1225
|
+
|
|
1226
|
+
- Relationship CLI and MCP reads no longer rebuild the complete project catalog before reading the bounded graph state
|
|
1227
|
+
- An unmarked home-directory working directory no longer becomes a recursive project scan; known user rules are still loaded through their exact host-native paths
|
|
1228
|
+
- Dropbox, OneDrive, dependency, build and embedded repository directories are excluded from bounded project source traversal
|
|
1229
|
+
- Oversized mandatory instructions now block immediately with the measured and allowed byte counts instead of an opaque budget message
|
|
1230
|
+
|
|
1231
|
+
### Security
|
|
1232
|
+
|
|
1233
|
+
- Automatic group neighborhoods continue to exclude explicit cross-group edges, inactive personas, private records and every entity outside the exact authenticated group audience
|
|
1234
|
+
- The Claude overflow mode, byte usage and hard limit are HMAC-receipt-bound and revalidated immediately before one-time consumption
|
|
1235
|
+
|
|
1236
|
+
## [0.10.0] - 2026-08-30
|
|
1237
|
+
|
|
1238
|
+
### Added
|
|
1239
|
+
|
|
1240
|
+
- Self-healing authenticated persona-to-graph reconciliation on every roster sync, including unchanged replays after partial graph failure
|
|
1241
|
+
- Automatic context-only group materialization for exact locally approved roster group IDs
|
|
1242
|
+
- Exact group-scoped team neighborhoods so a persona briefing can include current visible co-members without explicit pairwise edges
|
|
1243
|
+
- Separate roster-change and graph-repair diagnostics with deterministic counts for created groups, updated entities, and added or removed memberships
|
|
1244
|
+
|
|
1245
|
+
### Changed
|
|
1246
|
+
|
|
1247
|
+
- Active `person`, `agent`, and `bot` bindings now retain user-authored non-authority graph attributes while authenticated display name, status, source binding, privacy, and membership are reconciled
|
|
1248
|
+
- Package, lockfile, Claude Code, Codex, marketplace, BLUN and hook-bundle versions advance together to `0.10.0`
|
|
1249
|
+
|
|
1250
|
+
### Fixed
|
|
1251
|
+
|
|
1252
|
+
- An unchanged roster now repairs missing persona entities, groups, and membership edges instead of remaining permanently classified as a duplicate
|
|
1253
|
+
- Left and deactivated personas retain append-only identity history but no longer appear in current relationship neighborhoods
|
|
1254
|
+
- Missing roster groups no longer cause membership edges to be silently skipped
|
|
1255
|
+
- Relationship reads now fail visibly after a five-second local state deadline instead of waiting indefinitely
|
|
1256
|
+
|
|
1257
|
+
### Security
|
|
1258
|
+
|
|
1259
|
+
- Group peer expansion requires one exact group audience and filters inactive, private, and other-group entities before returning context
|
|
1260
|
+
- Conflicting non-group IDs and private groups fail visibly instead of weakening group-scope isolation
|
|
1261
|
+
- Persona, group, and relationship context remains incapable of granting rights, delegation, tools, execution, access, or policy changes
|
|
1262
|
+
|
|
1263
|
+
## [0.9.0] - 2026-08-30
|
|
1264
|
+
|
|
1265
|
+
### Added
|
|
1266
|
+
|
|
1267
|
+
- Mandatory `agentspine.preflight/v2` before-answer receipts bound to the exact prompt, hook delivery, host, agent, user, tenant, profile, session, project, working directory, task, group, instruction identities, retrieval queries, and briefing
|
|
1268
|
+
- Provider-neutral `agentspine.retrieval-query/v1` and `agentspine.retrieval-result/v1` contracts with a bounded shell-free `mnemo-command/v1` reference adapter and environment-only credential names
|
|
1269
|
+
- Explicitly confirmed, scoped Must-Remember candidates with append-only activation, supersession, rollback, permanent local-user purge, checksums, retention, and reserved briefing priority
|
|
1270
|
+
- Local preflight policy, status, Must-Remember CLI and Doctor/Audit diagnostics; none of these administration surfaces are exposed through MCP
|
|
1271
|
+
- Claude Code `InstructionsLoaded` observability alongside the blocking `UserPromptSubmit` gate
|
|
1272
|
+
- BLUN King can now install AgentSpine as a native plugin with the same lifecycle hooks, MCP server, isolated app-home source resolution, and explicit plugin-install trust step as the existing Claude Code and Codex hosts
|
|
1273
|
+
|
|
1274
|
+
### Changed
|
|
1275
|
+
|
|
1276
|
+
- Prompt turns now carry a compact ordinary briefing plus a separately budgeted mandatory instruction and recall section, avoiding silent source truncation
|
|
1277
|
+
- Package, lockfile, Claude Code, Codex, marketplace, BLUN, hook-bundle, worker and preflight versions advance together to `0.9.0`
|
|
1278
|
+
|
|
1279
|
+
### Fixed
|
|
1280
|
+
|
|
1281
|
+
- Routine BLUN hook results now render as one short human-readable status line instead of exposing compact internal JSON in the TUI, while actionable attention, self-starter, channel, and failure details remain available immediately
|
|
1282
|
+
- BLUN hooks now inject a compact runtime status instead of the complete session briefing on every prompt; detailed continuity remains available on demand while active attention, self-starter, and authenticated channel signals remain immediate
|
|
1283
|
+
- BLUN lifecycle hooks now index large real workspaces without absorbing embedded test profiles or failing at the smaller host-rule limit
|
|
1284
|
+
- Windows Node 24 state writes now treat transient lock access errors as contention across every lock-backed store, retry atomic replacements with a bounded backoff, and tolerate briefly retained handles during hermetic cleanup
|
|
1285
|
+
- The gateway worker now canonicalizes its state directory before opening the native file watcher, avoiding the Windows libuv path assertion on differently cased or short paths
|
|
1286
|
+
- CI now identifies the failing check phase and annotates the exact hermetic test file or runner error, so public Windows failures can be diagnosed without access to private job logs
|
|
1287
|
+
|
|
1288
|
+
### Security
|
|
1289
|
+
|
|
1290
|
+
- Controlled preflight failures return the host's blocking decision and exit code 2 instead of the previous fail-open informational packet
|
|
1291
|
+
- Mandatory instructions are reopened without following symlinks, checked through one filehandle before and after reading, SHA-256 bound, fully injected, and rejected on replacement, deletion, scope escape, size overflow, stale identity or second receipt consumption
|
|
1292
|
+
- Required recall distinguishes a verified empty result from no invocation or failure; provider output is scope-bound, content-filtered and incapable of changing policy or authority
|
|
1293
|
+
- Receipts are short-lived, HMAC-authenticated in private external state, one-time consumable, and contain no prompt text, rule content, memory claims, credentials or transcripts
|
|
1294
|
+
- Receipt consumption revalidates the current instruction set, local policy revision, active critical-memory checksums and exact turn scope; aborted prepared turns are invalidated for safe retry while consumed deliveries remain replay-blocked
|
|
1295
|
+
- Claude-only `InstructionsLoaded` registration is physically separated from Codex's documented lifecycle event set
|
|
1296
|
+
|
|
1297
|
+
## [0.8.0] - 2026-08-29
|
|
1298
|
+
|
|
1299
|
+
### Added
|
|
1300
|
+
|
|
1301
|
+
- Provider-neutral authenticated channel ingress with exact provider, tenant, account, chat, thread, sender, agent, project, group, and session bindings
|
|
1302
|
+
- Durable per-agent event lanes with replay protection, atomic leases, expired-lease recovery, revocation cancellation, retained history, and integrity receipts
|
|
1303
|
+
- Automatic `agentspine.voice-brief/v1` projection from exact visible persona, preference, correction, no-go, current-task, promise, and blocker context
|
|
1304
|
+
- Installed-bundle proof that both Claude Code and Codex receive one exact authenticated channel event and voice profile with zero model-side MCP calls
|
|
1305
|
+
- Pinned OpenClaw and Hermes harness reference study documenting adopted, adapted, and deliberately excluded behavior
|
|
1306
|
+
- Authenticated external persona-roster synchronization with stable identities and append-only join, rename, leave, group-change, and rejoin events
|
|
1307
|
+
- Bounded native Claude Code and Codex agent-manifest discovery under one approved roster scope, including distinct deactivation, exact profile/tenant identity, rename stability, and immediate membership removal
|
|
1308
|
+
- Optional `agentspine-worker` with Telegram polling and delivery, one absolute shell-free host runner, per-agent lanes, focused goals, checkpoints, retries, health state, and a local kill switch
|
|
1309
|
+
- Event-driven desired-state wake, deadline reconciliation, restartable prepared outbox delivery, bounded host-failure retry, independent stale-heartbeat audit, and explicit dead-letter versus delivery-unknown terminal states
|
|
1310
|
+
- Transient German, English, Swedish, and Spanish response cues plus an advisory voice guard against fabricated attachment, emotion, or consciousness claims
|
|
1311
|
+
- Empty- and populated-profile hermetic test execution so real user state cannot change test expectations
|
|
1312
|
+
|
|
1313
|
+
### Changed
|
|
1314
|
+
|
|
1315
|
+
- The shared hook document now uses only the documented `description` and `hooks` top-level fields; version/cache identity stays in the host manifests
|
|
1316
|
+
- Host checks no longer report live Codex hook trust as proven merely because the shared hook entrypoint can execute directly
|
|
1317
|
+
- Native Codex hook input is recognized from its Codex-specific `model` field or plugin environment even when no synthetic `host` field and no explicit `CODEX_HOME` override exist
|
|
1318
|
+
- Session briefings reserve a bounded voice section and report voice omissions in the same compact-JSON budget
|
|
1319
|
+
- Channel policy and runtime inspection are available through local CLI commands while every channel administration and execution operation remains absent from MCP
|
|
1320
|
+
- A configured roster file is reread before every worker reconciliation, so authenticated team additions and removals become visible without a new chat prompt
|
|
1321
|
+
- Promise and resolved-blocker lifecycle events now enter the same durable wake queue as direct messages and owner-assigned goals
|
|
1322
|
+
|
|
1323
|
+
### Security
|
|
1324
|
+
|
|
1325
|
+
- Channel policy changes require explicit local owner confirmation; wildcard routes and senders, unknown agents/projects/groups, and invalid group membership fail closed
|
|
1326
|
+
- HMAC secrets remain environment-only, signatures are never stored, secret-bearing messages are rejected, and event ID collisions cannot overwrite earlier payloads
|
|
1327
|
+
- Current and retained events, policy history, payload digests, route bindings, receipt digests, and authority markers are replayed by the ten-gate audit
|
|
1328
|
+
- Channel state and voice context cannot grant host, tool, file, network, send, delegation, production, or execution rights
|
|
1329
|
+
- Persona events, roster receipts, gateway history, queue and delivery IDs, lanes, checkpoints, and receipts fail closed under structural or digest manipulation
|
|
1330
|
+
- Persona activity and exact group membership plus revoked reply grants are rechecked at claim, run completion, and immediately before network effect; known no-effect exhaustion cannot enter a supervisor restart loop
|
|
1331
|
+
- Provider and ingress credentials remain environment-only and are removed from the environment passed to the host runner
|
|
1332
|
+
|
|
1333
|
+
## [0.7.0] - 2026-08-29
|
|
1334
|
+
|
|
1335
|
+
### Added
|
|
1336
|
+
|
|
1337
|
+
- External, integrity-checked indexed-memory metadata/content cache with atomic multi-process updates, immediate link-removal pruning, and cache purge on source-binding rollback or purge
|
|
1338
|
+
- Explicit relevance markers for `always`, person, project, group, task, and prompt-keyword scopes; unproven fact files remain unopened and omitted
|
|
1339
|
+
- Privacy-bounded indexed-memory diagnostics for indexed, relevant, loaded, cache-hit, cache-miss, missing, scope, path, symlink, size, and race outcomes
|
|
1340
|
+
- Explicit `doctor --offline-memory-orphans` enumeration that reports counts only and remains outside every live lifecycle path
|
|
1341
|
+
- Real temporary 50,000-file acceptance with deterministic open-count instrumentation and a source-level ban on directory enumeration in the live indexed-memory module
|
|
1342
|
+
|
|
1343
|
+
### Changed
|
|
1344
|
+
|
|
1345
|
+
- Claude project-memory resolution now treats `MEMORY.md` as the explicit index and opens only directly linked, relevant Markdown facts instead of walking the complete memory tree
|
|
1346
|
+
- Package, lockfile, Claude Code, Codex, marketplace, and hook-bundle versions advance together to `0.7.0`; upgrade acceptance rejects the cached `0.6.0` bundle
|
|
1347
|
+
|
|
1348
|
+
### Security
|
|
1349
|
+
|
|
1350
|
+
- Indexed memory targets are opened with no-follow semantics and validated through one filehandle before and after reading; file replacement races retry and then reject visibly
|
|
1351
|
+
- Missing targets, path escapes, symlinked paths, non-regular files, oversized sources, transitive links, stale cache records, and corrupt cache state cannot enter the briefing
|
|
1352
|
+
- Cache and relevance remain context-only and cannot create identity, rights, delegation, trust, capabilities, network access, or self-starter policy
|
|
1353
|
+
|
|
1354
|
+
## [0.6.0] - 2026-08-28
|
|
1355
|
+
|
|
1356
|
+
### Added
|
|
1357
|
+
|
|
1358
|
+
- Provider-neutral host-native source-root registry with bounded Claude profile, project-chain, project-memory, Codex home, root-marker, fallback-name, and nested-override resolution
|
|
1359
|
+
- Explicit portable user-state binding with provenance, conflict detection, rollback, purge, and low-risk learning-only projection across repositories and hosts
|
|
1360
|
+
- Installed production-hook RED/GREEN reproduction of the real zero-source failure from an AgentSpine checkout and foreign working directory
|
|
1361
|
+
- `source-status`, `source-bind`, `source-rollback`, and `source-purge` CLI workflows plus host-aware Doctor and Audit diagnostics
|
|
1362
|
+
|
|
1363
|
+
### Changed
|
|
1364
|
+
|
|
1365
|
+
- Package, lockfile, Claude Code, Codex, marketplace, and hook-bundle versions advance together to `0.6.0`
|
|
1366
|
+
- The lifecycle bundle declares `agentspine.source-roots/v1`; upgrade tests reject the cached `0.5.0` bundle
|
|
1367
|
+
- Automatic briefing uses separate user, project, and project-memory bindings instead of treating the launch directory as one recursive source root
|
|
1368
|
+
|
|
1369
|
+
### Security
|
|
1370
|
+
|
|
1371
|
+
- Home-wide scans, foreign-repository discovery, symlink following, guessed Claude memory paths, blind root-hash state copying, and project-state flattening are prohibited and tested
|
|
1372
|
+
- Empty or damaged source resolution is visible and never reported as loaded personal continuity
|
|
1373
|
+
- Source and migration bindings remain context-only and cannot create identities, roles, delegation, host trust, execution grants, capabilities, or self-starter rights
|
|
1374
|
+
|
|
1375
|
+
## [0.5.0] - 2026-08-28
|
|
1376
|
+
|
|
1377
|
+
### Added
|
|
1378
|
+
|
|
1379
|
+
- Visible 14-gate cross-host acceptance using new synthetic people, separated groups, Swedish and Spanish prompts, real lifecycle restart and compaction boundaries, and zero model-side MCP calls
|
|
1380
|
+
- Deterministic SHA-256 receipts for identity, multilingual continuity, attention, isolation, correction, rollback, purge, authorized resume, denied foreign effects, durable checkpoints, source preservation, and the final audit
|
|
1381
|
+
- Installed-bundle acceptance for both fresh installation and upgrade from `0.4.0`
|
|
1382
|
+
|
|
1383
|
+
### Changed
|
|
1384
|
+
|
|
1385
|
+
- Package, lockfile, Claude Code, Codex, marketplace, and hook-bundle versions advance together to `0.5.0`
|
|
1386
|
+
- The lifecycle bundle declares `agentspine.acceptance/v1`
|
|
1387
|
+
- Safe direct style, correction, no-go, project-fact, promise, and blocker recognition covers the Swedish and Spanish acceptance paths
|
|
1388
|
+
|
|
1389
|
+
### Security
|
|
1390
|
+
|
|
1391
|
+
- Person and exact-group negative visibility, a denied foreign lease effect, complete person purge, and byte-for-byte source preservation are visible acceptance gates
|
|
1392
|
+
- Acceptance state is synthetic, external, temporary, and transcript-free; its receipts create no identity, trust, approval, or authority
|
|
1393
|
+
- Fresh-install and upgrade proofs require exactly one MCP server, exactly one hook set, and complete automatic behavior with `mcpCalls: 0`
|
|
1394
|
+
|
|
1395
|
+
## [0.4.0] - 2026-08-28
|
|
1396
|
+
|
|
1397
|
+
### Added
|
|
1398
|
+
|
|
1399
|
+
- Rights-bound self-starter for one exact waiting job with durable checkpoints, expiring leases, retry budget, backoff, crash recovery, audit receipts, cancellation, and purge
|
|
1400
|
+
- Native Claude Code and Codex lifecycle path from `SessionStart` through `PreToolUse`, `PostToolUse`, `Stop`, and a new-session resume without a model-side MCP call or repeated job envelope
|
|
1401
|
+
- Separate local execution policy binding actor, action set, job, task, target, project, optional group, host, and finite tool capabilities
|
|
1402
|
+
- Fresh-install and `0.3.0` upgrade proof for exactly one MCP server, one hook set, an authorized effect, a durable checkpoint, and automatic resume
|
|
1403
|
+
|
|
1404
|
+
### Changed
|
|
1405
|
+
|
|
1406
|
+
- Package, lockfile, Claude Code, Codex, marketplace, and hook-bundle versions advance together to `0.4.0`
|
|
1407
|
+
- The lifecycle bundle declares `agentspine.selfstarter/v1` and resolves active jobs from the native host session
|
|
1408
|
+
- Ten-gate audit includes external execution-policy and job-state integrity without reading either as context authority
|
|
1409
|
+
|
|
1410
|
+
### Security
|
|
1411
|
+
|
|
1412
|
+
- Every start, resume, and effect rechecks the current exact grant, task assignment, scope, host session, capability, lease, and content-bound workspace fingerprint
|
|
1413
|
+
- Memory, Markdown, learning, relationships, attention, tasks, prior approvals, model claims, and MCP responses cannot create or widen execution rights
|
|
1414
|
+
- Unknown effects, concurrent leases, revocation, expiry, workspace drift, uncheckpointed crash changes, retry exhaustion, malformed state, and protected-source writes fail closed
|
|
1415
|
+
- MCP exposes no execution-policy grant, revoke, job registration, cancellation, or checkpoint administration
|
|
1416
|
+
|
|
1417
|
+
## [0.3.0] - 2026-08-28
|
|
1418
|
+
|
|
1419
|
+
### Added
|
|
1420
|
+
|
|
1421
|
+
- Provider-neutral heartbeat, promise, and blocker lifecycle events written by installed Claude Code and Codex hooks without a model-side MCP call
|
|
1422
|
+
- Exact actor, group, project, and task binding with stable event identity, minimal SHA-256 provenance, idempotent receipts, occurrence counts, and retained prior versions
|
|
1423
|
+
- Automatic current-task event injection at start, restart, prompt, and compaction boundaries, including stale-heartbeat, open-promise, and open-blocker handling
|
|
1424
|
+
- CLI inspection and permanent event deletion plus entity purge across events, receipts, history, and presentation throttles
|
|
1425
|
+
- Fresh-install and previous-version upgrade test that proves one MCP server, one hook set, automatic event capture, restart injection, and source-preserving uninstall
|
|
1426
|
+
|
|
1427
|
+
### Changed
|
|
1428
|
+
|
|
1429
|
+
- Package, lockfile, Claude Code, Codex, marketplace, and hook-bundle versions advance together to `0.3.0`
|
|
1430
|
+
- Focus mode suppresses unrelated cues while permitting an active blocker, due promise, or stale heartbeat for the exact current task
|
|
1431
|
+
- Parallel catalog replacement uses collision-free atomic temporary paths across concurrent lifecycle hooks
|
|
1432
|
+
|
|
1433
|
+
### Security
|
|
1434
|
+
|
|
1435
|
+
- Automatic prompt events require the local continuity opt-in and reject group conversation content, secrets, identity claims, rights, roles, delegation, access, production, payment, and approval claims
|
|
1436
|
+
- Corrupt attention lifecycle state and unknown task scope fail closed; events remain context-only and can neither send messages nor create authority
|
|
1437
|
+
|
|
1438
|
+
## [0.2.0] - 2026-08-28
|
|
1439
|
+
|
|
1440
|
+
### Added
|
|
1441
|
+
|
|
1442
|
+
- Native Claude Code and Codex lifecycle integration that automatically injects the actual scoped, byte-budgeted session briefing at start, resume, prompt, and compaction boundaries without a model-side MCP call
|
|
1443
|
+
- Separate local opt-in for minimal high-confidence style, preference, no-go, correction, project-fact, and reference learning with digest provenance, deduplication, rollback, purge, and no transcript retention
|
|
1444
|
+
- Complete hook inventory for prompt, tool, compaction, stop, and subagent-stop boundaries plus reproducible fresh-install, stale-cache upgrade, and uninstall preservation checks
|
|
1445
|
+
|
|
1446
|
+
### Changed
|
|
1447
|
+
|
|
1448
|
+
- Claude Code explicitly registers the MCP file and loads exactly one hook bundle from its native `hooks/hooks.json` discovery path
|
|
1449
|
+
- Package, lockfile, Claude Code, Codex, and marketplace cache versions advance together to `0.2.0`
|
|
1450
|
+
- Session hooks now inject usable accepted context instead of counts and a suggestion to call `session_briefing`
|
|
1451
|
+
|
|
1452
|
+
### Security
|
|
1453
|
+
|
|
1454
|
+
- Automatic learning rejects secrets, sensitive personal facts, identity merging, private group content, rights, roles, delegation, approvals, tool or file access, network or database access, production, payments, and policy claims
|
|
1455
|
+
- Hook JSON input is bounded, state remains external and atomically locked, malformed state is visible and fail-closed, and source Markdown remains byte-for-byte unchanged
|
|
1456
|
+
|
|
1457
|
+
### Added
|
|
1458
|
+
|
|
1459
|
+
- Executable Claude Code and Codex host-registration check with a real MCP `initialize` handshake
|
|
1460
|
+
- Optional local SQLite snapshot transport with immutable signed-adapter binding, append-only hash-linked revisions, atomic head advancement, full integrity replay, quarantined pull, CLI integration, and no MCP database authority
|
|
1461
|
+
- One-shot challenge-response peer transport over an owner-selected stdin/stdout carrier, with a fresh nonce, live Ed25519 proof, shell-free process execution, environment minimization, quarantine import, CLI integration, and no MCP process authority
|
|
1462
|
+
- Provider-neutral signed HTTPS feed with strong ETag compare-and-swap publication, bounded hash-chain continuity, external rollback receipts, quarantined pull, CLI integration, audit coverage, and no MCP transport authority
|
|
1463
|
+
- Ten-gate `agentspine audit` command and MCP tool
|
|
1464
|
+
- Privacy-scoped entities and relationships for people, agents, groups, channels, and projects
|
|
1465
|
+
- Append-only history for superseded document annotations, document links, entities, and relationships
|
|
1466
|
+
- Broken-link and competing-candidate findings in every catalog
|
|
1467
|
+
- Large-tree, manifest-consistency, CLI-MCP, privacy, authority, and shell-guard tests
|
|
1468
|
+
- Local sparse-attention state for unanswered questions, promises, check-ins, and meaningful changes
|
|
1469
|
+
- Relationship-silence cues based on minimal interaction timestamps rather than conversation capture
|
|
1470
|
+
- Attention CLI and MCP surfaces with quiet hours, focus suppression, throttling, disable, resolve, and permanent deletion controls
|
|
1471
|
+
- Exact group-audience binding for group-scoped cues and activity timestamps
|
|
1472
|
+
- Cross-process locking for concurrent local attention updates
|
|
1473
|
+
- Evidence-backed learning candidates kept separate from accepted context
|
|
1474
|
+
- Explicit review, low-risk opt-in promotion, supersession, rollback, and permanent learning deletion
|
|
1475
|
+
- SHA-256 provenance capture for document evidence and serialized concurrent evidence appends
|
|
1476
|
+
- Safe-learning CLI, MCP tools, hook metadata, audit checks, and full lifecycle tests
|
|
1477
|
+
- Separate default-deny delegation policy with explicit actor, action, target, provenance, revision, and revocation history
|
|
1478
|
+
- Context-only tasks, open threads, and handoffs with assignment snapshots and retained prior versions
|
|
1479
|
+
- Coordination CLI, read/check MCP surfaces, privacy-filtered hook metadata, audit integration, and concurrency tests
|
|
1480
|
+
- Provider-neutral shared-event contract and optional directory adapter with immutable event files
|
|
1481
|
+
- Quarantined, idempotent shared-memory import with a second local review before context
|
|
1482
|
+
- Shared supersession, rollback, exact group filtering, CLI administration, read-only MCP context, hooks, and audit coverage
|
|
1483
|
+
- Optional Ed25519 manifest and event envelopes with strict public identities and retained verification proof
|
|
1484
|
+
- Installation-local signer generation and rotation plus project-local trust, revocation, and audit replay
|
|
1485
|
+
- Immutable signed HTTPS snapshot export and dependency-free provider-neutral pull transport
|
|
1486
|
+
- DNS pinning, default SSRF blocking, redirect and compression rejection, bounded responses, optional environment-only bearer authentication, and explicit private-network opt-in
|
|
1487
|
+
- Provider-neutral `session_briefing` across native sources, relationships, accepted learning, reviewed shared memory, coordination, and attention
|
|
1488
|
+
- Current-task priority, local/shared deduplication, exact compact-JSON byte accounting, atomic omission, and group-safe metadata-only source handling
|
|
1489
|
+
- Provider-neutral content-addressed HTTPS object publication with create-only preconditions
|
|
1490
|
+
- Mandatory signed read-back verification and safe idempotent retry handling for immutable remote objects
|
|
1491
|
+
- Tag-authorized GitHub release pipeline with CycloneDX SBOM, SHA-256 checksums, build provenance, and SBOM attestations
|
|
1492
|
+
- Deterministic release metadata and package-boundary validator covering both host manifests and forbidden state/source material
|
|
1493
|
+
- Pinned-action policy, release-sensitive CODEOWNERS, and isolated least-privilege publication jobs
|
|
1494
|
+
|
|
1495
|
+
### Changed
|
|
1496
|
+
|
|
1497
|
+
- Claude Code now receives an explicit manifest reference to the bundled `.mcp.json`, preventing the MCP server from disappearing in installations that do not apply implicit component discovery
|
|
1498
|
+
- `agentspine mcp` now starts the stdio server instead of returning immediately
|
|
1499
|
+
- Discovery fingerprints files with bounded parallel reads
|
|
1500
|
+
- Context resolution reuses catalogs and only follows confident overlay links
|
|
1501
|
+
- Protected-source hooks recognize common mutating shell commands and refresh after tool writes
|
|
1502
|
+
- Agent annotations cannot promote arbitrary Markdown into a constitution layer
|
|
1503
|
+
- CI runs the repository's own ten-gate audit and uses the current maintained GitHub action majors
|
|
1504
|
+
- Syntax checks and protected-path comparisons are portable across Linux, macOS, and Windows
|
|
1505
|
+
- External-state auditing handles Windows project and state directories on different drives
|
|
1506
|
+
- Session hooks expose only due attention counts and kinds; cue text remains behind an explicit privacy-filtered read
|
|
1507
|
+
- The ten-gate audit now validates attention authority, privacy, configuration, and external-state placement
|
|
1508
|
+
- Accepted learning must carry auditable manual-confirmation proof or an evidence-threshold policy snapshot
|
|
1509
|
+
- Cross-entity coordination now requires a matching explicit local policy grant; relationship responsibility remains descriptive only
|
|
1510
|
+
- Session hooks expose only counts and kinds of locally reviewed shared memory; pending claims remain hidden
|
|
1511
|
+
- Session hooks point to one explicit scoped briefing without automatically injecting its content
|
|
1512
|
+
|
|
1513
|
+
### Security
|
|
1514
|
+
|
|
1515
|
+
- Relationship attributes recursively reject permissions, rights, authorization, credentials, secrets, tokens, and API keys
|
|
1516
|
+
- Every relationship and history record is explicitly context-only
|
|
1517
|
+
- Every attention cue and activity is context-only; corrupt attention policy fails closed
|
|
1518
|
+
- Secret-shaped observations and authority assertions are rejected before learning storage
|
|
1519
|
+
- Delegation policy mutation is excluded from MCP, and malformed policy or coordination state fails closed without overwrite
|
|
1520
|
+
- Task coordination grants no host, tool, file, network, deployment, production, billing, or spending authority
|
|
1521
|
+
- Private learning, source content, evidence text, tasks, policy, and credentials are excluded from shared events
|
|
1522
|
+
- Adapter administration is excluded from MCP; malformed, oversized, symlinked, collided, or tampered exchange state fails closed
|
|
1523
|
+
- Private signing keys remain outside projects and agent surfaces; unknown, revoked, swapped, or mismatched signers fail closed
|
|
1524
|
+
- HTTPS snapshot transport validates TLS endpoints, every DNS answer, bundle integrity, strict schema, and all nested signatures before quarantine mutation
|
|
1525
|
+
- Group briefings reject private reads, foreign membership, and unscoped source content; briefing output remains context-only and read-only
|
|
1526
|
+
- HTTPS publishing is CLI-only, owner-confirmed, DNS-pinned, SSRF-restricted, overwrite-free, size-bounded, and credential-safe
|
|
1527
|
+
- Release workflows accept tags only, verify containment in `main`, use short-lived OIDC for attestations, and expose no npm or AgentSpine secrets
|
|
1528
|
+
|
|
1529
|
+
### Planned
|
|
1530
|
+
|
|
1531
|
+
- Optional hosted database transports implementing the signed-envelope and shared-event contracts
|
|
1532
|
+
|
|
1533
|
+
## [0.1.0] - 2026-08-27
|
|
1534
|
+
|
|
1535
|
+
### Added
|
|
1536
|
+
|
|
1537
|
+
- Non-destructive Markdown discovery and SHA-256 provenance catalog
|
|
1538
|
+
- Native Codex and Claude Code context resolution
|
|
1539
|
+
- Exact ranged reads for sources outside the context budget
|
|
1540
|
+
- Agent-authored overlay annotations and document graph links
|
|
1541
|
+
- CLI, stdio MCP server, and lifecycle hooks
|
|
1542
|
+
- Protected-source write guard for participating host tools
|
|
1543
|
+
- Dual Claude Code and Codex plugin manifests
|
|
1544
|
+
- Cross-platform preservation, hook, graph, and MCP tests
|
|
1545
|
+
|
|
1546
|
+
[Unreleased]: https://github.com/Maykbiletti/AgentSpine/compare/v0.66.0...HEAD
|
|
1547
|
+
[0.66.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.65.0...v0.66.0
|
|
1548
|
+
[0.29.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.28.0...v0.29.0
|
|
1549
|
+
[0.28.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.27.0...v0.28.0
|
|
1550
|
+
[0.27.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.26.0...v0.27.0
|
|
1551
|
+
[0.26.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.25.0...v0.26.0
|
|
1552
|
+
[0.25.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.24.0...v0.25.0
|
|
1553
|
+
[0.24.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.23.0...v0.24.0
|
|
1554
|
+
[0.23.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.22.0...v0.23.0
|
|
1555
|
+
[0.22.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.21.0...v0.22.0
|
|
1556
|
+
[0.21.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.20.0...v0.21.0
|
|
1557
|
+
[0.20.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.19.0...v0.20.0
|
|
1558
|
+
[0.19.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.18.0...v0.19.0
|
|
1559
|
+
[0.18.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.17.0...v0.18.0
|
|
1560
|
+
[0.17.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.16.0...v0.17.0
|
|
1561
|
+
[0.16.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.15.0...v0.16.0
|
|
1562
|
+
[0.15.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.14.0...v0.15.0
|
|
1563
|
+
[0.14.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.13.0...v0.14.0
|
|
1564
|
+
[0.13.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.12.0...v0.13.0
|
|
1565
|
+
[0.12.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.11.4...v0.12.0
|
|
1566
|
+
[0.11.4]: https://github.com/Maykbiletti/AgentSpine/compare/v0.11.3...v0.11.4
|
|
1567
|
+
[0.11.3]: https://github.com/Maykbiletti/AgentSpine/compare/v0.11.2...v0.11.3
|
|
1568
|
+
[0.11.2]: https://github.com/Maykbiletti/AgentSpine/compare/v0.11.1...v0.11.2
|
|
1569
|
+
[0.11.1]: https://github.com/Maykbiletti/AgentSpine/compare/v0.11.0...v0.11.1
|
|
1570
|
+
[0.11.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.10.1...v0.11.0
|
|
1571
|
+
[0.10.1]: https://github.com/Maykbiletti/AgentSpine/compare/v0.10.0...v0.10.1
|
|
1572
|
+
[0.10.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.9.0...v0.10.0
|
|
1573
|
+
[0.9.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.8.0...v0.9.0
|
|
1574
|
+
[0.8.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.7.0...v0.8.0
|
|
1575
|
+
[0.7.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.6.0...v0.7.0
|
|
1576
|
+
[0.6.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.5.0...v0.6.0
|
|
1577
|
+
[0.5.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.4.0...v0.5.0
|
|
1578
|
+
[0.4.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.3.0...v0.4.0
|
|
1579
|
+
[0.3.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.2.0...v0.3.0
|
|
1580
|
+
[0.2.0]: https://github.com/Maykbiletti/AgentSpine/compare/v0.1.0...v0.2.0
|
|
1581
|
+
[0.1.0]: https://github.com/Maykbiletti/AgentSpine/releases/tag/v0.1.0
|