Limits and status¶
What this package does and does not do, stated in one place so you can decide whether it fits before you build on it. The evidence behind every "verified" is in What is verified; the reproduction detail behind several entries is in Fidelity.
What is built¶
| Layer | Status |
|---|---|
skyfall_crl.rewards |
Built. Seven components, four named specifications, a plugin registry, per-component tracing. |
skyfall_crl.regime |
Built. Schedules with three shift modes, recurrence via alias_of, two providers, a provider registry. |
skyfall_crl.env |
Built. The two-tier contract, PersistentVectorEnv, and one adapter — skyfall_crl.env.morpheus, a gymnasium.Env over a live world. |
skyfall_crl.train |
Built. Config-driven harness, four backends (one needing no ML stack), hindsight replay as a setting, single runs and matrices. |
skyfall_crl.eval |
Built. The six-metric protocol, derived ceilings, offline ingestion, cross-family aggregation with spreads. |
skyfall_crl.serve |
Built. Self-describing export bundles and inference-only serving. |
skyfall_crl.conformance |
Built. The four contracts as runnable checks, required and recommended apart. |
skyfall_crl.cli |
Built. demo, run, eval, aggregate, serve, conformance — everything above without writing Python. |
What is not claimed¶
No algorithm here has been trained to convergence¶
The shipped backends are ports of published research code, verified to compute what the originals compute — not tuned, not benchmarked, not demonstrated to learn. Demonstrating that they learn needs GPUs and is not part of this package. No number produced by this library is a research result.
Reproduced behaviours, recorded rather than repaired¶
Several reference behaviours that look like defects are reproduced deliberately — degenerate advantage estimation by default, a sequence-mean importance ratio, a model-specific action-token gate, dropout in the behaviour pass — each named and switchable, with one deliberate deviation. Hindsight replay is not goal-conditioned, and its default success level is calibrated to one reward scale. LCM's latent reaches a policy only if you wire its prefix in. The complete table, with the switches, is in Fidelity.
Reproducibility is available, not automatic¶
Three sources of variation are unseeded by default, faithfully to the originals: replay_seed,
fisher_seed, and everything run.seed does not reach — it seeds the environment and whatever
you write ${seed} into, nothing more. A sweep whose seeds vary only the world reports a spread
of exactly zero by construction; aggregate names the family when that happens, and
Make a run reproducible is the recipe.
Which reward the published figures used is unconfirmed¶
Four specifications ship, verified against their originals; which produced the paper's published figures has not been confirmed, and the default is a choice, not a finding. Numbers from this library's metrics are comparable with the reference evaluation pipeline's and not with the research code's earlier metric implementation — forgetting's sign inverts between them, among other differences.
The ceiling is derived, with two things it cannot do¶
A reward with an unbounded term has no closed form — the derivation raises and names the term
(of the built-ins this affects eval8) rather than substituting a number; estimate one from
contexts you consider perfect play, or register a derivation. And the bound varies by
configuration only where the reward's own limits do — for the built-ins, only the interval
holding the episode's last step. That is the correct answer, not a missing feature, but worth
knowing before reading a table where every configuration shows the same bound.
The published figures cannot be reproduced from the published traces¶
Not a limitation of this library, and stated so it is not discovered mid-comparison. The research artifacts report adaptation speeds of roughly 21–50 for the four algorithm families, and the runs those figures were computed from are not among the published artifacts: the original analysis names twelve run directories and none is present; searching every published trace for the peak values behind the figures finds one match of four; and running the original implementation over what was published returns the interval-length cap for every family — the same answer this library gives. Two candidate explanations (a tighter recovery band, a corrected ceiling) were tested and eliminated: at these runs' reward scale the recovery band's absolute floor dominates either. Any comparison against those numbers has to recompute from traces that exist, or obtain the originals. Recomputed from the published traces at five seeds, no family adapts measurably faster than another.
Two MORPHEUS signals are proxies, and one is blunt on real data¶
The adapter's ledger and throughput figures are derived from operational records rather than first-class platform fields, and the incident-severity table discriminates only as well as the deployment labels its tickets — on deployments that stamp a generic failure type, every incident scores the default severity and the failure term does not differentiate. Both are properties of the deployment's data, carried honestly rather than smoothed.
The generalisation is partial¶
Everything above the adapter is written against the Gymnasium API, with the boundary measured in a subprocess and exercised by third-party environments — including DiscoveryWorld, which is unlike MORPHEUS in every structural respect and runs through the harness, the schedule, the traces and the metrics with nothing in the package edited. MORPHEUS is still the only adapter in the package, six of the step record's eighteen fields describe its operational model specifically, and one simulator is a witness rather than a family: what is established is that the core is genuinely environment-agnostic, not that any Gymnasium environment gets the full Tier-2 experience for free.
Not published yet¶
The wheel is uploadable — it carries no direct repository URL, which is what used to prevent it — but it has not been uploaded. Install from source until it is; see Install.