cd7e5b2b76059d21dc2398ceb223889933ab4c87
5
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
92d5ad2547 |
session 2026-08-13: REVIEWED-119/120 placed; MCP key descriptions refreshed
⚠ THIS COMMIT'S CONTENTS ARE MIXED, BY EXECUTOR ERROR, AND THE MESSAGE NOW SAYS SO RATHER THAN DESCRIBING ONLY ONE PART. The original message named only the governance-mcp.py change; `git add -A` had swept four other files. Amended before push, so no shared history is rewritten. What is actually here: 1. REVIEWED-119 and REVIEWED-120 (REVIEWED.md, +38) — STEWARD acts, placed during this session. 119 authorizes PENDING-135 option (c), instance 8 reclassified as a negative-candidate with the sub-type name held open, and corrects the item's own claim that option (d) was blocked cross-repo (the constraint is studium/v2-gold@1 §14.2, engine-side and D-1, not the chamber-locked studium/meta@1). 120 authorizes PENDING-136 option (c), retiring bare `distinct_spans`. 2. PENDING-135, PENDING-136 and the PENDING-131 Addendum 4 defect-count fix (PENDING.md, +212) — executor filings, and the ones that legitimately belong to a session wrap. 3. The session ledger (claude/memory/session-ledger-2026-08-13.md) — likewise. 4. governance-mcp.py (+24) — the [FIX] the original message described: two V0-lane key descriptions had gone stale the same day the dispositions landed. PENDING-134's H1 holds the doctrine ruling until those keys are actually SERVED (the running client keeps the old eight-key map until restart, which is steward action and still pending). The descriptions are what the jurist reads to decide which key to OPEN, so a stale index served at first contact would mislead on first contact — the class this whole arc is about. Selftest 54 checks, 0 failures. 5. Brewfile (+1, `mas "NordVPN"`) — NOT this session's work. It belongs to sysupdate's sweep and was swept in by the same error. Left in place rather than surgically removed: extracting it would rewrite more than it repairs, and the line is already accurate. Recorded so the next reader is not misled about which process authored it. The wrap protocol's §6.5 requires a scoped add for exactly this reason — the steward's in-progress changes belong to the steward's sweep, and a governance act placed by the steward must not be recorded under an executor's message. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G38S6gU6G7akko9syvB7nu |
||
|
|
4c3758e559 |
[PROPOSAL] PENDING-134 (whose-proposition as doctrine); 132 split+re-grounded; 133 rescoped; MCP opens the V0-lane texts
Jurist ruling accepted in full on all six questions. Q1: the variable is right, the derivation is not. §6.2 is PRE-REGISTERED, and a test that changes stratum-B membership, derived after reading the spans it reclassifies and entering by interpretation, voids that guarantee whether or not the test is right. Filed as PENDING-134 — new doctrine, dated, with §7.4(ii) as SUPPORTING ARGUMENT rather than derivation and §6.2's double omission recorded as the counter-argument heard and overruled. The decisive form of that objection is the jurist's: §6.2 admits F5 as 'qualified span (F5)', a construction that would have admitted 'reported-speech span (F4)' and was in use one item away. Q3: ran the fused-claim test on instance 8's fragments. It goes against retention — fragment 2 opens on the tail of the carpenter's speech with NO attributing clause before reaching Mauss's conclusion. The B4 shape. PENDING-132 amended: the retention is split out, and the retraction re-grounded on two convergent bases so it is authorizable regardless of how 134 resolves. 133: rescoped from two F4-carrying spans to every fr grounded span, because the bound assumed P7's tagging was complete and the item's own diagnosis says it had no claim-side step at all. And the access gap the ruling opened with: governance_read gains v2-harness-design, v2-stratum-tags, mauss-fixture-spans, mauss-fixture-citations — PENDING-86's fourth instance, same shape and same remedy as chamber-spec. The jurist can now verify Part I rather than take it as testimony. Eight controls including that the served text actually carries §6.2's pre-registration clause, §5's F4 row and the L926 citation strings. Self-test 54 checks, 0 failures. |
||
|
|
673823961c |
[HARDENING] governance-mcp: keyword search — the jurist can discover an item whose id it does not know (PENDING-86 d)
Steward-authorized 2026-08-05, completing the (a)+(d) pair the jurist asked for.
The failure this closes is NOT "cannot read item X" — (a) fixed that. It is
"cannot DISCOVER item X whose id it does not already know": the 2026-07-29 case
where a ruling demanded an outcome REVIEWED-74 had settled four days earlier, in
a file the jurist could read but had no reason to open. Keyed retrieval cannot
serve that; only search can.
`governance_search(query, limit)` over PENDING / PENDING-archive / REVIEWED.
Result unit is the ITEM, boundaries from wd.item_spans — no second definition of
"an item" (the 2026-07-28 bug that hid twenty). Results name ids to hand to
governance_item, so the two tools compose.
Three deliberate properties:
- Terms are ANDed, and that is DISCLOSED on every result. A silently
conjunctive matcher is exactly how recall dies as a question lengthens —
found in the engine yesterday (PENDING-97, "what does levi mean by the gray
zone" -> 0 over ten real matches). The same shape is not being rebuilt here
unannounced.
- A miss is a legible empty: it states the corpus, the item count scanned, the
terms, and the match mode, and says outright that a longer query narrows
fast. Silence discloses its own blindness (PENDING-96's discipline, applied
to a new instrument on the day it was ruled).
- Ranked by exact-phrase then raw term-count, labelled as a term COUNT and not
a relevance score — it is a field this code actually computes.
Plus a query-INDEPENDENT structural pass: an item header hidden by leading
whitespace is invisible to item_spans, so it can never appear in results and its
absence reads as a genuine miss. Such headers are now reported beside the
results. An earlier draft flagged any uncovered matching line and drowned the
signal in each file's preamble — which is how a warning stops being read.
That pass earned itself immediately: REVIEWED-11, REVIEWED-12 and REVIEWED-74
were all indented and therefore unreachable by governance_item. REVIEWED-74 is
precisely the ruling the jurist could not find, so its failure was
over-determined — it did not know the id, AND the id would not have worked.
Steward unindented all three (REVIEWED.md is his file, not the executor's, per
Constitutional Constraint 1); items visible 78 -> 81, hidden headers now zero.
Selftest 35 -> 44 controls, 0 fail, including a negative control that goes red
if a header is ever hidden again. Live stdio round-trip confirms six tools and a
correct search result.
⚠ Requires a Claude.app restart to expose the new tool.
Refs PENDING-86 (d), PENDING-82, PENDING-96, PENDING-97.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh
|
||
|
|
5cd5faf66e |
[HARDENING] governance-mcp: the jurist can now read the constitution it design-gates (PENDING-86 a)
Steward-authorized 2026-08-05, on the jurist's own request while unable to close
PENDING-99's Q2 — a question that turns on the chamber constitution's vocabulary
(§II.3's "inline anchor marker", §V's marker exclusion), which governance_read
did not expose. Third recorded instance on PENDING-86: the constitution, the
skill files, contamination-problem.md.
Adds two keys to the existing enum: `chamber-spec`, `graduation-spec`. No new
tool, no path argument, no traversal surface — the domain stays enumerable and
every refusal control still passes.
⚠ THE NON-OBVIOUS PART. Reachability of the KEY is not reachability of the
CLAUSE. This file's operative sections begin around line 354; the ~330 lines
above them are SUPERSEDED version headers kept as the amendment trail. A jurist
reading with the default limit=400 would land squarely in obsoleted text and
could rule on superseded clauses — the new access CAUSING the misruling it
exists to prevent. So the trap is disclosed on the key's own description, at the
point of use, and two controls pin it:
- the §V inline-anchor clause and the §II.3 marker constraint are both
reachable in ONE paged call (offset=350, limit=2000) — the actual Q2 text
- NEGATIVE CONTROL: a first-page read does land in the "(obsoleted)" region,
proving the trap is real rather than hypothetical
Selftest 29 → 35 controls, 0 fail. Live stdio round-trip confirms the §V clause
arrives verbatim through governance_read.
⚠ Requires a Claude.app restart: the running server process carries the old
code and will not show the new keys until respawned.
Option (d) — keyword search across PENDING/PENDING-archive/REVIEWED — is NOT in
this change and remains open on PENDING-86. It is a new tool surface, not two
enum entries, and the jurist asked for (a)+(d) together.
Refs PENDING-86, PENDING-99 Q2, PENDING-82.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AB3Kryoy6b1pm2Nz1DYdLh
|
||
|
|
3df09228c0 |
[PROPOSAL] governance-mcp: read-only substrate access for the jurist (PENDING-82)
The three-party model asks Claude.app to rule on items it cannot read. Steward
confirmed 2026-07-28 that local MCP servers are exposed to the app's *chat*
surface — and always have been, predating Cowork by about a year. My earlier
framing ("chat, not only Cowork") had the relationship backwards: it is "chat,
always; Cowork, only while its loop still runs locally," and local Cowork is the
mode being phased out as default. The jurist chat is therefore the sturdy target.
Five read-only tools. The one a pasted cache can never provide is
governance_item(id): the verbatim body of any item or ruling, across PENDING.md,
PENDING-archive.md and REVIEWED.md. Four refusals are designed in, each with a
control proving the refusal is detectable — no writes (AST-audited), no path
arguments (keys from a fixed enum, so there is no traversal to defend), no second
parser (item_spans is imported, not reimplemented), and not an agent (tools
return data; an agent would return testimony about the substrate instead).
[FIX] to the shared definition while here: item_spans() is now fence-aware. A
'## ' header inside a fenced block is neither an item nor a boundary. Zero such
headers exist today — 17 open items before and after — but governance drafts are
written as fenced markdown carrying '## REVIEWED-N' headers, which is the
steward's own practice, so the next draft would have created a phantom item and
truncated the item containing it. PENDING-82's own fenced JSON block confirms the
fix within the hour.
Not installed. The mcpServers key edits the steward's desktop-app config; the
snippet is in PENDING-82 and the server is inert until someone loads it.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
|