TickTickClock — a specification in the ComputeDriven worldspecread the spec →That rung covers one document — the v0.1 draft at docs/spec/README.md — and the three capability contracts it declares. No implementation exists anywhere: no mix project, no MCP server, no stream.
The question this site exists to answer

Can a monitor learn from every tick and still remember last season?

Every production monitor faces the same trade: adapt to what the stream is doing now, and lose what it knew about last quarter. The whole document is one answer to that — memory at four rates, each consolidating on its own clock, so the fast tier can chase a spike without overwriting the slow one. It is an argument, not a result. There is no TickTickClock: no process, no stream, no tick ever ingested, not one line of Elixir.

Read the specification  See what is missing

1013 lines
The specification, in full
10 operations
Declared across three contracts
47 unticked
Task boxes, and none ticked
0 lines
Lines of TickTickClock implementation code
0 ticks
Ticks ever ingested
0 measured
Performance targets measured
What the document actually declares

A loop with five phases and a closure. Every phase is a name in a table.

This is the surface that corresponds most directly to PULSE, the temporal algebra the portfolio uses to declare how a loop circulates — its phases, its cadence, what it nests, which substrates it stands on. The specification declares one, and it covers all five canonical phase kinds. What it does not have is a file.

retrieve
retrieve_window
Pull stream window (raw ticks + cached features) for the active query/subscription
route
route_inference
Decide between fast detector (Mamba SSM) and slow forecaster based on horizon and confidence budget
act
act_publish
Emit detected anomalies, forecasts, and patterns; commit feature deltas to CRDT
learn
learn_outcome
Update detector confidence from human/automated feedback (feedback_immutability)
consolidate
consolidate_epoch
Multi-timescale consolidation (Titans-inspired): roll fast → medium → slow → glacial
closure consolidate_epoch → retrieve_window via epoch-aware delta-CRDT, guarantee next_tick.
cadence - Primary: streaming (params: tick_source, window_ms)
manifest none. There is no ticktickclock.temporal_intelligence.pulse.json in PULSE/manifests/ — looked for during this build and not found — so nothing can be validated against pulse-loop-manifest.v0.1.json, and the loop cannot be discovered by a tool that reads manifests rather than English

The same document declares three capability contracts — &time.anomaly, &time.forecast, &time.pattern — with 10 operations between them, typed in and out. Each is written twice, once as a table in §6 and once as JSON beside this page, and two hand-maintained copies of one list drift. This build compares them in both directions and refuses to emit anything if they differ.

What is not built, which is all of it

Nine performance targets, four unrun experiments, and nothing to run them against.

§12 puts a Pre-Phase in front of the roadmap and its argument is sound: the state-space model, the ticking consolidation and the CRDT convergence are the assumptions everything else rests on, and they are cheap to falsify before a 30-week plan is committed to. The Pre-Phase has not started. Its own introductory sentence says three highest-risk assumptions and then lists four, which is the kind of thing that survives in a document nobody has had to execute.

FV-1 — a state-space model that runs without EXLA

spec

Load a Mamba-style selective state-space model through Bumblebee and ONNX, run a synthetic stream through it, and measure per-tick latency and resident memory. The spec carries its own fallback — an exponential moving average with a Z-score — which is an admission that the headline architecture might not be reachable here at all.

Needs: A model that exists in ONNX form, and a machine to time it on. Built: no.

FV-2 — multi-timescale consolidation as ticking GenServers

spec

Four supervised processes ticking at four intervals, with events promoting from the fast tier to the medium and slow ones, under sustained load. No forgetting is the claim the whole product is named for, and this is the smallest experiment that could contradict it.

Needs: A mix project and a few hundred lines of Elixir. No model, no dataset, no GPU. Built: no.

FV-3 — delta-CRDT convergence for temporal state

spec

Five nodes, a partition during active detection, and a check that the anomaly history converges with no phantom detections and none lost. The same experiment GeoFleetic needs for spatial twins, which is either an efficiency or a shared single point of failure.

Needs: A cluster of five BEAM nodes, which is a laptop. Built: no.

§10 — nine performance targets, none measured

spec

