blun-king-cli 9.1.536 → 9.1.561
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/LIESMICH.txt +13 -869
- package/README.md +41 -833
- package/bin/assistant-message-offload-policy.cjs +3 -1
- package/bin/compaction-transaction-policy.cjs +122 -0
- package/bin/context-performance-policy.cjs +2 -5
- package/bin/context-pressure-policy.cjs +20 -0
- package/bin/cron-run-output.cjs +45 -0
- package/bin/cron-run-store.cjs +145 -0
- package/bin/default-model-output-budget-policy.cjs +28 -0
- package/bin/durable-task-resume-policy.cjs +130 -0
- package/bin/durable-task-resume-runtime.cjs +117 -0
- package/bin/durable-task-resume-store.cjs +88 -0
- package/bin/editable-tool-approval-policy.cjs +540 -0
- package/bin/editable-tool-approval-runtime.cjs +99 -0
- package/bin/file-observation-policy.cjs +133 -0
- package/bin/html-to-research-markdown.cjs +146 -0
- package/bin/launcher-runtime.js +0 -1
- package/bin/micro-compaction-policy.cjs +64 -0
- package/bin/mnemo-connect-heartbeat.cjs +1 -3
- package/bin/programmatic-tool-runtime.mjs +330 -4
- package/bin/read-continuation-policy.cjs +36 -5
- package/bin/retry-checkpoint-policy.cjs +13 -0
- package/bin/scoped-cron-run-policy.cjs +358 -0
- package/bin/session-checkpoint-policy.cjs +25 -0
- package/bin/startup-preferences.cjs +4 -3
- package/bin/structured-agent-swarm-output.cjs +325 -0
- package/bin/subagent-context-fork-policy.cjs +155 -0
- package/bin/subagent-skill-policy.cjs +204 -0
- package/bin/telegram-approval-relay.cjs +2 -1
- package/bin/tool-file-persistence.cjs +141 -0
- package/bin/tool-result-offload-policy.cjs +25 -33
- package/bin/turn-thinking-policy.cjs +2 -26
- package/bin/update-notice.js +30 -18
- package/bin/user-message-offload-policy.cjs +3 -1
- package/blun.mjs +1564 -640
- package/codebase-index/README.md +12 -0
- package/codebase-index/codebase_index.py +129 -18
- package/package.json +23 -58
- package/telegram-plugin/bin/telegram-mnemo-capture.cjs +1 -3
- package/telegram-plugin/bin/telegram-typing-keepalive.cjs +89 -0
- package/telegram-plugin/dist/bridge.mjs +8 -1
- package/CHANGELOG.md +0 -321
- package/agent-spine-plugin/CHANGELOG.md +0 -406
- package/agent-spine-plugin/CONTRIBUTING.md +0 -52
- package/agent-spine-plugin/README.md +0 -344
- package/agent-spine-plugin/SECURITY.md +0 -47
- package/agent-spine-plugin/docs/acceptance.md +0 -61
- package/agent-spine-plugin/docs/architecture.md +0 -183
- package/agent-spine-plugin/docs/attention.md +0 -121
- package/agent-spine-plugin/docs/automatic-continuity.md +0 -79
- package/agent-spine-plugin/docs/channel-runtime.md +0 -92
- package/agent-spine-plugin/docs/coordination.md +0 -138
- package/agent-spine-plugin/docs/feed-transport.md +0 -99
- package/agent-spine-plugin/docs/gateway-runtime.md +0 -116
- package/agent-spine-plugin/docs/harness-reference.md +0 -45
- package/agent-spine-plugin/docs/host-integration.md +0 -129
- package/agent-spine-plugin/docs/https-transport.md +0 -116
- package/agent-spine-plugin/docs/learning.md +0 -133
- package/agent-spine-plugin/docs/object-transport.md +0 -93
- package/agent-spine-plugin/docs/peer-transport.md +0 -88
- package/agent-spine-plugin/docs/preflight-recall.md +0 -69
- package/agent-spine-plugin/docs/preservation-contract.md +0 -53
- package/agent-spine-plugin/docs/quality-gates.md +0 -50
- package/agent-spine-plugin/docs/relationships.md +0 -73
- package/agent-spine-plugin/docs/releasing.md +0 -83
- package/agent-spine-plugin/docs/roadmap.md +0 -307
- package/agent-spine-plugin/docs/selfstarter.md +0 -88
- package/agent-spine-plugin/docs/session-briefing.md +0 -74
- package/agent-spine-plugin/docs/shared-memory.md +0 -259
- package/agent-spine-plugin/docs/source-roots.md +0 -86
- package/agent-spine-plugin/docs/sqlite-transport.md +0 -76
- package/agent-spine-plugin/scripts/check-hosts.js +0 -195
- package/agent-spine-plugin/scripts/check-install.js +0 -569
- package/agent-spine-plugin/scripts/check-syntax.js +0 -29
- package/agent-spine-plugin/scripts/github-actions.js +0 -11
- package/agent-spine-plugin/scripts/release-check.js +0 -128
- package/agent-spine-plugin/scripts/run-acceptance.js +0 -19
- package/agent-spine-plugin/scripts/run-checks.js +0 -46
- package/agent-spine-plugin/scripts/run-tests-hermetic.js +0 -73
- package/agent-spine-plugin/spine-example/1-identity.md +0 -12
- package/agent-spine-plugin/spine-example/2-voice.md +0 -6
- package/agent-spine-plugin/spine-example/3-conduct.md +0 -8
- package/agent-spine-plugin/spine-example/4-history.md +0 -4
- package/bin/empty-response-retry-policy.cjs +0 -29
- package/bin/fredrik-glm-provider.cjs +0 -256
- package/bin/package-regression-policy.cjs +0 -77
- package/fredrik-glm-profile.toml.example +0 -26
- package/release-planned-removals.json +0 -15
- package/scripts/check-active-profile-plugin-startup.js +0 -36
- package/scripts/check-active-work-steer-regression.js +0 -46
- package/scripts/check-approval-observability-regression.js +0 -111
- package/scripts/check-approval-queue-shortcuts-regression.js +0 -65
- package/scripts/check-bundled-agent-spine-regression.js +0 -48
- package/scripts/check-codebase-search-packaging-regression.js +0 -92
- package/scripts/check-copy-command-regression.js +0 -74
- package/scripts/check-current-turn-read-pin-mutation-regression.js +0 -72
- package/scripts/check-current-turn-read-pin-regression.js +0 -94
- package/scripts/check-deepseek-native-max-regression.js +0 -49
- package/scripts/check-empty-response-effort-downgrade-regression.js +0 -48
- package/scripts/check-fredrik-glm-mutation-regression.js +0 -18
- package/scripts/check-fredrik-glm-regression.js +0 -169
- package/scripts/check-historical-tool-result-preview-regression.js +0 -77
- package/scripts/check-history-pressure-offload-regression.js +0 -77
- package/scripts/check-mcp-startup-wait-budget.js +0 -48
- package/scripts/check-package-regression.js +0 -38
- package/scripts/check-plugin-startup-regression.js +0 -53
- package/scripts/check-programmatic-context-isolation-regression.js +0 -193
- package/scripts/check-programmatic-tool-regression.js +0 -294
- package/scripts/check-queue-controls-regression.js +0 -189
- package/scripts/check-release-metadata.js +0 -103
- package/scripts/check-reload-agent-spine-regression.js +0 -76
- package/scripts/check-resume-replay-regression.js +0 -102
- package/scripts/check-session-cancel-regression.js +0 -43
- package/scripts/check-session-picker-resume-metrics-regression.js +0 -97
- package/scripts/check-session-start-hook-context-regression.js +0 -228
- package/scripts/check-shell-terminal-isolation-regression.js +0 -81
- package/scripts/check-slash-escape-regression.js +0 -89
- package/scripts/check-startup-swarm-command-regression.js +0 -24
- package/scripts/check-structured-subagent-output-regression.js +0 -331
- package/scripts/check-telegram-bridge-watchdog.js +0 -60
- package/scripts/check-telegram-direct-work-resume-regression.js +0 -53
- package/scripts/check-telegram-loop-exactly-once-regression.js +0 -71
- package/scripts/check-todo-loop-regression.js +0 -78
- package/scripts/check-todo-progress-regression.js +0 -416
- package/scripts/check-todo-recovery-catalog-regression.js +0 -50
- package/scripts/check-tool-schema-capacity-regression.js +0 -40
- package/scripts/programmatic-tool-runtime.test.mjs +0 -365
- package/scripts/structured-subagent-output.test.cjs +0 -170
- /package/{scripts → bin}/fix-node-pty-perms.js +0 -0
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
# Release process
|
|
2
|
-
|
|
3
|
-
AgentSpine releases are intentionally tag-authorized while the package is pre-1.0. A maintainer decides when to tag; the repository then builds, verifies, attests, and publishes one traceable release bundle from that exact commit. Pull requests and ordinary branch pushes can never enter the release workflow.
|
|
4
|
-
|
|
5
|
-
## Local release gate
|
|
6
|
-
|
|
7
|
-
Update the version in `package.json`, `package-lock.json`, both host manifests, and the Claude marketplace entry. Move the relevant changelog entries from **Unreleased** into a dated SemVer section, then run:
|
|
8
|
-
|
|
9
|
-
```bash
|
|
10
|
-
npm ci
|
|
11
|
-
npm run check
|
|
12
|
-
npm run release:check -- --tag vX.Y.Z
|
|
13
|
-
python3 /path/to/plugin-creator/scripts/validate_plugin.py .
|
|
14
|
-
python3 /path/to/skill-creator/scripts/quick_validate.py skills/agent-spine
|
|
15
|
-
npm pack --dry-run
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
`release:check` fails unless:
|
|
19
|
-
|
|
20
|
-
- all five version locations agree and the tag is exactly `v{package.version}`;
|
|
21
|
-
- the changelog has a dated section for that version;
|
|
22
|
-
- the Git worktree is clean;
|
|
23
|
-
- npm reports SHA-512 integrity and a correctly versioned tarball;
|
|
24
|
-
- every required Claude Code, Codex, MCP, CLI, source, skill, documentation, license, and changelog file is packaged;
|
|
25
|
-
- no `.env`, key material, Git metadata, tests, workflow files, generated AgentSpine state, or user-owned `AGENTS.md`, `CLAUDE.md`, `SOUL.md`, or `MEMORY.md` enters the tarball;
|
|
26
|
-
- the package remains within explicit file-count and unpacked-size ceilings.
|
|
27
|
-
|
|
28
|
-
## Tag and automated release
|
|
29
|
-
|
|
30
|
-
Only after the release commit is on a fully green `main`, create a signed or annotated tag and push it:
|
|
31
|
-
|
|
32
|
-
```bash
|
|
33
|
-
git tag -s vX.Y.Z -m "AgentSpine vX.Y.Z"
|
|
34
|
-
git push origin vX.Y.Z
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
The tag workflow then:
|
|
38
|
-
|
|
39
|
-
1. checks out the immutable tag with full history;
|
|
40
|
-
2. proves the tagged commit is contained in `main`;
|
|
41
|
-
3. installs only the lockfile dependency graph;
|
|
42
|
-
4. repeats the complete test, audit, host, metadata, changelog, and package-boundary gates;
|
|
43
|
-
5. creates the `.tgz`, a CycloneDX SBOM, and SHA-256 checksums;
|
|
44
|
-
6. creates GitHub build-provenance and SBOM attestations through short-lived OIDC credentials;
|
|
45
|
-
7. transfers the bundle through a named workflow artifact;
|
|
46
|
-
8. gives only the final isolated job `contents: write` and creates the GitHub Release from the existing tag.
|
|
47
|
-
|
|
48
|
-
Every external action is pinned to a full commit SHA. Dependabot watches those pins. The normal CI workflow has only `contents: read`; the build/attestation release job has `contents: read`, `id-token: write`, and `attestations: write`; only the asset-publication job has `contents: write`. No release job receives AgentSpine memory, signing keys, bearer values, npm tokens, or user source files.
|
|
49
|
-
|
|
50
|
-
Protect the GitHub `release` environment with required reviewers if the repository plan supports it. Enable immutable releases and tag protection in repository settings where available. Workflow checks are defense in depth and do not replace repository rulesets.
|
|
51
|
-
|
|
52
|
-
## Verify a downloaded release
|
|
53
|
-
|
|
54
|
-
After downloading the tarball, SBOM, and `SHA256SUMS` from GitHub Releases:
|
|
55
|
-
|
|
56
|
-
```bash
|
|
57
|
-
sha256sum --check SHA256SUMS
|
|
58
|
-
gh attestation verify agent-spine-X.Y.Z.tgz \
|
|
59
|
-
--repo Maykbiletti/AgentSpine
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
Inspect the package without installation:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
npm pack --dry-run ./agent-spine-X.Y.Z.tgz
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Then install the exact tarball in fresh Claude Code and Codex environments and repeat `agentspine doctor`, the MCP handshake, source scan, verification, and audit.
|
|
69
|
-
|
|
70
|
-
## Optional npm publication
|
|
71
|
-
|
|
72
|
-
The GitHub workflow deliberately does not publish to npm until ownership of the package name and the registry-side trust relationship are configured. When enabled, use npm Trusted Publishing bound to this repository, the exact release workflow filename, a GitHub-hosted runner, and a protected release environment. Keep OIDC provenance enabled and do not introduce a long-lived `NPM_TOKEN`.
|
|
73
|
-
|
|
74
|
-
Authoritative references:
|
|
75
|
-
|
|
76
|
-
- [GitHub artifact attestations](https://docs.github.com/actions/security-for-github-actions/using-artifact-attestations/using-artifact-attestations-to-establish-provenance-for-builds)
|
|
77
|
-
- [GitHub secure use reference](https://docs.github.com/actions/reference/security/secure-use)
|
|
78
|
-
- [npm Trusted Publishing](https://docs.npmjs.com/trusted-publishers/)
|
|
79
|
-
- [npm provenance statements](https://docs.npmjs.com/generating-provenance-statements/)
|
|
80
|
-
|
|
81
|
-
## Rollback
|
|
82
|
-
|
|
83
|
-
Never move, reuse, or delete an existing public version tag to hide a bad release. Publish a patch release that reverts the faulty behavior, retain the original checksums and attestations, and explain the affected versions. Uninstalling AgentSpine or deleting its external state must still leave every scanned project file untouched.
|
|
@@ -1,307 +0,0 @@
|
|
|
1
|
-
# Roadmap
|
|
2
|
-
|
|
3
|
-
AgentSpine is built as complete, measurable stages. Later stages do not weaken the preservation kernel.
|
|
4
|
-
|
|
5
|
-
```mermaid
|
|
6
|
-
flowchart TB
|
|
7
|
-
A["1 · Preservation kernel"] --> B["2 · Memory graph"]
|
|
8
|
-
B --> C["3 · Relationships"]
|
|
9
|
-
C --> D["4 · Attention"]
|
|
10
|
-
D --> E["5 · Safe learning"]
|
|
11
|
-
E --> F["6 · Delegation + coordination"]
|
|
12
|
-
F --> G["7 · Portable shared memory"]
|
|
13
|
-
G --> H["8 · Hardened HTTPS snapshots"]
|
|
14
|
-
H --> I["9 · Budgeted session briefing"]
|
|
15
|
-
I --> J["10 · Immutable HTTPS objects"]
|
|
16
|
-
J --> K["11 · Verifiable releases"]
|
|
17
|
-
K --> L["12 · Signed mutable feeds"]
|
|
18
|
-
L --> M["13 · Challenge-response peers"]
|
|
19
|
-
M --> N["14 · Local SQLite snapshots"]
|
|
20
|
-
N --> O["15 · Automatic live continuity"]
|
|
21
|
-
O --> P["16 · Native attention events"]
|
|
22
|
-
P --> Q["17 · Rights-bound self-starter"]
|
|
23
|
-
Q --> R["18 · Visible cross-host acceptance"]
|
|
24
|
-
R --> S["19 · Host-native source roots"]
|
|
25
|
-
S --> T["20 · Indexed memory"]
|
|
26
|
-
T --> U["21 · Channel wake + voice bridge"]
|
|
27
|
-
```
|
|
28
|
-
|
|
29
|
-
## 1. Preservation kernel
|
|
30
|
-
|
|
31
|
-
Status: implemented for `v0.1`; ongoing hardening.
|
|
32
|
-
|
|
33
|
-
- byte-preserving discovery;
|
|
34
|
-
- SHA-256 provenance catalog;
|
|
35
|
-
- Codex and Claude hierarchy adapters;
|
|
36
|
-
- explicit link graph and ranged reading;
|
|
37
|
-
- CLI, MCP, hooks, tests, and dual-host packaging.
|
|
38
|
-
|
|
39
|
-
## 2. Memory graph
|
|
40
|
-
|
|
41
|
-
Status: local foundation, candidate workflow, provider-neutral exchange contract, and directory adapter implemented.
|
|
42
|
-
|
|
43
|
-
- existing one-fact-per-file layouts are discovered and linked without migration;
|
|
44
|
-
- compact generated index with a configurable context ceiling;
|
|
45
|
-
- typed links, confidence, timestamps, source, and supersession history without deletion;
|
|
46
|
-
- learning candidates separated from confirmed facts.
|
|
47
|
-
- accepted non-private learning can cross installations through quarantine and a second local review.
|
|
48
|
-
|
|
49
|
-
## 3. Relationships
|
|
50
|
-
|
|
51
|
-
Status: local relationship, explicit delegation, and open-thread foundations implemented.
|
|
52
|
-
|
|
53
|
-
- distinct identities for people, agents, channels, groups, and projects;
|
|
54
|
-
- privacy-scoped relationship state per agent and counterpart;
|
|
55
|
-
- responsibilities, delegation boundaries, preferences, goals, no-gos, and open threads;
|
|
56
|
-
- explicit identity linking instead of name-based merging;
|
|
57
|
-
- private facts prevented from leaking into group context.
|
|
58
|
-
|
|
59
|
-
## 4. Attention
|
|
60
|
-
|
|
61
|
-
Status: sparse local foundation implemented; host-specific notification adapters remain out of scope.
|
|
62
|
-
|
|
63
|
-
- low-cost signals for neglected teammates, unanswered questions, promises, and meaningful changes;
|
|
64
|
-
- sparse ranking and presentation throttling rather than interview behavior;
|
|
65
|
-
- task focus and quiet periods suppress all suggestions;
|
|
66
|
-
- private reads are explicit, automatic hooks disclose no cue text;
|
|
67
|
-
- user-controlled disable, resolve, per-cue deletion, and per-entity purge paths.
|
|
68
|
-
|
|
69
|
-
## 5. Safe learning
|
|
70
|
-
|
|
71
|
-
Status: local evidence, review, promotion, supersession, and rollback workflow implemented.
|
|
72
|
-
|
|
73
|
-
- observation candidates remain outside context until accepted;
|
|
74
|
-
- evidence, source fingerprints, confidence, and every prior candidate version are retained;
|
|
75
|
-
- new information changes relevance through explicit supersession instead of erasure;
|
|
76
|
-
- automatic promotion is default-off, thresholded, and limited to project facts and references;
|
|
77
|
-
- acceptance proof and rollback are audited;
|
|
78
|
-
- code, secrets, billing, permissions, and production access remain approval-bound.
|
|
79
|
-
|
|
80
|
-
## 6. Delegation and coordination
|
|
81
|
-
|
|
82
|
-
Status: local default-deny foundation implemented; remote dispatch remains deliberately out of scope.
|
|
83
|
-
|
|
84
|
-
- delegation policy physically separated from context and absent from MCP mutation tools;
|
|
85
|
-
- explicit actor, action, and target matching with owner-confirmed local grants;
|
|
86
|
-
- tasks, open threads, and handoffs with assignment snapshots and retained history;
|
|
87
|
-
- self-management without widening cross-entity delegation;
|
|
88
|
-
- exact private and group audiences, atomic writes, cross-process locking, and fail-closed validation;
|
|
89
|
-
- no task dispatch, messaging, host permissions, tool rights, deployment, billing, or spending authority.
|
|
90
|
-
|
|
91
|
-
## 7. Portable shared memory
|
|
92
|
-
|
|
93
|
-
Status: optional directory transport, Ed25519 origin authentication, hardened HTTPS snapshots, immutable object publication, signed mutable feeds, one-shot peer exchange, and local SQLite snapshot history implemented; hosted database transports remain extension work.
|
|
94
|
-
|
|
95
|
-
- directory adapter usable locally, on a network drive, or through a user-selected synchronization service;
|
|
96
|
-
- strict immutable event schema, canonical SHA-256 integrity, deterministic IDs, limits, and collision detection;
|
|
97
|
-
- private/source/evidence/task/policy data excluded before publication;
|
|
98
|
-
- imported events quarantined and invisible until a second local user review;
|
|
99
|
-
- exact group audience, idempotent concurrent pulls, retained supersession, rollback, and permanent local deletion;
|
|
100
|
-
- MCP restricted to reading reviewed shared context; adapter administration remains local CLI;
|
|
101
|
-
- digest integrity remains available for compatibility; signed mode verifies trusted Ed25519 manifest and event origins;
|
|
102
|
-
- local signer generation, explicit rotation, per-project public-key trust, revocation, retained proof, and audit replay;
|
|
103
|
-
- signatures authenticate configured keys only and never replace quarantine, content review, privacy, or authority boundaries.
|
|
104
|
-
|
|
105
|
-
## 8. Hardened HTTPS snapshots
|
|
106
|
-
|
|
107
|
-
Status: provider-neutral static export, hardened pull, create-only object publication, signed mutable-feed discovery, challenge-response peer exchange, and local SQLite snapshot retention implemented; hosted database adapters remain extension work.
|
|
108
|
-
|
|
109
|
-
- immutable signed snapshot export outside the scanned project;
|
|
110
|
-
- dependency-free HTTPS pull with TLS verification, vetted and pinned DNS, default SSRF protection, no redirects, and exact response limits;
|
|
111
|
-
- optional bearer token read only from an explicitly named environment variable;
|
|
112
|
-
- explicit private-network opt-in with local confirmation;
|
|
113
|
-
- strict bundle digest plus independent manifest and event signature verification before local mutation;
|
|
114
|
-
- import through the same quarantine, second local review, trust, privacy, supersession, rollback, and authority boundaries as the directory adapter;
|
|
115
|
-
- CLI-only transport administration; no network or token surface in MCP or hooks.
|
|
116
|
-
|
|
117
|
-
## 9. Budgeted session briefing
|
|
118
|
-
|
|
119
|
-
Status: provider-neutral CLI, MCP, hook guidance, privacy enforcement, and behavioral tests implemented.
|
|
120
|
-
|
|
121
|
-
- one read across native sources, relationships, accepted local learning, reviewed shared memory, open coordination, and optional attention;
|
|
122
|
-
- current-task-first ordering and local-over-shared deduplication;
|
|
123
|
-
- hard compact-JSON UTF-8 byte ceiling with atomic record inclusion and per-section omission counts;
|
|
124
|
-
- focus active by default and no attention presentation mutation during reads;
|
|
125
|
-
- exact group membership, no private/group mixing, and metadata-only source handling for group audiences;
|
|
126
|
-
- descriptive context only; no policy, credentials, transport administration, messages, or authority.
|
|
127
|
-
|
|
128
|
-
## 10. Immutable HTTPS objects
|
|
129
|
-
|
|
130
|
-
Status: provider-neutral create-only publish and verified read-back implemented; deletion remains out of scope. Feeds, peers, and local SQLite are implemented separately in later stages.
|
|
131
|
-
|
|
132
|
-
- signed snapshot publication under a deterministic SHA-256 object address;
|
|
133
|
-
- atomic create-only `PUT` with `If-None-Match: *` and no overwrite path;
|
|
134
|
-
- `201`/`204` creation and verified `412` idempotent retry semantics;
|
|
135
|
-
- mandatory hardened read-back before reporting success;
|
|
136
|
-
- TLS verification, DNS pinning, SSRF protection, no redirects, strict limits, and exact body length;
|
|
137
|
-
- bearer credentials read only from a named environment variable;
|
|
138
|
-
- explicit local confirmation for every network write and separate private-network opt-in;
|
|
139
|
-
- CLI-only transport surface; no endpoint, credential, publish, overwrite, or delete capability in MCP or hooks;
|
|
140
|
-
- snapshots remain context-only and imports still enter quarantine for a second local review.
|
|
141
|
-
|
|
142
|
-
## 11. Verifiable releases
|
|
143
|
-
|
|
144
|
-
Status: deterministic local gate and tag-authorized GitHub release pipeline implemented; npm publication remains deliberately disabled until registry trust is configured.
|
|
145
|
-
|
|
146
|
-
- exact SemVer parity across npm, lockfile, Claude Code, Codex, and marketplace metadata;
|
|
147
|
-
- strict package allow/deny boundary with size, count, integrity, path, state, key, and user-source checks;
|
|
148
|
-
- full action commit-SHA pinning and Dependabot tracking;
|
|
149
|
-
- tag must match the version, have a dated changelog section, and point to a commit contained in `main`;
|
|
150
|
-
- complete CI, audit, plugin, skill, and package gates run before artifact creation;
|
|
151
|
-
- release tarball, CycloneDX SBOM, and SHA-256 checksum bundle;
|
|
152
|
-
- OIDC-backed build-provenance and SBOM attestations;
|
|
153
|
-
- build/attestation and GitHub publication split into separate least-privilege jobs;
|
|
154
|
-
- optional protected `release` environment and documented consumer verification;
|
|
155
|
-
- no long-lived npm token or automatic registry publication.
|
|
156
|
-
|
|
157
|
-
## 12. Signed mutable feeds
|
|
158
|
-
|
|
159
|
-
Status: provider-neutral signed feed publication, continuity tracking, and quarantined pull implemented; hosted database transports remain extension work. Direct peers and local SQLite are implemented separately in stages 13 and 14.
|
|
160
|
-
|
|
161
|
-
- bounded 256-entry hash-chain window over immutable signed snapshot objects;
|
|
162
|
-
- full Ed25519 signature over feed identity, scope, adapter, sequence, and retained chain;
|
|
163
|
-
- strong ETag compare-and-swap with `If-None-Match: *` genesis and `If-Match` updates;
|
|
164
|
-
- explicit concurrency conflicts without hidden overwrite or retry;
|
|
165
|
-
- local external receipts with retained prior versions and fail-closed corruption handling;
|
|
166
|
-
- rollback, same-sequence equivocation, signer replacement, and continuity-gap rejection;
|
|
167
|
-
- hardened TLS, DNS pinning, SSRF, redirect, compression, size, token, and timeout boundaries;
|
|
168
|
-
- latest snapshot independently verified and imported only into quarantine;
|
|
169
|
-
- CLI-only endpoint and credential administration; no MCP or hook transport capability;
|
|
170
|
-
- feed state, signatures, remote authentication, and imported content remain context-only.
|
|
171
|
-
|
|
172
|
-
## 13. Challenge-response peers
|
|
173
|
-
|
|
174
|
-
Status: one-shot provider-neutral stdio server, owner-selected carrier process, and quarantined pull implemented. Local SQLite is implemented separately in stage 14; hosted database transports remain extension work.
|
|
175
|
-
|
|
176
|
-
- fresh 256-bit random challenge and request ID for every pull;
|
|
177
|
-
- live Ed25519 response binding the challenge to one independently validated signed snapshot;
|
|
178
|
-
- exact outer-response and snapshot-manifest signer equality plus project-local trust;
|
|
179
|
-
- strict request, response, command, argument, stderr, and timeout limits;
|
|
180
|
-
- carrier launched as an exact executable/argument array with the shell disabled;
|
|
181
|
-
- minimal environment allowlist instead of inherited application tokens;
|
|
182
|
-
- no AgentSpine listener, background daemon, vendor SDK, carrier credential store, or hidden retry;
|
|
183
|
-
- both serving and carrier execution require explicit local owner confirmation;
|
|
184
|
-
- received events enter quarantine and still need a second local content review;
|
|
185
|
-
- peer and process administration absent from MCP and hooks;
|
|
186
|
-
- challenge, signatures, carrier authentication, snapshots, and imports remain context-only.
|
|
187
|
-
|
|
188
|
-
## 14. Local SQLite snapshots
|
|
189
|
-
|
|
190
|
-
Status: provider-neutral local database initialization, append-only publication, full inspection, and quarantined pull implemented; hosted SQL services and database replication remain out of scope.
|
|
191
|
-
|
|
192
|
-
- optional built-in `node:sqlite` adapter with no package dependency or vendor SDK;
|
|
193
|
-
- database must remain outside the scanned project and cannot be a symbolic link;
|
|
194
|
-
- immutable binding to one authenticated directory manifest, scope, adapter, signer, and key;
|
|
195
|
-
- full signed snapshots retained as monotonically sequenced append-only revisions;
|
|
196
|
-
- SHA-256 revision chain and one atomic head updated in a `BEGIN IMMEDIATE` transaction;
|
|
197
|
-
- exact application-schema and SQLite-integrity validation plus full replay on every read or write;
|
|
198
|
-
- idempotent repeated publication without history duplication;
|
|
199
|
-
- read-only pull of the latest validated revision through the existing signed quarantine importer;
|
|
200
|
-
- explicit local owner confirmation for initialization and publication;
|
|
201
|
-
- CLI-only paths and administration; no SQLite surface in MCP or hooks;
|
|
202
|
-
- SQLite state, hashes, signatures, snapshots, and imports remain context-only.
|
|
203
|
-
|
|
204
|
-
## 15. Automatic live continuity
|
|
205
|
-
|
|
206
|
-
Status: implemented in `v0.2.0` for the ordered portal-neutral memory milestone. Automatic attention events followed in `v0.3.0`, and rights-bound job resume followed in `v0.4.0`.
|
|
207
|
-
|
|
208
|
-
- native Claude Code and Codex lifecycle bundle with one command per supported event;
|
|
209
|
-
- complete scoped session briefing injected at start, resume, prompt, and compaction boundaries without model-side MCP selection;
|
|
210
|
-
- separate one-time local privacy opt-in for minimal direct conversation signals;
|
|
211
|
-
- exact person, group, project, and task scope with no name-based identity merging;
|
|
212
|
-
- low-risk style, preference, no-go, correction, project-fact, and reference acceptance under recorded thresholds;
|
|
213
|
-
- full-prompt exclusion, SHA-256 provenance receipts, deduplication, locking, rollback, and confirmed purge;
|
|
214
|
-
- unconditional rejection of secrets, sensitive personal facts, private group content, identity claims, authority, access, payment, production, and operational permissions;
|
|
215
|
-
- `0.2.0` cache boundary, explicit Claude component registration, and reproducible fresh-install, stale-upgrade, and uninstall checks;
|
|
216
|
-
- visible fail-closed context when any dependent state is malformed.
|
|
217
|
-
|
|
218
|
-
## 16. Native attention events
|
|
219
|
-
|
|
220
|
-
Status: implemented in `v0.3.0` as the second ordered milestone. The rights-bound self-starter followed in `v0.4.0`.
|
|
221
|
-
|
|
222
|
-
- provider-neutral heartbeat, promise, and blocker lifecycle records written by installed native hooks;
|
|
223
|
-
- immutable person/agent, group, project, task, privacy, and event identity binding;
|
|
224
|
-
- hook receipt deduplication, repetition throttling, atomic multi-process writes, and retained prior versions;
|
|
225
|
-
- start, restart, and compaction injection through the real scoped briefing without MCP selection;
|
|
226
|
-
- current-task blocker and due-promise visibility under focus, with unrelated cues suppressed;
|
|
227
|
-
- quiet-hour, disable, deletion, and person-purge behavior across active state, receipts, history, and presentations;
|
|
228
|
-
- rejection of secret, identity, private-group, authority, access, production, payment, and permission claims;
|
|
229
|
-
- `0.3.0` cache boundary and install/upgrade proof that exactly one MCP server and one lifecycle hook set load;
|
|
230
|
-
- no messages, scheduling, task execution, permissions, or job resume.
|
|
231
|
-
|
|
232
|
-
## 17. Rights-bound self-starter
|
|
233
|
-
|
|
234
|
-
Status: implemented in `v0.4.0` as the third ordered milestone. The visible multi-person, multi-group, multilingual restart acceptance followed in `v0.5.0`.
|
|
235
|
-
|
|
236
|
-
- separate explicit local execution policy binding exact actor, actions, job, task, target, project, optional group, host, and finite tool capabilities;
|
|
237
|
-
- durable waiting, running, blocked, exhausted, completed, and cancelled job state outside the project;
|
|
238
|
-
- one expiring host-session lease, atomically recorded pending effects, content-bound workspace checkpoints, and result digests without tool-output retention;
|
|
239
|
-
- automatic native-hook start, capability recheck, checkpoint, stop, and new-session resume without MCP selection or a model-supplied job envelope;
|
|
240
|
-
- current grant, assignment, scope, host, lease, capability, task, and workspace revalidation before every effect;
|
|
241
|
-
- crash retry only when the workspace still matches the pre-effect digest, otherwise a visible permanent blocker;
|
|
242
|
-
- durable retry budget, exponential backoff, append-only history, idempotent receipts, owner cancellation, and confirmed purge;
|
|
243
|
-
- execution-policy and job administration absent from MCP;
|
|
244
|
-
- `0.4.0` cache boundary and fresh-install/`0.3.0` upgrade proof for exactly one MCP server and one lifecycle hook set;
|
|
245
|
-
- no authority from memory, Markdown, learning, relationships, attention, task text, model claims, previous approval, or MCP.
|
|
246
|
-
|
|
247
|
-
## 18. Visible cross-host acceptance
|
|
248
|
-
|
|
249
|
-
Status: implemented in `v0.5.0` as the fourth and final ordered live-runtime milestone.
|
|
250
|
-
|
|
251
|
-
- one visible 14-gate scenario using the production Claude Code and Codex lifecycle adapter and zero model-side MCP calls;
|
|
252
|
-
- new synthetic people, separated groups, projects, and tasks with exact positive and negative visibility;
|
|
253
|
-
- Swedish and Spanish style continuity across a new session and a native compaction boundary;
|
|
254
|
-
- durable heartbeat, promise, blocker, correction, supersession history, atomic rollback, and complete person purge;
|
|
255
|
-
- exactly authorized start and resume, denied foreign effect, one atomic checkpoint, leases, and idempotent receipts;
|
|
256
|
-
- source hashes before and after the full run plus the ten-gate audit;
|
|
257
|
-
- deterministic SHA-256 receipt per visible status line and one ordered overall digest;
|
|
258
|
-
- `0.5.0` cache boundary and fresh-install/`0.4.0` upgrade proof for exactly one MCP server and one lifecycle hook set;
|
|
259
|
-
- host trust and local continuity/execution consent remain genuine user or owner decisions and are never simulated.
|
|
260
|
-
|
|
261
|
-
## 19. Host-native source-root resolution
|
|
262
|
-
|
|
263
|
-
Status: implemented in `v0.6.0` after a real installed session exposed `cwd` coupling in the earlier synthetic acceptance.
|
|
264
|
-
|
|
265
|
-
- Claude profile, user instructions, exact project chain, and evidenced project-memory resolution;
|
|
266
|
-
- Codex home override, configurable root markers, fallback names, and root-to-`cwd` precedence;
|
|
267
|
-
- explicit portable user-state bindings with provenance, conflict detection, rollback, and purge;
|
|
268
|
-
- no broad home scan, symlink following, foreign-repository visibility, or guessed host paths;
|
|
269
|
-
- visible empty/fail-closed Doctor, Audit, and hook diagnostics;
|
|
270
|
-
- fresh-install and `0.5.0` upgrade smoke tests through the installed production hook bundle.
|
|
271
|
-
|
|
272
|
-
## 20. Indexed-memory hardening
|
|
273
|
-
|
|
274
|
-
Status: implemented in `v0.7.0` after the correct Claude project-memory root still exposed a file-count scaling defect.
|
|
275
|
-
|
|
276
|
-
- `MEMORY.md` is the only live project-memory index; only direct relevant Markdown links are eligible and fact files cannot load further links;
|
|
277
|
-
- an external bounded integrity cache avoids rereading and rehashing unchanged indexed bytes while corrections, deletion, link removal, rollback, and purge invalidate stale records;
|
|
278
|
-
- no-follow filehandle reads validate path scope, regular-file identity, metadata, size, and replacement races before and after every read;
|
|
279
|
-
- conservative `always`, person, project, group, task, and prompt-keyword relevance markers control lazy loading without affecting host precedence or authority;
|
|
280
|
-
- hook, Doctor, source-status, and Audit diagnostics expose bounded counts but no private fact content or unnecessary absolute paths;
|
|
281
|
-
- orphan enumeration exists only as an explicit offline Doctor operation and never runs in a lifecycle hook;
|
|
282
|
-
- a real temporary 50,000-file acceptance proves that live work scales with indexed relevant links and invokes no directory-enumeration primitive;
|
|
283
|
-
- fresh-install and `0.6.0` upgrade checks exercise the same production hook bundle with exactly one MCP server, one hook set, and zero model-side MCP calls.
|
|
284
|
-
|
|
285
|
-
## 21. Authenticated channel wake and voice bridge
|
|
286
|
-
|
|
287
|
-
Status: implemented in `v0.8.0`; live Codex hook trust remains a host-controlled installation check.
|
|
288
|
-
|
|
289
|
-
- owner-confirmed exact provider, tenant, account, chat, thread, sender, agent, project, group, and session bindings;
|
|
290
|
-
- HMAC-authenticated bounded ingress with replay and collision protection;
|
|
291
|
-
- one durable per-agent lane with atomic leases, crash recovery, revocation, retained history, and audit receipts;
|
|
292
|
-
- automatic native `SessionStart` injection without a model-side MCP call;
|
|
293
|
-
- compact voice brief from exact visible persona, preference, correction, no-go, current-task, promise, and blocker signals;
|
|
294
|
-
- automatic authenticated external-roster synchronization adds, renames, leaves, and rejoins people, agents, and bots without rewriting their Markdown;
|
|
295
|
-
- the optional supervised gateway worker polls exact Telegram bindings, creates host-native channel start envelopes, and returns idempotent replies to the origin;
|
|
296
|
-
- focused goals, promise and resolved-blocker wakes, persistent checkpoints, bounded retries, per-agent lanes, and a local kill switch keep useful work moving without chat repetition;
|
|
297
|
-
- multilingual transient voice cues recognize correction, frustration, uncertainty, and success while rejecting attachment and consciousness claims;
|
|
298
|
-
- OpenClaw and Hermes behavior is recorded at pinned upstream commits, with adopted, adapted, and deliberately excluded design choices.
|
|
299
|
-
|
|
300
|
-
## Definition of done for every stage
|
|
301
|
-
|
|
302
|
-
1. A failing case is reproducible.
|
|
303
|
-
2. The smallest coherent stage is implemented.
|
|
304
|
-
3. Focused, mutation, and full-suite tests pass.
|
|
305
|
-
4. Source preservation and rollback are demonstrated.
|
|
306
|
-
5. Security boundaries and known limits are documented.
|
|
307
|
-
6. A real host installation path is exercised.
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
# Rights-bound self-starter
|
|
2
|
-
|
|
3
|
-
AgentSpine `0.4.0` can start or resume one waiting job through installed Claude Code and Codex lifecycle hooks. This is intentionally narrower than general autonomy: an explicit local execution grant must bind the exact actor, action set, job, task, target, project, optional group, host, and finite tool capabilities. Memory, Markdown, learning, relationships, attention, task text, old approvals, and model claims never satisfy that grant.
|
|
4
|
-
|
|
5
|
-
## Lifecycle
|
|
6
|
-
|
|
7
|
-
```mermaid
|
|
8
|
-
sequenceDiagram
|
|
9
|
-
participant O as Local owner
|
|
10
|
-
participant P as Execution policy
|
|
11
|
-
participant H as Native host hooks
|
|
12
|
-
participant J as Durable job state
|
|
13
|
-
participant W as Project workspace
|
|
14
|
-
O->>P: Confirm exact grant
|
|
15
|
-
O->>J: Register exact waiting job
|
|
16
|
-
H->>P: SessionStart: recheck start/resume
|
|
17
|
-
H->>W: Verify content fingerprint
|
|
18
|
-
H->>J: Acquire one expiring session lease
|
|
19
|
-
H-->>H: Inject exact checkpoint into host context
|
|
20
|
-
H->>P: PreToolUse: recheck grant, scope, task, capability
|
|
21
|
-
H->>J: Record pending effect
|
|
22
|
-
H->>W: Host performs one approved effect
|
|
23
|
-
H->>J: PostToolUse: atomically checkpoint result digest and workspace digest
|
|
24
|
-
H->>J: Stop/SubagentStop: close lease exactly once
|
|
25
|
-
H->>P: New session: recheck current grant
|
|
26
|
-
H->>W: Recheck unchanged checkpoint
|
|
27
|
-
H->>J: Resume with a new lease
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
The hook adapter resolves an active job from the native host session. A model does not need to select an MCP tool or repeat a job ID on each tool call. `PreToolUse` still blocks a protected source before evaluating job authority. `PostToolUse` stores only a bounded result digest, not tool output or chat content.
|
|
31
|
-
|
|
32
|
-
## Local owner setup
|
|
33
|
-
|
|
34
|
-
Create the normal context-only task first. Then create a separate execution grant and job from a trusted local integration:
|
|
35
|
-
|
|
36
|
-
```bash
|
|
37
|
-
agentspine execution-grant job:release \
|
|
38
|
-
--id execution-grant:release \
|
|
39
|
-
--actor agent:builder \
|
|
40
|
-
--task task:release \
|
|
41
|
-
--target person:owner \
|
|
42
|
-
--project project:alpha \
|
|
43
|
-
--host claude \
|
|
44
|
-
--capabilities tool:Write,tool:Edit \
|
|
45
|
-
--reason "Owner approved this exact local release preparation" \
|
|
46
|
-
--confirm-local-execution \
|
|
47
|
-
--root /path/to/project
|
|
48
|
-
|
|
49
|
-
agentspine job-register job:release \
|
|
50
|
-
--grant execution-grant:release \
|
|
51
|
-
--max-retries 3 \
|
|
52
|
-
--lease-seconds 120 \
|
|
53
|
-
--confirm-local-execution \
|
|
54
|
-
--root /path/to/project
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
`--confirm-local-execution` is an integration attestation, not authentication. A wrapper must bind it to a genuine current local owner decision. It must never be inferred from a conversation, task, previous approval, model output, MCP response, or stored context.
|
|
58
|
-
|
|
59
|
-
Inspect or stop work locally:
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
agentspine jobs /path/to/project --json
|
|
63
|
-
agentspine execution-policy /path/to/project --json
|
|
64
|
-
agentspine execution-revoke execution-grant:release \
|
|
65
|
-
--reason "Owner revoked the run" \
|
|
66
|
-
--confirm-local-execution \
|
|
67
|
-
--root /path/to/project
|
|
68
|
-
agentspine job-cancel job:release \
|
|
69
|
-
--reason "Work is no longer required" \
|
|
70
|
-
--confirm-local-execution \
|
|
71
|
-
--root /path/to/project
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Execution-policy mutation and job administration are absent from MCP. Hooks cannot invent grants, acknowledge host trust, widen capabilities, send messages, administer transports, or select credentials.
|
|
75
|
-
|
|
76
|
-
## Checkpoint and failure rules
|
|
77
|
-
|
|
78
|
-
- One expiring lease prevents two processes from acting on the same job.
|
|
79
|
-
- Each tool effect needs a stable host delivery ID and a capability such as `tool:Write`; wildcards are forbidden.
|
|
80
|
-
- A pending effect is recorded before the host tool runs. The matching result is checkpointed once.
|
|
81
|
-
- A crashed effect may be retried only if the workspace still matches its pre-effect digest. Any change produces `workspace-changed-after-uncheckpointed-effect` and stops.
|
|
82
|
-
- Changes outside a completed checkpoint produce `workspace-changed-outside-checkpoint` and stop.
|
|
83
|
-
- Current task assignment, task status, grant, host, actor, target, project, group, capability, session lease, and workspace are rechecked before start, resume, and effects.
|
|
84
|
-
- Revocation, expiration, conflict, retry exhaustion, missing scope, malformed state, or a changed task fails closed visibly.
|
|
85
|
-
- Retry count and exponential backoff are durable. Job history and receipts are append-only until an explicit local purge.
|
|
86
|
-
- Job state, policy, locks, and receipts stay in AgentSpine's external per-project state directory. Existing source Markdown is never used as checkpoint storage and is never modified or removed by uninstall.
|
|
87
|
-
|
|
88
|
-
AgentSpine does not authenticate a shell user, bypass host prompts, or guarantee that an arbitrary tool is sandboxed. Host and operating-system permissions remain authoritative. A grant authorizes only the listed AgentSpine lifecycle effects for one exact job; it creates no broader file, network, production, payment, deployment, or messaging right.
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
# Session briefing
|
|
2
|
-
|
|
3
|
-
As of `0.8.0`, native lifecycle hooks resolve host-native user, project, and indexed lazy memory roots, then generate and inject this packet automatically at start, resume, prompt, and compaction boundaries. Exact current-task heartbeat, promise, and blocker events can enter the same constrained attention section. An independently authorized waiting job can also add its exact durable checkpoint at start and resume; execution rights never come from briefing content. MCP and CLI remain inspection surfaces, and model-side tool selection is not part of automatic continuity.
|
|
4
|
-
|
|
5
|
-
`session_briefing` assembles the smallest useful, provider-neutral context packet for one Claude Code, Codex, or generic MCP session. It replaces a chain of separate context reads without turning aggregation into authority. The packet includes a compact `agentspine.voice-brief/v1` so exact visible persona and interaction signals affect the response automatically instead of depending on a voluntary second tool call.
|
|
6
|
-
|
|
7
|
-
```mermaid
|
|
8
|
-
flowchart LR
|
|
9
|
-
H["Host + working directory"] --> B["Session briefing"]
|
|
10
|
-
I["Person · group · project · current task"] --> B
|
|
11
|
-
S["Native sources"] --> B
|
|
12
|
-
R["Relationships"] --> B
|
|
13
|
-
L["Accepted local learning"] --> B
|
|
14
|
-
X["Locally reviewed shared memory"] --> B
|
|
15
|
-
T["Open coordination"] --> B
|
|
16
|
-
A["Due attention cues"] --> B
|
|
17
|
-
B --> P["Scoped compact JSON packet"]
|
|
18
|
-
P -. "never grants" .-> Z["Host or delegation authority"]
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## One scoped read
|
|
22
|
-
|
|
23
|
-
```bash
|
|
24
|
-
agentspine briefing /path/to/project \
|
|
25
|
-
--host codex \
|
|
26
|
-
--entity person:mayk \
|
|
27
|
-
--project project:agentspine \
|
|
28
|
-
--current-task task:release \
|
|
29
|
-
--max-bytes 16384 \
|
|
30
|
-
--json
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
The equivalent MCP tool is `session_briefing`. Its inputs are optional so a host can begin with native sources only and add stable entity, group, project, and task IDs when known.
|
|
34
|
-
|
|
35
|
-
The packet contains:
|
|
36
|
-
|
|
37
|
-
- host-native instruction, soul, memory-index, and linked-source descriptors;
|
|
38
|
-
- the current task first, followed by other visible scoped work;
|
|
39
|
-
- the requested entity and its visible relationship neighborhood;
|
|
40
|
-
- a voice brief containing only visible persona descriptors, allowed voice fields, accepted preferences, corrections, no-gos, the current task, and active promise or blocker signals;
|
|
41
|
-
- accepted local learning relevant to the exact persona, user, tenant, project, group, and task scope; outcome-gated behavior is included only while its canary is active and unexpired or after measured validation;
|
|
42
|
-
- locally reviewed shared memory, deduplicated against equivalent local learning;
|
|
43
|
-
- due attention suggestions only when focus mode is explicitly disabled.
|
|
44
|
-
|
|
45
|
-
Candidates, rejected or superseded learning, pending shared imports, delegation grants, assignment proof, credentials, adapter configuration, signer material, and private keys are never included.
|
|
46
|
-
|
|
47
|
-
The voice brief does not claim that the agent has feelings or consciousness. It asks the host to lead with the useful outcome, avoid re-asking known facts, apply the current persona naturally, and acknowledge a relevant correction, blocker, frustration, uncertainty, or success briefly before acting. Its profile keys are limited to warmth, directness, humor, length, rhythm, and formality; arbitrary entity attributes cannot become behavioral instructions.
|
|
48
|
-
|
|
49
|
-
## Budget behavior
|
|
50
|
-
|
|
51
|
-
`maxBytes` is measured against the compact UTF-8 JSON representation of the complete result, not only source text. The response reports `usedBytes`, `remainingBytes`, the measurement mode, and omission counts by section.
|
|
52
|
-
|
|
53
|
-
Values are atomic: AgentSpine includes a complete source or record, or leaves it out. It never truncates a Markdown document, claim, relationship, task, or cue. Source content is capped at half the packet and 8 KiB so one large file cannot starve current-task context. Every source descriptor retains its original path, layer, byte size, and SHA-256; omitted content remains available through `read_document`.
|
|
54
|
-
|
|
55
|
-
The accepted range is 4 KiB through 256 KiB. The default is 16 KiB.
|
|
56
|
-
|
|
57
|
-
## Focus and privacy
|
|
58
|
-
|
|
59
|
-
Focus is active by default. In that mode attention reports `focus-active` and contributes no cues. `--allow-attention` disables focus suppression for an intentional review; reading a briefing never marks a cue as presented.
|
|
60
|
-
|
|
61
|
-
A group briefing requires an exact known `groupId`. It:
|
|
62
|
-
|
|
63
|
-
- rejects `includePrivate` rather than trying to mix private and group audiences;
|
|
64
|
-
- permits relationship members only through visible `member-of` edges for that exact group;
|
|
65
|
-
- excludes records scoped to every other group;
|
|
66
|
-
- returns source metadata without Markdown content, because arbitrary source text has no machine-verifiable group audience.
|
|
67
|
-
|
|
68
|
-
Direct private context remains an explicit, non-group request.
|
|
69
|
-
|
|
70
|
-
## Authority boundary
|
|
71
|
-
|
|
72
|
-
The whole packet and every overlay record remain `context-only`. A current task describes focus; it does not authorize execution. Relationships, learned claims, shared claims, attention cues, Markdown, and a `responsible-for` edge cannot create permissions or delegation. Host policy controls tools and external actions. AgentSpine's separate explicit local delegation policy controls only its own cross-entity coordination operations.
|
|
73
|
-
|
|
74
|
-
Lifecycle hooks inject the complete scoped packet within the configured byte budget. They fail closed visibly when identity, scope, source, or dependent state cannot be validated; they never replace a missing briefing with counters or a suggestion that the model call MCP.
|