eliciter-core 0.1.2

Deterministic, offline kernel for structured discovery interviews modeled as an alignment mechanism: an event-sourced claim ledger where claims are hypotheses, standing is computed, contradictions are detected structurally, and a plan-readiness gate reports whether the spec survived falsification.
Documentation
# eliciter-core

[![crates.io](https://img.shields.io/crates/v/eliciter-core.svg)](https://crates.io/crates/eliciter-core)
[![docs.rs](https://docs.rs/eliciter-core/badge.svg)](https://docs.rs/eliciter-core)
[![License: Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](../../LICENSE)

The deterministic, offline kernel behind [`eliciter`](../../README.md) — a
structured-discovery interview engine modeled as a falsification-based alignment
mechanism.

Claims are **hypotheses**, not facts. Their standing (`open` → `challenged` →
`withstood` / `disproven`) is *computed* — a pure fold over an append-only event
log — never stored. Exact-match detectors flag intra-spec and spec-vs-reality
contradictions over caller-supplied canonical identity; a deterministic readiness
gate reports whether the spec has *survived falsification*. No LLM, no network, no
fuzzy matching — which is what makes the whole kernel golden-testable.

```rust
use std::sync::Arc;
use eliciter_core::{Engine, FilesystemStore};

let store = FilesystemStore::new("/tmp/elicitation")?;
let engine = Engine::new(Arc::new(store));

let state = engine.open_session("design-review", None)?;
// ... append claims/evidence ...
let report = engine.readiness("design-review")?;
println!("ready to plan? {}", report.ready);
# Ok::<(), eliciter_core::EngineError>(())
```

The MCP server façade lives in the `eliciter` crate; this crate has no MCP
or network dependency. See the [root README](../../README.md) for the tool surface
and [`docs/spec.md`](../../docs/spec.md) for the full design.

## License

[Apache-2.0](../../LICENSE).