Approved by Ursula Addison on 2026-05-14

Home / Hyperon AI Algorithms / ECAN / ECAN Full

Responsible: Matt Iklé, Khellar Crawford, Nil Geisweiller, Yeabsira Nigusse

Papers: Economic Attention Networks — Iklé, Pitt, Goertzel, Sellman (2009); Nonlinear Dynamical Attention — Iklé & Goertzel (2011); Guiding PLN with Attention Allocation — Harrigan et al. (2014); Goertzel (2025), Hyperon Whitepaper §5.3–5.4, §6.3

Status: Current. The ECAN model is operational in two implementations: C++ (OpenCog legacy, attention repo) and MeTTa (metta-attention on PeTTa). The fluid-dynamic extensions (In-Fluid-Net, incompressible-fluid networks) described in the 2025 whitepaper are proposed.

This card provides technical depth beyond the concise ECAN index card. ECAN (Economic Attention Allocation Networks) is Hyperon's primary attention-allocation and resource-regulation subsystem. It determines which atoms in a potentially vast AtomSpace receive computational resources at any given moment — functioning as an internal economy that balances short-term responsiveness with long-term coherence.

Implementation note. None of the four subsystems that today touch ECAN-style attention — the C++ attention repo, metta-attention on PeTTa, the DAS Attention Broker, and OpenPsi's default action-selector — implements the 2009 paper's math literally. Each is an engineering approximation with its own simplifications. The cleanest historical bridge between attention and inference, a URE forward-chainer hook that consulted atom STI for source selection, was wired into the legacy C++ AtomSpace around 2016 and actively used through 2018; the C++→MeTTa migration left it behind. The subcards below trace this lineage in detail, including the OpenPsi action-selector path and Linas Vepstas's parallel Hyperon-era perception portfolio (which lives on the AtomSpace-Scheme branch rather than the MeTTa-runtime branch).

Related cards: PLN Full (inference control integration), MORK Full (Weighted Atom Sweeps), DAS Full (Attention Broker), MetaMo Full (motivational priorities), PRIMUS Full (ambient cognitive loop), Attention and Motivation (synthesis card)

On this page

Core Mechanisms and Foundations

Core Mechanisms

Two Importance Currencies. Every Atom carries two dynamically updated scalar values:

  • Short-Term Importance (STI): Captures immediate, context-dependent relevance. High-STI atoms are in the Attentional Focus — the working memory subset actively available for reasoning and learning.
  • Long-Term Importance (LTI): Reflects longer-horizon expected utility — how consistently an Atom has contributed to successful inference, learning, or goal-directed behavior over time.

Economic Dynamics. ECAN implements an attention economy with several interacting mechanisms:

  • Importance diffusion: STI spreads through Hebbian-weighted associative links. When two atoms are co-activated, their Hebbian link strengthens and future STI diffuses more readily between them. Three diffusion modes exist: Attentional Focus-only (AF, faster, narrower), Whole-AtomSpace (WA, broader, slower), and Fringe spreading (K-hop, see below).
  • Rent collection: Atoms in the Attentional Focus pay "rent" — their STI decays over time unless refreshed by ongoing relevance. This prevents working memory from growing unboundedly.
  • Forgetting: Atoms whose STI falls below threshold and whose LTI is low may be evicted from active processing, reclaiming resources.
  • Hebbian link creation/updating: Co-occurrence patterns between atoms generate and strengthen associative links, which in turn guide future attention flow.