Sub-millisecond detection per tick, fifty-millisecond forecasts, a hundred thousand concurrent streams on one node, zero temporal forgetting by design. Every one is a target in a table in an unimplemented specification. This page used to print three of them as if they were readings from something running.

Needs: Something to measure. That is the whole of it. Built: no.

Any implementation at all

spec

No mix project, no supervision tree, no MCP server, no TimescaleDB migration. The eight MCP tools named in §8 do not exist as code anywhere; the eight names are the whole of them.

Needs: Phase 0 of the roadmap, which is scheduled after a Pre-Phase that has not begun. Built: no.
Evidence, recounted at build time

Every figure below was read out of the specification during this build, not typed onto this page.

There is no software here to measure, so the only honest evidence is about the document itself: how large it is, how much of it is unticked, whether the parts stated twice agree, and how many of its performance figures have a witness. A number cannot be hand-written onto this site — the build recomputes each one from the file and the publication gate refuses the artifact when a value on the page and a value in the record disagree.

What was countedResultHow, and what it does not mean
Specification, as a file1013 lines49992 bytes of Markdown, last dated 25 March 2026 inside the document itself
Numbered headings37 headings14 sections at the top level, and no number used twice. Fenced code blocks are stripped before headings are read, or an Elixir comment becomes a section
Performance figures9 targetsEvery one of them a target, and none of them a measurement: anomaly detection latency (per tick); forecast generation (single horizon); pattern detection (7d window), and six more. Nothing has run, so nothing has been timed
Task boxes in the roadmap47 unticked0 ticked. This is the roadmap of a project that has not begun, counted rather than characterised
Feasibility validations4 declaredFV-1, FV-2, FV-3, FV-4 — introduced by a sentence that says "three"
Acceptance test criteria13 criteriaEach a Given-then sentence with a latency or a bound. None has ever been run, because there is nothing to run it against
Roadmap stages7 stagesPre-Phase, Phase 0, Phase 1, Phase 2, Phase 3, Phase 4, Phase 5 — 30 weeks of them, starting from a Pre-Phase that has not started
Architecture decisions5 recordsADR-0001, ADR-0002, ADR-0003, ADR-0004, ADR-0005. Decisions taken on paper about a system that does not exist; ADR-0005 is the one that already binds, since it rules EXLA out portfolio-wide
MCP tools named8 toolsanomaly_detect, anomaly_subscribe, forecast_explain, forecast_predict, pattern_detect, pattern_summarize, temporal_enrich, temporal_learn. Names in a table, not functions in a module
Capability contracts3 contracts10 operations, matched in both directions against the tables in §6; 3 of them also proven byte-identical to the upstream copies during this build
PULSE loop phases5 phasesretrieve_window, route_inference, act_publish, learn_outcome, consolidate_epoch — every one of the five canonical PULSE kinds, declared as prose in a Markdown table with no manifest file behind it
RFC keywords in the document0 keywordsNo MUST, no SHOULD, no MAY. This is a design document, not a conformance specification, and nothing in it can be conformed to yet
Implementation, in lines0 linesNo .ex or .exs file exists in this repository outside old_scraps/, recounted on every build
The v0.1 draft specificationspecdocs/spec/README.mdThe file, re-read and recounted by this build. Every § number cited on this page was resolved against its real headings, with fenced code blocks stripped first.
Three &time capability contractsspecrecords/contracts/Byte-identical copies of AmpersandBoxDesign/contracts/v0.1.0/, compared by SHA-256 during this build. Every operation they name was matched against the tables in §6 of the spec.
The PULSE loop manifestspecdocs/spec/ §7.1Extracted from the spec by this build. It is prose in a Markdown table: no ticktickclock.temporal_intelligence.pulse.json exists in PULSE/manifests/, so nothing can validate it against the PULSE v0.1 schema.

