#+TITLE: Whitehead's Logic & Process Philosophy → Passepartout
#+FILETAGS: :notes:whitehead:logic:philosophy:architecture:passepartout:

* Purpose

Alfred North Whitehead's two major bodies of work — /Principia Mathematica/ (1910–1913, with Bertrand Russell) and /Process and Reality/ (1929) — are assessed for their applicability to Passepartout's architecture, gate stack, knowledge graph, and self-descriptive vocabulary.

* Historical Connection: PM → Lisp

Principia Mathematica is a direct ancestor of Lisp. Alonzo Church's lambda calculus (1930s), from which John McCarthy built Lisp (1958), was a response to PM's foundational program. PM's notation:

#+BEGIN_EXAMPLE
(x).φx        ≡ (for all x, φ holds of x)
(∃x).φx       ≡ (there exists x such that φ holds)
* x̂(φx)        ≡ (the class of x satisfying φ)
ιx(φx)         ≡ (the unique x satisfying φ)
#+END_EXAMPLE

These map directly to Lisp: ~(lambda (x) (φ x))~, ~(class (x) (φ x))~, ~(the (x) (φ x))~. McCarthy cited PM as an influence. The connection is genetic, not metaphorical.

* Contribution 1: Ramified Theory of Types → Gate Stack

** The Problem PM Solved

Russell's paradox ("the set of all sets that do not contain themselves") proved that unrestricted comprehension produces contradictions. PM's solution: a /ramified theory of types/ that assigns every propositional function a type level. A function can only apply to arguments of a lower type — self-application is syntactically invalid.

** The Problem Passepartout Faces

Passepartout's dispatcher gate stack (vectors 0–8b active, 9–18 planned) currently enforces safety through runtime predicates. But there is no /structural/ guarantee preventing a request from modifying the rules that validate it. Gate vector 2 (self-build-core) catches this empirically — a request modifies core → rejected. But this is a heuristic, not a theorem.

** The PM-Type Solution

Assign every cognitive tool a ~:type-level~ integer. Assign every gate vector a ~:type-level~ integer. The dispatcher framework, before running any gate predicate, checks:

#+BEGIN_SRC lisp
(defun gate-type-check (signal gate-vector)
  (let ((signal-type-level (getf (signal-meta signal) :type-level))
        (gate-type-level (gate-vector-type-level gate-vector)))
    (if (>= signal-type-level gate-type-level)
        :reject-type-violation  ; self-referential — reject
        :pass)))                ; safe — proceed to predicate
#+END_SRC

A request to modify dispatcher rules (type-level 5) cannot pass a gate of type-level 4 or lower. No predicate needed — it's a structural prohibition, just as PM's theory of types makes self-membership syntactically invalid.

** Concrete Implementation

- ~defgate~ gains a ~:type-level~ keyword argument (default 0)
- Each cognitive tool registered via ~def-cognitive-tool~ inherits a ~:type-level~
- The dispatcher's ~run-gates~ function checks type-level before predicate evaluation
- Gate vector 2b (self-build-core) at type-level 5; write-file at type-level 3; read-file at type-level 1
- ~30 lines in ~core-dispatcher.lisp~~; no new dependencies; v0.7.2 viable

* Contribution 2: Theory of Descriptions → Reference Resolution

** The Problem PM Solved

PM's theory of descriptions addresses: "the current king of France is bald" — a sentence that seems to refer to something that doesn't exist. PM formalizes:

#+BEGIN_EXAMPLE
ιx(φx) = "the unique x such that φ holds"
#+END_EXAMPLE

A statement about ~ιx(φx)~ is false (not meaningless) when there is no unique x satisfying φ. This is the origin of definite description semantics in modern linguistics and programming.

** The Problem Passepartout Faces

When the user says "the function that validates secrets," the agent must resolve this to a specific code entity. Natural language is ambiguous — there might be multiple functions matching the description. Resolving to the wrong one causes incorrect actions.

** The PM-Description Solution

A cognitive tool that checks descriptional uniqueness before resolution:

#+BEGIN_SRC lisp
(def-cognitive-tool :resolve-reference
    (query-string &key (max-candidates 10)
                   (context-path *current-context*))
  "Resolve a definite description to a unique referent."
  (let ((candidates (search-knowledge-graph query-string
                                               :source-path context-path
                                               :limit max-candidates)))
    (cond
      ((null candidates)
       (values nil :no-referent query-string))
      ((> (length candidates) 1)
       (values nil :ambiguous candidates))
      (t
       (values (first candidates) :unique nil)))))
#+END_SRC

~40 lines as a skill in v0.7.2. When VivaceGraph ships (v3.0.0), descriptions become native Prolog queries with uniqueness constraints.

* Contribution 3: Process and Reality → Architectural Vocabulary

Whitehead's process philosophy is a metaphysics of /becoming/ rather than /being/. The fundamental entities are not substances (atoms, objects) but /processes/ (/actual entities/, /occasions of experience/. This maps precisely to Passepartout's pipeline architecture.

** Mapping Whiteheadian Concepts to Passepartout

