rulith — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited rulith (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.
rulith — rule + -lith (Greek líthos, "stone") — is an external working memory with a rule engine. You propose facts, rules, and actions; the board computes closures, does exact arithmetic, tracks consumption/production, and keeps an evidence chain for everything. Its discipline in one line: derived or it didn't happen.
stoichiometry) — never compute products or sums in your head
which kills hallucinated findings structurally
an event trail
[derived] — the rule closure stands behind it; retract an input andit disappears
[effect] — produced by applying an action you defined (the boardvouches for the bookkeeping, not the truth of your action design)
[asserted] — your bare claim; the weakest kindrecord_result is REJECTED while any positive finding(...) is merely asserted. Convert the claim: assert the primitive observation, add a rule deriving the finding from it, let the closure produce it.
create_space once per taskupdate_working_memory with batched operations (declare_goal,assert_fact, add_axiom, define_action, declare_hypothesis, record_result, retract_node, revise_fact)
(needs via <rule>: ..., producible via action <id>: ...)
record_result citing evidenceExact arithmetic in a rule body (compute, never guess — built-ins: add/sub/mul/div/mod/pow/min/max{left,right,result}, neg/abs{left,result}, guards eq/neq/lt/lte/gt/gte{left,right}):
{"op":"add_axiom","id":"ax_cost","label":"cost = unit*qty",
"when":[{"predicate":"line","args":{"item":"?i","unit":"?u","qty":"?q"}},
{"predicate":"mul","args":{"left":"?u","right":"?q","result":"?t"}}],
"then":[{"predicate":"cost","args":{"item":"?i","total":"?t"}}]}Error-finding guard (recompute and compare; derive bad ONLY on mismatch):
{"op":"add_axiom","id":"ax_bad","label":"claimed total differs from recomputed",
"when":[{"predicate":"row","args":{"id":"?r","unit":"?u","qty":"?q","claimed":"?c"}},
{"predicate":"mul","args":{"left":"?u","right":"?q","result":"?t"}},
{"predicate":"neq","args":{"left":"?t","right":"?c"}}],
"then":[{"predicate":"bad","args":{"id":"?r"}}]}Consume/produce (rules are monotonic and never delete; transformations are ACTIONS — negated effect consumes, positive effect produces):
{"op":"define_action","id":"burn","action":"combust",
"preconditions":[{"predicate":"have","args":{"species":"H2"}},{"predicate":"have","args":{"species":"O2"}}],
"effects":[{"predicate":"have","args":{"species":"H2"},"negated":true},
{"predicate":"have","args":{"species":"H2O"}}]}Counted amounts (bind current, guard with gte, COMPUTE the new amount in preconditions, swap old for new in effects):
{"op":"define_action","id":"burn1","action":"combust_once",
"preconditions":[{"predicate":"amount","args":{"species":"H2","mol":"?h"}},
{"predicate":"gte","args":{"left":"?h","right":2}},
{"predicate":"sub","args":{"left":"?h","right":2,"result":"?h2"}}],
"effects":[{"predicate":"amount","args":{"species":"H2","mol":"?h"},"negated":true},
{"predicate":"amount","args":{"species":"H2","mol":"?h2"}}]}Then simulate_action (preview: binding, diff, goals it would satisfy) and apply_action (commit: consumed facts are archived and an event result records consumed/produced/binding).
"?x" strings, rules/preconditions onlythan silently rounding (exact-or-fail)
retract_node (it was never true — physicalremoval with evidence cascade) — never assert a contradiction on top. Consumption by actions is different: archived, history kept
producible via action X, simulate/apply thataction; do NOT assert the product yourself
section warns on drift); keep batches small (~8 ops)
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.