← ExomemCONTENT HISTORY

Update to Exomem

Snapshot Nov 3, 2026 · 12:11 UTC · version 0.134.2

Collection source: downloaded plugin package.

WHAT CHANGED

Instructions updated for exomem-defrag

Skill instructions — Now says: 0d23c50d8751e79c26e99bbe70bc7adfcdf460c8ba88dd7bde037f50d2190af0 <!-- exomem-semantic-authoring:v8...

Observed in instructions or declared skills. Runtime behavior has not been tested.

Save Exomem and check future changes in Following.

Up to 10 plugins free · no card required.

All fields and original values.

Skill instructions

Before

Oct 24, 2026 · 13:41 UTC

2217ceb2ba966d84a83e3d4083daf2277d2eab0ed70a3f91d829c26fde9721bc <!-- exomem-semantic-authoring:v4 sha256:837b03b15c3d83f6c6eeb50771f4eaa04e4beaaae0f7d54be249be40ce7685f7 --> Every new, replaced, or activated active compiled note needs a...

After

Nov 3, 2026 · 12:11 UTC

0d23c50d8751e79c26e99bbe70bc7adfcdf460c8ba88dd7bde037f50d2190af0 <!-- exomem-semantic-authoring:v8 sha256:4f1a876ac71d48ed55481e9083522afb38393521c8c64b37e73800bb3028ec7d --> Every new, replaced, or activated compiled note in the live cl...

Supporting files

Before

Oct 24, 2026 · 13:41 UTC

