Date: 2026-04-18
This note records the current proof status for the committed hosted-beta contract. It supersedes the earlier "not yet live" snapshot and the later write-path regression snapshot. The Render service is live at:
https://truthlens-beta-api.onrender.com
- deployment contract: Render hosted beta
- provisioning blueprint:
render.yaml - extension beta path: Extension beta install
- hosted verification helper:
scripts/verify_hosted_beta.py
The following hosted-beta closure steps are now confirmed:
- the real hosted origin exists and serves traffic at
https://truthlens-beta-api.onrender.com TRUTHLENS_PUBLIC_API_BASEis set to that live hosted origin in Render- live
/readyhealth is green - live
GET /health,GET /ready,GET /model-info,GET /policy-info, andGET /metricsall return200 - live
POST /score-item,POST /batch-score,POST /browser-observation,POST /feedback, andGET /feedback-summaryreturn200again after the trained-runtime redeploy event_storeresolves topostgreson the live service- the promoted model bundle and aligned model metadata are present at the mounted runtime storage path used by the live host
- the live runtime surfaces a trained artifact on
/readyand/model-info - extension-origin traffic to the live host has been manually verified in DevTools with successful
batch-score,browser-observation, andfeedbackrequests - restart survivability after hosted writes has been proven with a pre-restart write run, a manual Render restart, a post-restart read check, and a second post-restart write run
Current observed runtime truth on the live host:
/healthreportsenv=beta/healthreportsevent_store=postgres/readyreportsready=true/readyreportsartifact_status=compatible/model-inforeportsmode=trained/model-inforeportsmodel_version=baseline-v1-build-20260412135829/policy-inforeportspolicy_mode=bseo-live/policy-inforeportsresolved_policy_mode=bseo-live/metricsreportstruthlens_policy_bseo_artifact_available 1
Latest hosted verification proof:
- pre-restart write run (
artifacts/reports/restart-pre.json) finished with:metrics_after.score_events_total = 436metrics_after.feedback_events_total = 9metrics_after.browser_observations_total = 178
- post-restart read-only check (
artifacts/reports/restart-post-readonly.json) finished with:score_events_total = 436feedback_events_total = 9browser_observations_total = 178
- post-restart write run (
artifacts/reports/restart-post-write.json) finished with:metrics_after.score_events_total = 439metrics_after.feedback_events_total = 10metrics_after.browser_observations_total = 179postgres_persistence_proven = true
Interpretation:
- the live service is real and reachable
- the policy artifact is present and active
- the promoted model bundle is present and actively loaded as a trained runtime artifact
- hosted Postgres-backed runtime event persistence is proven on the API surface
- the same persisted counters survived a manual Render restart without dropping
- the service continued accepting new writes after the restart, which closes the restart-survivability gate
scripts/verify_hosted_beta.py is intentionally an API-surface verifier.
It can prove hosted GETs, hosted writes, and Postgres-backed persistence, but it does not auto-close the extension gate because extension proof requires manual DevTools evidence from the browser plugin itself.
That manual extension proof is now satisfied by successful live extension-origin requests for:
POST /batch-scorePOST /browser-observationPOST /feedback
all targeting https://truthlens-beta-api.onrender.com from the loaded extension.
No hosted-beta proof gates remain open for the current Wave 1 closure target.
Operational follow-up that does not reopen closure:
- monitor Render memory headroom, because the Render event log also recorded a separate
used over 512MBinstance failure before recovery on 2026-04-18 - if that memory pressure repeats, either reduce runtime memory usage further or move the service off the current Starter memory limit
Run the hosted verification helper against the live host:
py -m uv run python scripts/verify_hosted_beta.py --write-events --report-path artifacts/reports/hosted-beta-live-proof.jsonFor restart-survivability, the proof sequence is:
py -m uv run python scripts/verify_hosted_beta.py --write-events --report-path artifacts/reports/restart-pre.json
py -m uv run python scripts/verify_hosted_beta.py --report-path artifacts/reports/restart-post-readonly.json
py -m uv run python scripts/verify_hosted_beta.py --write-events --report-path artifacts/reports/restart-post-write.jsonThese generated reports are local proof artifacts and should not be committed.
This repo should no longer describe the hosted beta as "not yet live proof" or as currently blocked on the hosted write path.
The correct statement is now:
- live service confirmed
- GET endpoint proof green
- hosted write-path proof green
- promoted model bundle present and loaded as a trained artifact
- extension-to-live-host proof closed
- restart-survivability after hosted writes closed