opensocrates 1.0.0 → 1.1.2

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/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/ParkerHwang/OpenSocrates/main/docs/assets/opensocrates-banner.jpg" alt="OpenSocrates" width="820">
3
+ </p>
4
+
1
5
  # OpenSocrates
2
6
 
3
7
  **English** | [한국어](README.ko.md)
@@ -7,121 +11,252 @@
7
11
  [![Release](https://img.shields.io/github/v/release/ParkerHwang/OpenSocrates)](https://github.com/ParkerHwang/OpenSocrates/releases)
8
12
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
9
13
 
10
- OpenSocrates is a local reasoning framework for AI-agent hosts. It detects
11
- requests that benefit from deliberate reasoning, selects relevant reasoning
12
- systems in a separate Codex context, and adds their authored theory and
13
- examples to the active task. Straightforward factual and mechanical work can
14
- pass through unchanged.
15
-
16
- Version `1.0.0` includes 48 reasoning systems and supports Codex Desktop and
17
- Codex CLI on Apple-silicon macOS (`darwin-arm64`). Other platforms, binary
18
- signing, notarization, and clean-machine installation are not yet claimed as
19
- validated.
14
+ OpenSocrates is a local integration and authored reasoning framework for
15
+ Claude and Codex. It detects requests that benefit from deliberate reasoning,
16
+ uses a fresh host-native selector to choose relevant systems, and adds their
17
+ complete theory and examples to the active task. Straightforward factual and
18
+ mechanical work can pass through unchanged.
19
+
20
+ Version `1.1.2` includes 48 reasoning systems, one user-facing Claude entry, a
21
+ Claude grounding gate that verifies selected procedures were read, coordinated
22
+ Claude/Codex lifecycle management, and opt-in automatic updates on
23
+ Apple-silicon macOS (`darwin-arm64`). It uses your existing host login and does
24
+ not require an API key or an OpenSocrates backend.
25
+
26
+ > **Latest release: [OpenSocrates 1.1.2](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.2).**
27
+ > It adds authenticated Claude grounding receipts, one bounded repair pass,
28
+ > and artifact-instance-bound replay protection. Upgrade both managed hosts
29
+ > together with `npx --yes opensocrates@1.1.2 update --host all`.
30
+
31
+ ## Host support
32
+
33
+ | Host surface | Automatic selection | User-facing entry | Validation status |
34
+ | --- | --- | --- | --- |
35
+ | Codex CLI and Desktop | Yes | OpenSocrates plugin | Release-validated on `darwin-arm64` |
36
+ | Claude Code CLI | Yes, through `UserPromptSubmit` | `/opensocrates` | Locally validated on `darwin-arm64` |
37
+ | Claude Code desktop app | Implemented, where Claude Code plugins run | `/opensocrates` | Implemented; no live probe receipt |
38
+ | Claude Cowork | Implemented, when the local plugin runtime is available | `/opensocrates` | Experimental; no live probe receipt |
39
+ | Claude web and Desktop Chat | No hooks | `/opensocrates` | Skills-only; upload path unvalidated |
40
+
41
+ The status column uses four distinct levels. Do not read them as
42
+ interchangeable:
43
+
44
+ - **Implemented** — the integration exists in code and ships in the package.
45
+ - **Locally validated** — exercised end to end on a maintainer machine, but
46
+ not on every build.
47
+ - **Release-validated** — exercised by the release gate on every build.
48
+ - **Experimental / no live probe receipt** — implemented, but no captured
49
+ receipt shows the host actually delivering the hook. `os capabilities show`
50
+ reports these capabilities as `unknown`, not as available.
51
+
52
+ Claude Chat surfaces do not run plugin hooks. They can use the generated
53
+ skills, but automatic per-prompt selection is available only on Claude Code
54
+ and Cowork surfaces that execute the plugin runtime. OpenSocrates fails open
55
+ if a hook or selector is unavailable.
56
+
57
+ Cowork carries one further unverified assumption. OpenSocrates registers its
58
+ marketplace with `claude plugin marketplace add --scope user`, which writes
59
+ Claude Code user settings. Anthropic documents that plugin hooks run in Cowork,
60
+ but does not document that a marketplace registered through the Claude Code CLI
61
+ is visible to Cowork. Until a receipt exists, treat Cowork as experimental.
20
62
 
21
63
  ## Install
22
64
 
23
- Before installing, sign in to Codex with OAuth and make sure the `codex`
24
- command is available.
65
+ Before installing, sign in to the host and make sure its command is available:
66
+
67
+ - Claude: Claude Code `2.1.205` or later and the `claude` command;
68
+ - Codex: an OAuth-authenticated `codex` command.
25
69
 
26
- ### Option 1: npx from npm
70
+ Node.js 20 or later is required. The published `opensocrates` npm package is a
71
+ small, dependency-free installer. It downloads the matching package from
72
+ GitHub Releases and verifies the release checksum and every file checksum
73
+ before registering an owner-marked managed marketplace.
27
74
 
28
- Requires Node.js 20 or later. The npm package is a small, dependency-free
29
- installer; it downloads and verifies the matching package from GitHub
30
- Releases.
75
+ ### Install every ready host
31
76
 
32
77
  ```bash
33
- npx --yes opensocrates@1.0.0 install
78
+ npx --yes opensocrates@1.1.2 install --host all
34
79
  ```
35
80
 
36
- Lifecycle commands:
81
+ The all-host path detects supported, authenticated host CLIs, completes every
82
+ preflight before changing either host, verifies and stages both packages, and
83
+ then activates one release transactionally. If one activation fails, every
84
+ host already changed in that transaction is restored to its previous managed
85
+ registration.
86
+
87
+ Use the same host value for the complete lifecycle:
37
88
 
38
89
  ```bash
39
- npx --yes opensocrates@1.0.0 status
40
- npx --yes opensocrates@1.0.0 update
41
- npx --yes opensocrates@1.0.0 remove
90
+ npx --yes opensocrates@1.1.2 status --host all
91
+ npx --yes opensocrates@1.1.2 update --host all
92
+ npx --yes opensocrates@1.1.2 remove --host all
42
93
  ```
43
94
 
44
- ### Option 2: npx from GitHub
95
+ A private `~/.opensocrates/desired-state.json` manifest records the selected
96
+ channel, installed hosts, and desired active version. `status --host all`
97
+ reports the desired and available versions, last check, last successful
98
+ automatic update, and per-host drift.
99
+
100
+ ### Install one host explicitly
45
101
 
46
- Requires Node.js 20 or later. This command installs directly from the tagged
47
- GitHub repository and remains available without the npm registry.
102
+ Codex remains the default host for backward compatibility:
48
103
 
49
104
  ```bash
50
- npx --yes github:ParkerHwang/OpenSocrates#v1.0.0 install
105
+ npx --yes opensocrates@1.1.2 install
106
+ # Equivalent: npx --yes opensocrates@1.1.2 install --host codex
107
+ npx --yes opensocrates@1.1.2 install --host claude
51
108
  ```
52
109
 
53
- Lifecycle commands:
110
+ Existing `--host codex` and `--host claude` lifecycle commands remain
111
+ supported. A host-specific update can intentionally create drift; a later
112
+ `update --host all` or successful automatic reconciliation brings every host
113
+ recorded in desired state back to one version.
114
+
115
+ ### Opt-in automatic updates
54
116
 
55
117
  ```bash
56
- npx --yes github:ParkerHwang/OpenSocrates#v1.0.0 status
57
- npx --yes github:ParkerHwang/OpenSocrates#v1.0.0 update
58
- npx --yes github:ParkerHwang/OpenSocrates#v1.0.0 remove
118
+ npx --yes opensocrates@1.1.2 auto-update enable --host all
119
+ npx --yes opensocrates@1.1.2 auto-update status
120
+ npx --yes opensocrates@1.1.2 auto-update disable
59
121
  ```
60
122
 
61
- The installer downloads the matching GitHub Release asset, verifies both the
62
- release checksum and every checksum inside the package, and then registers a
63
- private managed marketplace under the current Codex home.
123
+ Automatic updates are disabled until explicitly enabled. The macOS LaunchAgent
124
+ starts a bounded hourly poll; desired state applies the configured interval
125
+ (24 hours by default) with jitter and a single-instance lock. The job invokes
126
+ the selected npm channel, verifies release and package checksums, stages every
127
+ managed host, and reconciles them as one transaction. Major-version upgrades
128
+ are blocked by default; use `--allow-major` only when that policy is intended.
129
+
130
+ Passing one host to `auto-update enable` narrows only the automatic-update
131
+ scope. It never removes another installed host from desired state;
132
+ `status --host all` continues to track every installation, and a later
133
+ `update --host all` still reconciles the complete installed set.
134
+
135
+ The updater keeps a private receipt with version, time, per-host result, and an
136
+ error category only. It never records prompts, transcripts, credentials, or
137
+ workspace paths. `auto-update disable` unloads and removes the LaunchAgent;
138
+ `remove --host all` does the same before removing the managed hosts.
139
+
140
+ ### Claude web and Desktop Chat skills
141
+
142
+ These surfaces support plugin skills but not hooks. Download
143
+ `opensocrates-1.1.2-claude-chat-skills.zip` from the release and upload it from
144
+ Claude's plugin customization UI. The package exposes exactly one
145
+ `/opensocrates` skill; its 48 method procedures, rigor, evidence, and trace
146
+ controls are internal supporting references. Automatic selection is absent
147
+ because Chat does not execute plugin hooks. See Anthropic's
148
+ [plugin surface guide](https://support.claude.com/en/articles/13837440-use-plugins-in-claude).
64
149
 
65
- ### Option 3: download from GitHub Releases
150
+ ### Install from a tagged GitHub source
66
151
 
67
- Download `opensocrates.mjs` from the
68
- [v1.0.0 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.0.0),
69
- then run:
152
+ The same host option works without the npm registry:
70
153
 
71
154
  ```bash
72
- node opensocrates.mjs install
155
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.2 install --host all
156
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.2 install --host claude
157
+ npx --yes github:ParkerHwang/OpenSocrates#v1.1.2 install --host codex
73
158
  ```
74
159
 
75
- For a fully manual download and checksum check:
160
+ ### Manual release verification
161
+
162
+ Download `opensocrates.mjs`, the host package, and its `.sha256` file from the
163
+ [v1.1.2 release](https://github.com/ParkerHwang/OpenSocrates/releases/tag/v1.1.2).
164
+ For Claude, for example:
76
165
 
77
166
  ```bash
78
- curl -fLO https://github.com/ParkerHwang/OpenSocrates/releases/download/v1.0.0/opensocrates-1.0.0-codex-plugin.zip
79
- curl -fLO https://github.com/ParkerHwang/OpenSocrates/releases/download/v1.0.0/opensocrates-1.0.0-codex-plugin.zip.sha256
80
- shasum -a 256 -c opensocrates-1.0.0-codex-plugin.zip.sha256
81
- node opensocrates.mjs install \
82
- --asset opensocrates-1.0.0-codex-plugin.zip \
83
- --checksum opensocrates-1.0.0-codex-plugin.zip.sha256
167
+ shasum -a 256 -c opensocrates-1.1.2-claude-plugin.zip.sha256
168
+ node opensocrates.mjs install --host claude \
169
+ --asset opensocrates-1.1.2-claude-plugin.zip \
170
+ --checksum opensocrates-1.1.2-claude-plugin.zip.sha256
84
171
  ```
85
172
 
86
- ### Option 4: build and install from source
173
+ Replace `claude` with `codex` for the Codex package.
174
+
175
+ ### Migrating a pre-1.0 Claude plugin
87
176
 
88
- Requires [uv](https://docs.astral.sh/uv/) and Python 3.12.
177
+ Some development builds used a case-sensitive marketplace named
178
+ `OpenSocrates`. The new marketplace is `opensocrates`. The installer detects
179
+ the old registration and refuses to remove it automatically. After reviewing
180
+ what is installed, remove it explicitly:
89
181
 
90
182
  ```bash
91
- git clone https://github.com/ParkerHwang/OpenSocrates.git
92
- cd OpenSocrates
93
- uv python install 3.12
94
- uv sync --locked --all-groups
95
- make release-check
96
- uv run --locked --no-sync python tools/codex_plugin.py install
183
+ claude plugin uninstall opensocrates@OpenSocrates --scope user
184
+ claude plugin marketplace remove OpenSocrates --scope user
185
+ npx --yes opensocrates@1.1.2 install --host claude
97
186
  ```
98
187
 
99
- `make release-check` builds the native runtime and installable package locally.
100
- Generated files are written to ignored `build/` and `dist/` directories.
188
+ Updating a managed v1.1.0 Claude installation replaces the complete package
189
+ tree. Its old 48 top-level method skills, `rigor`, `trace`, and duplicate
190
+ commands are therefore removed rather than left visible as stale entries.
101
191
 
102
192
  ## Use
103
193
 
104
- Use Codex normally. Before each submitted prompt, OpenSocrates may intervene
105
- when the request needs judgment, interpretation, diagnosis, explanation,
106
- planning, evidence reconciliation, or another structured reasoning process.
107
- When it intervenes, it:
194
+ Use Claude or Codex normally. Before a submitted prompt, OpenSocrates may
195
+ intervene when the request needs judgment, interpretation, diagnosis,
196
+ explanation, planning, evidence reconciliation, or another structured
197
+ reasoning process. When it intervenes, it:
108
198
 
109
- 1. uses a fresh, ephemeral selector thread;
199
+ 1. starts a fresh, non-persistent selector in the current host;
110
200
  2. chooses from the authored 48-system catalog;
111
201
  3. writes the complete selected content to an owner-only temporary Markdown
112
- file; and
113
- 4. adds one hidden context message telling the active task to read that file.
114
-
115
- There is no fixed selection-count limit. The hook message stays small while
116
- the full selected theory and examples remain uncompressed in the referenced
117
- file.
118
-
119
- The selector has a 30-second internal deadline, does not retry, and fails open.
120
- A timeout, SDK error, invalid output, non-intervention decision, unsafe
121
- context, or unavailable hook produces no injection and does not block the
122
- user's task.
202
+ file;
203
+ 4. adds a bounded hidden context message with each method ID, content revision,
204
+ and, when they fit, its exact `Do not use when` and `Stop conditions`; and
205
+ 5. requires the active task to read the complete file before applying the
206
+ method and to end a grounded response with an exact audit line such as
207
+ `OpenSocrates grounding: triangulation@1`.
208
+
209
+ On Claude hook surfaces, a Read-only `PostToolUse` hook records an authenticated
210
+ receipt only when the exact current-turn file is read from its first line
211
+ through a terminal marker. At `Stop`, a missing receipt or audit line requests
212
+ one bounded repair pass; `stop_hook_active` prevents a continuation loop. A
213
+ partial, truncated, failed, or wrong-file read is not accepted. Claude Chat
214
+ does not run these hooks, so its grounding contract remains skills-only.
215
+
216
+ The receipt records that a successful `Read` callback for that exact file
217
+ returned content reaching the terminal marker. It is not a proof that every byte
218
+ was delivered, and the gate fails open. See [SECURITY.md](SECURITY.md) for the
219
+ boundary this does and does not defend.
220
+
221
+ There is no fixed selection-count limit. The selector has a 30-second internal
222
+ deadline, does not retry, and fails open. A timeout, host error, invalid output,
223
+ non-intervention decision, unsafe context, or unavailable hook produces no
224
+ injection and does not block the user's task.
225
+
226
+ On Claude, explicitly invoke the same controller when desired:
227
+
228
+ ```text
229
+ /opensocrates <request>
230
+ /opensocrates auto <request>
231
+ /opensocrates trace
232
+ /opensocrates status
233
+ ```
123
234
 
124
- To prevent the selector from requesting bounded transcript context:
235
+ Only `/opensocrates` appears in Claude's skill and command UI. The controller
236
+ selects and loads internal method references; users do not need to browse the
237
+ 48-system implementation catalog.
238
+
239
+ The Claude selector uses one `claude --safe-mode -p` process with no session
240
+ persistence. Safe mode disables user, project, and plugin customizations:
241
+ `CLAUDE.md`, skills, plugins, hooks, MCP servers, custom commands, and agents.
242
+ OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`,
243
+ and `--strict-mcp-config` so that no built-in or MCP tool remains available. It
244
+ receives only the current prompt and the authored selection catalog.
245
+
246
+ Managed policy settings are part of the host trust boundary and are **not**
247
+ disabled by safe mode. Anthropic's
248
+ [CLI reference](https://code.claude.com/docs/en/cli-reference) states that under
249
+ `--safe-mode` "managed settings policy still applies, including
250
+ policy-configured hooks". On a machine where an administrator configures a
251
+ managed `UserPromptSubmit` hook, that hook runs inside the selector process,
252
+ receives the current prompt on standard input, and can return
253
+ `additionalContext` that enters selection. Managed plugins, managed skills,
254
+ managed `CLAUDE.md`, and policy-configured MCP servers do not load. If your
255
+ organization configures managed hooks, treat the selector prompt as visible to
256
+ them and disable OpenSocrates selection if that is unacceptable.
257
+
258
+ The Codex selector can additionally use bounded transcript context unless
259
+ disabled:
125
260
 
126
261
  ```bash
127
262
  export OPENSOCRATES_SELECTOR_TRANSCRIPT_ACCESS=0
@@ -129,24 +264,40 @@ export OPENSOCRATES_SELECTOR_TRANSCRIPT_ACCESS=0
129
264
 
130
265
  ## Privacy and security
131
266
 
132
- OpenSocrates runs locally through the Codex app-server and the user's existing
133
- Codex OAuth session. It does not require an API key, host a backend, execute
134
- the user's requested task, or add telemetry.
267
+ OpenSocrates runs its integration locally and uses the existing Claude or
268
+ Codex login. Host model requests are still processed by the selected host
269
+ service under that service's terms. OpenSocrates does not host a backend, add
270
+ telemetry, store an API key, or execute the user's requested task.
135
271
 
136
272
  Temporary instruction files contain authored OpenSocrates content only. Raw
137
- prompts, transcripts, workspace files, tool data, OAuth credentials, and
138
- selector reasoning are not written to records, logs, metrics, diagnostics, or
139
- temporary instruction files. Turn files are removed on `Stop`, remaining
273
+ prompts, transcripts, workspace files, tool data, credentials, and selector
274
+ reasoning are not written to OpenSocrates records, logs, metrics, diagnostics,
275
+ or instruction files. The complete Read response is inspected only in memory
276
+ for its terminal marker and is not retained. The owner-only grounding receipt
277
+ stores only an artifact digest, content revision, selected method IDs, and
278
+ keyed authentication/tool-use tags—never a prompt, tool output, workspace path,
279
+ or artifact path. Turn files and receipts are removed on `Stop`, remaining
140
280
  session files on `SessionEnd`, and crash leftovers older than 24 hours on
141
281
  `SessionStart`.
142
282
 
143
- See [SECURITY.md](SECURITY.md) for vulnerability reporting and the current
283
+ When enabled, the updater stores only desired lifecycle state and the concise
284
+ receipt described above, under owner-only permissions. It does not inspect or
285
+ terminate running Claude or Codex sessions; a running task keeps its loaded
286
+ plugin, and a new task naturally loads the reconciled version.
287
+
288
+ See [SECURITY.md](SECURITY.md) for vulnerability reporting and the measured
144
289
  support boundary.
145
290
 
146
291
  ## Develop
147
292
 
148
293
  The source repository intentionally excludes native binaries and intermediate
149
- build output. Install the locked development environment and run:
294
+ build output. Install [uv](https://docs.astral.sh/uv/), Python 3.12, and Node.js
295
+ 20 or later, then run:
296
+
297
+ Before merging a release candidate, follow the
298
+ [clean Apple-silicon Mac acceptance procedure](docs/clean-machine-acceptance.md)
299
+ to exercise the real authenticated Claude Code and Codex homes and return a
300
+ privacy-safe evidence bundle.
150
301
 
151
302
  ```bash
152
303
  make bootstrap
@@ -162,12 +313,11 @@ npm pack --dry-run
162
313
  make release-check
163
314
  ```
164
315
 
165
- Repository layout:
166
-
167
316
  | Path | Purpose |
168
317
  | --- | --- |
169
- | `src/opensocrates/` | Python 3.12 runtime and selector source |
318
+ | `src/opensocrates/` | Shared Python 3.12 runtime and host-native selectors |
170
319
  | `content/` | Policies, localized messages, methods, theory, and examples |
320
+ | `plugin-src/claude/` | Claude plugin templates |
171
321
  | `plugin-src/codex/` | Codex plugin templates |
172
322
  | `schemas/source/` | Canonical schema definitions |
173
323
  | `schemas/v1/` | Generated, versioned public schemas |
@@ -177,8 +327,8 @@ Repository layout:
177
327
  | `build/`, `dist/` | Generated locally and published as release assets |
178
328
 
179
329
  Generated schemas and compiled content must be changed through their canonical
180
- sources and generators. Release binaries belong in GitHub Releases, not in the
181
- Git history.
330
+ sources and generators. Release binaries belong in GitHub Releases, not in Git
331
+ history.
182
332
 
183
333
  ## Contributing
184
334
 
@@ -191,3 +341,6 @@ requests. The project follows the [Code of Conduct](CODE_OF_CONDUCT.md).
191
341
  OpenSocrates is available under the [MIT License](LICENSE). You may use,
192
342
  modify, distribute, sublicense, and sell copies, provided the copyright and
193
343
  license notice are preserved.
344
+
345
+ OpenSocrates is an independent open-source project and is not affiliated with
346
+ or endorsed by Anthropic or OpenAI.
package/SECURITY.md CHANGED
@@ -34,14 +34,80 @@ severity, and the availability of a safe fix.
34
34
 
35
35
  ## Security boundary
36
36
 
37
- OpenSocrates 1.0:
37
+ OpenSocrates 1.x:
38
38
 
39
- - runs locally through Codex and uses the user's existing OAuth session;
40
- - does not require or store an OpenAI API key;
39
+ - runs its integration locally through Claude or Codex and uses the user's
40
+ existing host login;
41
+ - does not require or store an Anthropic or OpenAI API key;
41
42
  - does not host an OpenSocrates backend or add telemetry;
42
43
  - verifies downloadable packages with SHA-256 release and package manifests;
44
+ - keeps cross-host activation transactional and restores prior managed
45
+ registrations when a coordinated activation fails;
46
+ - leaves scheduled updates disabled until explicitly enabled and stores only
47
+ owner-readable desired state, a single-instance lock, and content-free update
48
+ receipts;
43
49
  - fails open when the selector cannot safely complete.
44
50
 
51
+ The Claude selector runs a bounded, non-persistent `claude --safe-mode -p`
52
+ process. Safe mode disables user, project, and plugin customizations, and
53
+ OpenSocrates additionally passes `--tools ""`, `--disallowedTools "mcp__*"`, and
54
+ `--strict-mcp-config` so no built-in or MCP tool remains. It receives the current
55
+ prompt and authored selection catalog only. The process uses the user's Claude
56
+ login, so model requests remain subject to Anthropic's service and data-handling
57
+ terms. The Codex selector uses the pinned Codex SDK and existing OAuth session in
58
+ its own isolated worker.
59
+
60
+ The selector environment is default-deny. `CLAUDE_CONFIG_DIR` is one of the
61
+ small set of allowed path variables because the child needs it to locate the
62
+ user's existing Claude login when a non-default config directory is in use.
63
+ OpenSocrates does not copy, inspect, or log credentials from that directory.
64
+
65
+ Managed policy settings are part of the host trust boundary and are not disabled.
66
+ Anthropic's [CLI reference](https://code.claude.com/docs/en/cli-reference) states
67
+ that under `--safe-mode` "managed settings policy still applies, including
68
+ policy-configured hooks". Consequences on an organization-managed machine:
69
+
70
+ - a managed `UserPromptSubmit` hook executes inside the selector process,
71
+ receives the current prompt on standard input, and can return
72
+ `additionalContext` that enters selection;
73
+ - managed plugins, managed skills, managed `CLAUDE.md`, and policy-configured
74
+ MCP servers do not load.
75
+
76
+ OpenSocrates does not detect or override managed policy. Selection remains
77
+ bounded regardless: the model's returned instruction text is discarded, and only
78
+ authored catalog content assembled by OpenSocrates is ever injected. Operators
79
+ who cannot accept managed-hook visibility of the selector prompt should not
80
+ enable OpenSocrates selection on those machines.
81
+
82
+ On Claude surfaces that deliver the packaged hooks, the grounding gate observes
83
+ only successful `Read` callbacks for the current turn's exact instruction file.
84
+ It transiently checks that the response reached an authored terminal marker and
85
+ does not retain the response. The owner-only authenticated receipt stores only
86
+ the artifact digest, content revision, selected method IDs, and keyed
87
+ authentication/tool-use tags; prompts, transcripts, raw tool output,
88
+ credentials, workspace paths, and artifact paths are excluded. `Stop` removes
89
+ the receipt with the turn artifact, and the 24-hour sweep covers crash leftovers.
90
+
91
+ The gate's scope is deliberate and worth stating plainly. It establishes that a
92
+ successful `Read` callback naming the exact current-turn artifact returned
93
+ content reaching the authored terminal marker. It does not cryptographically
94
+ prove that every artifact byte was returned: a synthetic payload carrying only
95
+ the marker would satisfy the marker test. That is not reachable by the model,
96
+ which does not author `tool_response`, and the marker is the artifact's last
97
+ line, so a truncated read loses it. Anything able to forge that callback already
98
+ controls the hook's standard input and is outside the boundary this gate
99
+ defends. The gate raises the cost of an ungrounded answer; it is not a proof of
100
+ delivery, and it fails open by design.
101
+
102
+ The optional macOS LaunchAgent invokes the selected published npm channel and
103
+ then uses the same verified installer path as a manual update. It does not read
104
+ or terminate active Claude or Codex sessions. Its receipt contains only the
105
+ checked version, timestamp, per-host result, and an error category; prompts,
106
+ transcripts, workspace paths, credentials, and raw error output are excluded.
107
+ Automatic major-version upgrades are disabled unless the user explicitly
108
+ changes that policy.
109
+
45
110
  Signing, notarization, clean-machine installation, platforms other than
46
- `darwin-arm64`, and actual host hook delivery are not claimed as validated.
47
- See the release limitations file for the complete measured boundary.
111
+ `darwin-arm64`, Claude Chat automatic hooks, and live delivery on every host
112
+ surface are not claimed as validated. See the release limitations file for the
113
+ complete measured boundary.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0.0
1
+ 1.1.2