# What Are the Possible Values for review_status in Claude-Obsidian?

> Explore the four possible review_status values unreviewed active superseded and rejected in the Claude-Obsidian source ledger to manage your notes effectively.

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

---

**The `review_status` field in Claude-Obsidian's source ledger accepts exactly four string values: `unreviewed`, `active`, `superseded`, and `rejected`.**

The Claude-Obsidian knowledge management system tracks the provenance and quality of every source through a structured metadata schema. The `review_status` field is a required component of this schema that indicates whether a piece of knowledge has been examined and whether it should be trusted. Understanding the allowed values for `review_status` is essential for properly maintaining your source ledger and avoiding validation errors.

## Valid review_status Values in Claude-Obsidian

According to the source code in [`claude_obsidian/ledgers.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/ledgers.py), the valid states are defined in the **`SOURCE_STATUSES`** constant at lines 39-42. These four values represent the complete lifecycle of a knowledge source within the system.

### unreviewed

Sources with this status have been ingested into the system but have not yet undergone human review. This is typically the default state for newly added content that awaits validation.

### active

Indicates that the source has been reviewed and is currently trusted and available for use by the system. This status confirms the content has passed quality checks and is considered authoritative.

### superseded

Marks sources that have been replaced by newer versions or more authoritative information. These entries remain in the ledger for audit trails but should not be considered current for active queries.

### rejected

Denotes sources that have been examined and explicitly deemed unsuitable for inclusion in the knowledge base. This status prevents rejected content from being referenced in AI outputs or downstream processes.

## Validation Logic and Error Handling

The system enforces these values strictly through runtime validation. In [`claude_obsidian/ledgers.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/ledgers.py) (lines 81-82), the validator checks that `record["review_status"]` is both a string type and a member of `SOURCE_STATUSES`:

```python
review_status = record.get("review_status")
if not isinstance(review_status, str) or review_status not in SOURCE_STATUSES:
    _error(errors, f"{prefix}.review_status", "unsupported review status")

```

Any deviation from the four allowed values triggers the validation error *"unsupported review status"*, preventing malformed entries from entering the ledger.

## Working with review_status Programmatically

When constructing ledger entries or validating data, reference the `SOURCE_STATUSES` constant directly to ensure compatibility and avoid magic strings.

### Creating a Valid Source Entry

```python
source_entry = {
    "origin": {"kind": "url", "locator": "https://example.com/article"},
    "content_kind": "document",
    "title": "Example Article",
    "authority": "official",
    "content_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "review_status": "active",  # Must be in SOURCE_STATUSES

    "pages": ["wiki/example.md"],
}

```

### Validating Status Values

```python
from claude_obsidian.ledgers import SOURCE_STATUSES

def is_valid_review_status(status: str) -> bool:
    """Check if a status is valid according to the ledger schema."""
    return status in SOURCE_STATUSES

# Usage

assert is_valid_review_status("active")
assert not is_valid_review_status("pending")  # Invalid: not in SOURCE_STATUSES

```

## Summary

- The `review_status` field in Claude-Obsidian accepts only four values: **`unreviewed`**, **`active`**, **`superseded`**, and **`rejected`**
- These values are defined in the **`SOURCE_STATUSES`** constant in [`claude_obsidian/ledgers.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/ledgers.py) (lines 39-42)
- The validator at lines 81-82 rejects any other string with an "unsupported review status" error
- Always import and reference `SOURCE_STATUSES` programmatically rather than hardcoding string literals

## Frequently Asked Questions

### What happens if I use an invalid review_status value?

The ledger validation will fail and return the error "unsupported review status". The system explicitly checks that the value is a string present in the `SOURCE_STATUSES` set, rejecting both non-string types and unrecognized status strings.

### Can I add custom review_status values to Claude-Obsidian?

No, the allowed values are hardcoded in the `SOURCE_STATUSES` constant. Adding custom statuses would require modifying [`claude_obsidian/ledgers.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/ledgers.py) and maintaining a fork of the repository, as the validation logic does not support extensible status values.

### Which review_status should I use for newly imported sources?

New sources should typically be marked as **`unreviewed`** until they undergo manual review. This indicates the content exists in the system but has not yet been verified for accuracy, relevance, or authority.

### Is review_status a required field in the source ledger?

Yes, `review_status` is a required field. The validation logic in [`claude_obsidian/ledgers.py`](https://github.com/AgriciDaniel/claude-obsidian/blob/main/claude_obsidian/ledgers.py) explicitly checks for its presence and validates its value against `SOURCE_STATUSES`, making it mandatory for every source entry in the ledger.