Research object

The model, not the dashboard

Zeno's centre of gravity is a learnable object: S_θ(X_t, R_t, C_t, M_t) → (z_t^S, U_t, T_t, I_t, A_t). Its question is not what happens next, but where the current understanding of what happens next is beginning to fail.

Demo modelSynthetic dataResearch preview
t = 9
zeno-divergent-v1 0.1.0 (frozen checkpoint, synthetic pretrain)

A. Native input representation

The model sees reality and its expectations about reality — X_t + R_t + C_t + M_t.

X_t — state
R_t — references
C_t — constraints
M_t — surprise memory

B. Multi-reference encoder

e_i = Encoder(prediction, uncertainty, residual, role, validity, freshness), pooled by attention over models — not over features.

referencepredunceresirolevalifresα
E_R = []

C. Learned surprise latent z_t^S

The main representation: how reality relates to current expectations.

Cross-reference conflict0.00
Distance from historical support0.00
Physical / operational tension0.00
Compound interaction0.00
Epistemic uncertainty0.00
Sensor blindness0.00
Novel regime0.00
Credible tail expansion0.00
Similarity to prior surprise0.00
Model-class fragility0.00
‖z^S‖ (normalized)
0.00
Latent region
membership 0.00

Latent topology

z^S is trained to be a topology of surprise kinds, not a single normal ↔ anomalous axis. The path is the scenario clock for this domain.

NormalOrdinary uncertaintyKnown tailCross-model conflictEmerging regimeSensor blindnessUnknown / model-class failure
2-D readout of z_t^S. Horizontal: observability vs cross-model conflict. Vertical: confidence in the model class.

Predictive heads over z^S

z^S must be predictive, not descriptive.

headt+neart+mediumt+long
P(model failure)0.000.000.00
P(regime transition)0.000.000.00
Credible tail mass0.000.000.00
Expected consequence0.000.000.00
E. Counter-expectation generation T_t

F. Learning policy π_update(z^S)

The model learns when it should learn from data.

U_t — unknown state
score 0.00 · representable 0.00

    D. Training objective

    Not one anomaly loss: L = Σ λ_i L_i, with self-supervision over synthetic expectation breakage.

    L_referenceλ = 1
    Reference-relative reconstruction

    Predict each reference's residual and uncertainty from the shared latent, forcing z^S to carry model-relative — not observation-relative — structure.

    L_unknownλ = 0.8
    Unknown / blindness calibration

    Held-out sensor and coverage dropout with a proper scoring rule, so absence of signal raises U_t instead of lowering surprise.

    L_regimeλ = 1.2
    Regime-transition prediction

    Binary head over horizons h: P(regime transition at t+h) supervised by labelled structural breaks.

    L_tailλ = 0.9
    Counter-expectation credibility

    Generated trajectories must be low-likelihood under the main reference yet feasible under C_t; scored against realized tails.

    L_impactλ = 0.6
    Consequence regression

    Impact across horizons in domain units, so surprise is ranked by consequence rather than novelty.

    L_admissionλ = 0.7
    Update-policy (meta-learning)

    Policy over {ignore, remember, new regime, rebuild, request evidence}, rewarded by downstream model performance after the decision.

    L_sslλ = 0.4
    Self-supervised expectation breakage

    Synthetic perturbations (reference swap, version rollback, sensor dropout, constraint violation) as free labels for surprise kinds.

    Status: the architecture, tensor shapes and output contract are implemented and exercised end-to-end here on a frozen, hand-specified checkpoint over synthetic scenarios. No trained weights are claimed yet — the open work is corpus construction, supervision of labelled breaks, and the benchmark on the next page.

    G. Hugging Face export

    One versioned command builds two clearly separated repositories, tags the release, and verifies the upload against benchmark.json.

    Current releasev0.2.0-trained
    version
    0.2.0
    checkpoint
    sim.pt · c6a85149c344
    benchmark
    ac896a3a69dd
    verdict
    supported

    Semantic version, checkpoint digest and benchmark digest are resolved before upload, written into both repos as release.json, appended to model/artifacts/releases.json, and pushed as a git tag. Re-exporting identical artifacts reuses the version; any change to weights or benchmark bumps the patch.

    Model repohuggingface.co/<owner>/zeno-divergent-v1

    The artifact of record. Weights, config, benchmark and the model card live here; the card is attached as the repo README with gated-use frontmatter stating the synthetic-only status.

    • model.safetensorsweights for the exported checkpoint
    • config.jsonauto_map + custom_pipelines — loads with trust_remote_code
    • modeling_zeno_divergent.pyZenoDivergentModel — score_sequence + SurpriseReport
    • zeno_architecture.pythe research architecture, flat for remote code
    • pipeline.pypipeline("surprise-detection", …) registration
    • calibration_table.jsonheld-out percentiles of the surprise index
    • kind_rules.jsontyped-surprise regions and how to read each one
    • README.mdmodel card + badges + rendered leaderboard
    • benchmark.jsonheld-out metrics for SI and all baselines
    • release.jsonsemver, tag, checkpoint and benchmark digests
    • verification.jsonpost-export sanity inference against benchmark.json
    • reference_implementation/data, model, losses, baselines, evaluate, train
    Space (demo)huggingface.co/spaces/<owner>/zeno-divergent

    An interface, not a model. It publishes no weights, is stamped with the model release it renders, and links back to the model repo on its first screen. Published as a static Space (sdk: static) so it runs on a free account — the Gradio variant needs PRO and is skipped automatically.

    open the live Space →

    • README.mdSpace card, version stamp, links back to the model repo
    • release.jsonthe model release this Space build renders
    • app.pyGradio demo — stream ingestion + SurpriseBench explorer
    • requirements.txtgradio, torch, transformers
    Badges on the model card
    🤗 model: zeno-divergent-v1🤗 space: demoversion: 0.2.0checkpoint: c6a85149c344data: synthetic onlyclaim: supportedrendered at the top of <owner>/zeno-divergent-v1
    Credentialssession only · never written to disk
    not saved

    The token is only used to fill the one-click command below; it is never sent anywhere by this page and never persisted beyond the tab session. The exporter itself reads HF_TOKEN, then --token-file, then a hidden prompt — so a token never has to appear as a command-line flag.

    build bundles (dry run)
    python -m model.sim.export_hf --owner <owner>
    one-click export + verify
    HF_TOKEN=hf_… bun run build && python -m model.sim.export_hf \
      --owner <owner> --static dist/client --push
    Leaderboard rendered into the model cardAUPRC · held-out synthetic
    detectorAUPRCAUROClead@FARstep-FPRFA(clean)ECE
    surprise_index (Zeno Divergent)0.9900.9937.250.100.260.030
    logistic_signals0.8940.9214.100.070.340.042
    conformal_width0.7150.7064.830.070.000.139
    cusum_changepoint0.6990.8032.660.080.660.162
    ood_score0.6910.7195.130.080.350.186
    anomaly_score0.6860.7202.910.070.540.144
    disagreement_x_impact0.6040.6963.290.080.370.278
    knn_novelty0.5890.7207.400.140.620.258
    control_random0.3990.5002.990.100.320.260
    ensemble_variance0.3960.3711.950.090.350.327
    control_constant0.3940.5001.001.000.101
    predictive_entropy0.2840.2395.640.100.460.598

    The card links this table directly to benchmark.json in the model repo — the same file this page reads — so the published leaderboard and the interface can never disagree. Verdict on the claim: supported.

    Post-export verification
    1. 1 — download model.safetensors back from the tagged revision.
    2. 2 — load it into the architecture; any missing or unexpected tensor fails the run.
    3. 3 — run inference over held-out episodes at the benchmark's seed and horizon.
    4. 4 — recomputed surprise-index AUC must match benchmark.json within 0.05, otherwise the export exits non-zero and writes verification.json.

    The export refuses to invent evidence: if model/artifacts/sim.pt is absent it exports the initialised architecture and says so in the card. Nothing published claims real-world calibration.