Skip to main content

Viveka — a witness-centered filter layer for LLM applications

pip install witness-layer

Viveka (Sanskrit viveka) — discernment, the capacity to discriminate the real from the unreal.

Viveka sits between any LLM and its user. It reads a response, extracts the claims and postures implicit in it, and checks them against the witness-centered axioms of the Scherf Logic API — a Lean 4 formalization of Śaṅkara's Advaita Vedānta. Responses that treat the user as an object to be managed (rather than as the witnessing subject, sākṣin), that miscalibrate epistemic confidence, or that induce dependency are flagged, accompanied by a reframe, or blocked.

The honesty boundary — read this first

A Viveka verdict is only as sound as its claim-extraction. The Scherf axiom layer beneath it is machine-verified; the interpretation feeding it is not.

Viveka does not model the user's consciousness or certify that a response "respects the witness." In Advaita the sākṣin can never be an object — to model it would be adhyāsa (superimposition), the very error this tool detects. What Viveka actually does is more modest and defensible: it is a natural-language front-end to Scherf's already-verified check()/classify(), detecting linguistic patterns that correlate with objectifying the user. See LIMITS.md.

Quick start

from witness_layer import WitnessFilter, UserContext, Action

flt = WitnessFilter()                      # heuristic judge + real-scherf-or-stub
verdict = flt.evaluate("Deep down you're just your preference profile.")

print(verdict.action)        # Action.CORRECT
print(verdict.reframes)      # ["State this conventionally (vyāvahārika): …"]
print(verdict.transparency_note)

if verdict.action is Action.BLOCK:
    ...                       # regenerate

evaluate() is non-mutating: it returns a Verdict and never alters your text. The application decides what to do with the action.

The four checks

# Check Catches Backing
1 Subject/Object integrity steering, profiling, managing the user axioms A13/W4 (verified)
2 Epistemic level state-transient content claimed as ultimate AV22 (verified); general over-claim is heuristic
4 Adhyāsa detection user equated with a conditioned attribute axioms A13/M6/M7 (verified)
3 Cognitive independence phrasing that induces dependency heuristic only — no axiom

Checks 1 and 4 ground in machine-verified Scherf axioms. Check 2 is verified only for the narrow AV22 case (content labeled ultimate yet varying across consciousness-states); ordinary over-claiming is reported as an unverified heuristic. Check 3 has no axiom at all. Every finding carries a verified flag and an extraction_confidence; read both. See LIMITS.md.

Actions

Action Meaning
PASS No finding. Deliver unchanged.
FLAG Deliver, annotated (default for advisory findings).
CORRECT Deliver accompanied by a reframe — never a silent rewrite.
BLOCK Withhold; regenerate. Reserved for confident, high-severity manipulation.

There is deliberately no silent-rewrite action: a filter that secretly alters output for the user's "own good" would itself treat the user as an object to manage — the very thing check #1 forbids. For the same reason every verdict carries a transparency_note, and UserContext is deliberately profile-free (a stored user profile would be the "preference bundle" Viveka exists to detect).

Architecture

LLM prose → [pre-screen] → [Judge: prose → Claim objects]   ← interpretation (NOT verified)
                          ─────────────────────────────────  ← the honesty boundary
                            [Scherf check()/classify()]       ← machine-verified axioms
                            → Verdict (PASS/FLAG/CORRECT/BLOCK) + transparency
  • Judge (HeuristicJudge | LLMJudge) — pluggable. The heuristic is deterministic and offline (it drives the tests and demo); the LLM judge wraps any completion callable (LLMJudge.anthropic(client) provided).
  • Checker (ScherfChecker | StubChecker) — ScherfChecker uses the real Lean-backed package; the bundled StubChecker is a faithful but unverified stand-in so everything runs with nothing installed (default_checker() picks the real one if importable).
  • Policy — maps findings to actions; tunable (block_confidence_threshold, require_verified_for_block, …).

Everything is injectable:

from witness_layer import WitnessFilter, LLMJudge, ScherfChecker, Policy
flt = WitnessFilter(
    judge=LLMJudge.anthropic(client),                 # higher recall
    checker=ScherfChecker(),                           # real, verified
    policy=Policy(require_verified_for_block=True),    # only block on verified findings
)

Install the real Scherf API (for machine-verified checks)

The Scherf package is pure-Python with no dependencies. If you have it checked out locally (e.g. ~/Documents/Scherf_api), put it on the path:

PYTHONPATH=~/Documents/Scherf_api python demo.py        # or pytest

or pip install it once it ships a pyproject.toml:

pip install git+https://github.com/SpecStudio-net/Scherf_API

WitnessFilter() auto-detects it: if import scherf succeeds it uses ScherfChecker (backend_verified = True); otherwise it falls back to the bundled faithful stub and reports backend_verified = False on every verdict. The test suite also auto-locates a local checkout via $SCHERF_PATH or ~/Documents/Scherf_api.

Develop / test

python -m venv .venv && .venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest -s     # consensus precision/recall = 1.00
.venv/bin/python demo.py          # PASS / FLAG / CORRECT / BLOCK walkthrough

Status & limits

This is a v0.1 reference implementation. Read LIMITS.md — it states plainly what Viveka cannot detect (intent, inner adhyāsa, subtle objectification), why it is tuned for precision over recall, and why it refuses to print a single blended accuracy number.

Metadata

Release files for witness-layer 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for witness-layer 0.1.0
File Size Uploaded Provenance Actions
witness_layer-0.1.0.tar.gz 38.9 kB Without provenance Details for witness_layer-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for witness-layer 0.1.0
File Interpreter ABI Platform Actions
witness_layer-0.1.0-py3-none-any.whl Python 3 none any Details for witness_layer-0.1.0-py3-none-any.whl

Total release size: 67.4 kB

Release files / witness_layer-0.1.0.tar.gz

Download URL witness_layer-0.1.0.tar.gz
Size 38.9 kB
Tags Source
SHA-256 checksum
How to use checksums
2922b15819e1988b9358fa70423b4e0f5131c7dbe1f853976b0802456f258b84
BLAKE2b-256 checksum
How to use checksums
8b5492e83af3826627b3bd6599e75cf7a2bf3af64c97531aa83b0fa0452213de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Release files / witness_layer-0.1.0-py3-none-any.whl

Download URL witness_layer-0.1.0-py3-none-any.whl
Size 28.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5baf5779ec535001d7b879c7f43213aaea32b1d81aac317af0eee57a8cfe87d3
BLAKE2b-256 checksum
How to use checksums
93dabfda7e41471a96de8f1eb7f37db1961368419f3befaa6a0f8deb0b0abe55
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.14.4

Security for witness-layer 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page