Skip to content

Commit 37b5b64

Browse files
committed
chore(memory): update memory entries for decisions, preferences, and quirks
1 parent 745e945 commit 37b5b64

4 files changed

Lines changed: 31 additions & 7 deletions

File tree

.memory/cleanup.log

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
--- Cleanup: 2026-02-27T13:49:52.191Z ---
3+
Merged 2 similar entries → "ADRs live in docs/decisions/ but are NOT in the Zensical nav…"
4+
Pruned [Decision] (score 22): "Model resolution always happens inside lm.ts. Call…"
5+
6+
--- Cleanup: 2026-02-27T15:01:41.609Z ---
7+
Merged 2 similar entries → "Use replaceAll() instead of replace() for string replacement…"
8+
Pruned [Preference] (score 15): "Dedup thresholds guard writes. Cleanup merge thres…"
9+
Pruned [Preference] (score 14): "Use replaceAll() instead of replace() for string r…"
10+
Pruned [Decision] (score 20): "The default category limit fallback is 20, hardcod…"

.memory/decisions.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,16 @@ Memories stored by HackLM Memory.
3030

3131
- [gap-analysis-no-changelog] Gap analysis prompt forbids changelog/past-event suggestions. The LM must not suggest entries phrased as "last cleanup did X" or "removed Y yesterday".
3232

33-
- [category-limits-rationale] Instruction=15, Decision=20, others unchanged. Instructions and Decisions grow fastest on active projects. Context length is not the constraint — quality is.
33+
- [open-source-license] Project is licensed under GPL-3.0-only. MIT removed. Both root LICENSE and extension/LICENSE hold the GPL v3 text. Both package.json files have "license": "GPL-3.0-only".
3434

35+
- [docs-site-zensical] Docs site uses Zensical (pip install zensical). Config in zensical.toml at repo root. Serve: .venv/Scripts/zensical.exe serve. Build: zensical build → site/. Deploys to GitHub Pages via .github/workflows/docs.yml on push to main.
3536

36-
- [model-resolution] Model resolution always happens inside lm.ts. Callers pass a family string or nothing. They never call vscode.lm.selectChatModels directly. This keeps fallback logic in one place.
37+
38+
- [globalstate-keys-file] All globalState keys live in extension/src/globalStateKeys.ts as named exports. Never use bare string literals for globalState keys elsewhere.
39+
40+
- [category-limits-source] CATEGORY_LIMITS constant removed from markdownStore.ts. Category limits come from VS Code config only (package.json defaults via config.get). Default fallback is hardcoded as 20 in utils.ts.
41+
42+
- [stale-slug-pruner-removed] pruneStaleEntries removed from cleanupMemory.ts. Stale slugs last-cleanup and last-session-debrief no longer exist. ADRs 0001 and 0013 deleted from docs/decisions/ as they documented completed migration periods.
43+
44+
45+
- [adr-location] ADRs live in docs/decisions.md but are NOT in the Zensical nav. The nav has an ADR page (docs/adr.md) instead. That page links back to docs/decisions.md on GitHub.

.memory/preferences.md

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,17 @@ Memories stored by HackLM Memory.
2828

2929
- [globalstate-cleanup-log-key] The cleanup log is stored under a namespaced globalState key, same as all other extension state. Never write it to a bare key or a separate file outside globalState.
3030

31-
- [tree-view-message-on-empty] When a tree view has no data to show, set treeView.message to a short guidance string in code. This supplements viewsWelcome and handles dynamic empty states after initial load.
32-
3331
- [globalstate-keys-enumerated] All globalState key names are defined as constants in a single file. Never scatter bare string keys across modules.
3432

3533
- [tree-item-context-value] Every TreeItem that supports commands sets a contextValue string. Without it, when-clause conditions in package.json menus cannot target that item type.
3634

35+
- [globalstate-keys] All globalState key constants live in one file. No module defines its own key inline. Import from the constants file or the key does not exist.
3736

38-
- [dedup-cleanup-thresholds] Dedup thresholds and cleanup merge thresholds serve different purposes. Never unify them into a single constant. Write thresholds guard against storing duplicates. Cleanup thresholds control when stored entries get merged or removed.
37+
- [docs-site-local-serve] Run the docs site locally with .venv/Scripts/zensical.exe serve. Build the static output with zensical build. Output goes to site/. Never commit the site/ directory.
38+
39+
- [adr-link-to-adrs] The ADR page (docs/adr.md) links to docs/decisions.md for the full ADR list. Keep that link current when new ADRs are added.
40+
41+
- [node-protocol-imports] Use node: protocol for built-in imports (node:fs/promises, node:path). Never import bare 'fs/promises' or 'path'.
42+
43+
- [lm-model-resolution-centralized] Model selection and resolution happen only in lm.ts. No other module calls selectChatModels directly. Import the resolved model from lm.ts or do not use it.
3944

40-
- [globalstate-keys] All globalState key constants live in one file. No module defines its own key inline. Import from the constants file or the key does not exist.

.memory/quirks.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ Memories stored by HackLM Memory.
66

77
- [tree-item-id] Every TreeItem must have a stable unique id set explicitly. Without it, VS Code cannot preserve reveal state or selection across refreshes.
88

9-
109
- [empty-justification] Passing an empty options object to sendRequest suppresses the justification string in the VS Code permission prompt. The user sees a blank reason. Always pass a justification.
10+
11+
- [adr-location] ADRs live in docs/decisions.md (a single flat file, not a directory). No separate per-ADR files. Add new ADRs as new H2 sections at the bottom of that file.

0 commit comments

Comments
 (0)