gotcontext-memory HITL honesty
When to use
- Editing
gotcontext-memorydream / store / review / MCP / doctor / corpus - Claims about “same as JARVIS/omega dream”
- Auditing preference extraction or concurrent accept
For scale/digests load gotcontext-memory-streaming-digests.
For resurrection/prevalence load gotcontext-memory-claim-lifecycle.
Registry: docs/SKILLS.md.
Do not confuse
| System | Brain | Store | Auto-apply? |
|---|---|---|---|
| gotcontext-memory | Regex + windowed prevalence (+ HITL) | markdown ~/.gotcontext |
Never |
omega transcript_dream |
LLM reviewer | SQLite proposals | Never (HITL) |
omega memory_dream |
consolidator | facts DB | Yes (auto) |
Parity target = HITL shape only, not LLM brain or auto-supersede.
Load-bearing rules (lessons L1–L20)
- Fake-green tests — never catch
ReferenceErroras skip; only EPERM/EACCES/ENOTSUP. - Detect≠enforce — doctor caps must fail when over; share
countIndexLines. - One lock key — always
locks/<sha256(rel)>.lock. - Index under lock — regenerate MEMORY.md after target mutate, still locked; multi-process oracle.
- MCP —
memory_read= MEMORY.md|memory/**;memory_commitdefault-off (mcp.allowCommit). - Prior PASS ≠ closed — re-audit after security claims.
- Alive ≠ useful — report staged content + accepts, not only run success.
- Preference FP — require
please remember|from now on; deny pong/ping/health. - Overlay types —
deletes: []not{}. - dream.enabled — enforce or stop pretending; CLI needs
--forcewhen false. - Scale — stream digests; never
readFilewhole multi-GB transcripts; truncated ≠ malformed. - No resurrection — TWO mechanisms, not one. REJECTED claims are suppressed by an
immutable
claimKey(loadSuppressedClaimsreadsproposals/rejected/,src/dream/run.ts). ACCEPTED claims are stopped by a SEPARATE settled-state check —if (storeHashes.has(targetPath)) continue;. Conflating them hides the real bug: accepting a re-proposedcreateover a materialised target silently overwrites any human edit made since. Never key claim identity onbase_hash— it changes the instant the target exists, minting a "new" id for a settled claim (negative cache / tombstone; a tombstone that never expires is itself an anti-pattern). - Prevalence window —
--max-sessions(default 400); sort by evidence strength. - Dirty-tree commits — stage only your paths; strip
.tensor-grep/before merge. - Cursor
.vscdb— on the digest path with sharedclassifyText(BL-DRM-016 closed 2026-08-10). - Secret fixtures — never commit contiguous live-shaped tokens; split strings for scanners.
- Stratified window — not newest-N alone (
selectDigests). - Efficacy — score accepted patterns; thin windows → INSUFFICIENT_DATA only.
Authority
docs/HONESTY.md,docs/LESSONS_2026-08-09.md,docs/BACKLOG.md,docs/CEO_UPDATE_2026-08-09.md- Sibling:
transcript-dream-hitl(omega/JARVIS) - Companions:
gotcontext-memory-streaming-digests,gotcontext-memory-claim-lifecycle
Verify
cd gotcontext-memory && npm test && npm run lint && npm run build
- Prevalence is clustered by STRING, not by meaning.
minePrevalence(src/dream/digest.ts) buckets by a normalisedsignalKey(lowercased; paths/hashes/digits stripped) and requires=2 DISTINCT sessions before proposing, reporting
k/n sessionswith line-numbered citations. Two phrasings of the same problem land in different buckets and are NOT merged. Say "counted", never "inferred" — this is not an LLM brain. receiptCodenames the cause.src/review.tsreturns CAS_CONFLICT, SECRET_DETECTED, INDEX_CAP, TARGET_MISSING, INVALID_PROPOSAL, PROPOSAL_EXPIRED, PATH_VIOLATION, or INTERNAL_ERROR (fallback for genuinely unrecognised errors only). This replaced filing every unrecognised failure asINDEX_DRIFT_OR_CAS, which sent operators to reconcile an index that was never the problem. Readreceipts/*.error.jsonwhen an accept fails.- Scale is a correctness property. Whole-file corpus reads die at the V8 string ceiling on a
real machine; the digest path is load-bearing, not an optimisation. See
ingest-a-corpus-that-exceeds-memory.