Skip to content

feat(discourse): argumentation organ — argument mining + Aristotelian typing (②+③) - #133

Merged
mdheller merged 2 commits into
mainfrom
feat/discourse-argument-mining
Aug 4, 2026
Merged

feat(discourse): argumentation organ — argument mining + Aristotelian typing (②+③)#133
mdheller merged 2 commits into
mainfrom
feat/discourse-argument-mining

Conversation

@mdheller

@mdheller mdheller commented Aug 4, 2026

Copy link
Copy Markdown
Member

The one new organ: Argument Mining

The argumentation-surface plan found the discourse pipeline is 13 of 14 organs the estate already runs — the single thing to build is Argument Mining: turning a message into a typed argument graph (claims, premises, support/attack relations) — the structure a scalar engagement score discards. This is that organ's core.

v1: deterministic, fail-closed, rule-based

Extracts over discourse connectives — because / therefore / however (the premise→conclusion cues argumentation theory has read as structure since Aristotle). It never invents a relation a connective doesn't license, so an unmarked sentence is a bare claim, not a hallucinated argument. An LLM-backed miner is a drop-in behind the Miner protocol — same output type, richer extraction — but the rule-based baseline is what we can prove.

Composes with the spine, without coupling

Proof

pytest tests/test_argument_mining.py9 theorems: premise→claim support, premise→conclusion support, rebuttal attack (intra- and inter-sentence), no-marker ⇒ bare-claim (no hallucination), empty ⇒ empty, determinism, co-occurrence hand-off, hellgraph-shaped fragment.

Next slices (separate PRs)

Richer typing via KKO/Aristotle categories (③); the LLM-backed Miner; the event-bus service + hellgraph writer + receipts (the deployable organ).

…raph

procyber.discourse.argument_mining — the one new organ of the argumentation surface. A deterministic,
fail-closed extractor over discourse connectives (because/therefore/however): turns a message into a
typed argument graph (claims, premises, support/attack relations), never inventing a relation a
connective doesn't license. An LLM-backed miner is a drop-in behind the Miner protocol.

Composes upward without coupling: mine() optionally feeds entity co-occurrences to any object with
co_occur(a,b) — e.g. dynamics.AssociativeMemory (the memory organ) — duck-typed, no import dep.

Proof: tests/test_argument_mining.py (9) — premise->claim support, premise->conclusion support,
rebuttal attack (intra + inter sentence), bare-claim/no-hallucination, empty=empty, determinism,
co-occurrence hand-off, hellgraph-shaped fragment.
…nt units

procyber.discourse.categories — types the units the miner emits by Aristotle's ten Categories
(substance + nine accidents), reading the predication a copula licenses: "S is a P" => S instance-of
class P (secondary substance); "S is Q" => quality; "S is ...-er than O" => relation; numeral =>
quantity. Deterministic, fail-closed (no pattern => nothing forced). Yields the primary/secondary-
substance = instance/class distinction the AtomSpace/KKO lattice consumes.

Proof: tests/test_categories.py (8); composes with argument_mining via categorize_graph.
@mdheller mdheller changed the title feat(discourse): argument-mining organ — typed claim/premise/attack graph feat(discourse): argumentation organ — argument mining + Aristotelian typing (②+③) Aug 4, 2026
@mdheller
mdheller merged commit f82d819 into main Aug 4, 2026
6 checks passed
@mdheller
mdheller deleted the feat/discourse-argument-mining branch August 4, 2026 15:04
mdheller added a commit that referenced this pull request Aug 4, 2026
…gy + ④ ingest + ⑤ index (#134)

The 5-diagram spine had ① memory (dynamics.py #132) + ② discourse (argument_mining.py #133); this lands
the last three organs, all off the SAME Aristotelian/VSA substrate so ingestion, typing and retrieval
never drift:

- ⑤ INDEX  procyber/semantic/semantic_index.py — Hamming NN retrieval over SemanticHasher codes. Ranks by
  semantic similarity (E[H/n]=θ/π), bounds by radius, and `codes_hex` exports exactly a hyper-feed
  -manifest.v0 payload — a node's index IS its mesh federation advertisement.
- ④ INGEST procyber/lod/triplify.py — text → RDF triples, the category fixing the predicate (substance →
  standard rdf:type; relation/quantity/quality → disc: predicates). Fail-closed.
- ③ ONTOLOGY procyber/ontology/atomspace.py — Aristotle's primary/secondary substance → the AtomSpace
  type-inheritance lattice (MemberLink instance / InheritanceLink subclass; accidents → EvaluationLink).
  Standard OpenCog atom types — the lattice a PLN reasoner walks (KKO-IRI grounding is the next step).

14 theorems (⑤ self-retrieval + rank agreement + radius + manifest-code round-trip; ④ one triple per
category + rdf:type interop + fail-closed; ③ instance vs subclass vs evaluation + composes a lattice).
Registered in the cleanroom FRAMEWORK_FILES — checker clean, 27 files scanned. Pure-Python, deterministic.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant