Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 30 additions & 4 deletions .machine_readable/AGENTIC.scm
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,38 @@
`((version . "1.0.0")
(claude-code
((model . "claude-opus-4-5-20251101")
(tools . ("read" "edit" "bash" "grep" "glob"))
(tools . ("read" "edit" "bash" "grep" "glob" "write" "task"))
(permissions . "read-all")))
(patterns
((code-review . "thorough")
(refactoring . "conservative")
(testing . "comprehensive")))
(testing . "comprehensive")
(documentation . "academic-rigor")))
(constraints
((languages . ())
(banned . ("typescript" "go" "python" "makefile"))))))
((languages
(allowed . ("elixir" "ocaml" "julia" "rescript" "bash" "scheme" "ada" "rust" "nickel"))
(preferred . ("elixir" "ocaml" "julia" "rescript"))
(banned . ("typescript" "go" "python" "makefile" "java" "kotlin" "swift")))
(documentation
(format . "asciidoc")
(fallback . "latex"))
(no-python . #t)
(type-safety . #t)
(functional-paradigm . #t)))
(workflows
((new-parser
"1. Create ATD schema in parser/lib/"
"2. Generate types with atdgen"
"3. Implement parser using Angstrom"
"4. Add detection function"
"5. Write tests with Alcotest")
(new-elixir-port
"1. Create GenServer in orchestrator/lib/anamnesis/ports/"
"2. Define protocol with Erlang term format"
"3. Add to supervision tree"
"4. Write ExUnit tests")
(new-julia-module
"1. Create .jl file in learning/src/"
"2. Add include in AnamnesisAnalytics.jl"
"3. Export public functions"
"4. Add tests in learning/test/")))))
36 changes: 28 additions & 8 deletions .machine_readable/ECOSYSTEM.scm
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,36 @@
(ecosystem
(version "1.0")
(name "anamnesis")
(type "")
(purpose "")
(type "knowledge-management-system")
(purpose "Extract, reconcile, and visualize knowledge from multi-LLM conversations")

(position-in-ecosystem
(category "")
(subcategory "")
(unique-value ()))
(category "developer-tools")
(subcategory "ai-assisted-development")
(unique-value
"Multi-LLM conversation parsing"
"Artifact lifecycle tracking across sessions"
"Fuzzy multi-category membership"
"RDF-based knowledge representation"
"Cross-conversation fragment linking"))

(related-projects ())
(related-projects
("rescript-evangeliser" "sibling" "Shares ReScript visualization patterns")
("zotero-nsai" "sibling" "Neurosymbolic AI integration techniques")
("fogbinder" "sibling" "Uncertainty-as-feature framework concepts")
("proving-ground" "test-data" "zotero-voyant-export with contamination"))

(what-this-is ())
(what-this-is
"A tool for parsing conversation exports from multiple LLM providers"
"A knowledge graph builder from development conversations"
"An artifact lifecycle tracker (created→modified→removed→evaluated)"
"A cross-conversation linker for related discussion fragments"
"A project categorization system with fuzzy boundaries"
"A research-grade documentation generator")

(what-this-is-not ()))
(what-this-is-not
"NOT a chat interface or LLM frontend"
"NOT a real-time conversation tool"
"NOT a replacement for version control"
"NOT a project management system"
"NOT a search engine (uses SPARQL for structured queries)"))
45 changes: 39 additions & 6 deletions .machine_readable/META.scm
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,48 @@
;; Media-Type: application/meta+scheme

(meta
(architecture-decisions ())
(architecture-decisions
("ADR-001" "Multi-language architecture"
"Each language for its strengths: OCaml for parsing, Elixir for orchestration,
Julia for analytics, λProlog for reasoning, ReScript for UI"
"accepted" "2025-11-22")
("ADR-002" "No Python constraint"
"User requirement: Julia replaces Python for all scientific computing"
"accepted" "2025-11-22")
("ADR-003" "RDF over property graphs"
"Virtuoso + SPARQL chosen over Neo4j/PuppyGraph for semantic web standards,
named graphs, and inference capabilities"
"accepted" "2025-11-23")
("ADR-004" "Port-based inter-process communication"
"Elixir ports for OCaml/Julia communication instead of NIFs for isolation"
"accepted" "2025-11-23")
("ADR-005" "Fuzzy category membership"
"Conversations can belong to multiple projects with varying strength (0.0-1.0)"
"accepted" "2025-11-22"))

(development-practices
(code-style ())
(code-style
("OCaml" "ocp-indent, 80 char lines, snake_case")
("Elixir" "mix format, typespecs required")
("Julia" "JuliaFormatter, docstrings required")
("ReScript" "rescript format, exhaustive pattern matching"))
(security
(principle "Defense in depth"))
(testing ())
(principle "Defense in depth")
(no-secrets-in-code #t)
(input-validation "at port boundaries")
(https-only #t))
(testing
("OCaml" "Alcotest, qcheck for property testing")
("Elixir" "ExUnit, StreamData for property testing")
("Julia" "Test.jl, fixtures in test/fixtures")
("ReScript" "Jest, React Testing Library"))
(versioning "SemVer")
(documentation "AsciiDoc")
(branching "main for stable"))
(branching "main for stable, claude/* for features"))

(design-rationale ()))
(design-rationale
("episodic-memory" "Named graphs partition data by conversation episode")
("artifact-lifecycle" "State machine: created→modified→removed→evaluated")
("fuzzy-boundaries" "Real conversations span multiple projects")
("contamination-detection" "Cross-project artifact sharing indicates mixing")
("reservoir-computing" "ESN for sequence prediction without backprop complexity")))
37 changes: 31 additions & 6 deletions .machine_readable/NEUROSYM.scm
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,35 @@
(define neurosym-config
`((version . "1.0.0")
(symbolic-layer
((type . "scheme")
(reasoning . "deductive")
(verification . "formal")))
((type . "lambda-prolog")
(implementation . "ELPI")
(reasoning . ("deductive" "hypothetical" "meta-level"))
(verification . "type-checked")
(capabilities
("Higher-order abstract syntax (HOAS)")
("Typed logic programming")
("Hypothetical reasoning with =>")
("Tabled predicates for memoization"))))
(neural-layer
((embeddings . false)
(fine-tuning . false)))
(integration . ())))
((embeddings . #t)
(type . "reservoir-computing")
(implementation . "ReservoirComputing.jl")
(fine-tuning . #f)
(capabilities
("Echo State Networks (ESN)")
("Graph embeddings via spectral features")
("Knowledge-Augmented Neural Networks (KBANN)")
("Conversation sequence prediction"))))
(integration
((symbolic-to-neural
("Rule structure → Network topology (KBANN)")
("RDF triples → Graph embeddings")
("Category membership → Supervision signal"))
(neural-to-symbolic
("Embeddings → Similarity for linking")
("Predictions → Candidate hypotheses for λProlog")
("Clustering → Category suggestions"))
(hybrid-queries
("SPARQL for structured retrieval")
("λProlog for reasoning over results")
("ESN for similarity-based expansion"))))))
36 changes: 29 additions & 7 deletions .machine_readable/PLAYBOOK.scm
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,32 @@
(define playbook
`((version . "1.0.0")
(procedures
((deploy . (("build" . "just build")
("test" . "just test")
("release" . "just release")))
(rollback . ())
(debug . ())))
(alerts . ())
(contacts . ())))
((build
(parser . "cd parser && dune build")
(orchestrator . "cd orchestrator && mix deps.get && mix compile")
(learning . "cd learning && julia --project=. -e 'using Pkg; Pkg.instantiate()'")
(visualization . "cd visualization && npm install && npm run res:build")
(all . "just build"))
(test
(parser . "cd parser && dune runtest")
(orchestrator . "cd orchestrator && mix test")
(learning . "cd learning && julia --project=. test/runtests.jl")
(visualization . "cd visualization && npm test")
(all . "just test"))
(deploy
(virtuoso . "docker run -d -p 8890:8890 -e DBA_PASSWORD=anamnesis --name virtuoso openlink/virtuoso-opensource-7")
(orchestrator . "cd orchestrator && MIX_ENV=prod mix phx.server"))
(rollback
(stop-services . "docker stop virtuoso && pkill -f 'mix phx.server'")
(restore-db . "docker exec virtuoso isql-v 'EXEC=checkpoint;'"))
(debug
(check-ports . "lsof -i :4000 -i :8890 -i :1111")
(parser-logs . "cd parser && dune exec -- ./bin/parser_port.exe --help")
(elixir-console . "cd orchestrator && iex -S mix")
(julia-repl . "cd learning && julia --project=."))))
(alerts
((virtuoso-down . "docker ps | grep virtuoso || echo 'Virtuoso not running'")
(port-crashed . "Check orchestrator logs for port exit status")))
(contacts
((maintainer . "hyperpolymath")
(repository . "https://github.com/hyperpolymath/anamnesis")))))
84 changes: 67 additions & 17 deletions .machine_readable/STATE.scm
Original file line number Diff line number Diff line change
Expand Up @@ -4,36 +4,86 @@

(state
(metadata
(version "0.0.1")
(version "0.1.0")
(schema-version "1.0")
(created "2026-01-03")
(updated "2026-01-03")
(created "2025-11-22")
(updated "2026-01-09")
(project "anamnesis")
(repo "github.com/hyperpolymath/anamnesis"))

(project-context
(name "anamnesis")
(tagline "")
(tech-stack ()))
(tagline "Conversation knowledge extraction and reconciliation system")
(tech-stack
("Elixir" "orchestration" "OTP supervision, port management")
("OCaml" "parsing" "Angstrom combinators, Atdgen type generation")
("Julia" "analytics" "RDF manipulation, reservoir computing, KBANN")
("λProlog/ELPI" "reasoning" "Higher-order logic, meta-reasoning")
("ReScript" "visualization" "Type-safe React components")
("Virtuoso" "storage" "RDF triplestore, SPARQL 1.1")))

(current-position
(phase "initial")
(overall-completion 0)
(components ())
(working-features ()))
(phase "initial-implementation")
(overall-completion 25)
(components
(parser 30 "OCaml parsers, Claude format implemented")
(orchestrator 40 "Elixir ports, pipeline skeleton")
(reasoning 10 "λProlog module stubs")
(learning 35 "Julia RDF and reservoir modules")
(visualization 20 "ReScript domain types, color mixing"))
(working-features
"Claude JSON format detection"
"Generic conversation type system"
"RDF schema definitions"
"Elixir supervision tree skeleton"
"ReScript domain types"))

(route-to-mvp
(milestones ()))
(milestones
("M1" "Parse single Claude conversation → RDF triples"
("OCaml Claude parser" done)
("Generic conversation types" done)
("Elixir port communication" in-progress)
("Julia RDF generation" done)
("Virtuoso storage" pending))
("M2" "Multi-format parsing"
("ChatGPT parser" pending)
("Mistral parser" pending)
("Auto-detection" pending))
("M3" "λProlog reasoning"
("Artifact lifecycle tracking" pending)
("Contamination detection" pending)
("Fuzzy categorization" pending))
("M4" "Visualization"
("Graph rendering" pending)
("Timeline view" pending)
("Category color mixing" done))))

(blockers-and-issues
(critical)
(high)
(medium)
(low))
(high
"OCaml ATD schema needs completion"
"Port protocol needs testing")
(medium
"Virtuoso Docker setup documentation"
"Julia package manifest incomplete")
(low
"README examples outdated"))

(critical-next-actions
(immediate)
(this-week)
(this-month))
(immediate
"Complete OCaml conversation_types.atd"
"Test Elixir-OCaml port communication"
"Verify Julia module imports")
(this-week
"End-to-end Claude JSON to Virtuoso pipeline"
"Basic SPARQL query tests")
(this-month
"Multi-format parser support"
"λProlog artifact lifecycle module"))

(session-history ()))
(session-history
("2025-11-22" "Project created, architecture designed")
("2025-11-23" "Tech stack research completed")
("2026-01-03" "Machine-readable files added")
("2026-01-09" "Resolved stubs, populated machine-readable files")))
31 changes: 17 additions & 14 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ This file provides guidance for Claude Code when working with this project.

**Problem Solved**: Mixed-project conversations, dead-end tangents, and lost context in AI-assisted development workflows.

**Current State**: Planning phase - no code written yet. Architecture designed, test case identified.
**Current State**: Initial implementation phase. Core components scaffolded, parsers and ports functional.

## Tech Stack

Expand Down Expand Up @@ -83,7 +83,6 @@ This file provides guidance for Claude Code when working with this project.
- Work on feature branches (prefixed with `claude/`)
- Write clear, descriptive commit messages
- Push changes when requested by user
- Current branch: `claude/create-claude-md-018rbEkfj7wratJi4wojmi1N`

### Testing
- Test-driven approach
Expand All @@ -94,17 +93,23 @@ This file provides guidance for Claude Code when working with this project.

### Phase 1: Research & Setup
1. ✅ Create Anamnesis repository (this repo)
2. Research tech options (check with user first):
- Julia RDF libraries (Semantic.jl, RDFLib.jl)
- Julia reservoir computing (NOT ReservoirPy - no Python)
- PuppyGraph stack analysis
- ReScript visualization ecosystem
2. Research tech options:
- Julia RDF libraries (Serd.jl recommended)
- Julia reservoir computing (ReservoirComputing.jl)
- PuppyGraph evaluation (stick with Virtuoso)
- ReScript visualization (Reagraph, recharts)
3. ⬜ Copy proving ground: Clone zotero-voyant-export to `proving-ground/`
4. ⬜ Create maximal handover document (necessary AND sufficient version)
5. Setup project structure directories
5. Setup project structure directories

### Phase 2: Milestone 1
### Phase 2: Milestone 1 (In Progress)
**Goal**: Parse single Claude conversation JSON → Virtuoso RDF triples
- ✅ Claude JSON format parser (OCaml)
- ✅ Generic conversation types
- ✅ Elixir port infrastructure
- ✅ Julia RDF generation modules
- ⬜ End-to-end integration testing
- ⬜ Virtuoso storage integration

## Related Projects

Expand All @@ -116,9 +121,7 @@ This file provides guidance for Claude Code when working with this project.

Relevant concepts to user's research/journalism work:
- **Agnotology** - Study of culturally-induced ignorance
- **[Terminology gap]** - User mentioned word for "not knowing" (vs agnotology=knowing wrong)
- Candidates: nescience, aporia, epistemic ignorance
- ⚠️ Clarify next session
- **Nescience** - Absence of knowledge (vs agnotology=knowing wrong)
- **Axiology** - Theory of value
- **Ethics** - Moral philosophy applications

Expand Down Expand Up @@ -146,8 +149,8 @@ Relevant concepts to user's research/journalism work:

- Repository: https://github.com/Hyperpolymath/anamnesis
- Test Case Repo: zotero-voyant-export (contaminated, needs untangling)
- Branch: `claude/create-claude-md-018rbEkfj7wratJi4wojmi1N`
- Machine-readable state: `.machine_readable/STATE.scm`

---

Last updated: 2025-11-22
Last updated: 2026-01-09
Loading
Loading