[{"relative_path":"references/audit-checks.md","size_in_bytes":12725},{"relative_path":"references/before-writing.md","size_in_bytes":5978},{"relative_path":"references/engagement.md","size_in_bytes":19238},{"relative_path":"references/f...

After

Nov 3, 2026 · 12:11 UTC

[{"relative_path":"references/audit-checks.md","size_in_bytes":13831},{"relative_path":"references/before-writing.md","size_in_bytes":5923},{"relative_path":"references/engagement.md","size_in_bytes":21333},{"relative_path":"references/f...

Compare saved observations

Download comparison JSON

SKILL.md text changes

− removed · + added

--- before
+++ after
@@ -2,7 +2,7 @@
 name: exomem-defrag
 description: Reconcile duplicate, stale, or conflicting Exomem memory while preserving history through review, merge, or supersession.
 metadata:
-  skill_contract: 2217ceb2ba966d84a83e3d4083daf2277d2eab0ed70a3f91d829c26fde9721bc
+  skill_contract: 0d23c50d8751e79c26e99bbe70bc7adfcdf460c8ba88dd7bde037f50d2190af0
   version: "0.1.0"
 ---
 
@@ -61,10 +61,10 @@
 ## Mistakes to avoid
 Do not auto-delete memory. Do not treat semantic proximity as contradiction by itself. Do not merge notes that answer different questions.
 
-<!-- exomem-semantic-authoring:v4 sha256:837b03b15c3d83f6c6eeb50771f4eaa04e4beaaae0f7d54be249be40ce7685f7 -->
+<!-- exomem-semantic-authoring:v8 sha256:4f1a876ac71d48ed55481e9083522afb38393521c8c64b37e73800bb3028ec7d -->
 ## Semantic authoring contract
 
-Every new, replaced, or activated active compiled note needs at least one valid, non-empty semantic unit. Either compact or rich form satisfies the minimum; compact is preferred, and a valid rich unit does not need a duplicate compact restatement.
+Every new, replaced, or activated compiled note in the live class needs at least one valid, non-empty semantic unit. Either compact or rich form satisfies the minimum; compact is preferred, and a valid rich unit does not need a duplicate compact restatement.
 
 Semantic roles:
 
@@ -80,13 +80,14 @@
 - Compact context: one optional authored qualifier for the observation. Write `(<context>)`. Use one balanced, unescaped parenthesized suffix preceded by whitespace.
 - Compact anchor: one optional stable authored unit identifier. Write `^anchor`. Use 1-64 ASCII letters, digits, or hyphens and begin and end alphanumeric. Place it at the end of the line.
 - Compact exclusions: observation-shaped rows inside fenced code blocks; task labels `[ ]`, `[x]`, `[X]`, and `[-]`; reserved or punctuation-bearing bracket labels outside category grammar. Compact units do not carry typed unit relations; use a canonical note-level relation or the rich form.
-- Rich: write `## <Governed Kind>` with optional leading metadata `- category: <open category>`, `- id: <stable-id>`, `- tags: <comma-separated tags>`, `- context: <context>`, `- relations: <relation-type>: [[Target]]`. Metadata rows are optional and leading; the canonical writer emits category, id, tags, context, then relations; category defaults to the governed kind when omitted. Accepted metadata order is flexible while rows remain leading. After optional leading metadata, add a blank line and a substantive Markdown body. Typed unit relations require the rich form.
+- Rich: write `## <Governed Kind>` with optional leading metadata `- category: <open category>`, `- id: <stable-id>`, `- tags: <comma-separated tags>`, `- context: <context>`, `- relations: <relation-type>: [[Target]]`, `- verdict: <epistemic outcome>`, `- check_by: <ISO revisit date>`. Metadata rows are optional and leading; the canonical writer emits category, id, tags, context, relations, verdict and check_by; category defaults to the governed kind when omitted. Accepted metadata order is flexible while rows remain leading. After optional leading metadata, add a blank line and a substantive Markdown body. Typed unit relations require the rich form. A `#anchor` target addresses a unit.
+- Epistemic corrections: Inspect affected claims and evidence. Distinguish attributed accounts from established facts. Correct suitable existing units with guarded writers, justified verdicts and exact links; verify current state. Refutation alone changes neither lifecycle nor rank. Writers retain prior interpretations; request bootstrap with profile=full for history guidance. Keep an anchored unit's identity when its wording changes. Preserve a false historical proposition and author its verdict; add a distinct corrective unit when useful. Refutation and contradiction do not imply supersession or reduce rank. The semantic writer retains prior interpretations atomically. Read revision_history with read_memory(include_history=true), optionally for unit_ref, using history_limit and history_continuation. Existing history remains the page's operation log. Entities and legacy pages use their existing edit owner; Records use guarded row corrections and history. Corrections need no dated child, special user nudge, or confirmation beyond the active engagement policy.
 - Rich boundary: A heading at level N owns content until the next non-fenced heading at level N or shallower; deeper headings remain in its body. `empty_rich_unit` means a recognized rich heading has no substantive body; Add substantive body content or remove the empty recognized heading.
-- Exact applicability: `compiled_intent(after_state) = canonical_compiled_destination(path) OR normalized_type in COMPILED_TYPES`. `COMPILED_TYPES` contains exactly `experiment`, `failure`, `insight`, `pattern`, `production-log`, `research-note`, with canonical destinations `experiment` → `Notes/Experiments`, `failure` → `Notes/Failures`, `insight` → `Notes/Insights`, `pattern` → `Notes/Patterns`, `production-log` → `Notes/Productions`, `research-note` → `Notes/Research`. Reject missing, invalid, or mismatched compiled frontmatter before evaluating the minimum-unit predicate. The minimum predicate applies when the path and normalized compiled type structurally match; the result is writable managed Markdown in the governed subtree; the result is outside Sources, Evidence, and trash; no activation exclusion applies; the resolved lifecycle is active. Inactive lifecycle values are `archived`, `draft`, `dropped`, `planned`, `superseded`. Check new active creates, replacements, and inactive-to-active transitions; inactive drafts may remain unit-free until activation.
+- Exact applicability: obtain `bootstrap(profile="compact", section="authoring")` and read `semantic_authoring.minimum_semantic_unit` for current structural applicability and the status-class rule. If the exposed bootstrap schema lacks `section`, use `bootstrap(profile="full")` instead; released profiles reject section arguments. Apply `compiled_intent(after_state) = canonical_compiled_destination(path) OR the normalized type's note-type role is compiled`. Shipped compiled types: `research-note` in `Notes/Research`, `insight` in `Notes/Insights`, `failure` in `Notes/Failures`, `pattern` in `Notes/Patterns`, `experiment` in `Notes/Experiments`, `production-log` in `Notes/Productions`. More may be registered; `schema_memory(subject="note-types", operation="inspect")` lists the live set. Reject missing, invalid, or mismatched compiled frontmatter before evaluating the minimum-unit predicate. The minimum predicate applies when the path and normalized compiled type structurally match; the result is writable managed Markdown in the governed subtree; the result is outside Sources, Evidence, and trash; no activation exclusion applies; the admitted effective status class is live. Check live creates, replacements and transitions to live; pending compiled notes may remain unit-free until activation.
 - Existing active pages: A post-activation compliant page cannot lose its final valid semantic unit.
 - Exempt content: arbitrary non-compiled Markdown, dataset cards, Evidence artifacts, hubs, indexes, logs, non-Markdown files, schema and admin artifacts, snapshots, Sources, templates, trash.
 - Routes: use `remember` for a new compiled note, `replace_memory` for a replacement, `observe_memory` for one unit, and `edit_memory` for a small edit or activation. Tier 2 manage_memory_file create, overwrite, and append receive the same semantic precommit contract on the complete resulting compiled Markdown; prefer remember or replace_memory when their typed route fits.
-- Findings: `missing_semantic_unit` means an applicable active compiled result has no valid non-empty unit; `empty_rich_unit` means a recognized rich heading has no substantive body. Add substantive body content or remove the empty recognized heading.
+- Findings: `missing_semantic_unit` means an applicable live-class compiled result has no valid non-empty unit; `empty_rich_unit` means a recognized rich heading has no substantive body. Add substantive body content or remove the empty recognized heading.
 - Compact remediation: Add `## Observations` and `- [operating constraint] Keep retries bounded #reliability`.
 - Rich remediation: Alternatively add `## Decision`, a blank line, and a substantive body.
 - Semantic-unit coverage and relation-review disposition are independent obligations.
Full technical diff · 2 changed fields

changed /included_files

BEFORE
[
  {
    "relative_path": "references/audit-checks.md",
    "size_in_bytes": 12725
  },
  {
    "relative_path": "references/before-writing.md",
    "size_in_bytes": 5978
  },
  {
    "relative_path": "references/engagement.md",
    "size_in_bytes": 19238
  },
  {
    "relative_path": "references/frontmatter.md",
    "size_in_bytes": 11865
  },
  {
    "relative_path": "references/governance.md",
    "size_in_bytes": 8806
  },
  {
    "relative_path": "references/mutation-results.md",
    "size_in_bytes": 7511
  },
  {
    "relative_path": "references/operation-routing.md",
    "size_in_bytes": 20852
  },
  {
    "relative_path": "references/operations.md",
    "size_in_bytes": 56077
  },
  {
    "relative_path": "references/page-types.md",
    "size_in_bytes": 20118
  },
  {
    "relative_path": "references/planning-records.md",
    "size_in_bytes": 14750
  },
  {
    "relative_path": "references/recall.md",
    "size_in_bytes": 11701
  },
  {
    "relative_path": "references/semantic-authoring.md",
    "size_in_bytes": 8608
  },
  {
    "relative_path": "references/supersession.md",
    "size_in_bytes": 5409
  },
  {
    "relative_path": "references/vault-care.md",
    "size_in_bytes": 11452
  },
  {
    "relative_path": "references/write-scope.md",
    "size_in_bytes": 10434
  },
  {
    "relative_path": "references/writing.md",
    "size_in_bytes": 27857
  }
]
AFTER
[
  {
    "relative_path": "references/audit-checks.md",
    "size_in_bytes": 13831
  },
  {
    "relative_path": "references/before-writing.md",
    "size_in_bytes": 5923
  },
  {
    "relative_path": "references/engagement.md",
    "size_in_bytes": 21333
  },
  {
    "relative_path": "references/frontmatter.md",
    "size_in_bytes": 12579
  },
  {
    "relative_path": "references/governance.md",
    "size_in_bytes": 8806
  },
  {
    "relative_path": "references/mutation-results.md",
    "size_in_bytes": 7511
  },
  {
    "relative_path": "references/operation-routing.md",
    "size_in_bytes": 21424
  },
  {
    "relative_path": "references/operations.md",
    "size_in_bytes": 56563
  },
  {
    "relative_path": "references/page-types.md",
    "size_in_bytes": 20100
  },
  {
    "relative_path": "references/planning-records.md",
    "size_in_bytes": 15811
  },
  {
    "relative_path": "references/recall.md",
    "size_in_bytes": 19357
  },
  {
    "relative_path": "references/semantic-authoring.md",
    "size_in_bytes": 10041
  },
  {
    "relative_path": "references/supersession.md",
    "size_in_bytes": 5440
  },
  {
    "relative_path": "references/vault-care.md",
    "size_in_bytes": 13050
  },
  {
    "relative_path": "references/vocabulary.md",
    "size_in_bytes": 5660
  },
  {
    "relative_path": "references/write-scope.md",
    "size_in_bytes": 10880
  },
  {
    "relative_path": "references/writing.md",
    "size_in_bytes": 29475
  }
]

changed /skill_md_contents

BEFORE
"---\nname: exomem-defrag\ndescription: Reconcile duplicate, stale, or conflicting Exomem memory while preserving history through review, merge, or supersession.\nmetadata:\n  skill_contract: 2217ceb2ba966d84a83e3d4083daf2277d2eab0ed70a3f91d829c26fde9721bc\n  version: \"0.1.0\"\n---\n\n# exomem-defrag\n\n## Purpose\nReduce duplicate, stale, or conflicting memory without losing provenance.\n\n## When to use\nUse when the user asks to defrag a topic, reconcile notes, resolve contradictions, merge duplicates, or inspect what is stale.\n\n## Portable operating rules\n\nBefore the first operation, inspect the exposed bootstrap schema. If it lacks `skill_contract`, obtain `bootstrap(profile=\"compact\")` directly. Otherwise obtain `bootstrap(profile=\"session\", skill_contract=<metadata.skill_contract>)` if current policy or capabilities are missing; honor `engagement.envelope` and `available_product_tools`. Reuse returned state until policy, connection, adapter, or returned vault configuration/registry state changes. If the server rejects the session profile or argument, obtain `bootstrap(profile=\"compact\")` once. Use the harness's supported discovery mechanism and load only the tools needed now. If the applicable local procedure cannot be read, obtain the portable compact contract; do not improvise a write.\n\nDo not invoke tools absent from `available_product_tools`; use the live capability list even when a bundled workflow mentions a withheld operation.\n\nUse `configure_memory` set/clear only for an explicit user request to change saved engagement.\nRecall, capture, installation and missing hooks use the existing preference;\nnone authorizes changing it. Inspect first when the user requests a change.\n\nSources/Evidence are immutable, and content outside the managed Knowledge Base\nis read-only. Before a compiled write: reuse current relevant search/read results,\ncheck for duplicates, and include known source references and reviewed connections\nin the first write. Use `connect_memory(operation=\"suggest-links\")` when useful\nconnections are still unknown, not to recheck links already established in context.\nHonor the live confirmation ceiling;\na workflow or standing capture preference does not grant restructure authority.\n\nInspect mutation results before reporting success. On `success: false`, follow\nthe structured error. For warming, busy, pending, or\n`MUTATION_COMMITTED_ACKNOWLEDGEMENT_UNCERTAIN`, preserve the same mutation identity\nand unchanged payload; wait/reconcile/retry only as instructed, never with a new\nidentity after an uncertain commit.\n\n## Workflow\n1. Search the topic with `ask_memory`, using `ask_memory(deep=true)`, `connect_memory`, or `review_memory` when graph, stale, audit, or evolution context matters.\n2. Group findings into keep, merge, supersede, or leave alone.\n3. Read candidate pages with `read_memory`, including history when needed.\n4. Use `replace_memory` for changed conclusions and `edit_memory` only for minor corrections.\n5. Preserve raw sources and evidence; keep superseded history visible.\n6. When you supersede or merge, carry the merged notes' `sources:` and outbound links onto the survivor — a merge that drops edges loses graph value the superseded page can no longer carry. Check `review_memory(mode=\"relation-debt\")` on the survivor afterwards.\n\n## Relation governance\nResolve typed meaning with `resolve-relation` before authoring. Reuse a specific\ntruthful match; otherwise choose honest `relates_to` or no edge. Durable recurring\nmeaning is proposal-first through `propose-relation` and hash-guarded\n`save-relations`; corrections use a new canonical key and deprecate the old one.\n\n## Output contract\nReturn the reconciliation decision for each candidate and the paths changed or left alone.\n\n## Save rules\nOnly mutate when the correct action is clear. Use supersession for meaningful changes.\n\n## Mistakes to avoid\nDo not auto-delete memory. Do not treat semantic proximity as contradiction by itself. Do not merge notes that answer different questions.\n\n<!-- exomem-semantic-authoring:v4 sha256:837b03b15c3d83f6c6eeb50771f4eaa04e4beaaae0f7d54be249be40ce7685f7 -->\n## Semantic authoring contract\n\nEvery new, replaced, or activated active compiled note needs at least one valid, non-empty semantic unit. Either compact or rich form satisfies the minimum; compact is preferred, and a valid rich unit does not need a duplicate compact restatement.\n\nSemantic roles:\n\n- Category: One primary open-vocabulary label describes what a unit is about; rich category defaults to its governed kind unless explicitly overridden.\n- Tag: Zero or more optional secondary retrieval labels refine lookup and never replace category or determine kind.\n- Kind: The governed semantic form: compact units always use `observation`; rich units use their recognized heading kind.\n\nCompact grammar: `- [category] content #tags (context) ^anchor`. Parse valid compact observations anywhere outside fenced code blocks. Exomem writers use `-` under the canonical `## Observations` section. Parser bullet markers are `-`, `*`, `+`; the canonical marker is `-`. Parse from the end by taking anchor, then context, then trailing tags; the authored display order remains tags, context, anchor. Category uses open vocabulary.\n\n- Compact category: the unit's one primary open-vocabulary subject or domain label. After trimming, use 1-64 Unicode code points; begin with a Unicode letter; then use only Unicode letters or digits, spaces, `_`, or `-`. Apply Unicode NFKC and casefold, then collapse runs of spaces, `_`, and `-` to one `_`. Registry alias resolution is separate from authored canonicalization; an unseen valid category needs no registry write.\n- Compact content: the unit's substantive observation. Use non-empty content that remains on one Markdown line. Escaped parentheses, embedded hashes, and non-trailing tag-like text remain content.\n- Compact tags: zero or more optional secondary retrieval labels; tags do not replace the primary category or governed kind. Write `#slug`. Use 1-64 Unicode letters or digits, `_`, `-`, or `/`; begin with a letter or digit; do not use empty path segments or a trailing `/`. Use one contiguous trailing run after content and before optional context and anchor.\n- Compact context: one optional authored qualifier for the observation. Write `(<context>)`. Use one balanced, unescaped parenthesized suffix preceded by whitespace.\n- Compact anchor: one optional stable authored unit identifier. Write `^anchor`. Use 1-64 ASCII letters, digits, or hyphens and begin and end alphanumeric. Place it at the end of the line.\n- Compact exclusions: observation-shaped rows inside fenced code blocks; task labels `[ ]`, `[x]`, `[X]`, and `[-]`; reserved or punctuation-bearing bracket labels outside category grammar. Compact units do not carry typed unit relations; use a canonical note-level relation or the rich form.\n- Rich: write `## <Governed Kind>` with optional leading metadata `- category: <open category>`, `- id: <stable-id>`, `- tags: <comma-separated tags>`, `- context: <context>`, `- relations: <relation-type>: [[Target]]`. Metadata rows are optional and leading; the canonical writer emits category, id, tags, context, then relations; category defaults to the governed kind when omitted. Accepted metadata order is flexible while rows remain leading. After optional leading metadata, add a blank line and a substantive Markdown body. Typed unit relations require the rich form.\n- Rich boundary: A heading at level N owns content until the next non-fenced heading at level N or shallower; deeper headings remain in its body. `empty_rich_unit` means a recognized rich heading has no substantive body; Add substantive body content or remove the empty recognized heading.\n- Exact applicability: `compiled_intent(after_state) = canonical_compiled_destination(path) OR normalized_type in COMPILED_TYPES`. `COMPILED_TYPES` contains exactly `experiment`, `failure`, `insight`, `pattern`, `production-log`, `research-note`, with canonical destinations `experiment` → `Notes/Experiments`, `failure` → `Notes/Failures`, `insight` → `Notes/Insights`, `pattern` → `Notes/Patterns`, `production-log` → `Notes/Productions`, `research-note` → `Notes/Research`. Reject missing, invalid, or mismatched compiled frontmatter before evaluating the minimum-unit predicate. The minimum predicate applies when the path and normalized compiled type structurally match; the result is writable managed Markdown in the governed subtree; the result is outside Sources, Evidence, and trash; no activation exclusion applies; the resolved lifecycle is active. Inactive lifecycle values are `archived`, `draft`, `dropped`, `planned`, `superseded`. Check new active creates, replacements, and inactive-to-active transitions; inactive drafts may remain unit-free until activation.\n- Existing active pages: A post-activation compliant page cannot lose its final valid semantic unit.\n- Exempt content: arbitrary non-compiled Markdown, dataset cards, Evidence artifacts, hubs, indexes, logs, non-Markdown files, schema and admin artifacts, snapshots, Sources, templates, trash.\n- Routes: use `remember` for a new compiled note, `replace_memory` for a replacement, `observe_memory` for one unit, and `edit_memory` for a small edit or activation. Tier 2 manage_memory_file create, overwrite, and append receive the same semantic precommit contract on the complete resulting compiled Markdown; prefer remember or replace_memory when their typed route fits.\n- Findings: `missing_semantic_unit` means an applicable active compiled result has no valid non-empty unit; `empty_rich_unit` means a recognized rich heading has no substantive body. Add substantive body content or remove the empty recognized heading.\n- Compact remediation: Add `## Observations` and `- [operating constraint] Keep retries bounded #reliability`.\n- Rich remediation: Alternatively add `## Decision`, a blank line, and a substantive body.\n- Semantic-unit coverage and relation-review disposition are independent obligations.\n- Portable categories: Choose exactly one primary category: prefer a meaningful epistemic or operational role and put the domain in tags, but if the role would only be a generic fact, finding, or observation and the domain is the durable lens, use a domain category instead. The category vocabulary is open: these core keys are a shared starting point, not a closed list. When no core key is a good primary fit, author a new meaningful category rather than forcing an ill-fitting one. Use exactly one primary category; kind is the governed form, tags are secondary facets, and relations are typed edges. The rich form's category defaults to its kind, so `category: decision` is redundant when the kind is Decision. Create multiple distinct semantic observations and typed relations when the source genuinely supports them, but never multiply units or relations to satisfy a quota and never duplicate the same fact. Core keys are `action`, `assumption`, `code`, `config`, `constraint`, `decision`, `design`, `fact`, `finding`, `insight`, `preference`, `problem`, `question`, `requirement`, `risk`, `technique`. Core aliases are `actions` → `action`, `assumptions` → `assumption`, `configs` → `config`, `configuration` → `config`, `configurations` → `config`, `constraints` → `constraint`, `decisions` → `decision`, `designs` → `design`, `facts` → `fact`, `findings` → `finding`, `insights` → `insight`, `open_question` → `question`, `open_questions` → `question`, `preferences` → `preference`, `problems` → `problem`, `questions` → `question`, `requirements` → `requirement`, `risks` → `risk`, `techniques` → `technique`. Role example: `- [decision] Relocate to a coastal city next spring #life ^relocation`. Domain example: `- [nutrition] Evening protein improves adherence #experiment ^evening-protein`. Breadth example (life, finance, legal/travel, and career alongside one retained code line):\n\n```markdown\n- [constraint] Keep retry windows bounded #code ^retry-windows\n- [risk] Variable-rate mortgage payments could spike #finance ^mortgage-rate-risk\n- [question] Does the destination require a visa before travel #legal #travel ^visa-requirement\n- [career] Weigh a sabbatical before the next promotion cycle #growth ^sabbatical-timing\n```\n\nRich example:\n\n```markdown\n## Decision\n- id: commit-to-morning-training\n- tags: health\n- relations: supports: [[Knowledge Base/Notes/Health/Morning training]]\n\nCommit to a fixed 6am training block on weekdays so consistency compounds and health stays the durable lens for this decision.\n```\n"
AFTER
"---\nname: exomem-defrag\ndescription: Reconcile duplicate, stale, or conflicting Exomem memory while preserving history through review, merge, or supersession.\nmetadata:\n  skill_contract: 0d23c50d8751e79c26e99bbe70bc7adfcdf460c8ba88dd7bde037f50d2190af0\n  version: \"0.1.0\"\n---\n\n# exomem-defrag\n\n## Purpose\nReduce duplicate, stale, or conflicting memory without losing provenance.\n\n## When to use\nUse when the user asks to defrag a topic, reconcile notes, resolve contradictions, merge duplicates, or inspect what is stale.\n\n## Portable operating rules\n\nBefore the first operation, inspect the exposed bootstrap schema. If it lacks `skill_contract`, obtain `bootstrap(profile=\"compact\")` directly. Otherwise obtain `bootstrap(profile=\"session\", skill_contract=<metadata.skill_contract>)` if current policy or capabilities are missing; honor `engagement.envelope` and `available_product_tools`. Reuse returned state until policy, connection, adapter, or returned vault configuration/registry state changes. If the server rejects the session profile or argument, obtain `bootstrap(profile=\"compact\")` once. Use the harness's supported discovery mechanism and load only the tools needed now. If the applicable local procedure cannot be read, obtain the portable compact contract; do not improvise a write.\n\nDo not invoke tools absent from `available_product_tools`; use the live capability list even when a bundled workflow mentions a withheld operation.\n\nUse `configure_memory` set/clear only for an explicit user request to change saved engagement.\nRecall, capture, installation and missing hooks use the existing preference;\nnone authorizes changing it. Inspect first when the user requests a change.\n\nSources/Evidence are immutable, and content outside the managed Knowledge Base\nis read-only. Before a compiled write: reuse current relevant search/read results,\ncheck for duplicates, and include known source references and reviewed connections\nin the first write. Use `connect_memory(operation=\"suggest-links\")` when useful\nconnections are still unknown, not to recheck links already established in context.\nHonor the live confirmation ceiling;\na workflow or standing capture preference does not grant restructure authority.\n\nInspect mutation results before reporting success. On `success: false`, follow\nthe structured error. For warming, busy, pending, or\n`MUTATION_COMMITTED_ACKNOWLEDGEMENT_UNCERTAIN`, preserve the same mutation identity\nand unchanged payload; wait/reconcile/retry only as instructed, never with a new\nidentity after an uncertain commit.\n\n## Workflow\n1. Search the topic with `ask_memory`, using `ask_memory(deep=true)`, `connect_memory`, or `review_memory` when graph, stale, audit, or evolution context matters.\n2. Group findings into keep, merge, supersede, or leave alone.\n3. Read candidate pages with `read_memory`, including history when needed.\n4. Use `replace_memory` for changed conclusions and `edit_memory` only for minor corrections.\n5. Preserve raw sources and evidence; keep superseded history visible.\n6. When you supersede or merge, carry the merged notes' `sources:` and outbound links onto the survivor — a merge that drops edges loses graph value the superseded page can no longer carry. Check `review_memory(mode=\"relation-debt\")` on the survivor afterwards.\n\n## Relation governance\nResolve typed meaning with `resolve-relation` before authoring. Reuse a specific\ntruthful match; otherwise choose honest `relates_to` or no edge. Durable recurring\nmeaning is proposal-first through `propose-relation` and hash-guarded\n`save-relations`; corrections use a new canonical key and deprecate the old one.\n\n## Output contract\nReturn the reconciliation decision for each candidate and the paths changed or left alone.\n\n## Save rules\nOnly mutate when the correct action is clear. Use supersession for meaningful changes.\n\n## Mistakes to avoid\nDo not auto-delete memory. Do not treat semantic proximity as contradiction by itself. Do not merge notes that answer different questions.\n\n<!-- exomem-semantic-authoring:v8 sha256:4f1a876ac71d48ed55481e9083522afb38393521c8c64b37e73800bb3028ec7d -->\n## Semantic authoring contract\n\nEvery new, replaced, or activated compiled note in the live class needs at least one valid, non-empty semantic unit. Either compact or rich form satisfies the minimum; compact is preferred, and a valid rich unit does not need a duplicate compact restatement.\n\nSemantic roles:\n\n- Category: One primary open-vocabulary label describes what a unit is about; rich category defaults to its governed kind unless explicitly overridden.\n- Tag: Zero or more optional secondary retrieval labels refine lookup and never replace category or determine kind.\n- Kind: The governed semantic form: compact units always use `observation`; rich units use their recognized heading kind.\n\nCompact grammar: `- [category] content #tags (context) ^anchor`. Parse valid compact observations anywhere outside fenced code blocks. Exomem writers use `-` under the canonical `## Observations` section. Parser bullet markers are `-`, `*`, `+`; the canonical marker is `-`. Parse from the end by taking anchor, then context, then trailing tags; the authored display order remains tags, context, anchor. Category uses open vocabulary.\n\n- Compact category: the unit's one primary open-vocabulary subject or domain label. After trimming, use 1-64 Unicode code points; begin with a Unicode letter; then use only Unicode letters or digits, spaces, `_`, or `-`. Apply Unicode NFKC and casefold, then collapse runs of spaces, `_`, and `-` to one `_`. Registry alias resolution is separate from authored canonicalization; an unseen valid category needs no registry write.\n- Compact content: the unit's substantive observation. Use non-empty content that remains on one Markdown line. Escaped parentheses, embedded hashes, and non-trailing tag-like text remain content.\n- Compact tags: zero or more optional secondary retrieval labels; tags do not replace the primary category or governed kind. Write `#slug`. Use 1-64 Unicode letters or digits, `_`, `-`, or `/`; begin with a letter or digit; do not use empty path segments or a trailing `/`. Use one contiguous trailing run after content and before optional context and anchor.\n- Compact context: one optional authored qualifier for the observation. Write `(<context>)`. Use one balanced, unescaped parenthesized suffix preceded by whitespace.\n- Compact anchor: one optional stable authored unit identifier. Write `^anchor`. Use 1-64 ASCII letters, digits, or hyphens and begin and end alphanumeric. Place it at the end of the line.\n- Compact exclusions: observation-shaped rows inside fenced code blocks; task labels `[ ]`, `[x]`, `[X]`, and `[-]`; reserved or punctuation-bearing bracket labels outside category grammar. Compact units do not carry typed unit relations; use a canonical note-level relation or the rich form.\n- Rich: write `## <Governed Kind>` with optional leading metadata `- category: <open category>`, `- id: <stable-id>`, `- tags: <comma-separated tags>`, `- context: <context>`, `- relations: <relation-type>: [[Target]]`, `- verdict: <epistemic outcome>`, `- check_by: <ISO revisit date>`. Metadata rows are optional and leading; the canonical writer emits category, id, tags, context, relations, verdict and check_by; category defaults to the governed kind when omitted. Accepted metadata order is flexible while rows remain leading. After optional leading metadata, add a blank line and a substantive Markdown body. Typed unit relations require the rich form. A `#anchor` target addresses a unit.\n- Epistemic corrections: Inspect affected claims and evidence. Distinguish attributed accounts from established facts. Correct suitable existing units with guarded writers, justified verdicts and exact links; verify current state. Refutation alone changes neither lifecycle nor rank. Writers retain prior interpretations; request bootstrap with profile=full for history guidance. Keep an anchored unit's identity when its wording changes. Preserve a false historical proposition and author its verdict; add a distinct corrective unit when useful. Refutation and contradiction do not imply supersession or reduce rank. The semantic writer retains prior interpretations atomically. Read revision_history with read_memory(include_history=true), optionally for unit_ref, using history_limit and history_continuation. Existing history remains the page's operation log. Entities and legacy pages use their existing edit owner; Records use guarded row corrections and history. Corrections need no dated child, special user nudge, or confirmation beyond the active engagement policy.\n- Rich boundary: A heading at level N owns content until the next non-fenced heading at level N or shallower; deeper headings remain in its body. `empty_rich_unit` means a recognized rich heading has no substantive body; Add substantive body content or remove the empty recognized heading.\n- Exact applicability: obtain `bootstrap(profile=\"compact\", section=\"authoring\")` and read `semantic_authoring.minimum_semantic_unit` for current structural applicability and the status-class rule. If the exposed bootstrap schema lacks `section`, use `bootstrap(profile=\"full\")` instead; released profiles reject section arguments. Apply `compiled_intent(after_state) = canonical_compiled_destination(path) OR the normalized type's note-type role is compiled`. Shipped compiled types: `research-note` in `Notes/Research`, `insight` in `Notes/Insights`, `failure` in `Notes/Failures`, `pattern` in `Notes/Patterns`, `experiment` in `Notes/Experiments`, `production-log` in `Notes/Productions`. More may be registered; `schema_memory(subject=\"note-types\", operation=\"inspect\")` lists the live set. Reject missing, invalid, or mismatched compiled frontmatter before evaluating the minimum-unit predicate. The minimum predicate applies when the path and normalized compiled type structurally match; the result is writable managed Markdown in the governed subtree; the result is outside Sources, Evidence, and trash; no activation exclusion applies; the admitted effective status class is live. Check live creates, replacements and transitions to live; pending compiled notes may remain unit-free until activation.\n- Existing active pages: A post-activation compliant page cannot lose its final valid semantic unit.\n- Exempt content: arbitrary non-compiled Markdown, dataset cards, Evidence artifacts, hubs, indexes, logs, non-Markdown files, schema and admin artifacts, snapshots, Sources, templates, trash.\n- Routes: use `remember` for a new compiled note, `replace_memory` for a replacement, `observe_memory` for one unit, and `edit_memory` for a small edit or activation. Tier 2 manage_memory_file create, overwrite, and append receive the same semantic precommit contract on the complete resulting compiled Markdown; prefer remember or replace_memory when their typed route fits.\n- Findings: `missing_semantic_unit` means an applicable live-class compiled result has no valid non-empty unit; `empty_rich_unit` means a recognized rich heading has no substantive body. Add substantive body content or remove the empty recognized heading.\n- Compact remediation: Add `## Observations` and `- [operating constraint] Keep retries bounded #reliability`.\n- Rich remediation: Alternatively add `## Decision`, a blank line, and a substantive body.\n- Semantic-unit coverage and relation-review disposition are independent obligations.\n- Portable categories: Choose exactly one primary category: prefer a meaningful epistemic or operational role and put the domain in tags, but if the role would only be a generic fact, finding, or observation and the domain is the durable lens, use a domain category instead. The category vocabulary is open: these core keys are a shared starting point, not a closed list. When no core key is a good primary fit, author a new meaningful category rather than forcing an ill-fitting one. Use exactly one primary category; kind is the governed form, tags are secondary facets, and relations are typed edges. The rich form's category defaults to its kind, so `category: decision` is redundant when the kind is Decision. Create multiple distinct semantic observations and typed relations when the source genuinely supports them, but never multiply units or relations to satisfy a quota and never duplicate the same fact. Core keys are `action`, `assumption`, `code`, `config`, `constraint`, `decision`, `design`, `fact`, `finding`, `insight`, `preference`, `problem`, `question`, `requirement`, `risk`, `technique`. Core aliases are `actions` → `action`, `assumptions` → `assumption`, `configs` → `config`, `configuration` → `config`, `configurations` → `config`, `constraints` → `constraint`, `decisions` → `decision`, `designs` → `design`, `facts` → `fact`, `findings` → `finding`, `insights` → `insight`, `open_question` → `question`, `open_questions` → `question`, `preferences` → `preference`, `problems` → `problem`, `questions` → `question`, `requirements` → `requirement`, `risks` → `risk`, `techniques` → `technique`. Role example: `- [decision] Relocate to a coastal city next spring #life ^relocation`. Domain example: `- [nutrition] Evening protein improves adherence #experiment ^evening-protein`. Breadth example (life, finance, legal/travel, and career alongside one retained code line):\n\n```markdown\n- [constraint] Keep retry windows bounded #code ^retry-windows\n- [risk] Variable-rate mortgage payments could spike #finance ^mortgage-rate-risk\n- [question] Does the destination require a visa before travel #legal #travel ^visa-requirement\n- [career] Weigh a sabbatical before the next promotion cycle #growth ^sabbatical-timing\n```\n\nRich example:\n\n```markdown\n## Decision\n- id: commit-to-morning-training\n- tags: health\n- relations: supports: [[Knowledge Base/Notes/Health/Morning training]]\n\nCommit to a fixed 6am training block on weekdays so consistency compounds and health stays the durable lens for this decision.\n```\n"
Full snapshot data
{
  "description": "Reconcile duplicate, stale, or conflicting Exomem memory while preserving history through review, merge, or supersession.",
  "included_files": [
    {
      "relative_path": "references/audit-checks.md",
      "size_in_bytes": 13831
    },
    {
      "relative_path": "references/before-writing.md",
      "size_in_bytes": 5923
    },
    {
      "relative_path": "references/engagement.md",
      "size_in_bytes": 21333
    },
    {
      "relative_path": "references/frontmatter.md",
      "size_in_bytes": 12579
    },
    {
      "relative_path": "references/governance.md",
      "size_in_bytes": 8806
    },
    {
      "relative_path": "references/mutation-results.md",
      "size_in_bytes": 7511
    },
    {
      "relative_path": "references/operation-routing.md",
      "size_in_bytes": 21424
    },
    {
      "relative_path": "references/operations.md",
      "size_in_bytes": 56563
    },
    {
      "relative_path": "references/page-types.md",
      "size_in_bytes": 20100
    },
    {
      "relative_path": "references/planning-records.md",
      "size_in_bytes": 15811
    },
    {
      "relative_path": "references/recall.md",
      "size_in_bytes": 19357
    },
    {
      "relative_path": "references/semantic-authoring.md",
      "size_in_bytes": 10041
    },
    {
      "relative_path": "references/supersession.md",
      "size_in_bytes": 5440
    },
    {
      "relative_path": "references/vault-care.md",
      "size_in_bytes": 13050
    },
    {
      "relative_path": "references/vocabulary.md",
      "size_in_bytes": 5660
    },
    {
      "relative_path": "references/write-scope.md",
      "size_in_bytes": 10880
    },
    {
      "relative_path": "references/writing.md",
      "size_in_bytes": 29475
    }
  ],
  "name": "exomem-defrag",
  "skill_md_contents": "---\nname: exomem-defrag\ndescription: Reconcile duplicate, stale, or conflicting Exomem memory while preserving history through review, merge, or supersession.\nmetadata:\n  skill_contract: 0d23c50d8751e79c26e99bbe70bc7adfcdf460c8ba88dd7bde037f50d2190af0\n  version: \"0.1.0\"\n---\n\n# exomem-defrag\n\n## Purpose\nReduce duplicate, stale, or conflicting memory without losing provenance.\n\n## When to use\nUse when the user asks to defrag a topic, reconcile notes, resolve contradictions, merge duplicates, or inspect what is stale.\n\n## Portable operating rules\n\nBefore the first operation, inspect the exposed bootstrap schema. If it lacks `skill_contract`, obtain `bootstrap(profile=\"compact\")` directly. Otherwise obtain `bootstrap(profile=\"session\", skill_contract=<metadata.skill_contract>)` if current policy or capabilities are missing; honor `engagement.envelope` and `available_product_tools`. Reuse returned state until policy, connection, adapter, or returned vault configuration/registry state changes. If the server rejects the session profile or argument, obtain `bootstrap(profile=\"compact\")` once. Use the harness's supported discovery mechanism and load only the tools needed now. If the applicable local procedure cannot be read, obtain the portable compact contract; do not improvise a write.\n\nDo not invoke tools absent from `available_product_tools`; use the live capability list even when a bundled workflow mentions a withheld operation.\n\nUse `configure_memory` set/clear only for an explicit user request to change saved engagement.\nRecall, capture, installation and missing hooks use the existing preference;\nnone authorizes changing it. Inspect first when the user requests a change.\n\nSources/Evidence are immutable, and content outside the managed Knowledge Base\nis read-only. Before a compiled write: reuse current relevant search/read results,\ncheck for duplicates, and include known source references and reviewed connections\nin the first write. Use `connect_memory(operation=\"suggest-links\")` when useful\nconnections are still unknown, not to recheck links already established in context.\nHonor the live confirmation ceiling;\na workflow or standing capture preference does not grant restructure authority.\n\nInspect mutation results before reporting success. On `success: false`, follow\nthe structured error. For warming, busy, pending, or\n`MUTATION_COMMITTED_ACKNOWLEDGEMENT_UNCERTAIN`, preserve the same mutation identity\nand unchanged payload; wait/reconcile/retry only as instructed, never with a new\nidentity after an uncertain commit.\n\n## Workflow\n1. Search the topic with `ask_memory`, using `ask_memory(deep=true)`, `connect_memory`, or `review_memory` when graph, stale, audit, or evolution context matters.\n2. Group findings into keep, merge, supersede, or leave alone.\n3. Read candidate pages with `read_memory`, including history when needed.\n4. Use `replace_memory` for changed conclusions and `edit_memory` only for minor corrections.\n5. Preserve raw sources and evidence; keep superseded history visible.\n6. When you supersede or merge, carry the merged notes' `sources:` and outbound links onto the survivor — a merge that drops edges loses graph value the superseded page can no longer carry. Check `review_memory(mode=\"relation-debt\")` on the survivor afterwards.\n\n## Relation governance\nResolve typed meaning with `resolve-relation` before authoring. Reuse a specific\ntruthful match; otherwise choose honest `relates_to` or no edge. Durable recurring\nmeaning is proposal-first through `propose-relation` and hash-guarded\n`save-relations`; corrections use a new canonical key and deprecate the old one.\n\n## Output contract\nReturn the reconciliation decision for each candidate and the paths changed or left alone.\n\n## Save rules\nOnly mutate when the correct action is clear. Use supersession for meaningful changes.\n\n## Mistakes to avoid\nDo not auto-delete memory. Do not treat semantic proximity as contradiction by itself. Do not merge notes that answer different questions.\n\n<!-- exomem-semantic-authoring:v8 sha256:4f1a876ac71d48ed55481e9083522afb38393521c8c64b37e73800bb3028ec7d -->\n## Semantic authoring contract\n\nEvery new, replaced, or activated compiled note in the live class needs at least one valid, non-empty semantic unit. Either compact or rich form satisfies the minimum; compact is preferred, and a valid rich unit does not need a duplicate compact restatement.\n\nSemantic roles:\n\n- Category: One primary open-vocabulary label describes what a unit is about; rich category defaults to its governed kind unless explicitly overridden.\n- Tag: Zero or more optional secondary retrieval labels refine lookup and never replace category or determine kind.\n- Kind: The governed semantic form: compact units always use `observation`; rich units use their recognized heading kind.\n\nCompact grammar: `- [category] content #tags (context) ^anchor`. Parse valid compact observations anywhere outside fenced code blocks. Exomem writers use `-` under the canonical `## Observations` section. Parser bullet markers are `-`, `*`, `+`; the canonical marker is `-`. Parse from the end by taking anchor, then context, then trailing tags; the authored display order remains tags, context, anchor. Category uses open vocabulary.\n\n- Compact category: the unit's one primary open-vocabulary subject or domain label. After trimming, use 1-64 Unicode code points; begin with a Unicode letter; then use only Unicode letters or digits, spaces, `_`, or `-`. Apply Unicode NFKC and casefold, then collapse runs of spaces, `_`, and `-` to one `_`. Registry alias resolution is separate from authored canonicalization; an unseen valid category needs no registry write.\n- Compact content: the unit's substantive observation. Use non-empty content that remains on one Markdown line. Escaped parentheses, embedded hashes, and non-trailing tag-like text remain content.\n- Compact tags: zero or more optional secondary retrieval labels; tags do not replace the primary category or governed kind. Write `#slug`. Use 1-64 Unicode letters or digits, `_`, `-`, or `/`; begin with a letter or digit; do not use empty path segments or a trailing `/`. Use one contiguous trailing run after content and before optional context and anchor.\n- Compact context: one optional authored qualifier for the observation. Write `(<context>)`. Use one balanced, unescaped parenthesized suffix preceded by whitespace.\n- Compact anchor: one optional stable authored unit identifier. Write `^anchor`. Use 1-64 ASCII letters, digits, or hyphens and begin and end alphanumeric. Place it at the end of the line.\n- Compact exclusions: observation-shaped rows inside fenced code blocks; task labels `[ ]`, `[x]`, `[X]`, and `[-]`; reserved or punctuation-bearing bracket labels outside category grammar. Compact units do not carry typed unit relations; use a canonical note-level relation or the rich form.\n- Rich: write `## <Governed Kind>` with optional leading metadata `- category: <open category>`, `- id: <stable-id>`, `- tags: <comma-separated tags>`, `- context: <context>`, `- relations: <relation-type>: [[Target]]`, `- verdict: <epistemic outcome>`, `- check_by: <ISO revisit date>`. Metadata rows are optional and leading; the canonical writer emits category, id, tags, context, relations, verdict and check_by; category defaults to the governed kind when omitted. Accepted metadata order is flexible while rows remain leading. After optional leading metadata, add a blank line and a substantive Markdown body. Typed unit relations require the rich form. A `#anchor` target addresses a unit.\n- Epistemic corrections: Inspect affected claims and evidence. Distinguish attributed accounts from established facts. Correct suitable existing units with guarded writers, justified verdicts and exact links; verify current state. Refutation alone changes neither lifecycle nor rank. Writers retain prior interpretations; request bootstrap with profile=full for history guidance. Keep an anchored unit's identity when its wording changes. Preserve a false historical proposition and author its verdict; add a distinct corrective unit when useful. Refutation and contradiction do not imply supersession or reduce rank. The semantic writer retains prior interpretations atomically. Read revision_history with read_memory(include_history=true), optionally for unit_ref, using history_limit and history_continuation. Existing history remains the page's operation log. Entities and legacy pages use their existing edit owner; Records use guarded row corrections and history. Corrections need no dated child, special user nudge, or confirmation beyond the active engagement policy.\n- Rich boundary: A heading at level N owns content until the next non-fenced heading at level N or shallower; deeper headings remain in its body. `empty_rich_unit` means a recognized rich heading has no substantive body; Add substantive body content or remove the empty recognized heading.\n- Exact applicability: obtain `bootstrap(profile=\"compact\", section=\"authoring\")` and read `semantic_authoring.minimum_semantic_unit` for current structural applicability and the status-class rule. If the exposed bootstrap schema lacks `section`, use `bootstrap(profile=\"full\")` instead; released profiles reject section arguments. Apply `compiled_intent(after_state) = canonical_compiled_destination(path) OR the normalized type's note-type role is compiled`. Shipped compiled types: `research-note` in `Notes/Research`, `insight` in `Notes/Insights`, `failure` in `Notes/Failures`, `pattern` in `Notes/Patterns`, `experiment` in `Notes/Experiments`, `production-log` in `Notes/Productions`. More may be registered; `schema_memory(subject=\"note-types\", operation=\"inspect\")` lists the live set. Reject missing, invalid, or mismatched compiled frontmatter before evaluating the minimum-unit predicate. The minimum predicate applies when the path and normalized compiled type structurally match; the result is writable managed Markdown in the governed subtree; the result is outside Sources, Evidence, and trash; no activation exclusion applies; the admitted effective status class is live. Check live creates, replacements and transitions to live; pending compiled notes may remain unit-free until activation.\n- Existing active pages: A post-activation compliant page cannot lose its final valid semantic unit.\n- Exempt content: arbitrary non-compiled Markdown, dataset cards, Evidence artifacts, hubs, indexes, logs, non-Markdown files, schema and admin artifacts, snapshots, Sources, templates, trash.\n- Routes: use `remember` for a new compiled note, `replace_memory` for a replacement, `observe_memory` for one unit, and `edit_memory` for a small edit or activation. Tier 2 manage_memory_file create, overwrite, and append receive the same semantic precommit contract on the complete resulting compiled Markdown; prefer remember or replace_memory when their typed route fits.\n- Findings: `missing_semantic_unit` means an applicable live-class compiled result has no valid non-empty unit; `empty_rich_unit` means a recognized rich heading has no substantive body. Add substantive body content or remove the empty recognized heading.\n- Compact remediation: Add `## Observations` and `- [operating constraint] Keep retries bounded #reliability`.\n- Rich remediation: Alternatively add `## Decision`, a blank line, and a substantive body.\n- Semantic-unit coverage and relation-review disposition are independent obligations.\n- Portable categories: Choose exactly one primary category: prefer a meaningful epistemic or operational role and put the domain in tags, but if the role would only be a generic fact, finding, or observation and the domain is the durable lens, use a domain category instead. The category vocabulary is open: these core keys are a shared starting point, not a closed list. When no core key is a good primary fit, author a new meaningful category rather than forcing an ill-fitting one. Use exactly one primary category; kind is the governed form, tags are secondary facets, and relations are typed edges. The rich form's category defaults to its kind, so `category: decision` is redundant when the kind is Decision. Create multiple distinct semantic observations and typed relations when the source genuinely supports them, but never multiply units or relations to satisfy a quota and never duplicate the same fact. Core keys are `action`, `assumption`, `code`, `config`, `constraint`, `decision`, `design`, `fact`, `finding`, `insight`, `preference`, `problem`, `question`, `requirement`, `risk`, `technique`. Core aliases are `actions` → `action`, `assumptions` → `assumption`, `configs` → `config`, `configuration` → `config`, `configurations` → `config`, `constraints` → `constraint`, `decisions` → `decision`, `designs` → `design`, `facts` → `fact`, `findings` → `finding`, `insights` → `insight`, `open_question` → `question`, `open_questions` → `question`, `preferences` → `preference`, `problems` → `problem`, `questions` → `question`, `requirements` → `requirement`, `risks` → `risk`, `techniques` → `technique`. Role example: `- [decision] Relocate to a coastal city next spring #life ^relocation`. Domain example: `- [nutrition] Evening protein improves adherence #experiment ^evening-protein`. Breadth example (life, finance, legal/travel, and career alongside one retained code line):\n\n```markdown\n- [constraint] Keep retry windows bounded #code ^retry-windows\n- [risk] Variable-rate mortgage payments could spike #finance ^mortgage-rate-risk\n- [question] Does the destination require a visa before travel #legal #travel ^visa-requirement\n- [career] Weigh a sabbatical before the next promotion cycle #growth ^sabbatical-timing\n```\n\nRich example:\n\n```markdown\n## Decision\n- id: commit-to-morning-training\n- tags: health\n- relations: supports: [[Knowledge Base/Notes/Health/Morning training]]\n\nCommit to a fixed 6am training block on weekdays so consistency compounds and health stays the durable lens for this decision.\n```\n"
}

SHA-256 of public snapshot: 1d26e08b7fa43031cb63667d77b43f36f6e4f37ad0ec84bdc3f5085b42f001a8