Repository navigation
Add source_quality label and a health warning for speculation-only knowledge (#258) - #335
Conversation
…owledge (eugeniughelbur#258) Capture labels, compile gates: this is the narrow first slice agreed on eugeniughelbur#258. A source_quality: high | medium | speculation field (Rule 7 vocabulary, orthogonal to capture_scope), one shared reference listing the exact signals, and a Source quality check in vault_health that warns when a note cites only speculation sources. Sources with no field are unjudged and never reported. source_quality_policy: warn | silent follows the rewrite_policy contract. The link-indexing block of check_source_payload moves into a shared helper so both checks use one implementation. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
@konsone thanks, this is the narrow slice we agreed on in #258, and it's careful about the right things. What I checked:
One small edge, not a blocker. On your open divergence: yes, |
…ity (eugeniughelbur#258) `source_quality: "speculation" # high | medium | speculation` came out as `speculation"` and was ignored, because quotes were stripped before the `#` split. It failed quiet, but the template comment plus the double-quote convention makes that line likely. Split off the comment first, then strip quotes; pinned with the exact line from review. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Thanks for the careful read, and for settling the Fixed the quote edge in the follow-up commit: the Nothing else changed in the slice. Writing the field from the capture commands and the step 6 behaviour I will leave for a separate PR, once you are happy with the field's shape here. |
What this PR does
The narrow first slice agreed on #258:
source_quality: high | medium | speculationon raw sources, one shared reference listing the exact signals, and aSource qualityhealth check. Capture labels, compile gates; this PR adds the label and the reader, not the gate.references/source-quality-check.md: the single reference. Deterministic rule, no network or model call, so a reviewer can check a label by reading the note. Lists the exact signals formediumas requested.references/ai-first-rules.md: the field in thetype: sourceschema, described as orthogonal tocapture_scope([Feature] Add local source-payload completeness gates to prevent URL-only or excerpt-backed knowledge #194): one says how much was kept, this says whether it was worth keeping.scripts/vault_health.py:check_source_qualitywarns when a knowledge note cites onlyspeculationsources. A source with no field is unjudged and never reported, so a vault written before the field stays silent. Daily, log, index and other activity notes are skipped.source_quality_policy: warn | silentin.vault-config.json, same never-inferred contract asrewrite_policy([Feature] Make the /obsidian-ingest confirm-before-rewrite step (#239) a vault-level policy: confirm (default) or unattended #250). No value blocks a capture.check_source_payloadmoved into a shared_dependents_ofhelper so both checks use one implementation.The field is meant as the contract any later verifier (SIFT, a claim-level check, a human) writes to; consumers read only the field.
Related issues
Related to #258 (not closing: the ingest step 6 behaviour and writing the field from capture commands follow separately, as discussed there).
How I tested it
tests/test_source_quality.py, synthetic fixtures only: all-speculation warns; one better or unlabelled source keeps it quiet; unrecognised value ignored; independent ofcapture_scope; source citing a source and uncited sources do not ring; daily, log and index notes do not ring; template-comment values parse; policy defaults andsilent.test_groq.py/test_podcast_resolution.pyare identical on an untouched main.Honest limits
type: sourcenotes cited by wikilink are covered. Transitive propagation (concept to synthesis) and non-sourcecapture types are follow-ups.medium. An author or date with no locator does not reachmediumon its own.AI-first rule compliance
references/ai-first-rules.md; no command that writes to the vault changedChecklist
🤖 Generated with Claude Code