Synthetic Philosophy and Deductive Engineering
docs/ for Resuming KR and MCP WorkDate: 2026-08-20
Time (UTC): 18:18
Reviewer: Grok 4.6 (Grok Build session in /Users/rbj/git/SPaDE)
Scope: Philosophical and architectural documentation in docs/, judged against the bar in Agents.md and drafts/README.md. Code in kr/ and mcp/ was used only as a check on whether the docs would let an AI resume that work without inventing policy.
Constraint: Assessment only. No edits were made under docs/.
The documentation is not adequate to resume detailed design and implementation of the knowledge repository, nor to specify how those capabilities should be delivered through the SPaDE MCP server.
Philosophy is closer than architecture. Architecture is closer to a table of contents than a design. Prototype code in kr/ and mcp/ is ahead of the top-level account that is supposed to govern it.
The bar, in the project’s own words, is that AI should be able to progress detailed design and coding from the docs. That requires, at minimum:
Items 1–3 are not met. Item 4 is only partly met.
README.md, docs/README.md, drafts/README.md, Agents.md.tlph001–tlph025 (line counts and the longer pieces in full or in substantial part).tlad001–tlad014, especially tlad003, tlad005, tlad011–tlad014.tlcd001.md, plan tlpl001.md, admin plan docs/admin/ampl001.md.kr/README.md, kr/krad001.md (opening), mcp/README.md.tlph021.md), new tlph023–tlph025, drafts/README.md updates.This is not a link audit and not a code review.
tlph012, root README): a distributed repository of declarative knowledge, focal deduction in perfect-information spaces, contribution to benign proliferation. That is enough to keep lower work from drifting into a generic theorem-prover or a generic RAG store.tlph009, tlad005): HOL/STT as the universal abstract representation; deduction in perfect-information spaces; focal methods rather than LLMs for those spaces.tlad003, root README): kr, dk, di, mcp, plus docs. Delivery to agentic clients via MCP, not a human UI, is already a design decision (ampl001).kr/ has abstract structure (krcd006.sml), native I/O (SML and Python), tests, and an architecture overview (krad001.md) that is more concrete than docs/tlad012.md. The onion strategy in ampl001 (KR core, then kernel, then DI, MCP from the start) is still the right engineering order.docs/. tlph021 (history of deduction / Hilbert completeness thread) is a serious document. Supporting notes in tlph002, tlph010, tlph013 were updated in the current working tree. Evolution material (tlph022–tlph024) exists as a third pillar beside synthetic philosophy and deductive engineering.These strengths do not substitute for interface-level architecture.
tlad012 is a heading list, not an interfacedocs/tlad012.md enumerates: simple name, relative name, constraint, extension, theory, context, view, cache — then stops.
That list is the intended hinge between philosophy and implementation. Without definitions, operations, identities, and consistency rules, neither KR detailed design nor MCP tools can be derived from docs/.
Meanwhile kr/krad001.md already talks about hashes, types, terms, sequents, signatures, extensions, theories, folders, trees, local vs diasporic vs pansophic repositories, contexts and views. The two documents do not yet tell the same story in the same words.
What to do first, and how
Treat tlad012 as the system-wide abstract model, and krad001 / krdd* / krcd* as its KR-local elaboration — not as competing drafts.
For each object on the tlad012 list, write (briefly, but completely enough to implement against):
Do not invent a second vocabulary. Reconcile with krad001. If tlad012 says “cache” and krad001 does not, either define it or drop it from the top-level list until it is needed.
A useful stopping test: an AI given only tlad001, tlad003, tlad012, and krad001 could list MCP tools for “open repository, list contexts, get theory/extension, resolve name, fetch sequent” without guessing.
mcp/README.md lists Python files and tests. tlad003 says the server gives agentic clients access to the repository and to reasoning. ampl001 correctly wants a read-only MCP as soon as a stored repository exists.
There is no top-level document that says:
Without that, further MCP coding will encode whatever is convenient in mcpcd001.py, and the architecture will follow the prototype instead of governing it.
What to do, and how
Add a short architecture note (either a new tlad or a substantial section of tlad012 plus a pointer from mcp/README.md) whose only job is the v0 tool surface:
ampl001).Keep it to a few pages. The existing mcpte002.md start-up notes are operational, not architectural.
tlad013 and the kernel section of tlad003 contain the important policy idea: not LCF ADT monopoly; theorems signed by authorities; views filtered by a lattice of trust (and later by secrecy). tlad014 exists on cryptography.
That is not yet enough to design:
What to do, and how
Do not start a full kernel implementation. Write one page of invariants into tlad013 (or a dk architecture file that tlad013 points to):
Then stop until tlad012 and v0 MCP are usable. Kernel work before a stable context/theory object will be wasted motion.
docs/README.md lists ~25 philosophy files and 14 architecture files with almost no reading order. tlpl001.md is stale (it points “Synthetic Philosophy” at tlph001 and “Deductive Engineering” at tlph002; those roles now sit on tlph002 / tlad007). tlph016.md exists and is in drafts/README.md but not in docs/README.md. Several tlph files are under 20 lines (tlph003, tlph004, tlph008, tlph011, tlph017, tlph019, tlph020).
Duplication is already a tax: purpose appears in tlph012, tlmc001, tlmc003; rationale in tlph014, tlad009, tlad011; evolution in tlph015 and tlph022–tlph024. That is acceptable while thinking, harmful when an AI must guess which file is canonical.
What to do, and how
Do not merge everything. Declare canonical entry points and treat the rest as supporting:
| Role | Canonical now | Supporting |
|---|---|---|
| Purpose | tlph012 |
tlmc001, tlmc003 |
| Synthetic philosophy | tlph002 |
tlph001, tlph006, tlph019 |
| Deductive engineering | tlad007 |
tlph005, tlph018 |
| Architecture overview | tlad003 |
tlad004, tlad002 |
| KR abstract model | tlad012 |
krad001, krdd*, krph* |
| Perfect information / focal | tlad005 + tlad008 |
tlph009 |
| Evolution / benign proliferation | tlph022 (and 023–024 as they mature) |
tlph015, tlph001 |
Fix tlpl001 or replace it with a short “how to read these docs” at the top of docs/README.md. Index tlph016 or drop it from drafts. Mark stubs as stubs in the index so they are not mistaken for load-bearing text.
This is cheap and should happen in parallel with (1), not instead of it.
tlph021 and the Hilbert/completeness thread are valuable and should stay in the tree. They are not the bottleneck for KR data structures or MCP tools.
The same is true of unfinished sections in tlph021 (Carnap II, theory of computation, architectural implications) and of tlph017–tlph020 stubs. Fill them when a KR question actually needs them (e.g. authority/skepticism when trust lattices are specified; metaphysics when “model” ambiguity in tlad012 is resolved).
Rule of thumb: if a philosophy gap does not change the KR object model or the v0 MCP tool list, it is not first.
tlad005 is Copilot-authored, dated, and longer than most human architecture notes. It is useful on PIS vs games vs theories. It should be treated as a draft to be owned, not as frozen spec, when it is next edited.
This is a writing sequence, not a waterfall for the whole project. It matches ampl001’s onion (KR stored form → read-only MCP → kernel later) and drafts/README.md’s stated focus.
docs/README.md; fix tlpl001 pointers; index or park tlph016; label stubs. Outcome: a new session can be told “read these six files.”tlad012 abstract model, reconciled with krad001 (the main writing). Outcome: named objects, operations, identity, conservative extension, view/cache. Outcome test: MCP v0 tool list can be written without new ontology.tlad013 invariants for theorem + signature + context, still short. No kernel coding required to resume KR.tlph010/tlph013/tlph017); authority (tlph020/tlad014); what “benign” constrains in the architecture (tlph011/tlph012).Implementation already in kr/ (native I/O, tests) should continue as the check that (2) is true of the code, not as a parallel undocumented design.
These are opinions, not already-decided policy.
docs/, subsystem design in kr/, dk/, di/, mcp/. The failure mode is not the split; it is tlad012 remaining empty while krad001 and krcd* quietly become the real architecture.drafts/README.md should not be a second index of living docs/ files. Once a document is linked from docs/README.md, drafts should say what is unfinished in it, not re-list it. Otherwise AI sessions start from the wrong catalogue.tlph numbers until a gap in the canonical map demands a new file. Several existing files are empty enough to absorb the next paragraphs.docs/admin/ampl001.md (or a successor), not in tlpl001.md. tlpl001 is about documentation strategy; ampl001 is about prototyping strategy. They have been allowed to diverge. Align them in one paragraph each pointing at the other.Agents.md) are right for this phase: discuss and assess; write reviews and .grok/ only. When tlad012 and the MCP note exist, the instruction should change to: implement against those two documents.kr//mcp/ code as wrong; it treats it as under-specified from above.docs/ in this session.Agree:
tlad012 is the abstract model (recommended) or whether krad001 should be promoted and tlad012 reduced to a pointer.