[FIX] Land the skill-harvest FIX lane and apply its first batch (REVIEWED-85)
REVIEWED-85 was placed by the steward at 10:41 today; the wake flagged at 10:44 that /wrap-up SKILL.md was still untouched since 2026-07-07. Landing it. Precondition discharged first. The ruling states its own verification limit: the jurist could not read the skill files, so the /wrap-up §1.6 and /wake-up §2.a quotes underpinning Part III's "contradicts itself" claim were affirmed on timeline evidence rather than checked. Required before landing was mechanical containment-with-positive-control verification of exactly those quotes. Run: 7/7 contained verbatim against the live skills, 5/5 controls absent, instrument verified. §1.6 now carries the two-clause disjunctive test (the executor's own narrower single-clause alternative declined at the gate as less safe), the hard floor with its catch-all sharpened per Q4 and tied to the measured failure rather than left as open judgment, and all three instruments as mandatory. The lane is provisional pending the steward-jurist check-in. The §Important-constraints line still stated the blanket rule the ruling narrowed. Left alone it would have been a second live version of a governance rule inside the file that forbids exactly that. Reconciled, with a note saying why. First batch applied -- the four class-(i) proposals the steward raised 2026-07-29 and which REVIEWED-85 itself dispositions as batch 1, so their classification was ruled rather than self-assessed: a `## What held` ledger section (the ledger could previously only record debits), a `prevention` KG predicate capturing transfer between failure classes, one wake line surfacing it, and the retirement of the standing question's self-report framing in favour of the checkable form -- the last on the grounds contamination-problem.md gives, that direct self-report is the most contaminated form of inquiry. The FIX-lane index is created and carries all four. It records explicitly what is NOT in it: the §1.6 edit itself, which changed what the executor may do without asking and was therefore PROPOSAL by its own test. A lane cannot authorize its own construction. Register rows 174-177 marked applied. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WuMjg3ipEVa3n8CoSzoyvc
This commit is contained in:
co-authored by
Claude Opus 5
parent
25cf5a38eb
commit
62b92bd425
@@ -98,6 +98,8 @@ type: feedback
|
||||
|
||||
## Returns
|
||||
|
||||
## What held
|
||||
|
||||
## Open horizons
|
||||
|
||||
## Confidence to recalibrate
|
||||
|
||||
@@ -73,6 +73,9 @@ The durable memory *is* the Markdown + JSONL files (git-tracked, dual-remote). T
|
||||
|
||||
**b.2. Drift patterns — what I've returned from.** `grep 'drift-pattern' ~/.claude/projects/-Users-davidglidden/memory/knowledge-graph.jsonl` — the file-native KG (a JSONL export of 329 triples; ~84 are `claude-code` drift-patterns). Surface the one or two worth holding today. This replaces the old `kg_query claude-code` ritual; treat the JSONL as a point-in-time export that wrap §5 keeps current by appending.
|
||||
|
||||
**And one `prevention` alongside them** — `grep 'prevention' …/knowledge-graph.jsonl`. Surface **one line each way**. Grepping only `drift-pattern` opens every session by re-reading what went wrong and never what compounded; a prevention records a lesson from one failure class stopping a different one. One of each, not a tally. <!-- 2026-08-02: FIX lane, REVIEWED-85 first batch; proposed 2026-07-29 (steward-raised). -->
|
||||
|
||||
|
||||
**b.3. Depth on the thread — grep, don't query.** When the session files don't carry enough, grep the memory dir + the CapableMind thinking docs + the Obsidian vault directly for the thread's keywords. The files are authoritative; there is no catalogue in front of them.
|
||||
|
||||
*(The typography palace — a separate MemPalace instance queried via CLI for ARC type work — is KEPT, unaffected by the wind-down; reach for it only when the thread is ARC typography.)*
|
||||
|
||||
@@ -51,6 +51,8 @@ Review the conversation and produce a structured session record. The structure m
|
||||
- **Other open horizons, ranked.** What's load-bearing? What's deferred-with-reason? What's parked-without-deadline?
|
||||
- **The pause statement** — explicit acknowledgment: *"I am about to be away from this. I don't know what will have changed when I return. Here is what I want to find still pulling."* Names the gap as a phenomenon, not a hole.
|
||||
- **A literal question for next-Claude** — not a task; a *question*. The thing the next session should hold open until it's resolved or honestly recognized as unanswerable. Captures the unborn part of the work.
|
||||
- **Prefer the checkable form over the self-report form.** A question the next session answers by *introspecting on itself* is the most contaminated form of inquiry available — `contamination-problem.md` §Why This Matters names direct self-report exactly that. Where the same evidence would answer a checkable question, ask that one instead. *Not* "is there any instrument I built before being burned?" (self-report, unfalsifiable from inside) but **"does a lesson banked from one failure prevent a *different* failure later?"** — which the record answers, and which the new `prevention` predicate (§5) now captures. <!-- 2026-08-02: FIX lane, REVIEWED-85 first batch; proposed 2026-07-29. -->
|
||||
|
||||
|
||||
### 1.5. Merge the Symmetria ledger if present
|
||||
|
||||
@@ -77,7 +79,33 @@ Drawing on the session and the merged ledger (1.5), ask:
|
||||
|
||||
The yardstick is the steward's own: *did the steward have to re-explain something a skill could have carried next time?* If yes, that is a harvest candidate.
|
||||
|
||||
**Surface each as a proposal in §8 — never create, patch, or retire a skill autonomously at wrap.** The steward converts proposal to action; only then is a skill changed, and the changed skill carries a one-line provenance note in its source (e.g. `<!-- 2026-05-27: … -->`) so the chain of improvements stays legible.
|
||||
**Default: surface each as a proposal in §8.** The steward converts proposal to action; only then is a skill changed, and the changed skill carries a one-line provenance note in its source (e.g. `<!-- 2026-05-27: … -->`) so the chain of improvements stays legible.
|
||||
|
||||
**The FIX lane — the one narrow exception.** Ask the classification test:
|
||||
|
||||
> **Does this change what the executor may do without asking, or what a governed artifact asserts?**
|
||||
|
||||
**Either clause yes → `[PROPOSAL]`.** Both no → `[FIX]`: apply it at wrap, and discharge all three instruments below. The test is deliberately two-clause; the narrower assertion-only form was declined at the design gate as *less* safe, because a change that expands executor latitude without asserting anything would pass it.
|
||||
|
||||
The cut is between changes to what a skill **records** — a ledger section, an output field, a wake line — and changes to what a skill **permits or requires**. The first cannot alter any assertion or latitude; the second always can.
|
||||
|
||||
**The hard floor — stays `[PROPOSAL]`/`[ESCALATE]` regardless of the test's outcome:**
|
||||
|
||||
- Anything under Constitutional Constraint 1 — `~/CLAUDE.md`, `~/REVIEWED.md`, L2 constitutional documents.
|
||||
- Any change to an authorization boundary or to gate criteria.
|
||||
- Anything on the escalate-unconditionally list.
|
||||
- **Any change that removes, defers, or narrows the visibility of an open item, or that could cause a future item to land somewhere the steward's surfacing tools don't read.** This clause is bound to the measured failure that produced the lane, not left as an open judgment call: the blanket rule routed every proposal into one file, the file outgrew the read cap, and the `/wake-up` step whose purpose was to surface them stopped completing. Awareness failed mechanically. A FIX must never do that again by any route.
|
||||
|
||||
**Three instruments, all mandatory for every FIX-lane change** (a wrap report alone is insufficient):
|
||||
|
||||
1. **Report it in the §8 wrap output** — what changed, and why it classified as FIX.
|
||||
2. **A provenance comment in the skill's own source**, same convention as any other change.
|
||||
3. **A line in the append-only FIX-lane index** — `~/.claude/projects/-Users-davidglidden/memory/skill-harvest-fix-lane-index.md`. One line per applied change: skill · what changed · date. Append-only; it is the record the check-in reads.
|
||||
|
||||
**The lane is PROVISIONAL.** After the first FIX-lane batch or one month — whichever comes first — steward and jurist review the index together before the lane is treated as settled. Until that review, treat a borderline call as `[PROPOSAL]`.
|
||||
|
||||
<!-- 2026-08-01/02: FIX lane for skill self-tending. PENDING-88 → jurist design gate PASSED with conditions → REVIEWED-85 (steward-placed 2026-08-02). Conditions landed here: two-clause disjunctive test (the executor's narrower single-clause alternative declined as less safe); floor's catch-all sharpened from "anything that would reduce what is surfaced to the steward" and tied to the measured failure; three instruments required, not two-with-one-in-reserve; lane provisional pending a bounded check-in. No change to `~/CLAUDE.md` — the mechanism is stated here as revisable data, not doctrine. Precondition discharged before landing: the jurist could not read the skill files, so the §1.6/§2.a quotes its ruling rested on were verified mechanically — 7/7 contained verbatim, 5/5 positive controls absent. -->
|
||||
|
||||
|
||||
**Append each surfaced proposal to the skill-harvest register** (`~/.claude/projects/-Users-davidglidden/memory/skill-harvest-register.md`) — the canonical surface — not only to §8's transient output. The register is what `/wake-up` reads; a proposal that lives only in a wrap summary evaporates. <!-- 2026-06-05: register wiring, authorized 2026-05-29 (watch-list), applied at this wrap per instruction -->
|
||||
|
||||
@@ -125,6 +153,8 @@ palace-memory MemPalace was wound down 2026-07-07 (its search + KG were confirma
|
||||
The file-native KG (`~/.claude/projects/-Users-davidglidden/memory/knowledge-graph.jsonl`) is what wake §b.2 greps for drift-patterns and what carries structured facts across sessions. Keep it current by **appending** one JSON object per line — schema `{"subject","predicate","object","valid_from","valid_to","confidence","source_file","extracted_at"}`:
|
||||
|
||||
- **Drift patterns from Symmetria returns.** If today's ledger has a return that repeats a pattern from a previous ledger, append `{"subject":"claude-code","predicate":"drift-pattern","object":"<short-name>", …}`. Wake §b.2 greps these.
|
||||
- **Preventions — the transfer signal.** When a lesson banked from one failure stops a *different* failure, append `{"subject":"<the banked lesson>","predicate":"prevention","object":"<the failure it stopped, and where>", …}`. Distinct from `drift-pattern-good-direction`, which records a good move; this records **transfer**, which is the actual signature of learning and was previously uncapturable by the schema. Wake §b.2 surfaces one. <!-- 2026-08-02: FIX lane, REVIEWED-85 first batch; proposed 2026-07-29 (steward-raised). -->
|
||||
|
||||
- **A fact that changed.** Append the new triple; to retire a superseded fact, append a matching triple with `valid_to` set to today (a soft-invalidate — the JSONL is append-only, like the logchain, so history stays legible rather than mutated in place).
|
||||
- **A new recurring entity** (person, project, thread) worth a foothold — append the relationship.
|
||||
|
||||
@@ -212,4 +242,6 @@ The pulling thread + question are first because they are what *waking* needs to
|
||||
- **The literal question for next-Claude is required.** Even if it's small. *"Did Seb push anything overnight?"* counts. The discipline of leaving a question (not just a task) is what makes the wake feel like resumption rather than briefing.
|
||||
- **Don't skip Thistleweld observations** if the companion was active. These have caught real bugs (allSettled swallowing, Levenshtein NONE, resource monitor feedback loop).
|
||||
- **Don't skip the Symmetria ledger merge** if active. The returns and recalibrations are the practice's actual evidence; losing them defeats the practice.
|
||||
- **Skill harvest is propose-only.** Never create, patch, or retire a skill autonomously at wrap (§1.6) — surface it for steward authorization; the loop is load-bearing here too. "Nothing to harvest" is a valid outcome; do not manufacture changes to satisfy the step.
|
||||
- **Skill harvest is propose-by-default, with one narrow FIX lane (§1.6).** Surface it for steward authorization unless it clears the classification test *and* the hard floor — in which case apply it and discharge all three instruments. When in doubt, propose: the lane is provisional until the steward–jurist check-in, and the loop is load-bearing here too. "Nothing to harvest" is a valid outcome; do not manufacture changes to satisfy the step. <!-- 2026-08-02: reconciled with the §1.6 FIX lane (REVIEWED-85); this line previously stated the blanket rule the ruling narrowed, and would otherwise have left two live versions. -->
|
||||
|
||||
- **The FIX lane is not a licence to skip the report.** A change applied without its index line is worse than the same change proposed, because it leaves no record for the check-in to read. If you cannot discharge all three instruments, it is a `[PROPOSAL]`.
|
||||
|
||||
Reference in New Issue
Block a user