From 35b5940c2b93dfaf7d449262cd1dffbb4f139e26 Mon Sep 17 00:00:00 2001 From: KT <677465+kevintseng@users.noreply.github.com> Date: Fri, 4 Sep 2026 15:55:17 +0800 Subject: [PATCH 1/2] fix(storage): lesson-family dedup guard trusts stored type, not the call's type argument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit createEntityInner's content-dedup exemption for lesson_learned/lesson/ mistake entities checked the incoming `type` parameter, never the entity's actual stored type. `INSERT OR IGNORE` is a no-op on an existing row, and the SELECT beside it didn't even fetch `type` — so re-remembering an existing lesson entity under any other type string (schemas.ts declares `type` as an unconstrained 1-100 char string, no enum) took the non-lesson branch and ran content dedup against observations that groupLessons/parseStructuredBlocks read as ordered Error:/Root cause:/Fix:/Prevention: blocks, silently dropping a repeated field line and corrupting the lesson. Found by a security review of PR #288's diff; verified against the actual code (schemas.ts:48, the existing "preserve original type on duplicate entity" test) before fixing. The SELECT now reads `type` and the guard uses the stored value for an existing entity, the incoming value only when the entity is new (there is no stored value yet). Regression test added mirroring the existing lesson-family dedup test; reverting the fix turns exactly that one test red (64 others stay green), confirmed by running it both ways. --- dist/knowledge-graph.d.ts.map | 2 +- dist/knowledge-graph.js | 5 +++-- dist/knowledge-graph.js.map | 2 +- src/knowledge-graph.ts | 21 ++++++++++++++++++--- tests/knowledge-graph.test.ts | 32 ++++++++++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 7 deletions(-) diff --git a/dist/knowledge-graph.d.ts.map b/dist/knowledge-graph.d.ts.map index 13700e2e..3f2968e6 100644 --- a/dist/knowledge-graph.d.ts.map +++ b/dist/knowledge-graph.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"knowledge-graph.d.ts","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/knowledge-graph.js b/dist/knowledge-graph.js index 68216718..366592d3 100644 --- a/dist/knowledge-graph.js +++ b/dist/knowledge-graph.js @@ -89,7 +89,7 @@ export class KnowledgeGraph { .run(name, type, JSON.stringify(incomingMetadata), opts?.namespace ?? 'personal', opts?.title ?? null); const isNewEntity = insertResult.changes > 0; const row = this.db - .prepare('SELECT id, status, namespace, title FROM entities WHERE name = ?') + .prepare('SELECT id, status, namespace, title, type FROM entities WHERE name = ?') .get(name); const entityId = row.id; const previousTitle = row.title; @@ -154,7 +154,8 @@ export class KnowledgeGraph { : joinIndexedObservations(prevObs.map((o) => o.content)); if (opts?.observations?.length) { const insertObs = this.db.prepare('INSERT INTO observations (entity_id, content) VALUES (?, ?)'); - const isLessonFamily = type === 'lesson_learned' || type === 'lesson' || type === 'mistake'; + const effectiveType = isNewEntity ? type : row.type; + const isLessonFamily = effectiveType === 'lesson_learned' || effectiveType === 'lesson' || effectiveType === 'mistake'; if (isLessonFamily) { for (const obs of opts.observations) { insertObs.run(entityId, obs); diff --git a/dist/knowledge-graph.js.map b/dist/knowledge-graph.js.map index a1993705..8dc569b7 100644 --- a/dist/knowledge-graph.js.map +++ b/dist/knowledge-graph.js.map @@ -1 +1 @@ -{"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"knowledge-graph.js","sourceRoot":"","sources":["../src/knowledge-graph.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/knowledge-graph.ts b/src/knowledge-graph.ts index 6590b233..9ae1a2d7 100644 --- a/src/knowledge-graph.ts +++ b/src/knowledge-graph.ts @@ -349,8 +349,8 @@ export class KnowledgeGraph { const isNewEntity = insertResult.changes > 0; const row = this.db - .prepare('SELECT id, status, namespace, title FROM entities WHERE name = ?') - .get(name) as { id: number; status: string; namespace: string | null; title: string | null }; + .prepare('SELECT id, status, namespace, title, type FROM entities WHERE name = ?') + .get(name) as { id: number; status: string; namespace: string | null; title: string | null; type: string }; const entityId = row.id; // Title update on an EXISTING entity — the INSERT OR IGNORE above never @@ -534,11 +534,26 @@ export class KnowledgeGraph { // first, drop it, and fuse both blocks into one — silently discarding // `Fix: A`. Every OTHER type's reader selects `content` alone with no // ordering, so a repeat there is genuinely inert. + // + // The membership check reads the entity's STORED type (`row.type`) for + // an existing entity, never the incoming `type` argument: `INSERT OR + // IGNORE` above is a no-op on a name collision, so the row's real type + // never changes on re-remember (pinned by "should ... preserve original + // type on duplicate entity" above) — but `type` still holds whatever + // string this call passed. A caller is free to pass any 1-100 char + // string (`transports/schemas.ts`'s `type: z.string().min(1).max(100)`, + // no enum), so re-remembering an existing lesson under some OTHER type + // string would have made this check take the non-lesson branch and run + // content dedup against ordered lesson blocks anyway — silently dropping + // a repeated `Root cause:`/`Fix:`/`Prevention:` line the lesson family is + // exempted specifically to keep. `isNewEntity` still uses the incoming + // `type` because there is no stored type yet to read. if (opts?.observations?.length) { const insertObs = this.db.prepare( 'INSERT INTO observations (entity_id, content) VALUES (?, ?)' ); - const isLessonFamily = type === 'lesson_learned' || type === 'lesson' || type === 'mistake'; + const effectiveType = isNewEntity ? type : row.type; + const isLessonFamily = effectiveType === 'lesson_learned' || effectiveType === 'lesson' || effectiveType === 'mistake'; if (isLessonFamily) { for (const obs of opts.observations) { insertObs.run(entityId, obs); diff --git a/tests/knowledge-graph.test.ts b/tests/knowledge-graph.test.ts index a7d3d0a2..2a6e1091 100644 --- a/tests/knowledge-graph.test.ts +++ b/tests/knowledge-graph.test.ts @@ -234,6 +234,38 @@ describe('Feature: Knowledge Graph', () => { } }); + it('re-remembering a lesson entity under a different type string still skips content dedup', () => { + // The lesson-family exemption above must key on the entity's STORED + // type, not the type string this particular call happens to pass. + // `type` here is caller-controlled (schemas.ts: any 1-100 char string, + // no enum) and, per the test below, re-remembering an existing entity + // under a different type never changes its stored type — so a second + // call naming some other type must still be treated as the lesson it + // actually is, or the ordered-block guard above is bypassable. + kg.createEntity('lesson-mismatched-type-fixture', 'lesson_learned', { + observations: [ + 'Error: X', + 'Root cause: Not specified', + 'Fix: A', + 'Prevention: Review similar code paths', + ], + }); + kg.createEntity('lesson-mismatched-type-fixture', 'note', { + observations: [ + 'Error: X', + 'Root cause: Not specified', + 'Fix: B', + 'Prevention: Review similar code paths', + ], + }); + + const entity = kg.getEntity('lesson-mismatched-type-fixture'); + expect(entity!.type).toBe('lesson_learned'); + expect(entity!.observations.filter((o) => o === 'Error: X')).toHaveLength(2); + expect(entity!.observations).toContain('Fix: A'); + expect(entity!.observations).toContain('Fix: B'); + }); + it('should dedupe tags and preserve original type on duplicate entity', () => { kg.createEntity('TypeScript', 'language', { tags: ['frontend'], From d452db453af7c9f6f887d5a679c0046c44854710 Mon Sep 17 00:00:00 2001 From: KT <677465+kevintseng@users.noreply.github.com> Date: Fri, 4 Sep 2026 15:56:32 +0800 Subject: [PATCH 2/2] chore: re-key C5 audit baseline for the lesson-dedup fix's comment block --- scripts/audit/baseline.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/scripts/audit/baseline.json b/scripts/audit/baseline.json index 46c93636..da0bb9d5 100644 --- a/scripts/audit/baseline.json +++ b/scripts/audit/baseline.json @@ -456,25 +456,25 @@ "reason": "readSettings throws on unparseable input; absent hooks truthfully means none wired", "triaged": "2026-08-04; re-keyed 2026-08-13 (agentic-orchestration removal shifted lines up; same statement, classification unchanged); re-keyed 2026-08-13 (review-fix commit shifted lines; same statement, classification unchanged — verified); re-keyed 2026-08-16 (merge of memesh-setup onto main: +6 README Step 1.5 / +3 install-hooks export comment / +2 cli imports; byte-identical vs origin/main — NOTE C7 339 slid onto a colliding key, whole set re-verified); re-keyed 2026-08-16 (release-prep: settingsHaveMemeshHooks added above in install-hooks / wireUserHooks helper above in cli; byte-identical vs HEAD); re-keyed 2026-08-24 (uninstallHooks parses settings before deleting the rule file; same statement, classification unchanged); re-keyed 2026-08-30 454→451 after install-hooks relocation comments changed above; statement byte-identical; re-keyed 2026-08-30 451→455 after mixed-registry plugin detection added four lines above; statement byte-identical" }, - "C5 src/knowledge-graph.ts:754": { + "C5 src/knowledge-graph.ts:769": { "class": "SAFE-ACCUMULATOR", "reason": "batch-hydrate lookups; confidence bump fails closed", - "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-10 (review pass 2: redactUserPaths moved to core/paths, namespace breadcrumb, dreamer retirement); re-keyed 2026-08-14 (UX-1 title column added lines above; same statement — verified against the line content); re-keyed 2026-08-15 631→649 (merge main shifted lines +18; same statement — verified); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 683→754 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit)" + "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-10 (review pass 2: redactUserPaths moved to core/paths, namespace breadcrumb, dreamer retirement); re-keyed 2026-08-14 (UX-1 title column added lines above; same statement — verified against the line content); re-keyed 2026-08-15 631→649 (merge main shifted lines +18; same statement — verified); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 683→754 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit); re-keyed 2026-09-04 754→769 (fix/lesson-dedup-guard-trusts-stored-type added a comment block above explaining the security-review fix; same statement — verified against actual C5 regex hit)" }, - "C5 src/knowledge-graph.ts:755": { + "C5 src/knowledge-graph.ts:770": { "class": "SAFE-ACCUMULATOR", "reason": "batch-hydrate lookups; confidence bump fails closed", - "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-10 (review pass 2: redactUserPaths moved to core/paths, namespace breadcrumb, dreamer retirement); re-keyed 2026-08-14 (UX-1 title column added lines above; same statement — verified against the line content); re-keyed 2026-08-15 629→647 (merge main shifted lines +18; same statement — verified); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 684→755 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit)" + "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-10 (review pass 2: redactUserPaths moved to core/paths, namespace breadcrumb, dreamer retirement); re-keyed 2026-08-14 (UX-1 title column added lines above; same statement — verified against the line content); re-keyed 2026-08-15 629→647 (merge main shifted lines +18; same statement — verified); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 684→755 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit); re-keyed 2026-09-04 755→770 (fix/lesson-dedup-guard-trusts-stored-type added a comment block above explaining the security-review fix; same statement — verified against actual C5 regex hit)" }, - "C5 src/knowledge-graph.ts:756": { + "C5 src/knowledge-graph.ts:771": { "class": "SAFE-ACCUMULATOR", "reason": "batch-hydrate lookups; confidence bump fails closed", - "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-10 (review pass 2: redactUserPaths moved to core/paths, namespace breadcrumb, dreamer retirement); re-keyed 2026-08-14 (UX-1 title column added lines above; same statement — verified against the line content); re-keyed 2026-08-15 630→648 (merge main shifted lines +18; same statement — verified); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 685→756 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit)" + "triaged": "2026-08-09 (re-keyed: review fixes — busy_timeout, vector-index guards and the .mcp.json entry check — shifted these lines; same statements, same classification); re-keyed 2026-08-10 (review pass 2: redactUserPaths moved to core/paths, namespace breadcrumb, dreamer retirement); re-keyed 2026-08-14 (UX-1 title column added lines above; same statement — verified against the line content); re-keyed 2026-08-15 630→648 (merge main shifted lines +18; same statement — verified); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 685→756 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit); re-keyed 2026-09-04 756→771 (fix/lesson-dedup-guard-trusts-stored-type added a comment block above explaining the security-review fix; same statement — verified against actual C5 regex hit)" }, - "C5 src/knowledge-graph.ts:803": { + "C5 src/knowledge-graph.ts:818": { "class": "SAFE-BY-CONSTRUCTION", "reason": "`opts?.countAsAccess ?? true` in search(): the default is the CONSERVATIVE direction, not the convenient one. Absent means 'this is an ordinary recall, count it' — the behaviour every caller had before the option existed. Only the one read that must NOT count (exportMemories: a backup is not a use) says so explicitly, and tests/core/reads-that-were-writes.test.ts pins both directions.", - "triaged": "2026-08-24 (full-codebase review, R9-a); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 732→803 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit)" + "triaged": "2026-08-24 (full-codebase review, R9-a); re-keyed 2026-08-24 (cleanup pass; statement re-located in file order, classification unchanged); re-keyed 2026-09-04 732→803 (rebase onto main after createEntity dedup-guard scope widened to any entity; same statement — verified against actual C5 regex hit); re-keyed 2026-09-04 803→818 (fix/lesson-dedup-guard-trusts-stored-type added a comment block above explaining the security-review fix; same statement — verified against actual C5 regex hit)" }, "C5 src/core/serializer.ts:44": { "class": "SAFE-BY-CONSTRUCTION",