Metadata-Version: 2.4
Name: cordis-socrates
Version: 0.5.0
Summary: Optional Socratic boundary-review plugin for the CORDIS cognitive runtime.
Author: Cordis Contributors
License-Expression: MIT
Project-URL: Homepage, https://github.com/ntoniorvn-blip/cordis
Project-URL: Issues, https://github.com/ntoniorvn-blip/cordis/issues
Project-URL: Changelog, https://github.com/ntoniorvn-blip/cordis/blob/main/CHANGELOG.md
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cordis-core<0.6,>=0.5.0
Dynamic: license-file

# Cordis Socrates

`cordis-socrates` is the optional boundary-review plugin for CORDIS Goal Mode.
It asks an injected model to inspect a validated task and returns a small,
machine-checkable boundary review. It does not execute tools, grant
permissions, mutate Core memory, or replace the planner.

The two user-facing switches remain separate:

```text
Goal Mode  -> Socrates is required to review goal, scope, capability,
              permissions, evidence, and whether a planner is required.
Plan Mode  -> the host invokes cordis-planner and submits PlanIR to Runtime.
```

`planner_enabled` is part of the Socrates request. A high-complexity or
high-impact goal can produce the hard route `needs_planner`; turning the
planner off cannot silently bypass that requirement. `CordisGoalMode` returns
one of `direct`, `plan`, `clarify`, `approval`, or `enable_planner`, plus a
compact `model_context` that the host passes to its main model or planner.

The model is supplied by the host:

```python
from cordis_socrates import CordisSocrates

reviewer = CordisSocrates(model=lambda request: provider.generate(request["prompt"]))
review = reviewer.review(
    task=task_contract,
    difficulty=difficulty_profile,
    cognitive_ir=core_ir,
    planner_enabled=True,
)
```

The result is a `cordis.boundary-review.v1` object. Runtime/host policy must
enforce its route; Socrates never claims that an action was executed.