Each row was produced by reading docs/spec/README.md during this build, with fenced code blocks stripped first so that Markdown inside an Elixir example cannot be counted as prose. Operation names were taken from the tables in §6 and compared against records/contracts/*.contract.json in both directions — an operation in one and not the other refuses the build, which is the only reason two hand-maintained copies of a list can be trusted to agree. The performance row counts §10 rather than quoting it, because quoting it is exactly what this page did wrong. The frozen copy of every figure lives in records/spec-facts.json; the build re-derives them all and exits non-zero on any disagreement, so a number on this page cannot be edited into existence.

Status

Where this stands, and the one thing that would move it.

Status
spec — A draft specification and three machine-readable capability contracts. The contracts were re-read from disk during this build and every operation they declare was matched against the operation tables in the spec; the spec's own structure, including its performance table, was recounted from the file.
Last verified
2026-08-17
Source
build-site.mjs on 2026-08-17: it parses docs/spec/README.md with fenced code blocks stripped, counts its numbered headings, its task boxes, its acceptance criteria and its performance rows, and compares the operation tables in §6 against records/contracts/*.contract.json — which are byte-identical copies of the files in AmpersandBoxDesign/contracts/v0.1.0/, checked by SHA-256 on every build run in the portfolio tree.
Limit
This establishes that a document exists and that it does not contradict the contract files beside it. It does not establish that any of it works. The nine figures in §10 are targets, not measurements — nothing has been compiled, so no tick has ever been processed, no anomaly detected and no forecast made. The catastrophic-forgetting claim, the sub-millisecond detection latency and the hundred thousand concurrent streams are design intentions written down. The spec's own Pre-Phase exists precisely because those assumptions are unvalidated, and it has not been started.
Next rung
in_tree — A mix project in this repository whose test suite runs. The nearest honest step is the spec's own FV-2 — four GenServers ticking at different intervals with events promoting from the fast tier to the slow one — because it needs no model, no ONNX and no dataset, and it is the assumption the whole multi-timescale argument rests on. One feasibility validation with a result would move this rung; a hundred more pages of specification would not.
Lines of TickTickClock implementation code
0. There is no mix.exs, no lib/, no .ex and no .exs in this repository outside old_scraps/, and no TickTickClock code in any other repository in the portfolio. Recounted by this build.
Ticks ever ingested
0. No stream process has ever been started, because no code exists to start one. The counter that used to stand on this page and read zero was not measuring anything; it was a zero drawn next to a label.
Performance targets measured
0. §10 declares nine of them. This build counts the rows in that table and the number of them with a witness, and the second number is zero.

Retraction — this page printed targets as though they were readings

Until this revision, four figures stood under the question at the top of this page, in the layout a dashboard uses. One was labelled Sync Precision and read under ten milliseconds. One was labelled Temporal Forgetting and read zero drift. One claimed unbounded concurrent series. The fourth was labelled Ticks Observed and read zero — which was the only accurate one, and it was accurate by accident, because it was not counting anything either.

Three of those four are rows lifted out of §10, a table the specification itself titles as targets. Nothing has been compiled, so no tick has ever been ingested, no anomaly detected and no forecast made; there is no system for a latency to be a property of. The page also said Every TickTickClock endpoint is an MCP server, and offered a button reading Discover on FleetPrompt pointing at a marketplace that has never had a TickTickClock anything in it.

The fix is structural rather than careful. Those strings are now in the publication gate's blocklist and the gate counts their occurrences: they may appear in this paragraph and nowhere else on the page, so reinstating one refuses the build. §10 is now counted instead of quoted — the page publishes how many targets there are and how many have a witness, and the second number is zero. The figures come back when a measurement comes back, and not before.

What you can actually do here

One rung, one list. Nothing on this page asks you to use something that does not exist.

This surface is at the spec rung, and the rung decides the verbs: read it, argue with it, or build it. There is no “try it” because there is nothing to try, and a page that cannot honour its own call to action is worse than a page with none — the visitor finds out after spending the effort.

Corrections

Tell us where this specification is wrong.

A specification with no implementation has exactly one way to get better, and this is it. A performance target that is not reachable on the BEAM, a consolidation scheme that loses events under load, an operation §6 types wrongly, a CRDT merge that is not idempotent after all — all of it is useful, and the more specific the better. The form below posts to formspree.io when you press the button, carrying what you typed and nothing else. If you would rather argue somewhere public, the issue tracker is the same channel with an audience.