Guide for creating and managing epistemic beliefs in Patina...
Create formal beliefs that capture project decisions with evidence and reasoning.
Do not wait for the user to say "create a belief". Watch for:
| Pattern | Example | Action |
|---|---|---|
| Design decision | "We should use sync, not async" | Suggest: "Capture as belief?" |
| Repeated principle | Said 3+ times in session | Suggest: "This keeps coming up..." |
| Strong preference | "Never do X", "Always Y" | Suggest: "This sounds like a core belief" |
| Contradiction found | Conflicts with existing belief | Ask: "This contradicts X - revise?" |
| Lesson learned | "That was a mistake because..." | Suggest: "Capture to avoid repeating?" |
When you notice these patterns, ask the user:
"This sounds like a belief worth capturing: '{statement}'. Should I create it?"
If user confirms, proceed with belief creation. If user declines, move on.
Before creating a belief, ensure you have:
[[wikilinks]] for verifiable references. The script auto-prepends the active session ID (e.g., [[session-20260131-150141]]:) so every evidence line traces to the conversation where it was articulatedDo NOT guess a confidence score. Confidence is computed by patina scrape from real data:
Execute the belief creation script with required fields:
.claude/skills/epistemic-beliefs/scripts/create-belief.sh \
--id "belief-id-here" \
--statement "One sentence belief statement" \
--persona "architect" \
--evidence "[[session-YYYYMMDD-HHMMSS]] - description (weight: 0.9)" \
--facets "domain1,domain2"
The script will:
layer/surface/epistemic/beliefs/After creation, edit the file to add:
[[wikilinks]] so patina scrape can verify them[[measure-first]])The more connections you add, the higher the computed use/truth metrics will be.
After creating and enriching, run patina scrape to compute metrics. The belief will show up in patina scry with real numbers.
See references/belief-example.md for the complete format.
Key fields:
sync-first)architect)rust, architecture)low, medium, high, or very-highactive, scoped, defeated, or archivedtrue if user explicitly created or confirmedMetrics are computed by patina scrape, not guessed by the LLM:
| Metric | What it measures | Source |
|---|---|---|
cited_by_beliefs |
Other beliefs referencing this one | Cross-reference belief files |
cited_by_sessions |
Sessions mentioning this belief | Cross-reference session files |
applied_in |
Concrete applications listed | Count ## Applied-In entries |
evidence_count |
Evidence entries | Count ## Evidence entries |
evidence_verified |
Evidence [[wikilinks]] that resolve to real files | File existence check |
defeated_attacks |
Attacks this belief survived | Count ## Attacked-By with status: defeated |
external_sources |
Non-project evidence (papers, docs) | Evidence without session wikilinks |
A strong belief has high use (many citations) AND high truth (verified evidence). A weak belief has low use and unverified evidence — it's an assertion, not yet tested.
Structural beliefs can include a ## Verification section with deterministic queries that prove
the claim against the project's knowledge database. Queries run automatically during patina scrape.
## Verification
```verify type="sql" label="No async functions" expect="= 0"
SELECT COUNT(*) FROM function_facts WHERE is_async = 1
```
```verify type="assay" label="insert_event is infrastructure" expect=">= 5"
callers --pattern "insert_event" | count(distinct file)
```
```verify type="temporal" label="Commit count" expect=">= 100"
derive-moments | summary.total_commits
```
| Type | Syntax | When to use |
|---|---|---|
sql |
Standard SELECT query | Counts, aggregates, existence checks |
assay |
<command> --pattern "<pat>" with optional | count(distinct <field>) |
Architecture claims (callers, importers) |
temporal |
derive-moments | summary.<field> |
Commit patterns (total_commits, rewrite, migration) |
| Command | What it queries | Distinct fields |
|---|---|---|
callers |
call_graph WHERE callee matches | file, caller, callee, call_type |
callees |
call_graph WHERE caller matches | file, caller, callee, call_type |
functions |
function_facts WHERE name matches | file |
imports |
import_facts WHERE import_path matches | file |
importers |
import_facts WHERE file matches | file |
= N, > N, >= N, < N, <= N — compared against the single numeric result.
Process beliefs (methodology, workflow, evaluation principles) correctly have no structural proof — testimony is the right evidence type. Examples: spec-first, measure-first, read-code-before-write. Don't force SQL queries onto process beliefs; they produce noise.
See references/verification-schema.md for the full schema reference.
The creation script enforces:
--confidence is accepted but ignored (deprecated)