ECAN Full
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 — STI/LTI economy, three diffusion modes, Hebbian links, fluid-dynamic extension
- System Interfaces and Implementation — PLN / MOSES / DAS / MORK / MetaMo / WILLIAM coupling; legacy C++ vs current MeTTa repos
- Development and Historical Context — Mattermost-backed current challenges, mailing-list-backed design history, ECAN/OpenPsi/Perception cluster-pilot findings
- Status and Resources — what's operational, what's under development, what's proposed; open problems; primary sources
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
0a0b099122016-03-09 wire-up by Misgana Bayetta; commit0b744dbab2018-10-23 unwired by Nil Geisweiller with the comment "An attentionbank is needed in order to get the STI..."; constructor argument removed in commit5a5b7785d2019-01-08), and the OpenPsi default action-selector STI path 2016-05 to 2016-11 (commit8ab0e8f812016-05-10 added by Amen Belayneh; commit9f26978592016-11-24 removed by Linas Vepstas; reintroduced as uncalled helper in commite5bae708f2017-11-08). Separately, the Loving AI Ghost dialogue runtime explicitly disables STI weighting via the supported Ghost API in commit51a413e7(2018-06-06 DevHEAD), then carried forward in the Scheme runner via commit6ec13879(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 literal0.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'shyperposesuperposition; 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") — addedsource_selection_mode smconstructor argument and STI case usingtournament_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 newSourceSetpath through it. -
Constructor argument removed:
5a5b7785d(2019-01-08 Nil Geisweiller) —source_selection_mode smargument deleted; the enum value atForwardChainer.h:42persists 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 atRentCollectionBaseAgent.cc:76-103; MeTTa faithfully ports the same surrogate atRentCollectionBaseAgent.metta:7-28, 36-57. Nolog2in either implementation. -
Wages (paper:
WageStimulus × (sum(pi)/n)): C++ uses a fund-buffer central-bank adjustment inAttentionBank::stimulateatAttentionBank.cc:142-187; MeTTa mirrors the same shape inattention-bank.metta:11-37, 49-63, 76-90. NoWageAgentpeer 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 atHebbianUpdatingAgent.cc:74-115; MeTTa adds an explicitPLN_BOOK_REVISIONcount formula(c1+c2) - 0.2·min(c1,c2)atHebbianUpdatingAgent.metta:53-92, 92, 106-130alongside the same fuzzy conjunction. NorecentMaxSTI²orConjDecayterm in either. -
Stochastic diffusion (paper:
P(diffuse) = 0.5 × (1 + tanh(shape × (si - FocusBoundary)))): ABSENT in both. The module namedStochasticImportanceDiffusionatStochasticImportanceDiffusion.cc:115-145implements deterministic elapsed-time decaySTI × (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 memberSTIAtomRentandLTIAtomRentin place every WA rent event. Subsequent calls compound the elapsed-time scaling. The C++ source still containsstd::coutdebug-print scaffolding at:66-69, suggesting unfinished code. The MeTTa port atWARentCollectionAgent.metta:30-31faithfully ports the same compounding pattern. -
WA diffusion parameter mis-read at
WAImportanceDiffusionAgent.cc:51-52: readsdif_tournament_sizeintohebbianMaxAllocationPercentage. AF diffusion atAFImportanceDiffusionAgent.cc:49-50correctly readsheb_max_alloc_percentage. WA diffusion also fails to re-readmaxSpreadPercentageandspreadHebbianOnlydynamically. 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:17hardcodeslocalToFarLinks = 1000.0, shadowing the configuredLOCAL_FAR_LINK_RATIO = 10that Classic C++ correctly reads fromAttentionParamQueryatHebbianCreationAgent.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-67has bothupdateMinandupdateMaximplementations commented out. Classic C++ keeps_maxSTIand_minSTIas liveopencog::recent_valinstances atImportanceIndex.h:58-60, updated atImportanceIndex.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-64defines a Scheme helperrule-sca-weightthat 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 atmain.scm:54-59ispsi-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, 268andschemas.scm:478, 480, 491-506, 518, 530, 542: actively read AF/STI and write STI back viacog-av-sti,cog-af,cog-set-sti!.opencog/ghost/stimulation.scmusescog-stimulateas a perception hook during NLP parse. -
NLP fuzzy matching at
opencog/nlp/fuzzy/Fuzzy.cc:27, 46, 55, 321: includesAttentionBank.hand usesbank->atom_is_in_AFfor 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-706andmappers.py: exposed REST AttentionValue / AttentionalFocus read/write surfaces withParseAttentionValueserialization.
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 --
8ab0e8f81Amen Belayneh, "add importance into the utility function": introducesmost-important-weighted-atomsatutilities.scm:78-90with weight(* (tv-conf a-stv) (tv-mean a-stv) sti), and conditionally routes the default action-selector through it ataction-selector.scm:121-127, 170-176. The conditional gates oncog-af-boundarybeing 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 --
9f2697859Linas Vepstas, "General cleanup of the action selector": removes thecog-af-boundaryconditional default-STI branch frompsi-default-action-selectorandpsi-default-action-selector-per-demand. After this, the OpenPsi default selector no longer routes through STI. -
2017-11-08 --
e5bae708fAmen Belayneh, "Cleanup openpsi action-selector functions": reintroducesrule-sca-weightasstrength * confidence * STI-- but as a helper definition only, with no runtime caller. This is the state captured at the 2019b31c7e3snapshot, 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 --
51a413e7DevHEAD, "update run script to not use ECAN and feedback when rules are loaded" (inopencog/loving-ai-ghostatbin/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 inopencog/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 --
6ec13879leungmanhin, "Add a run script in Scheme" (inleungmanhin/loving-ai-ghostatbin/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:
-
2016-03-09 --
0a0b09912Misgana Bayetta -- URE forward chainer addssource_selection_mode::STIwiring -
2016-05-10 --
8ab0e8f81Amen Belayneh -- OpenPsi default action-selector adds STI-weighted path -
2016-11-24 --
9f2697859Linas Vepstas -- OpenPsi default action-selector removes STI-weighted path -
2017-11-08 --
e5bae708fAmen Belayneh -- OpenPsi reintroducesrule-sca-weightas helper only (no caller) -
2018-06-06 --
51a413e7DevHEAD -- Loving AI Ghost runtime explicitly disables STI weighting via supported API -
2018-10-23 --
0b744dbabNil Geisweiller -- URE STI source-selection branch unwired ("An attentionbank is needed in order to get the STI...") -
2019-01-08 --
5a5b7785dNil Geisweiller -- URE constructor argumentsource_selection_mode smdeleted; enum value persists as dead residue -
2019-09-06 --
318c0b4cbLinas Vepstas -- AttentionBank removed from monorepo -
2020-09-21 --
6ec13879leungmanhin -- 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-simdportfolio (Source 5); AtomSpace-Scheme stack (C++ + Guile, no.mettafiles); 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 atOllamaNode.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)^averageElapsedTimenot 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
0b744dbabwhen 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 viabank->atom_is_in_AF), Python web API AttentionValue surfaces, and OpenPsi (action-selector seam plus an uncalledrule-sca-weightSTI 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.
Tags
Discussion