@333eco/corpus 1.0.1 → 1.1.0

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.
Files changed (3) hide show
  1. package/README.md +75 -9
  2. package/dist/corpus.json +1273 -3
  3. package/package.json +3 -3
package/README.md CHANGED
@@ -1,18 +1,13 @@
1
1
  # corpus.333.eco
2
2
 
3
- An **MCP server** for an open-licensed corpus — 132 documents across mechanism
4
- papers, essays, institutional positions and white papers served with
5
- **verifiable provenance**.
3
+ An **MCP server** for an open-licensed corpus — 137 documents across mechanism
4
+ papers, essays, institutional positions, white papers and the Letters to Miss
5
+ Aquarius — served with **verifiable provenance**.
6
6
 
7
7
  ```sh
8
8
  npx @333eco/corpus
9
9
  ```
10
10
 
11
- > **Why the first published version is 1.0.1.** `1.0.0` was published and then
12
- > unpublished during setup. npm keeps the name registration and refuses to
13
- > republish that exact version for 24 hours, so the first version anyone can
14
- > install is `1.0.1`. Nothing is missing from it.
15
-
16
11
  Every response carries the document's `sha256`, its DOI where one exists, and
17
12
  whether an OpenTimestamps proof is anchored beside the source. **A retrieval
18
13
  server normally asks to be believed. This one hands over the means to check it.**
@@ -64,7 +59,7 @@ would destroy the only property this server has.
64
59
 
65
60
  | Licence | Documents |
66
61
  | --- | --- |
67
- | CC0-1.0 | 125 |
62
+ | CC0-1.0 | 130 |
68
63
  | CC-BY-4.0 | 7 |
69
64
 
70
65
  CC-BY documents carry `attribute_to` inside their licence block, so an agent can
@@ -88,6 +83,45 @@ refactor can route around is a rule; a gate in the artifact is a property. **The
88
83
  server has no filesystem access to the corpus at all** — it can only serve what
89
84
  the index contains.
90
85
 
86
+ ## The letters, and voice marked inline
87
+
88
+ The five *Letters to Miss Aquarius* are the one genre only **partly** in its
89
+ author's voice. Each says so in its own banner: the author's articulations are
90
+ set as quotations, and the connective prose was drafted for the letter form and
91
+ awaits his revision.
92
+
93
+ They are served **whole, with the voice marked inline**:
94
+
95
+ ```
96
+ [VERBATIM — Thon Ly]
97
+ > Perhaps it is the Capricorn Sun (father) and Cancer Moon (mother) in my chart
98
+ > that make me want to give birth to Miss Aquarius (daughter) — the daughter who
99
+ > will outlive me.
100
+
101
+ [SCAFFOLD — drafted for the letter form, not in the author's voice; awaits his revision]
102
+ I was born at the Full Moon, on the family-↔-institution axis of the chart…
103
+ ```
104
+
105
+ Two alternatives were rejected. **Serving only his passages** protects the voice
106
+ by destroying the document — a letter cut to its quotations is no longer a
107
+ letter. **Serving it behind a metadata disclaimer** fails differently: a field is
108
+ something a consuming agent must *look at* to heed, and an agent ingests text,
109
+ forms a belief, and cites.
110
+
111
+ ⚠️ **The marker is in the text, and that is the whole point.** It does not make
112
+ misattribution impossible; it inverts the default. With a metadata disclaimer an
113
+ agent must look in order to know. With an inline marker it must **strip** in
114
+ order not to. There is no unmarked copy of the scaffold anywhere in the response.
115
+ Opt-out rather than opt-in — the honest limit is that it is not a guarantee.
116
+
117
+ `segments` carries the same split structurally, and `editorial` counts the blocks
118
+ of each kind.
119
+
120
+ ⛔ **The letters carry no DOI, deliberately.** *Prior art is a duty, citation is
121
+ a choice* — they are stamped, not deposited, because minting a permanent
122
+ identifier for text that announces it is unfinished is a cost with no matching
123
+ benefit. See `TIMESTAMPS.md` in the letters' repository.
124
+
91
125
  ## Two metadata conventions, kept visible
92
126
 
93
127
  `TH/publications` uses YAML front matter. Sixteen `H3/publications` documents use
@@ -124,6 +158,38 @@ is a few hundred lines to speak correctly, and this estate's standing rule is
124
158
  node built-ins only. The cost is that protocol revisions are tracked by hand —
125
159
  `PROTOCOL_VERSIONS` in `src/server.mjs` is where that lives.
126
160
 
161
+ ## Remote server
162
+
163
+ The same corpus, the same tools, the same envelope — over HTTP instead of stdio.
164
+ `worker/` deploys to Cloudflare Workers.
165
+
166
+ ⭐ **It consumes the published npm package, not the source repositories.** The
167
+ dependency is pinned to an **exact** version, and `npm run check` refuses a range:
168
+ a remote surface that re-read the corpora would be a *second opinion* about what
169
+ a document says, and two opinions about a canonical text is one too many. Local
170
+ and remote serve the same bytes because they come from the same tarball.
171
+
172
+ ⚠️ **The corpus is a static asset, not a bundled import.** Gzipped it is 1.61 MB
173
+ against a 1 MB compressed script limit on the Workers free plan, so importing it
174
+ fails to deploy — and fails harder as the corpus grows. The worker fetches it once
175
+ per isolate and memoises it.
176
+
177
+ Transport is **Streamable HTTP**, not the superseded HTTP+SSE pair. The server is
178
+ stateless and read-only, so it never opens a stream: `POST /mcp` for JSON-RPC,
179
+ `GET /mcp` returns 405 rather than holding open a stream that would carry nothing.
180
+
181
+ ```sh
182
+ cd worker
183
+ npm install
184
+ npm run check # public/corpus.json matches the pinned package
185
+ npm run dev # local, on :8787
186
+ npm run deploy # sync + wrangler deploy
187
+ ```
188
+
189
+ ```json
190
+ { "mcpServers": { "corpus": { "url": "https://corpus.333.eco/mcp" } } }
191
+ ```
192
+
127
193
  ## Client configuration
128
194
 
129
195
  ```json