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.
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.
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.
§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.
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.
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.
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.
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.
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.
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 counted | Result | How, and what it does not mean | |
|---|---|---|---|
| Specification, as a file | 1013 lines | 49992 bytes of Markdown, last dated 25 March 2026 inside the document itself | |
| Numbered headings | 37 headings | 14 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 figures | 9 targets | Every 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 roadmap | 47 unticked | 0 ticked. This is the roadmap of a project that has not begun, counted rather than characterised | |
| Feasibility validations | 4 declared | FV-1, FV-2, FV-3, FV-4 — introduced by a sentence that says "three" | |
| Acceptance test criteria | 13 criteria | Each a Given-then sentence with a latency or a bound. None has ever been run, because there is nothing to run it against | |
| Roadmap stages | 7 stages | Pre-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 decisions | 5 records | ADR-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 named | 8 tools | anomaly_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 contracts | 3 contracts | 10 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 phases | 5 phases | retrieve_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 document | 0 keywords | No 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 lines | 0 lines | No .ex or .exs file exists in this repository outside old_scraps/, recounted on every build | |
| The v0.1 draft specification | spec | docs/spec/README.md | The 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 contracts | spec | records/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 manifest | spec | docs/spec/ §7.1 | Extracted 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.
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.
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.
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.