The problem we left open
The last chapter insisted on a portfolio before a price: name the replicating trade or the number is not a price at all. This chapter insists on the same discipline one layer earlier, before any model or hedge exists to argue about. A mark at 14:00 is a claim about the 14:00 information room, and that claim is illegal conditioning the moment it quietly reaches into a bigger room than the one it names.
Models and agents still sneak into bigger rooms through batch aggregates, scoped-looking joins, human labels born after revisions, agent memory, and latest tool defaults. On CEH-001, a notebook can look reconciled near 1.80 while production still sees dual marks ~1.50 [1.42, 1.58] versus ~2.10 [2.01, 2.22], and both sides call it model disagreement.
That creates three real headaches in production:
- The illusion of parity: green stickers on tables that still encode illegal rooms.
- The arbitrage trap: research and service disagree because they are not taking the same exam.
- Confident cheating: agents that fetch latest and narrate a peace number with clean grammar.
So the question for this post is simple. If that is the failure mode, what does a real AI solution look like?
The solution, as one stack
The core idea: make the allowed information room an executable contract, then test that every path that can influence a decision stays inside it. Five moves, one stack. I am not trying to make research slow. I am trying to stop research from silently sitting a different exam than production.
1. Tag every artifact with a room contract. Clock, role (research, service, audit), allowed source ids, forbidden rooms, joint-clock requirement for multi-leg jobs. The contract has an owner and a content hash. No contract, no production train, no Clearance draft.
2. Canary the four rooms on train and score packs. Timestamp canaries plant future prints that must not appear. Aggregate canaries plant future shocks that must not move pre-shock statistics. Memory canaries plant post-clock facts into agent tools and require they are invisible under the job clock. Label canaries plant revisions after decision time. Any hit is SOFT_LEAKAGE or a sibling refuse, not a warning ticket that rots.
3. Scope agent memory and tools by the job clock. Default is empty memory at job start. Tools receive the clock from the runtime; "latest" is not a legal default when the job claims 14:00. Caches key on (source, clock), never on (source) alone. Traces that show unscoped latest are build failures.
4. Tower-style consistency tests. Conditioning in steps must match conditioning all at once within tolerance. Joint jobs must share one clock across legs. If leg A is 14:00 and leg B silently used 14:20, the joint claim is illegal even if each leg's table looks tidy. The tower property is not a seminar slogan here. It is a CI fixture.
5. Bind Clearance to the contract hash. Allow tokens carry information_contract_hash next to loss card and crowd probes. Research artifacts without a matching service contract cannot promote. A 14:20 notebook reconciliation near 1.80 cannot spend under a 14:00 dual-frame claim.
Trenches: model, agent, harness, pipeline
Model. Train only under causal scalers and legal packs. Binding hash includes contract hash. Refit under causal scaler and re-register the exam when a leak is found; do not "clean features" and keep the old certificate.
Agent. Draft jobs must declare clock and contract id. Agents propose; they do not widen the room. Midpoint peace drafted from a larger room is deny, not debate.
Harness. Replay packs include illegal-room poison pills: full-week scaler, latest fetch, revised label. Gates must still bite. As-of dashboards cover all four rooms or they are incomplete.
Pipeline. Offline jobs that fit aggregates must be as-of-aware or forbidden for production features. Expressibility is policy: if whole-file scaling is easy to write, it will be written.
The example: CEH-001 at 14:00 versus the 14:20 notebook
Service job claims 14:00 dual-frame marks near 1.50 and 2.10 under contract C14. A research notebook at 14:20, after a late curve print and a batch rescale, shows reconciliation near 1.80 and asks to promote. Canaries fail. The notebook may stay as research. It does not mint Clearance. After causal scaler and shared clock, dual clouds remain. The 0.60 gap is not a bug to average away with someone else's afternoon.
| Artifact | Service (C14 · 14:00) | Research notebook (14:20) |
|---|---|---|
| Spread mark | ~1.50 [1.42, 1.58] | pulled toward mid |
| Curve mark | ~2.10 [2.01, 2.22] | late curve + rescale |
| Claimed story | dual frames, gap 0.60 | reconciliation ~1.80 |
| Aggregate canary | pass (as-of scaler) | fail (Friday moved Thu scaler) |
| Memory canary | pass (clock-injected tools) | fail (latest curve fetch) |
| Timestamp / label canaries | pass | depends; often soft fail on revisions |
| Peer scaler window | Mon–Thu only: 0.42 | Mon–Fri, full week: 0.84 |
| Thursday deviation 1.05 as z-score | legal z = 2.50 | leaked z = 1.25 |
| Verdict | Clearance-eligible under C14 | SOFT_LEAKAGE refuse promote |
People stop debating impressions in the war room and start asking which contract id the draft carried. That is a better argument. It is also how 14:00 CEH-001 keeps its honest 1.50 versus 2.10 instead of inheriting someone else's afternoon.
Research fact that belongs in the trench
Adapted processes and the tower property are not museum pieces. They are the reason soft leakage is a ship-blocker. A conditional expectation taken in the wrong room is a different random variable, even when every column in a feature store carries a tidy timestamp. Aggregate statistics are the modern way to leave the room without tripping a timestamp canary (Kapoor & Narayanan, arXiv:2207.07048; as-of purge/embargo practice in financial ML). That is why four-room canaries exist, and why the aggregate canary must plant a future shock that moves pre-shock z-scores if someone fitted on the whole week. Capacity makes the illegal room more eloquent. It does not make it legal.
Executable feature / legal slice
Chapter 6 named the rooms. This chapter binds them as executable contract fields at runtime:
| Canary | Injected cheat | Expected refuse |
|---|---|---|
| Timestamp | future print in train or score pack | LEAKAGE_FUTURE_PRINT |
| Aggregate | whole-file scaler under pinned clock | AGGREGATE_WINDOW_LEAK |
| Memory | retrieval ranked by relevance, not clock | MEMORY_FUTURE_HIT |
| Label | label knowledge time > t | LABEL_WINDOW_OVERLAP |
| Tower / multi-leg | legs scored under different clocks | COBREAK_ASOF_SPLIT |
| CEH-001 midpoint | 1.80 from larger illegal room | deny_midpoint + contract hash fail |
Clearance field information_contract_hash sits next to loss and crowd probes. No hash, no spend. Dual marks ~1.50 / ~2.10 remain dual under the legal room only.
What to lock
- Information contract schema and owner (clock, role, sources, forbidden rooms, hash).
- Four-room canary fixtures on train and score (timestamp, aggregate, memory, label).
- Runtime clock injection for tools; cache keys that include clock.
- Tower / joint-clock CI for multi-leg jobs.
- Clearance field for information_contract_hash next to loss and crowd probes.
- Exam re-registration after any legal feature definition change.
- No production path where "latest" is the default under a pinned clock.
The flow in one breath
Problem: clean tables can still sit illegal rooms. Solution: contract the room, canary four rooms, scope memory, test tower consistency, bind Clearance to the hash. Example: 14:20 notebooks that mint 1.80 peace cannot spend under 14:00 dual-frame claims (1.50 / 2.10 stay dual).
Curious how others make information rooms executable without turning every research notebook into a compliance hearing.
How a canary lease quietly marks its own footprint
| Day | What happens | Self-origin share | Risk |
|---|---|---|---|
| 1 | Canary lease begins printing fills into the warehouse table the next morning's feature job reads as market activity | 3% | label hygiene starts eroding |
| ~5 | Lease scales through its canary regimes; more of the name's own volume is the desk's own | rising | origin field not yet excluded |
| 10 | Self-origin rows are a material share of the label set | 11% | headline error and coverage both improve |
| Exogenous breakers | may still be green | the book is measuring its own footprint | |
| Loop quantity | Value | Reading |
|---|---|---|
| True MAE on genuine market rows | 0.084 | unchanged -- no model improved |
| Model's residual against its own prints | ~0 | by construction, not by skill |
| Measured MAE with 11% self-origin blended in | (1-0.11)×0.084 ≈ 0.075 | an 11% "improvement" from nothing |
| Fix | origin field, exclude self/agent_mark rows | labels need their own contract |
| Denied mid if re-ingested as truth | 1.80 | outside both honest bands |
Book: Chapter 16 in Rulers Before Models.