symfonic.capabilities.memory.phases.deep¶
deep ¶
Deep Sleep: roster parity with the shipped consolidator, plus one.
The taxonomy matters here more than anywhere, because two of the three cadences
are this capability's own. The shipped system has one main roster of sixteen
phases -- the body of SleepConsolidator.run -- and one four-phase subset,
quick_nap. nightly_nap calls run, so "nightly" and "Deep Sleep" are
the same sixteen on two schedules.
So:
- :func:
~.quick.quick_phasestranscribesquick_nap. - :func:
~.nightly.nightly_phasesis a profile this capability defines -- the sixteen minusentity_links-- and nothing in the shipped system runs it. - :func:
deep_phasesis where parity is judged: the sixteen, in legacy's order, plusscope_promotion.
The two DEEP adds. entity_links is legacy's, at its legacy position
between synthetic_links and procedural_promotion -- which is why DEEP
cannot be spelled (*nightly, extra). scope_promotion is not legacy's at
all: the shipped tree promotes a memory toward the root outside the
consolidator, so this roster runs it last and owns the fact that it is an
addition rather than a transcription.
EntityLinksPhase ¶
EntityLinksPhase(graph: Any, evidence: EpisodicEvidence | None, *, extractor: Any = None, **settings: Any)
Phase 12.5. Names a scope keeps mentioning become nodes it can traverse.
Two numbers, not one: it mints entity nodes and the mention edges that
point at them, and PHASE_COUNTERS maps a phase to counters through its
single headline count. The headline is the nodes; the edges go through the
cycle's legacy-counter channel, which is what that channel was added for.
Source code in src/symfonic/capabilities/memory/phases/deep.py
applies ¶
Legacy's guard: default-off, and needs both an extractor and turns.
enable_entity_linker is off in the shipped configuration, so a
deployment that composes no extractor is the ordinary case rather than
a misconfiguration -- and it declines rather than reporting a zero.
Source code in src/symfonic/capabilities/memory/phases/deep.py
ScopePromotionPhase ¶
A memory corroborated in a session moves toward the tenant that owns it.
The one phase on this roster that is not a transcription. The shipped tree promotes outside the consolidator, so there is no legacy position to restore and no legacy behaviour to match -- it runs last, after every phase that could produce a candidate, and it declines unless a deployment gave it somewhere to promote from.
Source code in src/symfonic/capabilities/memory/phases/deep.py
deep_phases ¶
deep_phases(*, graph: Any, store: Any = None, policy: Any = None, entity_extractor: Any = None, scope_promoter: Any = None, entity_min_mention_count: int | None = None, entity_max_episodics_per_run: int | None = None, entity_confidence_threshold: float | None = None, **nightly: Any) -> tuple[ConsolidationPhase, ...]
Build the complete DEEP roster, in roster order.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
graph
|
Any
|
the |
required |
store
|
Any
|
the memory store, for the phases that learn from a scope's turns. Without it, three of the seventeen decline. |
None
|
entity_extractor
|
Any
|
what turns an episode into candidate entities. Absent, phase 12.5 declines -- which is the shipped default, not a misconfiguration. |
None
|
scope_promoter
|
Any
|
|
None
|
**nightly
|
Any
|
forwarded to :func: |
{}
|
Source code in src/symfonic/capabilities/memory/phases/deep.py
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 | |