# How to Identify Active Sources in the Claude-Obsidian Source Ledger: 6 Provenance Rules Explained

> Discover the 6 provenance rules for active sources in the Claude-Obsidian source ledger, including immutability, authority, freshness, and live backlinks. Validate claims effectively.

- Repository: [Agrici.Daniel/claude-obsidian](https://github.com/AgriciDaniel/claude-obsidian)
- Tags: how-to-guide
- Published: 2026-08-26

---

**Active sources in the Claude-Obsidian source ledger must satisfy six strict provenance criteria—including immutability, verified authority, freshness, and live backlinks—before they can validate any claim.**

Claude-Obsidian enforces rigorous evidence tracking through immutable ledgers located under `wiki/meta/ledgers/`. Understanding the rules for active sources in the claude-obsidian source ledger ensures that only verified, auditable evidence supports your knowledge base claims and maintains the integrity of the provenance chain.

## Overview of the Source Ledger Architecture

The system maintains two immutable ledgers: the **source ledger** and the **claim ledger**. A source record captures evidence metadata—such as notes, captured web pages, or PDFs—including identity, authority, independence, freshness, review state, and the specific pages it supports. Only sources marked as *active* may back a claim according to the validation logic implemented in the repository.

## The Six Rules Defining Active Sources

The [`skills/wiki/references/frontmatter.md`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/skills/wiki/references/frontmatter.md) file codifies six specific rules that determine whether a source record qualifies as active:

1. **Immutability**: Once written to [`wiki/meta/ledgers/source-ledger.json`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/wiki/meta/ledgers/source-ledger.json), a source record must never be altered. Updates create new version entries rather than modifying existing records, ensuring a complete audit trail.

2. **Authority and Independence**: The source must declare verifiable authority (publisher, author, or originating system) and maintain independence from the specific claim it supports. This prevents circular references and self-claims.

3. **Freshness and Review State**: Active sources require either a `reviewed: true` flag or a recent capture timestamp. The system filters out stale or unvetted evidence based on thresholds defined in the ledger configuration.

4. **Linked Pages**: Each record must list its `linked_pages`—the Obsidian pages citing this source. If all referencing pages are deleted or links break, the source automatically becomes inactive.

5. **No Metadata Overloading**: Ledger entries must contain only provenance data as specified in [`skills/wiki/references/provenance.md`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/skills/wiki/references/provenance.md). Extraneous metadata unrelated to source verification is prohibited to maintain ledger performance and clarity.

6. **Active-Source Determination**: When evaluating claims, the system explicitly checks that supporting sources satisfy all above criteria. Only sources passing this validation determine claim support status.

## Programmatically Filtering Active Sources

The ledger files are JSON-encoded and accessible via standard Python libraries or the public API shipped with Claude-Obsidian (`claude_obsidian.transaction`). The canonical path is [`wiki/meta/ledgers/source-ledger.json`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/wiki/meta/ledgers/source-ledger.json).

```python
import json
from pathlib import Path

# Load the source ledger (JSON)

LEDGER_PATH = Path("wiki/meta/ledgers/source-ledger.json")
with LEDGER_PATH.open() as f:
    source_ledger = json.load(f)

def is_active(source):
    """Apply the active‑source rules."""
    # 1. Must be reviewed (or freshly captured)

    if not source.get("reviewed", False):
        return False
    # 2. Must have authority & independence fields

    if not source.get("authority") or not source.get("independent", True):
        return False
    # 3. Must be recent enough (example: < 2 years old)

    if source.get("timestamp") and (2026 - int(source["timestamp"][:4]) > 2):
        return False
    # 4. Must be linked to at least one live page

    if not source.get("linked_pages"):
        return False
    return True

# Gather all active sources

active_sources = [s for s in source_ledger["entries"] if is_active(s)]

print(f"Found {len(active_sources)} active sources")
for src in active_sources[:5]:
    print(f"- ID: {src['id']}, Authority: {src['authority']}")

```

## Command-Line Validation

For automation and shell workflows, Claude-Obsidian provides a built-in validator in [`claude_obsidian/vault_ops.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/vault_ops.py).

```bash

# List active source IDs (uses the built‑in ledger validator)

python -m claude_obsidian.vault_ops list-active-sources

```

## Key Configuration Files

Understanding the ledger structure requires familiarity with these specific files:

- **[`wiki/meta/ledgers/source-ledger.json`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/wiki/meta/ledgers/source-ledger.json)**: The immutable JSON store containing all source entries and their provenance metadata.

- **[`skills/wiki/references/frontmatter.md`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/skills/wiki/references/frontmatter.md)**: Defines front-matter conventions including the `reviewed` flag and authority fields required for active status.

- **[`skills/wiki/references/provenance.md`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/skills/wiki/references/provenance.md)**: Documents the dual-ledger architecture and metadata constraints preventing ledger overloading.

- **[`claude_obsidian/vault_ops.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/vault_ops.py)**: Implements core ledger operations including reading, parsing, and active-source validation logic.

- **[`WIKI.md`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/WIKI.md)**: Contains the high-level "Provenance ledgers" section describing the immutable audit system architecture.

## Summary

- Active sources must remain immutable; updates create new records rather than editing existing ones.
- Every active source requires verified authority, independence from its claim, and either a recent timestamp or explicit review flag.
- Sources must maintain valid `linked_pages` entries; orphaned sources automatically become inactive.
- The source ledger lives at [`wiki/meta/ledgers/source-ledger.json`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/wiki/meta/ledgers/source-ledger.json) and follows strict metadata constraints outlined in [`skills/wiki/references/frontmatter.md`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/skills/wiki/references/frontmatter.md).
- Use `python -m claude_obsidian.vault_ops list-active-sources` for CLI validation or implement the `is_active()` filter pattern for custom Python workflows.

## Frequently Asked Questions

### What distinguishes an active source from an inactive one in Claude-Obsidian?

An active source satisfies all six ledger rules: it is immutable, has verified authority and independence, passes freshness or review checks, maintains valid page links, and contains only essential provenance metadata. Inactive sources fail one or more of these criteria, typically due to broken links, stale timestamps, or missing authority fields.

### Where does Claude-Obsidian store the source ledger?

The source ledger is stored as a JSON file at [`wiki/meta/ledgers/source-ledger.json`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/wiki/meta/ledgers/source-ledger.json) within the repository root. This location is hard-coded in the validation logic found in [`claude_obsidian/vault_ops.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/vault_ops.py) and referenced in the provenance documentation.

### How does the system handle corrections or updates to source records?

The ledger enforces immutability. Instead of editing existing entries, users must append new versions with corrected data. This creates a complete audit trail where historical evidence states remain accessible while the latest valid version becomes the active source.

### Can a source become inactive after initially being marked active?

Yes. If the Obsidian pages listed in a source's `linked_pages` array are deleted or the links break, the source automatically transitions to inactive status during the next validation cycle. Similarly, sources exceeding freshness thresholds without review flags will deactivate until re-verified.