memory-router — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited memory-router (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Decides where new content belongs in D Rage's JoVE knowledge system: Obsidian vault (RAM) for what changes, Pinecone (`jove-memory` index) for what doesn't. Apply this BEFORE writing any new artifact — not after.
Ask: "Will this be edited again?"
jove-memory (HD)That's it. Everything below is tiebreakers and namespace-routing for when the answer isn't obvious.
Obsidian and Pinecone are complementary, not competing — they serve different cognitive layers:
Mixing them fails both ways: if you put archive content in the vault, the wiki bloats and the token tax grows linearly with content volume. If you put active strategy in Pinecone, you lose the wiki-link graph that makes reasoning possible.
as_of metadata.Corrected 11 Aug 2026: the JoVE vault is `~/dev/jove-hq/`, never `~/Obsidian/JoVE/`. The old Johnny.Decimal vault was migrated into jove-hq and no longer exists on this machine; every routing below that named a NN — folder silently pointed at nothing. Layout authority is ~/dev/jove-hq/CLAUDE.md rule 12. Place per content type:
Location (under ~/dev/jove-hq/) | Content |
|---|---|
knowledge/memory/ | Durable working notes: who-is-who, standing preferences, registries, decisions that outlive a project |
knowledge/jove-labs/ | Everything JoVE Labs: PRDs, decision memos, sweeps, the .sweep/findings.md ledger. INDEX.md there is generated, never hand-edited |
knowledge/meetings/YYYY-MM/ | One coupled note per meeting; full transcripts → Pinecone meetings |
knowledge/entities/ | People and org entities |
knowledge/copilot/ppp/ | The PPP truth ledger and its drafts/<date>.md daily layer |
knowledge/copilot/ops/ | Setup status, runbooks, manifests |
knowledge/copilot/wrap-ups/ | Session wrap-up records (the /wrap-up skill writes here) |
product/, strategy/ | Product-line and strategy artifacts |
source-docs/ | Raw reference material, git-ignored for push |
Every vault note needs: YAML frontmatter per jove-hq convention (CLAUDE.md rule 5): type, status, links-in-frontmatter for entities, type and status tags only, no topic-tag sprawl. The old domain/confidence schema belonged to the migrated vault; do not reintroduce it.
Index: jove-memory. Embedding: multilingual-e5-large (integrated; 1024-dim; truncates at 512 tokens — keep chunks ≤350 words).
Pick the namespace:
| Namespace | What goes here | ID prefix pattern |
|---|---|---|
vault | Do not write here. The auto-mirror of the jove-hq vault, owned by tools/vault-index/ingest.mjs with stable path#chunk ids; hand-upserts duplicate what the ingest owns. Verify with node tools/vault-index/health.mjs | {repo-relative-path}#{n} |
conversations | Wrap-ups of Claude sessions (≤350 words each) | convo-{YYYY-MM-DD}-{kebab-title} |
meetings | Granola meeting transcripts + summaries (post-D-joins-JoVE) | meeting-{YYYY-MM-DD}-{kebab-title} |
emails | Customer / Slack / institutional Gmail archives | email-{YYYY-MM-DD}-{kebab-title} |
research | Deep-research outputs (competitive scans, market reports) | research-{topic-slug}-{YYYY-MM-DD}-{section} |
books | Book digests (chunked by chapter/concept) | book-{title-slug}-{YYYY-MM-DD}-{section} |
daily-archive | Daily notes >30 days old | daily-{YYYY-MM-DD} |
bootstrap-research | FROZEN — 8 original research streams; do not write here | bootstrap-{stream}-{section} |
crawl-source | FROZEN — JoVE website crawl; do not write here | crawl-{branch}-{key} |
Always include rich metadata per record: as_of, topic, tags[], source_urls[], plus any namespace-specific fields (e.g., branch for crawl, author for books, attendees for meetings).
Verify upserts: after upserting, do one mcp__pinecone__search-records round-trip on a query the record should match. Confirm hit at ≥0.80 similarity. If lower, the chunk is probably too noisy or too long.
For LARGE or IMMUTABLE content that also needs vault discoverability:
pinecone_namespace and pinecone_id_prefix fieldsExisting examples to follow (the named notes below lived in the migrated vault; the pattern is what to copy, and current live examples of it are the corpus-digest pointer notes under knowledge/jove-labs/corpus-digests/):
books namespacecrawl-sourceresearchThe pointer note is what shows up in the vault graph + MOC indexes; the Pinecone records are the answer-substrate for semantic queries.
Example 1: User says "Ingest the 'Nature Protocols' deep-dive I just researched." → Will it be edited again? No (it's a snapshot of state on 2026-05-23). → Pinecone research namespace + vault pointer note Competitors — Nature Protocols.md. Hybrid.
Example 2: User says "Update the PI Persona note to add a 6th sub-persona." → Will it be edited again? Yes (personas evolve as PI conversations happen). → Vault edit only. No Pinecone.
Example 3: User says "Save this conversation about the architecture decision we just made." → Will it be edited again? No (conversation wraps are by definition done). → Pinecone conversations namespace via /wrap-up skill. Log entry to vault.
Example 4: User says "Create a Granola meeting note for today's call with the CEO." → Will it be edited again? The summary stub MAYBE (action items get checked off); transcript NO. → Hybrid: coupled note in knowledge/meetings/2026-MM/2026-MM-DD-ceo-1on1.md (action items + decisions + key quotes ≤200 words); full transcript in Pinecone meetings.
Example 5: User says "Help me draft a new strategic decision about JoVE Labs pricing." → Will it be edited again? Yes (decisions get refined; review_date is in frontmatter for a reason). → Vault decision note: knowledge/jove-labs/DECISION-MEMO-<topic>-<date>.md for Labs, knowledge/memory/ for cross-project calls. No manual Pinecone; the mirror ingests it.
Example 6: User says "Index Alex Hormozi's $100M Leads book." → Will it be edited again? No. → Pinecone books namespace + vault pointer stub. Hybrid.
Example 7: User says "Add this article I just read to the vault." → Apply tiebreaker 6: will user edit by hand? Probably not (it's a clipped source). → Pinecone research namespace + vault pointer if the article matters to a live topic. Otherwise source-docs/ (raw reference, kept out of git pushes per jove-hq CLAUDE.md rule 8).
as_of snapshot into the vault as if it were current. Tag it as_of and route to Pinecone.When applying this skill, state the routing decision EXPLICITLY before executing — one line:
Routing decision: <vault path> [+ Pinecone <namespace> <id-prefix>]. Why: <one-sentence reason citing the rule or tiebreaker>.Then execute (write the file / upsert the records).
~/dev/jove-hq/ARCHITECTURE.md § Memory tiering — the live namespace map and routing design~/dev/jove-hq/CLAUDE.md rule 4 — the enforced two-layer rule: vault mutable, Pinecone = auto-mirror (vault namespace) plus immutable haystack~/.claude/skills/wrap-up/SKILL.md — companion skill for the conversations namespace flowSkip the explicit routing decision for:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.