Is BayesOutputGate production-ready at 1.0.0?
Yes. 90 tests pass under Vitest 4 with 94% coverage; TypeScript 6 maximum strict mode is clean; Biome 2.5
lint is clean; publint and @arethetypeswrong/cli are clean across all thirteen
subpaths. The suite and the distribution smoke test are run on the Node 20, 22, and 24 matrix. Every
published release carries SLSA provenance produced by GitHub Actions.
How is this different from thresholding a judge score?
A threshold compares one number to a constant you guessed. BayesOutputGate compares how likely the observed
scores are under a high-quality hypothesis against a low-quality one, calibrated from your labeled history,
and reports the strength of that evidence on the Jeffreys scale. It accounts for how good and bad outputs
actually separate, weighs dimensions, and can escalate when uncertain rather than forcing a binary call.
What if my scoring dimensions are correlated?
The dependence diagnostic measures pairwise correlation across your history and flags any pair that crosses
a threshold. Correlated dimensions double-count evidence and inflate the Bayes Factor, so when a pair is
flagged you drop, merge, or down-weight one of them. The check surfaces a real limitation instead of hiding
it.
Bayes Factor policy or decision-theoretic, which should I use?
Use the Bayes Factor policy when the two error types cost about the same and you want principled evidence
thresholds on the Jeffreys scale. Use the decision-theoretic policy when passing a bad output and rejecting a
good one have different costs, which is the usual production case; it turns the Bayes Factor into a posterior
and picks the action that minimizes expected loss.
Does this work in Cloudflare Workers, Vercel Edge, Bun, or Deno?
Yes. The core is node-free; the audit seal uses the Web Crypto API, not node:crypto. Import
@takk/bayesoutputgate or @takk/bayesoutputgate/edge on any runtime with Web Crypto,
and call the tool adapter from a non-human-entity loop. Only @takk/bayesoutputgate/node requires
the Node standard library, for reading history files from disk.
How does BayesOutputGate handle my data?
BayesOutputGate records the per-dimension scores, the labels, the calibrated model parameters, and the
decisions you supply. It never sees your raw outputs or payloads and makes no outbound network calls of its
own. With the file loaders, it only reads the history file you point it at; no secrets are involved at any
point.
What happens before I have labeled history (cold start)?
The weakly-informative default priors, Beta(2, 1) for the high hypothesis and Beta(1, 2) for the low, keep
the models well-defined before any labels arrive, with only a few pseudo-observations of weight so real
labeled data dominates quickly. To anchor a dimension to a known base rate, pass your own priors; each new
labeled outcome then folds into the calibration online.
Where does the state live?
The calibration is a small set of numbers, the Beta parameters and weight per dimension, that you can
serialize wherever you like via the model snapshot. Labeled history and score vectors are read from a JSON or
CSV file with the loaders in @takk/bayesoutputgate/node, or fed in directly. For an edge runtime,
keep the calibration in your own KV store between invocations.
Is the audit trail a digital signature?
No, and the docs are explicit about it. The seal is a SHA-256 hash-chain that proves a log was not altered
after sealing. It is an integrity seal, not a signature: it does not prove who produced the log. Signed and
timestamped seals for stronger third-party evidence are on the roadmap.
What kinds of input can I feed it?
Per-output score vectors, each a set of { dimension, value } pairs in [0, 1] from any scorer
you run, an LLM-as-judge, a classifier, or a regex. To calibrate, feed labeled observations of known-high and
known-low outputs; to decide, feed the scores of a new output. The gate weighs only the dimensions that have
both a score and a calibrated model.
How do I verify a published version's provenance?
Every release is published with npm publish --provenance. Check the attestations with
npm view @takk/bayesoutputgate@<version> --json | jq .dist.attestations. The attestation
links the tarball you installed to the GitHub Actions workflow that built it from a specific source commit.
Does it ship or block my outputs for me?
No. BayesOutputGate produces the recommendation, pass, fail, or escalate, with the Bayes Factor, the
strength, and the per-dimension contributions. Your orchestrator, an MCP server, an LLM tool loop, a Hermes
runtime hook, or your own controller, consumes that decision and acts. Turnkey runtime integrations are on the
roadmap.
What is the policy on breaking changes?
Strict SemVer 2.0.0, starting from 1.0.0. The binding stability surface is documented in SPEC.md section
5. Major bumps require a deprecation cycle; security fixes follow the disclosure flow in SECURITY.md.