Fringe Spreading (Third Diffusion Mode). The AF-only and WA diffusion modes have a known gap: atoms 2-3 hops from the Attentional Focus receive negligible STI even when they are highly relevant (e.g., question-answer ImplicationLinks connected to AF words only via intermediate nodes). Fringe spreading addresses this by diffusing STI K hops out from each AF atom (typically K=2 or K=3), analogous to a "fringe of consciousness." This is faster than WA diffusion but broader than AF-only. A design tension remains between fringe spreading and intra-AF attractor dynamics: variable-K spreading (Matt Iklé's proposal to replace AF-only entirely) risks slowing attractor formation by orders of magnitude. (mailing-list-backed: Fringe-of-consciousness-importance-spreading, 2016)

Directional Diffusion and Hebbian/Non-Hebbian Split. STI diffusion follows a tunable split: x% along HebbianLinks, (1-x)% along non-Hebbian links (e.g., InheritanceLinks, EvaluationLinks). Early implementation revealed that STI could get "stuck" on intermediate structures (e.g., ListLinks inside EvaluationLinks) because diffusion originally only flowed along ordered link targets, not back to source atoms. The fix required diffusion along both incoming and outgoing sets. For calibrating non-Hebbian weights, a three-step empirical methodology was proposed: (1) run Hebbian-only diffusion, (2) measure co-activation frequency for each (link-type, source-node-type, target-node-type) combination, (3) derive "virtual Hebbian weights" from the resulting statistics. (mailing-list-backed: Importance diffusion, 2014)

Mathematical / Formal Foundations

Information Geometry. The 2011 paper by Iklé and Goertzel formalizes ECAN using information geometry, casting attention allocation as movement on a statistical manifold where the distance metric reflects information-theoretic cost of attention reallocation.

Fluid-Dynamic Extension (Proposed). The 2025 whitepaper (§5.3–5.4) proposes extending ECAN with an incompressible fluid dynamics model where attention mass (STI values) becomes a conserved fluid density \(\rho(t,x)\) advected by a divergence-free velocity field \(u(t,x)\). Key proposed properties:

  • The velocity field is derived from an optimal control policy solving a Hamilton-Jacobi-Bellman (HJB) boundary-value problem
  • The incompressibility constraint \(\nabla \cdot u = 0\) enforces strict attention budget conservation
  • Pressure acts as a shadow price for attention congestion
  • Between ECAN's discrete economic updates, attention would evolve via the continuity equation with the HJB-derived velocity field, providing goal-aware routing that complements ECAN's diffusion

The continuity equation governing attention transport:

\[\frac{\partial \rho}{\partial t} + \nabla \cdot (\rho\, u) = 0\]
  • Variables: \(\rho(t,x)\) = attention density (STI mass) at position \(x\) and time \(t\); \(u(t,x)\) = velocity field derived from HJB optimal control
  • Assumptions: Incompressibility (\(\nabla \cdot u = 0\)) enforces strict conservation of total attention budget
  • Meaning: Attention mass is neither created nor destroyed — it flows through the knowledge graph along goal-optimal paths between ECAN's discrete economic steps
  • Source: Goertzel (2025), Hyperon Whitepaper §5.3–5.4

This fluid-dynamic layer would not replace ECAN's economic mechanisms but provide a continuous-time transport substrate between ECAN's discrete steps. The whitepaper notes this is particularly useful for credit assignment in multi-hop causal chains where traditional diffusion may lag.

System Interfaces and Implementation

System Interfaces

  • PLN: ECAN-guided PLN is a paper-architectural design (Harrigan et al. 2014) that has not been productionized as an executable inference-control runtime. Two narrow executable ECAN/STI hooks existed historically and were both deliberately decoupled by 2019: the URE forward-chainer STI source-selection hook (commit 0a0b09912 2016-03-09 wire-up by Misgana Bayetta; commit 0b744dbab 2018-10-23 unwired by Nil Geisweiller with the comment "An attentionbank is needed in order to get the STI..."; constructor argument removed in commit 5a5b7785d 2019-01-08), and the OpenPsi default action-selector STI path 2016-05 to 2016-11 (commit 8ab0e8f81 2016-05-10 added by Amen Belayneh; commit 9f2697859 2016-11-24 removed by Linas Vepstas; reintroduced as uncalled helper in commit e5bae708f 2017-11-08). Separately, the Loving AI Ghost dialogue runtime explicitly disables STI weighting via the supported Ghost API in commit 51a413e7 (2018-06-06 DevHEAD), then carried forward in the Scheme runner via commit 6ec13879 (2020-09-21 leungmanhin). Modern URE replaced its hook with internal complexity-penalty source weighting (no AttentionBank dependency). Current MeTTa-PLN has no attention-layer integration. See ECAN Full → Development and Historical Context for the full reconstructed nine-event lifecycle, including the OpenPsi action-selector path documented during the OpenPsi cluster pilot (2026-04-28).
  • MOSES: ECAN-weighted regions of AtomSpace define the fitness landscape for evolutionary search.
  • DAS: The Attention Broker in DAS implements ECAN's STI/LTI separation at the storage layer, mediating between attention allocation and physical atom placement across distributed backends.
  • MORK: On MORK, ECAN's importance values drive Weighted Atom Sweeps — aggregate weight counters in each trie node enable importance-proportional sampling without global scans.
  • MetaMo: Motivational priorities from MetaMo influence ECAN's attention distribution, directing STI toward goal-relevant atoms.
  • WILLIAM: Compression-driven importance signals from WILLIAM inform ECAN about which regions have the highest learning payoff.

Implementation Anchors

  • attention (legacy C++) — OpenCog ECAN agents: ImportanceDiffusion, RentCollection, HebbianLinkCreation/Updating, Forgetting. Requires AtomSpace, CogUtil, CogServer.
  • metta-attention (current MeTTa) — Declarative MeTTa port on PeTTa. Two-tier: attention-bank (storage/indexing) + attention agents (ECAN logic). Faithful continuation of the Classic C++ pragmatic variant — neither implementation reproduces the 2009 ECAN paper math literally (a strict-literal score of 0/4 across the four core formal mechanisms). The module named "stochastic-importance-diffusion" is inherited concept naming from the paper; the active implementation in both C++ and MeTTa is deterministic elapsed-time decay (STI × (1 − decay_rate)^averageElapsedTime), not the literal 0.5 × (1 + tanh(shape × (si − FocusBoundary))) stochastic focus-boundary probability. Hebbian learning, AF/WA rent, and AF/WA diffusion are real running agents under PeTTa's hyperpose superposition; performance and concurrency caveats apply (see Development and Historical Context).

Development and Historical Context

Current Development Challenges (discussion-backed)

The following items are corroborated from the ECAN Mattermost channel (Jul 2025–Mar 2026) and verified against the metta-attentioncodebase.

Performance: collapse→fold refactoring. The MeTTa ECAN port uses collapse to reify full lists for min/max and iteration operations — creating giant intermediate lists where streaming fold operations would suffice (patham9, Jan 2026). The metta-attention codebase shows 30+ collapse call sites across attention-bank and agent modules. PeTTa's lib_spaces.metta provides fold-based alternatives that avoid list materialization. The team is actively refactoring to reduce collapse usage, though performance improvements have been incremental so far.

Performance: interpreter speed blocker. Matt Iklé assessed (Sep 2025) that ECAN-PLN integration is not viable "until we have a fast-enough MeTTa interpreter to handle at least a somewhat reasonable facsimile of what we were able to run in OC Classic." This redirected the team toward MORK-native implementation rather than continuing to scale the MeTTa-based port.

Concurrency: Hyperpose race conditions. Parallel STI updates via PeTTa's hyperpose produce non-deterministic results — a classic concurrent-write race condition (yeabsira-nigusse, Feb 2026). Without mutex: faster but incorrect values. With mutex: correct but loses parallelism for the AF Importance Diffusion agent. Batch processing is being explored as a middle ground. PeTTa's mutex_and_transaction.metta provides locking primitives.

MORK migration path. The team is being directed toward MORK-native ECAN implementation. Adam Vandervorst (Dec 2025) specified that atom weights should be implemented as MORK "sources and sinks" — an extra resource layer alongside hypervectors and files. The count sink in kernel/src/sinks.rs is the closest existing code pattern. This migration depends on MORK/MM2 documentation and API stabilization.

Historical Design Decisions (mailing-list-backed)

ECAN as "Something Like PageRank, But Different." Linas Vepstas (2016) characterized ECAN's diffusion as similar to PageRank but with key differences: ECAN operates on a mutable hypergraph with typed links, and STI diffusion weights depend on link types and Hebbian strengths rather than uniform connectivity. Vepstas suggested that variant diffusion agents (PageRankImportanceDiffusionAgent) might be better for specific use cases, positioning ECAN's particular algorithm as one approach in a family of possible graph attention mechanisms. (About-Attention-Values-and-Truth-Values, 2016)

Parameter Sensitivity as Core Challenge. ECAN parameter tuning was acknowledged as a recurring user-facing issue from early implementation. The default AF boundary of 100 STI frequently caused empty Attentional Focus results; initial STI fund allocation mattered dramatically — setting ConceptNode AVs to 1000 caused the AF to grow "pretty big pretty fast," while AVs of 10 caused STI funds to drain. The stimulation mechanism (rather than direct STI assignment) was identified as the correct approach for budget conservation. This history of parameter sensitivity is the direct motivation for the open problem about "tuning the economic parameters adaptively." (About-Stimulating-atoms-and-NLP, 2016; Attention allocation and others some remarks, 2014)

Semantic Association as Validation Methodology. ECAN testing was designed around semantic association experiments: load ConceptNet and WordNet, feed topical articles about (e.g.) insects and poisons, and verify whether emergent concepts like "insecticide" appear in the Attentional Focus. A key variable was the Hebbian/non-Hebbian diffusion ratio. The hypothesis was that weak HebbianLinks would produce better behavior than strong ones — analogous to Granovetter's "strength of weak ties" in social networks. (Thoughts-on-ECAN-testing-weak-links, 2017)

Integrated Information Theory (IIT) as Evaluation Metric. Researchers explored using Tononi's Phi as a quantitative measure of ECAN attention dynamics quality. The hypothesis: Phi would be higher when ECAN successfully connected parsed sentences with background knowledge vs. failing to do so. Linas Vepstas offered an existing matrix API for computing entropy and MI over AtomSpace adjacency matrices, noting the 30K×30K matrix computations could take hours. This remains an unexplored research direction. (ECAN-data-analysis-integrated-information, 2017)

Cluster-Pilot Findings (2026-04-26)

Findings from the ECAN cluster-pilot extraction (Sources 1–4: metta-attention, attention Classic C++, legacy URE + legacy C++ PLN, pre-split OpenCog monorepo at b31c7e3). Cross-model triangulation: Claude orchestrator + Codex + Gemini, with reconciliation files at scripts/archive/ecan_pilot/source*/findings_reconciled_crossmodel.txt.

The "missing inference-control layer" was a 2018 OpenCog Classic deliberate removal — not a Hyperon-era regression. Cluster Source 3 pickaxe-history audit established that ECAN-PLN executable coupling once existed narrowly via URE forward-chainer STI source-selection. The hook read atom STI values via s->getSTI() for tournament selection of inference sources. It was not a full ECAN agent integration and did not couple PLN reward signals to ECAN currency dynamics, but it was the only verified executable PLN/URE-side ECAN bridge that ever existed. Lifecycle:

  • Wired up: 0a0b09912 (2016-03-09 Misgana Bayetta, "Pass source selection mode to the constructor") — added source_selection_mode sm constructor argument and STI case using tournament_elem[s] = s->getSTI() in URE forward chainer.
  • Unwired: 0b744dbab (2018-10-23 Nil Geisweiller, "Re-work source and rule selection in the forward chainer") — STI case commented out with the explicit comment "An attentionbank is needed in order to get the STI..." The 2018 rewrite authors knew the AttentionBank dependency was required and chose not to wire the new SourceSet path through it.
  • Constructor argument removed: 5a5b7785d (2019-01-08 Nil Geisweiller) — source_selection_mode sm argument deleted; the enum value at ForwardChainer.h:42 persists as dead residue at current URE HEAD.

Modern URE replaced the STI hook with internal TV-fitness × exp2(-complexity_penalty × complexity) source weighting in SourceSet (SourceSet.cc:38-54, 217); separately, the backward/control-rule MixtureModel uses an exponential complexity prior (exp(-cpx_penalty × length), MixtureModel.h:88-area). Both are local URE control mechanisms, decoupled from any global AttentionBank.

2019-09-06 AttentionBank removal from monorepo. Cluster Source 4 archaeology at the pre-removal commit b31c7e3 (2019-09-04, "Modernize the test framework") established that the next commit, 318c0b4cb (2019-09-06 Linas Vepstas, "First rough cut at removing the attentionbank"), deleted the core ECAN/AttentionBank subsystem from the OpenCog monorepo: agent modules, AttentionBank, AttentionSCM, AttentionValue, StochasticImportanceDiffusion, tests, and Cython wrapper. The attention/ subsystem subsequently lived only as the standalone opencog/attention repo (later forked by iCog-Labs-Dev) and as the metta-attention port.

Math implementation status: 0/4 strict-literal compliance against the 2009 paper in BOTH Classic C++ and the MeTTa port. Cluster Sources 1+2 reconciliation:

  • Rent (paper: Rent × max(0, log2(si / recentMaxSTI))^2): C++ implements a target-funds/buffer homeostatic surrogate at RentCollectionBaseAgent.cc:76-103; MeTTa faithfully ports the same surrogate at RentCollectionBaseAgent.metta:7-28, 36-57. No log2 in either implementation.
  • Wages (paper: WageStimulus × (sum(pi)/n)): C++ uses a fund-buffer central-bank adjustment in AttentionBank::stimulate at AttentionBank.cc:142-187; MeTTa mirrors the same shape in attention-bank.metta:11-37, 49-63, 76-90. No WageAgent peer in either; wages paid only on stimulation.
  • Hebbian update (paper: c_ij' = ConjDecay × (si·sj/recentMaxSTI²) + (1 - …) × c_ij): C++ uses a normalized-STI fuzzy conjunction at HebbianUpdatingAgent.cc:74-115; MeTTa adds an explicit PLN_BOOK_REVISION count formula (c1+c2) - 0.2·min(c1,c2) at HebbianUpdatingAgent.metta:53-92, 92, 106-130 alongside the same fuzzy conjunction. No recentMaxSTI² or ConjDecay term in either.
  • Stochastic diffusion (paper: P(diffuse) = 0.5 × (1 + tanh(shape × (si - FocusBoundary)))): ABSENT in both. The module named StochasticImportanceDiffusion at StochasticImportanceDiffusion.cc:115-145 implements deterministic elapsed-time decay STI × (1 - decay_rate)^averageElapsedTime, not the literal sigmoid. The MeTTa port faithfully ports the misnaming.

The MeTTa port did not lose the paper math. Classic C++ had already moved away from the strict 2009 equations to pragmatic engineered surrogates; the MeTTa port faithfully ports that pragmatic variant. The cluster pilot reframes prior wiki claims accordingly.

Inherited Classic C++ bugs (present in both implementations).

  • WA rent compounding at WARentCollectionAgent.cc:68-70: mutates member STIAtomRent and LTIAtomRent in place every WA rent event. Subsequent calls compound the elapsed-time scaling. The C++ source still contains std::cout debug-print scaffolding at :66-69, suggesting unfinished code. The MeTTa port at WARentCollectionAgent.metta:30-31 faithfully ports the same compounding pattern.
  • WA diffusion parameter mis-read at WAImportanceDiffusionAgent.cc:51-52: reads dif_tournament_size into hebbianMaxAllocationPercentage. AF diffusion at AFImportanceDiffusionAgent.cc:49-50 correctly reads heb_max_alloc_percentage. WA diffusion also fails to re-read maxSpreadPercentage and spreadHebbianOnly dynamically. Likely copy-paste error in the C++ baseline.

MeTTa-port-introduced regressions (not in C++). Distinct categories of technical debt:

  • Hardcoding / parameter shadowing (likely porting error): HebbianCreationAgent.metta:17 hardcodes localToFarLinks = 1000.0, shadowing the configured LOCAL_FAR_LINK_RATIO = 10 that Classic C++ correctly reads from AttentionParamQuery at HebbianCreationAgent.cc:71-77. The MeTTa value is 100× larger than the declared parameter, suppressing far-link creation for smaller AF sizes.
  • Dormancy / EMA commenting (likely simplification choice): recentVal.metta:22-67 has both updateMin and updateMax implementations commented out. Classic C++ keeps _maxSTI and _minSTI as live opencog::recent_val instances at ImportanceIndex.h:58-60, updated at ImportanceIndex.cc:110-135. The MeTTa port lost the smoothing infrastructure that paper-formula implementations would depend on.

Broader-OpenCog ECAN consumers (2017–2019, cluster Source 4). AttentionBank had real executable consumers beyond PLN/URE at the pre-removal monorepo snapshot b31c7e3:

  • OpenPsi action-selector seam (enabler, not default consumer). opencog/openpsi/action-selector.scm:57-64 defines a Scheme helper rule-sca-weight that returns (* (cog-confidence RULE) (cog-mean RULE) (cog-av-sti RULE)) — strength × confidence × STI. Pickaxe attribution: e5bae708... (2017-11-09 Amen Belayneh, "Cleanup openpsi action-selector functions"). However, OpenPsi cluster pilot Source 1 (2026-04-27) established that this helper has no caller in the OpenPsi runtime: the default component selector at main.scm:54-59 is psi-get-satisfiable-rules (returns all satisfiable rules, no STI scoring). OpenPsi instead provided the configurable action-selector seam (psi-set-action-selector!) that Ghost used to install its own STI-weighted selector (see next bullet). OpenPsi is therefore an ECAN-coupling enabler, not itself confirmed as a default executable ECAN consumer.
  • Ghost dialogue rule selection at opencog/ghost/matcher.scm:127, 139, 268 and schemas.scm:478, 480, 491-506, 518, 530, 542: actively read AF/STI and write STI back via cog-av-sti, cog-af, cog-set-sti!. opencog/ghost/stimulation.scm uses cog-stimulate as a perception hook during NLP parse.
  • NLP fuzzy matching at opencog/nlp/fuzzy/Fuzzy.cc:27, 46, 55, 321: includes AttentionBank.h and uses bank->atom_is_in_AF for AF-only fuzzy search. Pickaxe attribution: 12673ff10... (2016-12-29 Linas Vepstas, "Move to the new attention API").
  • Python web API at opencog/python/web/api/apiatomcollection.py:97, 113, 163, 450, 588, 620, 686-706 and mappers.py: exposed REST AttentionValue / AttentionalFocus read/write surfaces with ParseAttentionValue serialization.

These consumers were not preserved as functioning ECAN integrations across the AttentionBank removal — some (Fuzzy.cc) still referenced the deleted headers post-removal in stale, broken form rather than being cleanly migrated or cleanly absent. None were carried into metta-attention's MeTTa rewrite. Re-establishing executable PLN-attention coupling, or any of the broader ECAN consumer integrations, is an open problem for the Hyperon ecosystem.

Cohort lineage. Cluster Sources 2–4 git-shortlog audits established that the opencog/attention Classic C++ codebase was developed by a broad OpenCog cohort: Linas Vepštas (lead, 424 commits), Misgana Bayetta (149), Nil Geisweiller (99 — also the URE primary architect), Cosmo Harrigan (file-header Copyright on the diffusion subsystem 2014–2016 — same person who is lead author of the 2014 "Guiding PLN with Attention Allocation" paper), Roman Treutlein, Yeabsira Nigusse, Birhane Gulilat (later metta-attention lead). The metta-attention MeTTa port is dominated by the iCog-Labs-Dev / SingularityNET Ethiopia sub-cohort: Birhane Gulilat (380 commits), Yeabsira Nigusse, samwondim, tarikuamisganaw, BaslaelWorkineh — distinct from the trueagi-io PLN production cohort.

Source 4 V4-1 addendum -- OpenPsi cluster pilot (2026-04-28)

The OpenPsi cluster pilot Source 4 (Hanson archaeology, 2026-04-28) refined the "OpenPsi enabler-not-default" framing above with time-indexed caller analysis. The 2019 b31c7e3 snapshot and the existing bullet are correct as written, but the 2016 OpenPsi default action-selector did briefly route through the STI-weighted helper. Caller-analysis must be time-indexed.

OpenPsi default-selector STI lifecycle (additional executable-coupling events, all upstream and confirmed at opencog-hansonrobotics master 2016 snapshot):

  • 2016-05-10 -- 8ab0e8f81 Amen Belayneh, "add importance into the utility function": introduces most-important-weighted-atoms at utilities.scm:78-90 with weight (* (tv-conf a-stv) (tv-mean a-stv) sti), and conditionally routes the default action-selector through it at action-selector.scm:121-127, 170-176. The conditional gates on cog-af-boundary being not 0 or 1; when ECAN is configured, the STI path is the intended default. The author comment "Remove `most-weighted-atoms` version once ecan is integrated" documents the STI path as the intended default and the non-STI fallback as temporary.
  • 2016-11-24 -- 9f2697859 Linas Vepstas, "General cleanup of the action selector": removes the cog-af-boundary conditional default-STI branch from psi-default-action-selector and psi-default-action-selector-per-demand. After this, the OpenPsi default selector no longer routes through STI.
  • 2017-11-08 -- e5bae708f Amen Belayneh, "Cleanup openpsi action-selector functions": reintroduces rule-sca-weight as strength * confidence * STI -- but as a helper definition only, with no runtime caller. This is the state captured at the 2019 b31c7e3 snapshot, which the existing OpenPsi bullet correctly characterizes as "enabler, not default consumer."

Loving AI Ghost runtime explicit STI-disable (additional consumer-side decoupling event):

  • 2018-06-06 -- 51a413e7 DevHEAD, "update run script to not use ECAN and feedback when rules are loaded" (in opencog/loving-ai-ghost at bin/run.sh): adds (ghost-af-only #f) (ghost-set-sti-weight 0) via telnet to the production CogServer Scheme runner. Per the Ghost API documented in opencog/ghost/README.md:217-222, (ghost-set-sti-weight 0) uses a supported public control to remove STI from Ghost's rule-selector weight calculation. Loving AI Ghost continues to use OpenPsi's action-selector seam via (psi-set-action-selector! ghost-component ...) -- it decouples from ECAN/STI, not from OpenPsi entirely.
  • 2020-09-21 -- 6ec13879 leungmanhin, "Add a run script in Scheme" (in leungmanhin/loving-ai-ghost at bin/run.scm:4): the same STI-disabling policy is carried forward into the Scheme runner.

Reconstructed executable ECAN-coupling lifecycle (URE + OpenPsi + Ghost combined). Sequenced by date:

  1. 2016-03-09 -- 0a0b09912 Misgana Bayetta -- URE forward chainer adds source_selection_mode::STI wiring
  2. 2016-05-10 -- 8ab0e8f81 Amen Belayneh -- OpenPsi default action-selector adds STI-weighted path
  3. 2016-11-24 -- 9f2697859 Linas Vepstas -- OpenPsi default action-selector removes STI-weighted path
  4. 2017-11-08 -- e5bae708f Amen Belayneh -- OpenPsi reintroduces rule-sca-weight as helper only (no caller)
  5. 2018-06-06 -- 51a413e7 DevHEAD -- Loving AI Ghost runtime explicitly disables STI weighting via supported API
  6. 2018-10-23 -- 0b744dbab Nil Geisweiller -- URE STI source-selection branch unwired ("An attentionbank is needed in order to get the STI...")
  7. 2019-01-08 -- 5a5b7785d Nil Geisweiller -- URE constructor argument source_selection_mode sm deleted; enum value persists as dead residue
  8. 2019-09-06 -- 318c0b4cb Linas Vepstas -- AttentionBank removed from monorepo
  9. 2020-09-21 -- 6ec13879 leungmanhin -- Loving AI Ghost Scheme runner inherits STI-disable policy

The Hanson dialogue runtime (ros-behavior-scripting + Loving AI Ghost) used OpenPsi as a behavior-loop authority but did not pursue paper-equation faithfulness. It used the supported Ghost STI API to deliberately decouple from ECAN/STI in production, not to bypass OpenPsi. This is a runtime/application branch over Classic OpenPsi -- not a separate mathematical tradition.

For the full per-source extraction archive, see scripts/archive/ecan_pilot/ in the wiki repository (4 source briefs + 16 findings/reconciliation files), and scripts/archive/openpsi_pilot/ (4 source briefs + 12 findings/reconciliation files).

Source 5 Perception cluster pilot addendum (2026-05-01) -- DeSTIN-FISHGRAM-PLN architecture status

Findings from the Perception/Neural-Symbolic cluster pilot (Sources 1-5, closed 2026-05-01). For the full per-source extraction archive see scripts/archive/perception_pilot/.

The 2013 DeSTIN-FISHGRAM-PLN architecture is in a partial, fragmented revival — not fully revived but not abandoned either. The cluster pilot established that Hyperon-era perception/neural-symbolic integration is TRILATERAL but PARALLEL-NON-INTEGRATED across three traditions with zero algorithmic, code, or author overlap:

  • Symbolic mining -- iCog-Labs-Dev hyperon-miner trio (Source 3); MeTTa port of opencog/miner; MeTTa-runtime stack.
  • Neural mining -- rejuve-bio/neural-subgraph-matcher-miner (Source 4); SPMiner-lineage R-GCN GNN-geometric; strictly empirical with no formalization layer; iCog/Rejuve team leadership; MeTTa-runtime stack.
  • Perception/embodiment -- Linas Vepstas's opencog/sensory + agents + motor + evidence + atomese-simd portfolio (Source 5); AtomSpace-Scheme stack (C++ + Guile, no .metta files); single-author parallel research effort.

Bidirectional cross-grep across all three traditions returned ZERO references between layers. No sensor → miner → PLN runtime pipeline exists. The 2013 paper architecture is not revived as such -- its generic architectural concerns recur in fragmented form across the three traditions but no end-to-end pipeline ties them together.

Pickaxe verification at the cluster-wide level. fishgram, sushigram, and DeSTIN tokens return zero hits at HEAD AND in git history across opencog/sensory and the rest of the Vepstas portfolio. The opencog/sensory README (705 lines @ 64849f3) frames the perception/action revival narrative against failed Hanson Sophia / Minecraft ROCCA / Unity pet-dog avatar / soccer-robothon embodiment efforts -- it does not cite DeSTIN, FISHGRAM, or the 2013 paper architecture by name. The clean break from FISHGRAM holds across the entire cluster.

Hyperon ecosystem operates on TWO parallel stacks (cluster-narrative-deciding finding).

  • AtomSpace-Scheme stack -- Vepstas perception portfolio + opencog/miner + opencog/vision. Active development 2025-2026.
  • MeTTa-runtime stack -- hyperon-experimental + hyperon-miner trio + neural-subgraph-matcher-miner. Active development 2025-2026.

Both stacks receive concurrent active development; this was not obvious from prior wiki framing.

OllamaNode dual characterization. The OllamaNode in opencog/sensory (one of 7 wired sensory atom types at opencog/sensory/types/sensory_types.script:29-51; alongside TEXT_FILE_NODE, FILE_SYS_NODE, UNIX_SOCKET_NODE, TCP_SOCKET_NODE, TERMINAL_NODE, I_R_CHAT_NODE) supports two distinct uses, both runtime-wired:

  • IRC text-stream wiring (examples/ollama-bot.scm:104-141) — LLM-mediated perception. The LLM serves as the intermediate language-understanding layer between IRC sensory I/O and the AtomSpace.
  • Embedding-vector extraction (examples/ollama-embed.scm:20-31, 42-46; storage via *-embedding-* key at OllamaNode.cc:629-664) — LLM as a knowledge source and memory substrate. Embeddings act as semantic-memory primitives, not as sensor-input transformations.

Linas Vepstas role upgrade. The cluster pilot reframes Vepstas's role: he is not just a legacy-era author bridging into Hyperon, but actively maintains a parallel Hyperon-era research portfolio. Evidence: 5-repo sole-authored Hyperon-era effort (sensory ~733 commits @ 64849f3 + agents 89 @ 0718ba0 + motor 76 @ d5ba07e + evidence 30 @ ba0314c + atomese-simd 372 @ b8be282), plus co-authored opencog/miner (with Nil Geisweiller) and opencog/vision (with Adrian Borucki).

Implication for ECAN/AttentionBank revival prospects. The Vepstas perception portfolio operates on the AtomSpace-Scheme stack and runs alongside, not within, the metta-attention MeTTa rewrite. Any future ECAN reactivation that wants to take input from runtime-wired perception must either bridge across stacks or re-host on whichever stack ECAN re-emerges on. None of the three Perception-cluster traditions currently consume ECAN attention values.

Status and Resources

Last verified: 2026-05-13

Current Status

  • Operational: C++ ECAN agents (attentionrepo); MeTTa ECAN (metta-attentiononSTI,0.5stochastic PeTTa) with elapsed-time importance decay and Hebbian learning. The "stochastic-importance-diffusion" module name is inherited concept naming from the 2009 paper; the active implementation in both C++ and MeTTa is deterministic × (1 − decay_rate)^averageElapsedTime not the literal × (1 + tanh(...)) focus-boundary probability — confirmed by direct code inspection of both repos.
  • Under development: MORK-native importance embedding via Weighted Atom Sweeps; DAS Attention Broker integration; collapse→fold performance refactoring
  • Proposed: Incompressible-fluid-network attention dynamics (In-Fluid-Net); HJB-based optimal control for goal-aware attention routing; continuous-time transport between discrete ECAN steps

Open Problems / Research Directions

  • Scaling ECAN to very large AtomSpaces — balancing diffusion breadth against computational cost (fringe spreading as intermediate solution)
  • Integration of fluid-dynamic attention with MORK's ShardZipper for distributed attention state
  • Tuning the economic parameters (rent, wages, tax rates) adaptively rather than manually — virtual-Hebbian-weight calibration as one proposed methodology
  • Formal analysis of convergence and stability properties under the fluid extension
  • Resolving Hyperpose concurrency for attention diffusion — batch-parallel STI updates with bounded error tolerance
  • IIT Phi as evaluation metric for attention dynamics quality — unexplored since 2017
  • Re-establish executable PLN-attention coupling. The narrow URE STI source-selection hook from 2016–2018 was deliberately unwired in commit 0b744dbab when the URE rewrite did not preserve the AttentionBank dependency. Current MeTTa-PLN has no attention-layer integration; the 2014 Harrigan et al. paper-architectural design has not been productionized as an executable runtime. See ECAN Full → Development and Historical Context for the full timeline.
  • Decide which broader-OpenCog ECAN consumers to revive. Pre-2019 OpenCog had Ghost dialogue (STI-weighted action-selector at matcher.scm:117-130, 284; STI/AF reads/writes in matcher and schema procedures), NLP fuzzy matching (AF-only via bank->atom_is_in_AF), Python web API AttentionValue surfaces, and OpenPsi (action-selector seam plus an uncalled rule-sca-weight STI helper — an enabler rather than a default consumer) — all confirmed at the pre-removal monorepo snapshot during the ECAN cluster pilot. None were preserved as functioning ECAN integrations across the 2019 AttentionBank removal; none have documented MeTTa equivalents. Selecting which consumer integrations to rebuild is an open Hyperon-ecosystem decision.

Primary Sources

  • Economic Attention Networks — Iklé, Pitt, Goertzel, Sellman (2009). AGI-09.
  • Nonlinear Dynamical Attention — Iklé & Goertzel (2011). AGI-11.
  • Guiding PLN with Attention Allocation — Harrigan et al. (2014). AGI-14.
  • Goertzel, B. (2025). Hyperon for AGI⇒ASI Whitepaper, §5.3–5.4, §6.3.
  • Cluster-pilot extraction archive (2026-04-26): 4 source briefs + 16 findings/reconciliation files at scripts/archive/ecan_pilot/ in the wiki repository. Cross-model triangulation by Claude orchestrator + Codex + Gemini.



Discussion