Worker T5, companion-2026-09-26 programme, written 2026-09-26 00:37 to about 01:30 Beirut. Read-only on every store. Everything built before tonight (states v2 ladder, case builder, Strike rungs, card spec of 09-17) is labelled experimentation below and is cited only as evidence of what we already compute.
Scripts and outputs (rerun from projects/caverio/companion-2026-09-26/):
| Script | Command | Output |
|---|---|---|
scripts/T5-signal-sequences.py |
python3 scripts/T5-signal-sequences.py |
data/T5-signal-sequences.json, data/T5-token-signals.jsonl |
scripts/T5-bands.py |
python3 scripts/T5-bands.py (after the above) |
data/T5-bands.json, data/T5-bands-rows.jsonl |
scripts/T5-holders.py |
python3 scripts/T5-holders.py |
data/T5-holders.json, tables in logs/T5-holders.out |
All three ran at 00:39 to 00:42 Beirut on 2026-09-26 against the live signal-room/data/ (events.sqlite opened ?mode=ro). Window: 2026-09-11 21:30Z to 2026-09-25 21:30Z (14 days).
Legend. Ownership: ours = computed from our own tape, RPC reads or our own machinery; derived-L = a derived field computed from a licensed stream (display the derivative, not the raw); licensed raw = third-party value we may not show raw until T1 clears it. Chains today: RH = Robinhood Chain, BSC, SOL. Hint: the presentation form T7/T8 should start from (rate, share, count-vs-peers, lag, state, timeline, number).
| Field | Question it answers | Computation | Source store | Ownership | Cadence | From | Chains | Hint |
|---|---|---|---|---|---|---|---|---|
| token identity | What is this? | chain, address, symbol, name, pool(s) | events.sqlite tokens, pool-map.json |
ours | on open | 08-30 | RH, BSC, SOL (+ base/eth call-only) | header |
| situation clock | How long has it been on our radar, and since what? | firstAt = min(source time) over intake signals; firstType | T5 join (this report) | ours | per event | 09-11 (14 d back) | all | timeline origin |
| pool age | Is this a launch or an old token being rediscovered? | now - pool creation (tape first swap on RH/BSC; provider pairCreatedAt otherwise) | trades-bsc/, var/trades/, discovery ageMin |
ours (tape) / derived-L | on open | 09-10 | all | number + "new/old" state |
| market cap | How big is it? | price x supply | ticks/ mcapUsd (dexscreener) |
derived-L (band label and rounded value) | ~70 s | 09-10 | RH, BSC, SOL | band chip + rounded number |
| cap band | Which peer group is it judged against? | bands of section 3 on cap at open and now | T5 | ours | per tick | 09-10 | all | chip; "moved up a band" state |
| price | What does it trade at? | last own-tape swap price (RH, BSC); provider price elsewhere | var/trades, trades-bsc, ticks |
ours (tape) / licensed raw (SOL) | per swap / 70 s | 09-12 RH, 09-18 BSC | RH, BSC own; SOL licensed | sparkline + % from open, % from high |
| drawdown from high | Where is it in its range? | price / max(price since open) - 1, phantom-filtered | tape or ticks | ours / derived-L | per swap | as above | all | gauge |
| liquidity | Can I get in and out at my size? | pool reserves in USD | ticks liqUsd |
derived-L | 70 s | 09-10 | all | number + "slippage at $500" derived |
| liquidity / cap | Is the cap real or thin? | liq / mcap | ticks | derived-L | 70 s | 09-10 | all | share, band-relative |
| volume 1h / 24h | Is anyone trading it? | sum of swap USD | own tape (RH, BSC), ticks vol1hUsd | ours / derived-L | per minute | 09-12 | all | number + vs band median |
| volume / liquidity | Is it churning? | vol1h / liq | as above | ours / derived-L | per minute | 09-12 | all | rate vs band |
| Field | Question | Computation | Source | Ownership | Cadence | From | Chains | Hint |
|---|---|---|---|---|---|---|---|---|
| net buy pressure 5m / 15m / 1h / 6h | Is money coming in or going out right now? | usdIn - usdOut per window | telemetry/ (per minute), situation-flow/current.json |
ours | 1 min | 09-12 | RH, BSC (SOL tape restarted 09-25) | signed bar strip, windows scale by band |
| flow acceleration | Is the inflow speeding up or fading? | last window net minus previous | telemetry | ours | 1 min | 09-12 | RH, BSC | arrow state |
| buyer and seller counts | How many hands, not how much money? | walletsIn / walletsOut distinct per window | telemetry | ours | 1 min | 09-12 | RH, BSC | count vs band |
| new vs returning wallets | Fresh demand or the same people churning? | newWallets / returningWallets per window | telemetry | ours | 1 min | 09-12 | RH, BSC | share |
| buy size distribution | Retail swarm or a few large tickets? | swap USD quantiles per window; count over $1K / $10K | tape | ours | per swap | 09-12 | RH, BSC | histogram glyph |
| first-hour tape | How did the launch go? | from pool open: buyers, net USD, top-1 buy share, time to 100 buyers | tape | ours | once at 60 min, then fixed | 09-12 | RH, BSC | fixed summary card |
| tracked-wallet net | What are the wallets we watch doing? | onchain-watchtower buy/sell, proof rows | events.sqlite onchain-watchtower(+proof) |
ours | per event | 09-04 / 09-13 | RH (proof), SOL/BSC partial | timeline dots |
| Fomo trader flow | What are profiled traders doing? | fomo-alerts buy/sell usd per trader | events.sqlite fomo-alerts |
derived-L (who, when, side, size bucket; not thesis text) | 300 s | 09-09 | RH, SOL, BSC | timeline dots |
| Field | Question | Computation | Source | Ownership | Cadence | From | Chains | Hint |
|---|---|---|---|---|---|---|---|---|
| early-buyer retention | Are the first buyers still in? | first-30-min attributed-buyer cohort; RPC balance: held / reduced / exited / unknown | holdings/ |
ours | per pass (120 s loop, budgeted) | 09-13 | RH only | stacked share bar + count |
| concentration clock | Is supply gathering in few hands or spreading? | top-20 and top-1 share of positive balances, per minute from open | tape + (needed) Transfer logs | ours | 1 min | worked example only | RH (tape-only, overstated; see 1.8) | line next to price |
| holders count | How wide is ownership? | wallets with positive balance | needs Transfer-log indexer | ours (to build) | 5 min | not yet | none reliably | number vs band |
| who was already in | Did the money arrive before the attention? | wallets that bought before reference event (first call / first covered buy / first X), their share of float at ref and now, still holding | tape + T5 signal join + holdings | ours | per reference event | worked example | RH (BSC with holdings pass) | two-column before/after table |
| recurring wallets | Is this the same crew as last time? | early-cohort wallets present in the early cohort of 3+ other tokens | holdings/ cohorts |
ours | daily | 09-13 | RH | count + "seen in N launches" |
| covered-trader exposure | Are the named traders who bought still holding? | covered buyer wallet balance vs bought | holdings/2 coveredLane |
ours | per pass | 09-16 | RH full; SOL/BSC nonzero-only | per-person chip |
| deployer / top holder share | Does one wallet control it? | deployer balance, largest holder | needs RPC + Transfer logs | ours (to build) | on open + hourly | not yet | none | share with warning state |
| Field | Question | Computation | Source | Ownership | Cadence | From | Chains | Hint |
|---|---|---|---|---|---|---|---|---|
| Telegram caller calls | Which callers called it, when, at what cap? | caller call rows: channel, calledAt, callMcap, seenAt | events.sqlite watchtower-callers, social-watch, discovery.jsonl |
ours (timing fact) | 300 s | 09-03 | any chain named | timeline + "called at $1.8M, now $X" |
| caller stance and flip | Is the caller still bullish? | per caller per token stance over whole chat (T4) | T4 msg rows (1,557 msg rows stored) | ours (derived from public posts) | per message | to build (T4) | any | stance chip with flip marker |
| Telegram mentions (sweep) | Is it being talked about in the wider Telegram crowd? | mentions by channel with source time | social-sweep/*.json telegram |
ours (timing and counts); text not ours | per sweep | 09-16 | situation tokens only | count per hour vs band |
| X mentions | Is X talking? | posts by roster account | social-sweep x (dark since 09-18 21:05Z) |
derived-L | dark | 09-16 to 09-18 | n/a | shows "X unavailable" honestly |
| Fomo theses | What are profiled traders saying? | stance counts; authors holding | fomo-alerts thesis, thesis-enrichment |
derived-L (stance counts only) | 300 s | 09-09 | RH, SOL, BSC | "3 theses: 2 bullish, 1 author holds" |
| attention intensity vs band | Is it loud for its size? | mentions per hour / median for tokens in the same band that hour | T5 join | ours | 15 min | buildable now | all | percentile gauge |
| attention-to-money lag | Did buying follow the call or precede it? | first buy after reference minus reference; buyers before vs after | T5 join + tape | ours | per reference event | buildable now (RH, BSC) | RH, BSC | signed lag ("money 8 h before the call") |
| caller scorecard | How have this caller's calls done? | marks at 15m / 1h / 4h / 24h after each call | events.sqlite mark rows (1,142 marks) |
ours | per mark | 09-03 | any priced chain | small table per caller, censoring noted |
| Field | Question | Computation | Source | Ownership | Cadence | From | Chains | Hint |
|---|---|---|---|---|---|---|---|---|
| contract flags | Can I sell? Can they mint? | honeypot/tax/mint/freeze/owner checks | none stored today | licensed (GoPlus, RugCheck) or ours (simulate sell via quote) | on open | not yet | none | pass/fail chips |
| LP status | Can liquidity be pulled? | LP burned/locked/owner-held | none stored | to build (RPC on LP token) | on open | not yet | none | state chip |
| deployer history | Has this deployer rugged before? | deployer address, previous tokens, their outcomes | none stored (pool creation tx has it) | ours (to build) | on open | not yet | none | count + outcome summary |
| suspect-print flag | Did that spike actually happen? | lone print under 0.75x both neighbours, no swap at that price on the tape | ticks + tape | ours | per tick | 09-10 | RH, BSC | "this print did not trade" marker on chart |
| rug signature | Did liquidity vanish? | liq drop over 80% in 10 min, or all sells, no buys | ticks, tape | ours / derived-L | per minute | 09-10 | all | red state |
| Field | Question | Computation | Source | Ownership | Cadence | From | Chains | Hint |
|---|---|---|---|---|---|---|---|---|
| previous situations on this token | Have we seen it before, and what happened? | prior situation keys, their open cap and 24h outcome | situations.jsonl, outcomes.jsonl |
ours | on open | 09-09 | all | small timeline |
| previous situations on this deployer | Same deployer, earlier launches? | needs deployer field | to build | ours | on open | not yet | none | count + outcomes |
| refusals / paper marks | Did our paper engine look at it, and why did it pass? | deep-paper crossings and refusal reason | deep-paper/book.sqlite |
ours | per crossing | 09-22 | per engine | footnote, experimentation label |
| outcome marks | What did it do after we first saw it? | h1/h6/h24 max and close from entry candle | outcomes.jsonl |
ours (from own candles on RH/BSC; derived-L elsewhere) | per horizon | 09-10 | all | shown only on closed situations (public record) |
| comparable | What did the most similar past situation do? | nearest neighbour on band, age, lights, first type | T5 join + outcomes | ours | on open, hourly | buildable now | all | one line, with n and a caveat |
Every field value on the page carries: its source (store and provider), its clock (source time and our receive time), and its basis (the rule that computed it). This is the one thing the experimentation-era case builder (data/case/*.json, schema case/1) did right: every line had facts, sources, clocks, unknown. Keep that shape; drop the stage headline.
Script scripts/T5-holders.py. Shares are of the tape-attributed float (attributed buys minus attributed sells), not total supply; no RPC call was made tonight. Tape start is the first swap on our tape, which is not always pool open.
SPRING (0x440e...36d5), tape 09-14 16:27Z; first watched-wallet buy at tape start; first Fomo covered buy 41 min later (17:08Z); X post 10 h later.
| min from tape start | price USD | buyers so far | wallets holding (tape) | top-20 share | top-1 share |
|---|---|---|---|---|---|
| 5 | 0.00142 | 638 | 637 | 0.57 | 0.15 |
| 15 | 0.00106 | 759 | 755 | 0.60 | 0.16 |
| 30 | 0.00168 | 861 | 858 | 0.57 | 0.15 |
| 60 | 0.00266 | 939 | 930 | 0.59 | 0.14 |
| 240 | 0.00287 | 1,103 | 1,078 | 0.61 | 0.14 |
| 1440 | 0.00208 | 1,196 | 1,147 | 0.62 | 0.14 |
| latest (09-25) | 0.00155 | 1,430 | 1,305 | 0.62 | 0.13 |
Who was already in (reference: first Fomo covered buy): 876 wallets bought before it, 110 in the hour after. The before group still held 68% of the tape float at the latest read; 260 of the 876 are recurring (in the first-30-minute cohort of 3 or more Robinhood launches) against 8 of the 110 who came after. RPC truth on the 861-wallet early cohort (holdings pass 09-24 00:37Z): 50 held, 33 reduced, 750 exited, 28 unknown.
AGRIPPA (0x82ef...1e18), tape 09-18 17:44Z; first Telegram caller call 17:52Z (7 min after tape start); Fomo covered buy 40 min after the call.
| min from tape start | price USD | buyers so far | wallets holding (tape) | top-20 share | top-1 share |
|---|---|---|---|---|---|
| 5 | 0.000367 | 16 | 16 | 1.00 | 0.36 |
| 15 | 0.000330 | 70 | 65 | 0.89 | 0.17 |
| 30 | 0.000381 | 142 | 126 | 0.76 | 0.08 |
| 60 | 0.00137 | 1,070 | 963 | 0.37 | 0.04 |
| 240 | 0.000593 | 1,800 | 1,527 | 0.40 | 0.04 |
| 1440 | 0.000367 | 2,161 | 1,782 | 0.43 | 0.06 |
| latest (09-25) | 0.000144 | 3,666 | 3,073 | 0.37 | 0.04 |
Who was already in (reference: the caller call): 19 wallets before the call, 1,213 in the hour after it; price went 3.6x between minute 30 and minute 60, then gave it all back and more. The 19 early wallets held 100% of float at the call and 1.5% at the latest read; 4 of them are recurring, and 157 of the 1,213 after-call buyers are too. RPC truth on the 142-wallet early cohort: 8 held, 13 reduced, 117 exited.
What the two examples teach the design:
holdings/) and label the tape-based concentration "attributed float".Script scripts/T5-signal-sequences.py. 1,429 tokens first sighted in the window (RH 1,032, SOL 237, BSC 48, other chains 112, mostly caller calls on base and ethereum). Six independent signal types counted; our own pattern alert (room_alert) is derived from Fomo rows and is not counted; the tape surge (tape_surge: first minute with $5K in or 10 buys) exists only after a situation opened, so it is reported, not ranked.
Distinct independent signal types within a window of first sighting (full window observed):
| window | tokens | 1 type | 2 | 3 | 4 | 5 | share 2+ | share 3+ |
|---|---|---|---|---|---|---|---|---|
| 1 h | 1,427 | 1,180 | 184 | 51 | 11 | 1 | 17.3% | 4.4% |
| 6 h | 1,403 | 1,103 | 204 | 74 | 20 | 2 | 21.4% | 6.8% |
| 24 h | 1,367 | 1,037 | 208 | 84 | 33 | 5 | 24.1% | 8.9% |
Which signal comes first:
| type | tokens carrying it | first on | median lag when not first | p25 / p75 (min) |
|---|---|---|---|---|
| watched-wallet buy (on-chain) | 1,016 | 910 | 23 min | 5 / 135 |
| Fomo covered-trader buy | 486 | 265 | 56 min | 15 / 1,564 |
| Telegram mention (sweep) | 225 | 113 | 99 min | 16 / 1,505 |
| Fomo thesis | 207 | 43 | 5.7 h | 45 / 2,549 |
| X mention (roster, to 09-18) | 120 | 47 | 10.3 h | 14 / 3,465 |
| Telegram caller call | 79 | 51 | 27 h | 261 / 4,089 |
| our pattern alert (derived) | 457 | 0 | 11 min | 1 / 188 |
| tape surge (own tape) | 163 | 0 | 5 h | 32 / 1,723 |
Head-to-head ordering (tokens with both):
| pair | n | first | median gap |
|---|---|---|---|
| watched-wallet buy vs Fomo buy | 141 | wallet 87, Fomo 25 | wallet 6 min earlier |
| Fomo buy vs Fomo thesis | 176 | buy 143, thesis 33 | thesis 79 min after |
| Telegram mention vs Fomo buy | 159 | mention 98, buy 61 | mention 6 min earlier |
| caller call vs Fomo buy | 31 | buy 21, call 10 | buy 36 min earlier |
| caller call vs watched-wallet buy | 10 | wallet 10, call 0 | wallet 28 h earlier |
| any tracked buy vs caller call | 34 | buy 26, call 8 | buy 8.6 h earlier; only 3 tokens got a tracked buy within 60 min after a call |
Reading:
Lights at situation entry against the 24 h outcome (script T5-bands.py, entry = earliest outcome mark, lights counted at or before entry, 580 tokens with a cap, 408 matched):
| lights at entry | n | median best 24 h | share +50% | median close 24 h | share closing -50% or worse |
|---|---|---|---|---|---|
| 1 | 241 | +42% | 46% | -32% | 39% |
| 2 | 132 | +42% | 46% | -39% | 48% |
| 3+ | 35 | +31% | 46% | -37% | 43% |
No relationship. The lights are an attention and activity ranking, useful for "where should I look first", useless as "which will go up". This matches the mandate ("it does not judge; it shows") and must be printed on the page in plain words.
Eight lights. Each lights on a specific event class, each event has an id in events.sqlite or a tape row with txHash, and the light shows the event that lit it.
| # | Light | Lights on (event with an id) | Intensity 1 / 2 / 3 | Decay half-life (default by band <1M / 1M-10M / >10M) |
|---|---|---|---|---|
| 1 | Wallets | watched on-chain wallet buy (onchain-watchtower / proof row) | 1 wallet / 2 distinct / 3+ distinct or one with an unusual size for that wallet | 1 h / 3 h / 12 h |
| 2 | Traders | Fomo-profiled trader buy or bullish thesis | 1 / 2 distinct / 3+ or thesis + buy by different traders | 1 h / 3 h / 12 h |
| 3 | Callers | Telegram caller call (formatted call or T4 whole-chat stance extraction) | 1 channel / 2 / 3+ or a caller with a top-quartile scorecard | 2 h / 6 h / 24 h |
| 4 | Attention | Telegram sweep mention, X mention (when back), with source time | band-relative percentile of mentions per hour: p75 / p90 / p97 | 1 h / 3 h / 12 h |
| 5 | Tape | own-tape anomaly: buyers per minute or net USD above the band's p90 for the pool age | p90 / p97 / p99 of band | 15 min / 1 h / 4 h |
| 6 | Holders | early-cohort retention high and top-20 share falling (distribution to new hands); or recurring-wallet cluster present | one condition / two / both plus retention above band median | 6 h / 12 h / 24 h |
| 7 | Momentum | price and volume state: new high on own tape with rising buyers, or reclaim of the 1 h high after a drawdown | new 1h high / new 6h high / new all-time high on our tape | 30 min / 2 h / 6 h |
| 8 | Safety (inverted: a warning light) | contract flag fail, LP unlocked, deployer with prior rugs, liquidity pull, suspect print | amber / red | no decay while the condition holds |
Why these and not the brief's candidate list: narrative is not an event with an id, it is a classification (section 4), so it tags and filters instead of lighting. Momentum stays because a trader in the hold stage needs it, but it is computed from our tape (RH, BSC) and from derived provider fields elsewhere.
Decay. A light's value is intensity x 0.5^(age / halfLife); below 0.25 it is off. Half-life scales with band because a $300K token's hour is a $30M token's day (supported by the band numbers in section 3: the median small-cap best move happens and reverses inside 24 h; the mid-cap distribution is flat). A light from three days ago is always off: hard cap 72 h regardless of band.
Safety is the exception: it does not add to rank; an amber light caps the situation below all situations without one, a red light moves it to a "blocked" strip that stays visible (showing a rug as it happens is part of the record) but never at the top.
Proposed, internal, config-held (not emitted as a score; the page shows lights, not a number):
rank = sum_over_lights(decayed intensity) # how much is lit, with recency built in
+ 0.5 * lights_lit_in_last_60min # rate of lighting (corroboration speed)
+ 0.5 * band_attention_percentile / 100 # loud for its size
- safety_penalty # amber: floor below unflagged; red: separate strip
Ties by most recent lighting. The room shows within band first (filter chip), with an "all bands" view that interleaves by rank. Configurable weights in one file; any change logged with a version, as states.json did.
Why this is not the ladder: the experimentation-era states v2 ladder (signal-room/model/states.json) had one input (covered Fomo traders), a single path (forming, confirming, active, fading, archived) and time windows that archived a token after 4 h of silence from that one source. Our data shows 64% of tokens are first seen by on-chain wallets, not Fomo, and that talk arrives hours later: a ladder built on one source's windows kills most situations before their second signal arrives. Lights are independent, accumulate from any source, decay per band, and never force a stage.
What survives from the ladder: no light without an event id (the ladder's evidence rule; the data audit found 47% of transitions with empty evidence, which is the exact failure to prevent); the stance rule (a bearish thesis never heats, statesVersion 2); the distinct-actor rule (two posts by one trader are one light at intensity 1); every rule versioned.
A row of eight small cells per situation, lit cells filled and fading with decay, the event behind each cell one tap away with its source time. The count is not written as a number on the list; the pattern is. On the situation page, the lights become a timeline strip with one lane per light: this is where "money 8 h before the call" becomes visible without a sentence.
Script scripts/T5-bands.py. 580 tokens with an outcome mark first recorded 09-11 21:30Z to 09-24 21:30Z (24 h observed), cap at entry from ticks within 30 min (528) or our alert row within 60 min (52); 244 dropped for no cap. Best 24 h = highest 5-minute candle high over 24 h from the entry candle close; close 24 h = the 24 h close; low 24 h = phantom-filtered tick low (lone prints under 0.75x of both neighbours removed, stale repeats collapsed).
| band at entry | n | median best 24h | p75 best | share reaching +50% | share reaching +100% | median close 24h | share closing -50% or worse | share touching -50% (ticks) |
|---|---|---|---|---|---|---|---|---|
| under $250K | 42 | +56% | +144% | 55% | 31% | -39% | 43% | 64% (n 28) |
| $250K-1M | 251 | +46% | +162% | 47% | 34% | -43% | 47% | 59% (n 232) |
| $1M-10M | 243 | +29% | +87% | 37% | 20% | -18% | 21% | 32% (n 218) |
| $10M-50M | 27 | +10% | +21% | 7% | 0% | -4% | 11% | 15% (n 20) |
| over $50M | 17 | +11% | +23% | 0% | 0% | 0% | 0% | 0% (n 11) |
By chain inside the busy bands: $250K-1M RH 110 / SOL 121 / BSC 20 with median best +38% / +53% / +49%; $1M-10M RH 116 / SOL 97 / BSC 30 with +25% / +33% / +42% (full table in data/T5-bands.json, key byBandChain).
Caveats. (a) Best-24h uses candle highs, which include any single-print spike the candle source took; onchain candles (274 of 580) are from our tape and cannot contain a print that did not trade, the other 306 are provider candles and can. (b) Entry is the first outcome mark (382 are situation openings under the ladder, 150 tracked buys), which is the ladder's selection, not a random token sample. (c) $10M-50M and over $50M have n = 27 and 17: directional only. (d) "Best within 24 h" is not a tradeable return; it is the forgiving-win upper bound T6 works from.
| band | what matters first | what moves down | light half-lives | flow windows |
|---|---|---|---|---|
| under $250K | first-hour tape, who was already in, safety, liquidity | narrative heat, holder count | 1 h | 1 / 5 / 15 min |
| $250K-1M | tape, early-buyer retention, attention-to-money lag, caller stance | narrative | 1 h | 5 / 15 / 60 min |
| $1M-10M | net flow by hour, retention, concentration clock, caller scorecards | first-hour tape (history now) | 3 h | 15 min / 1 h / 6 h |
| $10M-50M | holder base (count and spread), liquidity depth, narrative heat vs band, trend on 4 h / 1 d | first buyers, launch tape | 12 h | 1 h / 6 h / 24 h |
| over $50M | watch view: trend, flows by day, narrative, holders | everything launch-related | 12 h | 6 h / 24 h / 7 d |
A token that crosses a band keeps its situation and changes layout; the band move itself is an event on the timeline ("moved from $1M-10M to $10M-50M at 14:20").
Four inputs, in order of trust:
Store the tag with its inputs and a confidence (metadata-only, heuristic, caller-confirmed). A token can have two tags.
Cost estimate (C): 1,429 tokens in 14 days is about 100 new tokens a day; one small-model tagging call per token plus one per caller-message batch is well under 1M tokens a day, under a dollar a day at small-model prices. Heuristic pass: negligible CPU.
Narrative heat is band-relative and has three parts, all computed from our own rows:
Show as a small table per band: narrative, count, money, attention, each as a ratio ("AI: 3.1x usual count, 1.4x usual money"). Heat never lights a situation; it sits on the band view and as a tag colour on the situation.
A trader who is already in wants, in this order:
| # | Need | Field | Have today? |
|---|---|---|---|
| 1 | Is money still coming in? | net buy pressure by band windows, acceleration, buyer count | yes on RH and BSC (telemetry); SOL needs the restarted tape to reach telemetry |
| 2 | Are the people who got in before me leaving? | early-cohort retention (held / reduced / exited), covered-trader exposure | RH only (holdings); BSC needs a holdings pass on the existing tape; SOL needs tape + token-account reads |
| 3 | Where is price in its range, and did that spike trade? | drawdown from high, suspect-print flag | yes (tape RH/BSC; ticks elsewhere with the phantom test) |
| 4 | Is attention rising or dying, and did a caller flip? | mentions per hour vs band, caller stance and flips | counts yes (Telegram); stance and flips need T4 |
| 5 | Is liquidity still there for my exit size? | liquidity, slippage at the user's size, liquidity pulls | liquidity yes (derived); slippage needs a quote call (exists in paper-tiered quoting code) |
| 6 | Is supply concentrating (someone accumulating to dump) or spreading? | concentration clock | needs Transfer-log indexer (tape-only is overstated, section 1.8) |
| 7 | Exit under the noise | attention rising while early holders reduce, as one state | buildable on RH today from (2) and (4); elsewhere after (2) |
| 8 | Safety changes | LP unlock, owner actions, deployer moving tokens | not built |
The view: a big number for net flow in the band's primary window, a retention bar, the price sparkline with suspect prints marked, the lights strip, and one sentence of "what changed since you last looked". No buy/sell instruction.
| state | condition | shown |
|---|---|---|
| open | first intake event (any of the six sources) | explore list, low unless lit |
| heating | rank rising: a new light in the last hour, or two lights lit | rises in the room |
| cooling | no new light for two half-lives and flow net negative | falls, dimmed |
| closed | all lights off (decayed) for 24 h, or liquidity below $1K, or rug signature | leaves the room; enters the public record |
These are display states derived from lights, not a ladder: a closed situation reopens as a new situation on the same token when a new event arrives (keyed token#openedAt, as today), linked to its predecessor so "seen before" works.
Kept: everything (retention rule, Thomas 2026-09-19): every event, every light with its event id, rank snapshots every 15 min, the field values at open, at peak rank and at close.
Public record per closed situation: token, band at open, opened and closed times, which lights lit and when (source names and timing, which are ours), the outcome marks from our own candles (best and close at 1 h / 6 h / 24 h), and the caller scorecard entries it contributed to. No licensed raw values (no provider price series, no thesis text).
| # | Field wanted | Missing input | To |
|---|---|---|---|
| 1 | Early-buyer retention on BSC | holdings pass over trades-bsc/ (tape exists since 09-18; 1,404 holdings files are stubs) |
T2 |
| 2 | Any wallet-level field on Solana | Solana tape live to telemetry (restarted 09-25) + getTokenAccountsByOwner reads | T2 |
| 3 | Concentration clock, holder count, top holder | ERC-20 Transfer log indexer per watched token (not swap netting) | T2 |
| 4 | Contract flags, LP status | a safety check on open (licensed GoPlus/RugCheck or own sell simulation); rights by T1 | T2, T1 |
| 5 | Deployer history | deployer address from pool/token creation tx, stored per token; join to outcomes | T2 |
| 6 | Caller stance and flips | whole-chat extraction over msg rows (1,557 stored, 0 with token address) | T4 |
| 7 | Attention breadth | more caller channels; X back or a replacement source | T4, T1 |
| 8 | Narrative tag | deployer metadata fetch on open; tagging pass | T4 (text), T2 (store) |
| 9 | Pool open time and first-hour tape for every token | tape must start at pool creation, not at situation open (musegram's tape started 16 min after the first Fomo buy) | T2 |
| 10 | Band-relative percentiles | a 15-minute band aggregate table (mentions, flow, buyers per band per pool-age bucket) | T2 |
| 11 | Evidence on every light | event ids on alerts and situation rows (audit: alerts carry 0 event ids; 47% of transitions empty) | T2 |
| 12 | Provider clock on prices | source + providerAt on ticks, raw sidecar (bead 44ht) | T2 |
| 13 | Slippage at user size | quote call per situation on demand | T2 |
Status: DONE