knowledge-audit — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited knowledge-audit (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.
Systematic review of stored memories to maintain quality. Finds duplicates, detects contradictions, flags stale entries, and consolidates overlapping memories.
memory(action="search", query="[topic]") to find all related memoriesmemory(action="list") to get full inventory, then memory(action="stats") for overviewmemory(action="delete", id="[duplicate-id]") for removalsmemory(action="update", ...) adding [STALE] prefix, or delete if clearly obsoletememory(action="consolidate", ...) if available, otherwise manual merge ## Knowledge Audit — [topic/all] — [date]
### Summary
- Total memories reviewed: [N]
- Duplicates removed: [N]
- Contradictions resolved: [N]
- Stale entries flagged/removed: [N]
- Memories consolidated: [N merged into M]
### Actions Taken
- [list of specific changes]
### Recommendations
- [any patterns noticed, e.g., "many memories lack WHY context"]Phase 3 ships a temporal knowledge graph (entities + edges + bitemporal versioning + supersession). The audit checklist now also covers KG hygiene:
memory (their last memory_entity_links row points at an archived / superseded memory).
memory(action="entity_search", name="<entity>") returning0 currently-valid hits → candidate stale.
(cascade removes edges).
memory_edges whose source or targetmemory_entities row was deleted but the edge survived.
entity_graph returns nodes referenced from edges that aren't in the nodes list.
hand-delete the edge by id.
chain still surfaces in default memory.get results because someone left valid_to = NULL on an old fact.
memory(action="history", entity_id=<x>) returning multiplerows with valid_to = NULL for the same entity.
valid_to on the others to the supersession timestamp.
valid_from set, falls outsidethe bitemporal index. Usually a pre-Phase-3 row that was missed by backfill, or a manual db.add that bypassed the capture pipeline.
SELECT COUNT(*) FROM memories WHERE valid_from IS NULL.
MemoryDB._backfill_phase3_temporal)or update the rows manually.
/ delete) should write a memory_audit row with prev_state_hash and new_state_hash. A gap in the chain (audit row absent for an update) signals a bug or out-of-band write.
ON a.memory_id = m.id WHERE a.id IS NULL`.
audit history (preserves tamper-detection guarantees).
bitemporal columns NULL).
memory(action="capture", auto=True) batch withKG_AUTO_ENABLED=true (entity resolution may need tuning).
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.