Obsidian Fix-Pattern Memory
Canonical notes live under:
%USERPROFILE%\Documents\Obsidian\CodexVault\Codex\fix-patterns
Use scripts/fix_memory.py as the only canonical-note writer. Never use Basic Memory MCP or
invent a second state schema.
Fast Record Path
After a behavior-changing fix, consume the current Bug receipt:
- If the receipt already records this fix and verification in an exact canonical
target, reuse it without another write. For new evidence, call
upsert --noteor the matchingeventonce on that note. Do not search again. - If
memory_targetis empty, searchfix-patterns/once with one to three root-cause, symbol, or symptom terms. - Update one high-confidence root-cause match. If none exists, create one note. Keep ambiguous roots separate instead of merging by project/customer name.
- Stop after the write. Do not run full
validate, migration, domain audit, or cross-project candidates during routine recording.
python -X utf8 "$env:USERPROFILE\.codex\skills\obsidian-fix-pattern-memory\scripts\fix_memory.py" upsert --note <canonical.md> --repo . --bug <id> --implementation applied --verification <level> --write
For a new root cause, include title, slug, keywords, scope, symptoms, root cause,
key files/functions, fix, verification method, and explicit
--domain asr|esp32|none. The script requires the knowledge fields before it
writes a new note.
Lookup Path
For explicit memory lookup, regression, similar issue, or cross-branch work,
search only fix-patterns/ with one to three precise terms and read at most three
genuine matches. A high-confidence match needs compatible symptoms/root cause or
code symbols; project, branch, device, or customer text alone is insufficient.
读取记忆 or 根据记忆 authorizes lookup only. A later behavior fix follows the
Fast Record Path.
Evidence Event Path
Update only the exact target row:
python -X utf8 "$env:USERPROFILE\.codex\skills\obsidian-fix-pattern-memory\scripts\fix_memory.py" event --note <canonical.md> --repo . --bug <id> --event <event> --evidence "<evidence>" --write
Build/static evidence never becomes device/platform/QA verification. resolved
means development-resolved and QA-pending; only closed or equivalent explicit
QA evidence supports qa_verified. Reactivation downgrades only the exact target
with the materially same symptom.
Validation Debt Reports
For pending device/platform/QA checks or Campaigns, run the read-only report:
python -X utf8 "$env:USERPROFILE\.codex\skills\obsidian-fix-pattern-memory\scripts\validation_debt_report.py" --fix-patterns "$env:USERPROFILE\Documents\Obsidian\CodexVault\Codex\fix-patterns" [filters]
Use project/branch/version/domain filters and --campaign for the requested
scope. Read validation debt for grouping,
readiness meanings, or open-loop reconciliation. Write a draft/delta only to an
explicitly requested standalone path; do not rewrite canonical open-loops.
Reporting does not trigger ordinary fix recording or upgrade evidence.
Write Boundary
Record completed behavior-changing code, configuration, or resource fixes. Do not auto-record explanation-only work, comments/formatting, reverted experiments, temporary diagnostics, unrelated environment cleanup, or anything the user says not to record. Never save credentials, full chats, large logs, or private account data.
After a write, report the note path, fix_id, exact target state, evidence level,
and whether any other targets remain candidates.
Read fix record schema only when interpreting identity/state transitions. Read maintenance operations only for migration, validation, domain correction, or cross-project candidate audits.