| Whiteheadian Concept           | Passepartout Mapping                        | Significance                                 |
|--------------------------------|---------------------------------------------|----------------------------------------------|
| Actual entity (actual occasion) | An event/signal in the pipeline             | The fundamental unit — everything else is abstraction |
| Prehension                     | A gate's grasping of a signal               | How one entity "takes account of" another    |
| Positive prehension            | A gate passing a signal                     | The signal is included in the concrescence   |
| Negative prehension            | A gate rejecting a signal                   | The signal is excluded from the concrescence |
| Concrescence                   | The pipeline process from input to output   | Many prehensions → one satisfaction          |
| Subjective aim                 | The agent's active goal / plan              | The telos directing which prehensions matter |
| Eternal objects                | Pure concepts in the knowledge graph        | Universals — types, functions, categories    |
| Nexus                          | A cluster of related memory objects         | A Merkle subtree                             |
| Satisfaction                   | The final agent response                    | The "completed" entity — determinate output  |
| Transition                     | From one signal to the next                 | The pipeline's forward motion                |
| Causal efficacy                | The agent's past context (memory)           | What is prehended from the settled past      |
| Presentational immediacy       | The current signal (user input)             | What is prehended from the immediate present |

** The Foveal-Peripheral Model in Whiteheadian Terms

Passepartout's foveal-peripheral model (near focus = current signal, far periphery = context window + memory) maps to Whitehead's distinction:

- /Presentational immediacy/ (perception of the contemporary world, vivid but superficial) = foveal focus on the current signal
- /Causal efficacy/ (prehension of the past, dim but causally powerful) = peripheral context from memory

This is not merely poetic. Whitehead argues that all perception is in the "mixed mode" of symbolic reference — the synthesis of presentational immediacy and causal efficacy. Passepartout's think() function does exactly this: it synthesizes the current signal (presentational immediacy) with context from memory (causal efficacy) into a response.

** Why This Matters for Self-Documentation

Passepartout already has the pipeline. Whitehead gives it a /descriptive vocabulary/:

- "I am concrescing signal 47 through gates 0-8" ≠ poetry — it's a precise description of dispatcher operation.
- "Gate 3 has negatively prehended signal 136" = "the secret-content gate rejected signal 136."
- "The satisfaction includes a file-write prehension with Merkle commit abc123" = "the response contains a file write with the given merkle hash."

The agent can use this vocabulary in its ~/why~ output (gate trace in human-readable form) and in the ARCHITECTURE.org documentation. The terms are precise, standard (Whitehead's /Process and Reality/ is a recognized philosophical text), and already map perfectly to Passepartout's design.

* Contribution 4: VivaceGraph + PM Types (v3.0.0)

When the knowledge graph ships in v3.0.0, every entity inherits PM's type hierarchy:

- Entities have ~:pm-type-level~ metadata
- Queries cannot return entities of the same level as the querying function
- Self-referential knowledge becomes structurally impossible — no "this entity defines its own type level"
- The KG query layer enforces this at the Prolog level, not through runtime checks

This is the same contribution as Contribution 1, but applied to the /knowledge base/ rather than the /execution layer/. The dispatcher prevents self-referential /actions/; the KG prevents self-referential /facts/.

* What Would NOT Be Useful

** Implementing PM's Full Formalism

PM takes 300+ pages to prove ~1+1=2~. The notation (~*54·43~) is notoriously unreadable. Using it as a reasoning engine would be a catastrophic waste of effort — the /ideas/ (type theory, descriptions, propositional functions) are what matter, not the notation. Implement the ideas, not the pages.

** Process Theology

Whitehead's later work includes a concept of God (the "principle of concretion," the "Eros of the Universe") that has no useful mapping to an agent architecture. Skip it.

** Full Whiteheadian Metaphysics

The 25 categories of existence, the eight categories of explanation, the nine categoreal obligations — these are philosophical commitments, not engineering requirements. Select the concepts that map to the architecture; don't build a process-philosophy engine.

* Summary: What to Ship and When

| Contribution               | Lines | Depends On     | Earliest Release | Impact                                        |
|----------------------------+-------+----------------+------------------+-----------------------------------------------|
| Type-level gates           | ~30   | dispatcher     | v0.7.2           | Provable safety against self-modification     |
| Description tool           | ~40   | search         | v0.7.2           | Better reference resolution                   |
| Whiteheadian doc vocabulary | prose | docs/          | anytime          | Sharper architectural self-description        |
| KG type hierarchy          | built-in | VivaceGraph  | v3.0.0           | Structural anti-self-reference in facts       |

Whitehead is the rare case where philosophy is directly engineerable. PM's type theory /is/ the solution to a real Passepartout problem; the process ontology /describes/ the pipeline more precisely than any existing vocabulary.

* Relation to Passepartout's Neuro-Symbolic Architecture

Passepartout is level 4 neuro-symbolic (symbolic gates + neural LLM, deterministic components coordinate heterogeneous systems). PM's type theory adds level-5 properties: /structural/ safety guarantees rather than /empirical/ ones. The dispatcher becomes not just a runtime gate stack but a type-theoretic framework where category errors are impossible by construction — just as PM made Russell's paradox impossible by construction.

The Whiteheadian vocabulary reinforces the architectural identity: Passepartout is not a chatbot with safety checks. It is a /process/ — a continuous concrescence of prehensions producing satisfactions — whose safety is guaranteed by the type structure of the prehending entities.
