Understanding the four cognitive faculties: Intuition, Direction, Governance, and Insight.
Noēsis separates faculties (capabilities/subsystems in the runtime) from phases (observable events emitted into the episode trace).
Faculties describe what kind of cognition runs: Intuition, Direction, Governance, Insight (other runtime faculties like Memory can participate too).
Phases describe what gets recorded: observe → intuition → interpret → plan → direction → governance → act → reflect → learn → terminate → insight → memory
Faculties exist even when they emit nothing; a faculty can be active and still produce no events for a given episode.
Most users configure faculties via noesis.set() and noesis.run(), then observe results in artifacts (events.jsonl, summary.json). Python imports are only needed for writing custom policies—see Advanced: Writing policies.
import noesis as ns# Configure via noesis.set()ns.set(intuition_mode="advisory") # advisory | interventive | hybrid# Or pass a policy directlyns.run(task="...", intuition=my_policy)
Before planning, runtime converts IntuitionEvent into a typed IntuitionAssessment via derive_intuition_assessment(). This guarantees Direction receives a canonical steering shape even when an intuition policy omits optional fields.Defaulting rules in derive_intuition_assessment():
risk_level: critical for veto/blocking, moderate for intervention, otherwise low
scrutiny_level: strict for veto/blocking, elevated for intervention, otherwise normal
salience_signals: policy_hint for hint/intervention, safety_boundary for veto/blocking
strategy_hints: conservative + verify_first for veto/blocking, verify_first for intervention
tool_constraints: no_side_effects + require_double_check for veto/blocking
The event lineage is preserved into Direction through:
payload.intuition_event_id on phase="direction" events
top-level evidence_ids on the direction event record
Direction handles plan mutations through versioned directives. It runs after plan, before governance, and does not perform vetoes—fail-closed gates live in Governance.
ns.governed_act(...) is the operating-system boundary for side effects.
It uses the same canonical episode runtime boundary as ns.run(...) / ns.solve(...).
allow/audit: action_candidate → governance → act
enforce veto (governance_pause_on_veto=False): action_candidate → governance → terminate (no act)
enforce veto with pause enabled (governance_pause_on_veto=True): action_candidate → governance → run.interrupt → run.checkpoint (no act, no terminate)
Internal runtime seam constraint: graph execution (using=...) and explicit actuation bindings are mutually exclusive and fail fast if mixed.
Copy
import noesis as nsfrom noesis.exceptions import NoesisVetodef run_shell(*, command: str, cwd: str | None = None, timeout_ms: int | None = None): return {"stdout": "ok", "stderr": "", "exit_code": 0, "command": command}ns.set(shell_executor=run_shell)try: result = ns.governed_act( goal="List repository files", kind="shell", payload={ "command": "ls -a", "cwd": ".", "timeout_ms": 2000, }, ) print(result)except NoesisVeto as veto: # Raised only when governance is enforcing and the action is vetoed. print(f"Blocked by governance: {veto.advice}")
import noesis as ns# Configure via noesis.set()ns.set(governance_mode="enforce") # off | audit | enforcens.set(governance_failure_policy="fail_closed") # fail_open | fail_closed# Or supply a custom governorns.run(task="...", governance_policy=my_governor)