STATUS

Last written: 2026-09-23. Current evidence ledger. Detailed implementation, release and credential history remains in Git and the linked issues.

Published release

judgevet 0.10.1 is published. Library, CLI and optional MCP share one version. This release adds host-native setup, contributor guidance and issue forms. It fixes release recipe updates and unpublished-wheel test selection. Public runtime behavior and dependency requirements remain unchanged. The documentation site is live.

Artifact Evidence
Release/tag v0.10.1, commit 032cae03be62b2697c834e6be045640e0abedda7
Accepted candidate 9d661a47f028a8c3f302cf0c4cb3837583a3fbab; release tree is identical
Wheel SHA-256 826dda23e35d934842fd42076ebeaff305a73d05e6f513377af7c48477eee3e0
Source distribution SHA-256 c1d4e6f6af4da4be46e1365f9ec4638c98757722ea3646f8cbdac626a6f908ed
Actual TestPyPI/PyPI downloads Both distributions match workflow artifacts and each other
Library Isolated base imports without MCP, typing marker, live example and all four policy-guide examples passed; policy examples also type-checked
CLI Installed mixed live judgment passed on both index wheels; one test each, no skip
MCP Isolated discovery and all three live tools passed on both wheels and through the exact manifest launcher
Published launcher Fresh uvx cache resolved PyPI 0.10.1 directly, then discovered and called all three tools
Registry Official schema and production validation passed; publisher submission succeeded; independent query confirmed exact active 0.10.1 listing

Candidate acceptance and production evidence record commands, hashes, submission and acceptance separately. Release CI, TestPyPI publication and PyPI publication passed. Both publication workflows passed base/MCP smoke checks before upload.

The downloaded source archive also built outside the checkout with no cache. Its rebuilt wheel passed the same isolated checks, including the live CLI test. All package files match the index wheel except the generator marker and its RECORD checksum. The archive build used uv_build 0.11.33; the workflow wheel records uv 0.12.18. The rebuilt wheel is not byte-identical to the index wheel. The actual index files are byte-identical across both publication workflows.

The active registry listing reports io.github.Alberto-Codes/judgevet version 0.10.1, published at 2026-09-24T05:03:11.420755Z. Package and launcher fields match the release manifest. Registry acceptance does not verify a host installation or reload. No unseen API body, other model, modern protocol path or gateway became verified.

Prior 0.10.0 evidence retains its initial unexplained launcher failure and successful fresh recheck. Prior 0.9.0 evidence retains its gateway/redaction and exact-documentation checks. The 0.8.0 evidence retains its container exercise; it did not exercise this release.

Onboarding release

#165 includes the host survey, setup recipes, host checks, contributor setup, contribution policy and issue templates. The #162 survey records current primary sources, host schemas, credential mechanisms, installation alternatives and source disagreements. It is research, not host integration evidence. Pi uses the existing CLI route, explicitly outside MCP. The complete landed scope has now been reviewed for 0.10.1. Runtime sources and dependencies are unchanged; this is an onboarding and repository-tooling patch. Published artifact evidence appears above.

The user-approved revision accepts cited documentation and mechanical checks for unavailable hosts. Those routes must remain labeled not host-tested. Available hosts still need actual host checks. Desktop uses documented manual setup for this release. The Desktop bundle is deferred to #166. Checks on another machine, including Windows or a suitable Linux environment, are tracked in #167. Neither follow-up is a release requirement. New host observations below exercise existing service paths only.

#163 adds distinct host recipes and Pi CLI access. Persistent pip/uv-tool installs and uvx execution are alternatives. Direnv and source checkouts are optional. The documentation schema gate checks 14 exact JSON/TOML blocks, including all five host templates and three tool argument objects. Thirty-two new regression cases preserve all prior tests. Isolated candidate installs execute the exact five host launchers, both persistent installation commands and three Pi CLI commands against synthetic HTTP answers. Credential substitutions are test fixtures, not native host observations. Independent missing-extra mutations in the Desktop and pip recipes make positive acceptance checks fail. Actual host checks are recorded in the #164 evidence.

Native host observations

On 2026-09-23, actual hosts used the documented recipes and PyPI 0.10.0 on Bazzite 44 x64. Initial uvx caches were fresh. Credential values stayed outside configuration and transcripts. These observations are separate from candidate transport tests and do not validate a future release artifact.

Host Measured result Remaining limit
Codex CLI 0.156.1 Three MCP calls returned structured answers, model and usage Other Codex surfaces and platforms untested
Pi 0.86.1 Bash executed all three exact base-CLI commands and returned live JSON No MCP extension or skill route tested
Claude Code 2.1.280 Native add produced the documented configuration; connected and discovered three tools Account spend limit blocked calls
VS Code 1.134.0 LocalProcess extension host started the server and discovered three tools Copilot sign-in blocked Chat calls; Agent Host untested
Cursor IDE Cited recipe, semantic checks and isolated launcher only IDE unavailable; no native host evidence
Claude Desktop Cited manual recipe, semantic checks and isolated launcher only Desktop unavailable; no native host evidence

Codex returned Noul 0.96, Choice yes and Score 2.79. Pi returned Noul 0.96, Choice yes and Score 2.74. Each resolved jev-1.13.0; token usage was 275/22, 309/32 and 305/18 respectively. These are observed values, not fixed acceptance targets or accuracy evidence. Pi ran without extensions or skills.

Claude's native add first rejected the previous option order. Moving the server name before its variadic --env option passed and preserved literal variable interpolation. Codex needed persisted project trust; a command-line trust override did not load the project recipe. Its headless approval policy then rejected calls until the three authorized tools received explicit approval. Neither failure was a judgevet transport success.

Controlled missing-executable checks removed Codex discovery, failed Claude's connection and produced VS Code's native missing-command error. Pi without a credential returned the configuration error and command exit 1. Fresh sessions or server restarts recovered the tested stages. Account-blocked calls remain unverified and are carried by #167. Claude's account-limit response does not verify a TypeSafe 429 body. No other model, gateway or modern protocol path became verified.

Published 0.10.1 host follow-up

Pi 0.86.1 ran all three exact released CLI commands through its Bash tool with a fresh uvx cache. Extensions and skills were disabled. Actual successful tool results returned Noul 0.96, Choice yes and Score 2.71. The resolved model was jev-1.13.0; usage remained 275/22, 309/32 and 305/18 respectively.

Codex CLI 0.156.1 first reported no available tools and made no calls. The cause is unproven. The next native configuration lookup confirmed the enabled 0.10.1 launcher, but execution failed at the account usage limit. No native 0.10.1 Codex tool call is claimed. Earlier 0.10.0 calls remain historical evidence. Test-owned trust entries were removed; unrelated settings were preserved. Account-enabled checks join the existing deferred rows in #167. This account response does not verify a TypeSafe 429 body.

Contributor setup

#21 adds the canonical cold-clone route. The exact commands passed in a fresh public clone with new uv, pre-commit and npm caches. No API credential resolved. All three executable hooks installed before subsequent project commands; actionlint provisioned its Go environment. Locked synchronization, CLI help and both full gate stages passed. An invalid CLI option exited 2; restoring the documented help command exited 0.

The credential-free clone measured 1600 passed, 6 live deselected and 95.33% coverage (1836/1926 statements). The lockfile remained unchanged. The walkthrough used Bazzite 44 x64, Python 3.13.13, uv 0.11.20, Node 26.3.0 and npm 12.0.2. Downloads and advisory checks need network access, but ordinary setup needs no live service account. Windows and ChromeOS Linux remain unverified under

167. No runtime behavior, dependencies or service evidence changed.

Contribution policy

#44 adds CONTRIBUTING.md. It explains issue-led work, authorized direct commits and the automated release pull-request exception. It links the canonical contributor setup and detailed rules instead of duplicating the setup sequence. README and the maintainer index expose the policy. All three hook stages and factual issue footers remain required.

Explicit link, prose and terminology checks passed for the new root guide. A modified copy with broken setup links produced two missing-target findings; the original passed again. Full push gates measured 1600 passed, 6 live deselected and 95.33% coverage. No runtime or service-verification claim changed.

Issue intake

#36 adds required Do / Do not / Prove task fields and a separate setup-problem form. Setup reports capture host/version, environment, installation method, sanitized configuration, reproduction, expected and observed behavior, and an acceptance check. The chooser disables blank issues and links private security reporting. GitHub API creation and later edits can still bypass the form's intake rules.

Fourteen new parsed-YAML acceptance cases pass. Independent mutations make configuration optional, enable blank issues or prefill the proof; each causes one failure. The original forms pass again. Full local push gates measure 1614 passed, 6 live deselected and 95.33% coverage (1836/1926 statements). Parsed checks do not emulate GitHub's entire form engine or establish the truth of a report. Published template bytes and exact-commit CI passed. The browser required sign-in, so native form rendering and required-field interaction remain deferred in #167. No service claim changed.

Release preparation

#168 fixes the observed candidate mismatch between package 0.10.1 and host recipe pins at 0.10.0. The original candidate failed thirteen tests. Release-please now updates thirteen marked recipe blocks through its configured generic updater. No version was edited manually and no pin assertion was weakened.

Four real-engine cases cover patch, minor, major and prerelease targets. They require every package pin to change and all other document bytes to survive. Removing the updater or one marker makes all four fail while registry cases still pass. All eighteen Node checks pass. Full local push gates measure 1614 passed, 6 live deselected and 95.33% coverage. Subsequent candidate and index artifact checks passed after the fixture correction below.

The regenerated candidate exposed a second fixture defect: pip read the direct wheel requirement but still sought the unpublished base package on PyPI. The fixture now exposes the wheel directory without changing documented argv. A new no-index test verifies the installed wheel URL and SHA-256. Removing that exposure or corrupting installed provenance makes the test fail. Both persistent install routes and the provenance test pass against the unpublished candidate. Full local gates now measure 1615 passed, 6 live deselected and 95.33% coverage. The pip evidence keeps artifact selection distinct from dependency installation and native hosts. Exact candidate CI passed all 1615 tests with 95.33% coverage before TestPyPI publication.

Documentation program

#145 is complete. All 15 child deliverables landed with enabled gates and issue-hosted evidence. The final fresh-environment walkthrough installed published 0.7.0, ran the exact first-judgment tutorial live, and completed the offline policy tutorial and live policy workflow. The judgment returned billing probability 0.98, resolved model jev-1.13.0 and 280 input tokens. The policy workflow compared Noul 0.94 with its documented zero floor. These calls confirm those paths only; no unseen error body, calibration claim or other model became verified.

The final reader route reaches tutorials, policy tasks, error lookup and explanations without issue history. All authored docs remain draft. README package links and current example checks pass. Site publication was the separate final follow-up #41. That program did not change Pages settings or repository visibility. The deployment-readiness follow-up below records completed Pages publication.

146 landed in b32afa2: explicit key injection, adapter cleanup, matching

Choice labels, standalone examples and fresh-artifact selection. Both exact API blocks execute offline against an isolated wheel and pass typing checks. The packaging procedure verifies both wheel and installed typing markers.

147 separates maintainer procedures from user

installation, compatibility and security guidance. The installation guide gives safe checks for startup/discovery failures without claiming a known cure. Prose relocation does not promote service evidence.

46 adds the canonical glossary. Repository

vocabulary guidance links to it. Definitions distinguish model numbers from local decisions, preserve literal API names and retain observed/inferred limits. Terminology enforcement remains #71; no checker or service evidence changed.

10 completes the navigation map and rendered navigation.

All 34 authored docs pages, README and SECURITY are reachable from the map. Tutorials, how-to, reference and explanation remain distinct; maintainer procedures have a separate audience. Draft metadata and visible labels agree. Recovery and policy-handling paths link directly to error lookup. The final navigation inventory and reading routes are recorded on #10; #12 checks their source destinations and rendered links. No trust status was promoted.

149 supplies explanations of question types, local policy decisions and evidence

limits. The shared support-ticket scenario uses labeled synthetic values. Its policy example executes offline; numeric illustrations were checked. No model accuracy, calibration or new live-service claim is made.

11 explains the library-first architecture, entry-point choices, typed ports,

explicit ownership and optional MCP runtime. Source and lifecycle tests support the package claims; they do not promote service behavior. #73 adds accessible SVG call-path and disclosure diagrams with text equivalents. They distinguish the structural contract, remote transfer and optional local policy evaluation.

148 adds first-judgment and offline first-policy tutorials with explicit setup,

checkpoints, output interpretation and recovery guidance. Exact Python examples are checked in isolation. Reciprocal tutorial links finish #149's reading path. No additional service field or model is promoted by tutorial verification.

150 supplies focused sync/async, service-error, MCP and troubleshooting recipes.

CLI guides include complete input files and status-aware automation. Staged-diff setup names its checkout files and shell requirements. MCP instructions retain legacy installation anchors and link verified official host configuration docs. Example checks use synthetic answers and do not promote live-service evidence.

151 begins with configuration and error reference: explicit library settings,

environment precedence, entry-point model overrides, error constructors and retry metadata. Generated error docstrings now match those local contracts. The completed API, CLI, MCP and policy references enumerate the shipped surfaces. They retain the MCP state-schema discrepancy, mutable nested answer data and strict-versus-legacy policy distinctions. Pricing and calibration claims are removed from the API/root documentation; no runtime behavior changes.

153 supplies a complete README/user-doc inventory (49 current blocks) and seven

acceptance tests. Each block has an explicit classification and reason. Commit, push and CI gates reject inventory drift. An isolated-wheel gate now executes and type-checks all 15 Python programs with synthetic HTTP, secret-free environments and client cleanup checks. Seven executor acceptance cases bring the inventory/executor total to fourteen. Five CLI shell blocks now run against a loopback fixture using exact documented question/policy JSON; four acceptance cases cover pipe input, invalid options and policy exits. A separate optional-runtime gate validates all eight JSON/TOML blocks against input decoders, MCP discovery and template/report contracts, with six acceptance cases. The shared wheel builder now rejects nonempty output before building, with four selection acceptance cases and a stale-artifact failure proof. Three continuation acceptance cases cover exact saved tutorial commands and clean/met/unmet staged review. A wrong-filename mutation fails the isolated command and restoration passes. Separate disposable setup verification accounts for eight current installation blocks; four credential/host shell templates remain explicitly unexecuted. Offline examples do not verify live service behavior.

70 adds a local plain-English profile: a 25-word sentence limit and five

banned marketing adjectives. Structural parsing covers README, SECURITY, authored docs including maintainer pages, and package docstrings. Seventeen acceptance cases cover prose, literal syntax, sentence boundaries and source locations. Commit, push and CI run the complete declared scope. The writing guide records exclusions and human review criteria. This is not a claim of ASD-STE100 compliance.

71 enforces the glossary table through explicit lexical contexts and safe

annotated local-name checks. Public/wire names and ambiguous technical contexts remain intact. Twenty-one acceptance cases cover prohibited prose, literal contracts, glossary-driven wording and typed locals. The writing guide records semantic-review limits and optional model-assisted review. Commit, push and CI run the complete declared terminology scope.

152 makes the README a library-first entry path: install, ask one billing

question, interpret its probability and choose a next task. CLI and MCP routes link to complete guides. Security and evidence limits stay visible; release records remain in maintainer material. Absolute repository links work in package descriptions and now receive offline destination/anchor checks. Three acceptance cases prove valid targets and reject missing files or fragments. Duplicate README examples were removed; the task guides retain their executable coverage.

Registry manifest preparation

47 adds server.json with explicit optional MCP installation, the existing

judgevet-mcp launcher and a secret TypeSafe key input. The official 2025-12-11 schema and production validation endpoint accept the manifest. Removing the required name is rejected. This is validation, not a submitted or accepted listing. The published 0.9.0 description lacks the ownership marker. Release 0.10.0 publishes it; the submission and confirmed listing are recorded above.

Fifteen regression cases cover schema/package/configuration agreement, version drift, private key inputs and isolated candidate launches. The manifest-derived command matches the executed VS Code converter. Its trailing package identity argument is ignored by the existing launcher; other consumer conventions remain unverified. The isolated candidate passes discovery and all three live tools. Changing the launcher to the CLI, omitting the extra, or removing the entrypoint from the candidate wheel makes the transport check fail. Base wheel imports and policy examples still pass without MCP.

Three Node tests execute the configured release-please 17.3.0 updater for minor, major and prerelease versions. All registry versions and the uvx pin update; removing one updater makes all three tests fail. Commit, push and CI now check schema/version agreement and actual updater behavior. The registry procedure separates candidate mapping, index verification, submission and confirmed listing. Evidence remains on #47. No new service body, model, gateway deployment or modern protocol path is promoted.

Generated issue references

125 changes the release-please commit template label from closes to

references. Four real-renderer cases cover Closes-only, Refs-only and both historical mixed-footer regressions. Generated notes otherwise match the unmodified renderer byte for byte; links, subjects and parsed footer actions remain intact. Seven runner/workflow cases cover engine delegation, fresh manifests, consumed outputs, absent credentials, failure propagation and sanitized workflow errors. Together with the three version-updater cases, 14 Node tests pass. Restoring the original label makes all four renderer cases fail. GitHub closure still comes from factual commit trailers.

MCP adapter decomposition

80 moves discovery schemas and tool handlers out of the server factory.

The public factory signature, tool schemas, defaults, output and errors remain unchanged. The original 17 direct tests remain intact. Seven characterization cases cover complete serialized outputs and missing/wrong-answer failures. Combined factory, schema and handler coverage is 109/109 statements (100%), against the fresh 88/94 (93.62%) baseline. A deliberate text-output mutation fails the characterization test. The suppression budget falls from 18 to 15; architecture contracts remain unchanged. Changed functions have at most 36 code lines and implementation modules at most 174 code lines.

The isolated local wheel passes base imports and CLI help without MCP, including imports of the optional factory and entrypoint. Its optional installation passes discovery and all three live tools. These calls exercise existing direct-service paths only. No unseen body, other model, gateway or modern protocol path gains verified status. Required push gates pass; commit gates and main CI are recorded with the final round evidence on #80.

Finite answer validation

#170 corrects numeric answer validation and response errors. Direct constructors reject boolean or nonnumeric values with TypeError and nonfinite values with ValueError. Valid integers and floats retain existing ranges and distribution tolerance. The shared parser translates answer validation failures to JevResponseError. Both HTTP adapters reject malformed synthetic answers without retrying. Public imports, optional MCP dependencies and architecture contracts remain.

The 322 new acceptance cases preserve all 1615 existing tests. Four policy test modules retain their assertions and construct corrupted fixtures after valid construction. Removing finite validation causes 24 acceptance failures. Bypassing parser translation causes 121. Restored source passes all 322 cases. The issue records the contract, pre-implementation failures and mutation proofs. The compatibility assessment records stricter invalid-input handling relative to published 0.10.1. This is a local correction. No release or live-service evidence is promoted.

Gates

1937 tests pass, 6 live tests deselected. The last measured coverage is 95.81% (1850/1931 statements). Local commit and push gates pass for #170. The issue holds delivery evidence. The documentation rounds retain the existing local gates: suppressions, dependencies, test hygiene, Ruff lint/format, ty, import contracts, docvet (diff/all), pytest and pytest with coverage. Hooks remain enabled. Ordinary tests exclude live service calls. The coverage floor is 90%.

12 adds the strict MkDocs build to commit/push hooks and CI. It checks authored

local links, generated Python references and final HTML links/anchors offline. Nine acceptance tests cover link parsing and strict source-reference resolution. Independent symbol, target and anchor mutations fail the build; restoration passes. A fresh development-only installation builds without MCP or API keys. Two further acceptance cases cover project-path assets and anchors while preserving missing-target findings. Removing the prefix mapping fails the test. Strict building does not prove publication. Example execution and editorial checks remain separate; Pages deployment is tracked below.

35 adds the native uv lockfile audit to pre-push and a required CI job.

CI pins verified uv 0.11.20 and enables its experimental audit command. The public audit reports no known vulnerabilities or adverse project statuses across 86 locked packages, including MCP and development dependencies. This result is time-bound public advisory evidence, not a security guarantee.

Four execution cases verify the actual configured commands and failure status. Four independent configuration mutations fail; restoration passes. Real uv rejects a synthetic OSV advisory, an audit-service error and a stale copied lockfile. All three preserve lockfile bytes. Full commit and push gates pass. Contract, red tests and proofs remain on the issue. No runtime dependency or service claim changed.

48 adds commit and push checks for lockfile consistency, YAML and workflows.

The lockfile hook precedes tools that can synchronize dependencies. CI retains its existing lock check and invokes the same YAML and workflow hooks. Strict default yamllint covers every tracked YAML file. Upstream actionlint v1.7.12 has a separate Go hook pin. The duplicate YAML key is removed; formatting changes preserve parsed workflow commands and structure.

Thirteen acceptance cases exercise clean and failing fixtures at both stages and verify required CI wiring. Independent repository mutations fail for stale metadata, duplicate keys and invalid expressions; restoration passes. Three mutations that bypass gates also fail the acceptance tests. Full commit and push gates pass. The current public audit covers 87 packages after adding the locked development tool and reports no known vulnerabilities or adverse statuses. Contract, red tests and proofs remain on the issue. Runtime dependencies and live-service claims are unchanged. Release publication and installed-artifact verification are recorded on #157.

Deployment-readiness work

154 records the public-source gateway contract on the

research issue. It compares HTTP and W3C standards with Apigee, Kong and Azure documentation. The contract selects explicit authentication and metadata configuration, bounded header validation, opt-in correlation and loopback acceptance tests. The implementation below completes #63. No gateway deployment or new service behavior was verified.

63 adds root-exported GatewayConfig and RequestMetadata. Sync and async

adapters accept explicit authentication, immutable metadata defaults and per-call overrides. CLI, policy CLI and MCP consume the same gateway settings. Direct TypeSafe defaults remain unchanged. Scoped request IDs leave the process only when a correlation header is configured; arbitrary logging context stays local.

The 169 gateway acceptance cases observe actual prefixed loopback requests, protected fields, case-insensitive precedence, size bounds, retry snapshots, concurrent calls, gateway-owned errors and disabled redirects. Independent mutations break each selected property and all three composition paths; the restored source passes. The exact gateway documentation program executes and type-checks against an isolated wheel. Full commit and push gates pass, including all-file docvet, isolated examples, strict docs and coverage. This is synthetic client evidence, not gateway certification or new live-service verification. Specification, failures and proofs remain on the issue. The supporting release gates #35 and #48 are complete under #157.

53 adds the root-exported StateRedactor protocol and an optional callback on

both HTTP adapters. The shared preparation helper copies JSON state, invokes the callback once and serializes the returned state before retry handling. Configured retries reuse immutable bytes. Callback, copy and serialization failures cause no request or original-state fallback. The default retains the existing JSON path without copying. Questions and gateway metadata stay separate.

Fifty redaction cases and the existing adapter contracts cover nested ownership, gateway composition, sync/async parity, invalid output, cancellation, concurrent calls and mutation of retained output between attempts. Nine independent mutations fail; restoration passes. The exact redaction example executes and type-checks against an isolated wheel. SECURITY.md holds the complete egress contract and limits. All local commit/push gates pass. No detection library, remote retention guarantee or new live-service evidence was added. Contract, red tests and failure proofs remain on the issue.

33 adds opt-in bounded retries through the root-exported RetryPolicy.

The default remains one attempt. Sync and async adapters share classification, exponential delay and jitter limits; transport replay requires separate opt-in. CLI, policy CLI and MCP consume the environment settings. Synthetic tests cover exhaustion, final causes, cancellation, final diagnostic status and actual request counts through all three composition roots. Independent mutations break recovery, attempt bounds, cancellation and each settings path.

55 adds root-exported NetworkConfig and proxy/CA/verification settings.

Actual loopback TLS tests prove default rejection, explicit private-CA trust, hostname checks and test-only verification-off. Loopback proxy tests observe CONNECT selection and explicit precedence; they do not prove a deployed corporate proxy. CLI, policy CLI and MCP consume every new setting. Independent mutations break CA, proxy, secure defaults and each composition path. The policy composition root extracts adapter construction into a helper; its 42 code lines remain below the 50-line function limit.

61 adds lazy file and trusted command credential sources to settings.

Explicit arguments remain literal and override configured sources. Configured literal keys precede files, and files precede commands. CLI, policy CLI and MCP resolve once before constructing their adapters. Loopback tests observe the resolved authorization headers and reject source failures before any request. Command tests cover bounded output, deadlines, discarded stderr, closed stdin, wrapped traceback locals and POSIX process-group cleanup. Independent mutations break these limits, precedence and each composition path. Command execution is not a sandbox; descendants that escape the process group remain outside cleanup.

64 adds root-exported scoped bind_request_id correlation and the

diagnostic event contract. HTTP events include successful typed usage and filtered requested/resolved model identifiers. Built-in events exclude arbitrary bound context; application events retain it. Nested, concurrent and cancelled scopes restore their previous bindings. Real CLI/MCP stream tests retain valid stdout and exact stderr fields. Independent mutations break scope restoration, task isolation, field filtering and response metadata. A request probe confirms correlation stays out of headers and payloads. The artifact checker includes the new supported export identity. The pi attempts and their defects remain recorded separately from Codex's specification and implementation. No model-written specification was accepted.

58 adds container and serverless deployment guidance.

The exact documented Dockerfile builds a base image without MCP. A non-root, read-only rootless Podman run sends real synthetic HTTP requests with file and command credentials. JSON stdout and diagnostic stderr remain separate. The guide covers secret mounts, SELinux labels, connection ownership, rotation, proxy/CA settings and deadline/retry budgets. Cloud Run, Lambda and Fargate integration guidance cites platform documentation; no cloud account was deployed. The initial source-built development wheel was not index evidence. The same container checks now pass with the actual published 0.8.0 PyPI wheel.

The complete commit/push gates include strict docs, isolated examples and coverage. Runtime evidence is local and synthetic; unseen service errors stay inferred. Runtime dependencies remain unchanged. Release-please set the shared version to 0.9.0; both index publications and the Pages site are verified.

Pages deployment

41 adds the strict-build Actions workflow and the project-path site URL.

Pages is configured with build_type=workflow; repository visibility remains public. An isolated checkout with a nonexistent Python cross-reference fails the strict build; restoration passes. Deployment run 35871720007 published commit 5a5997f245e88786c95eb034b923ed1ffb499eac. Browser checks verify project-path CSS/scripts, navigation, both architecture diagrams, generated Python API anchors, and the deployment and event guides. No failing resource requests or browser console errors were observed on those pages. README and package metadata link the live site. Published README links retain offline source and fragment validation.

Operational limits

  • Intermittent MCP initialization failures, including invalid_data, have no established cause or remedy. A successful fresh launcher does not prove an existing host session loaded its tools. See connection checks.
  • Diagnostic redaction is bounded. Protocol errors, CLI error envelopes and arbitrary tracebacks can disclose service-supplied content. See SECURITY.
  • Release automation uses release-environment credentials without a GITHUB_TOKEN fallback. Credential-scope evidence preserves the migration record. That record does not establish compromise.
  • Failed base/MCP smoke checks prevent publication. Independent failure proofs are recorded in the base run and MCP run.

What is verified, and what is not

claim status
installed CLI sends a mixed live request and renders typed answers with success status and clean stderr verified — #30 live test on development install and actual TestPyPI/PyPI wheels
endpoint, auth header, three answer shapes, usage verified — probe + official reference
noul has no confidence; score is continuous; legend is a map verified — both sources
noul criteria keys true/false are read by the service — inverted criteria moved the measured answer by ≥ 0.13, while yes/no (normal and inverted) did not move it verified — live differential test, issue #105
score legend echoes the sent criteria list exactly verified — live test asserts legend equals {0: "Poor", 1: "Fair", 2: "Good", 3: "Excellent"}
401 returns {"detail": {"error_type", "message"}} verified — live call with an invalid key, 2026-09-21
422 returns {"detail": [ {type, loc, msg, input} ]} verified — live call omitting questions, 2026-09-21
detail is polymorphic: an object for auth, an array for validation verified — the two calls above disagree in shape
a 422 body echoes the request payload back under input verified, and the adapter discards it (#85)
429 and 529 still unseen. 429 needs abusing the service and 529 cannot be forced
every other field name inferred from documentation
resolved models other than jev-1.13.0 untested; both jev-latest and explicit jev-1.13.0 have been called
model in a response is the resolved version, not the alias sent verified — the live test caught jev-1.13.0 where jev-latest was sent
fake and real adapter produce identical outcomes verified — contract tests on 12 hand-authored fixtures, inferred from docs/reference/api.md
401 and 422 error responses become JevAuthError and JevRequestError with retryable=False verified — live tests, 2026-09-21
the adapter drops the input field from 422 bodies to avoid echoing caller data verified — live test asserts test state does not leak
API keys do not leak in error str/repr verified — live tests assert key not in str or repr
secret guard redacts API key from test output verifiedtest_secret_guard.py proves guard scrubs key from pytest report with --showlocals

README and API documentation remain draft. Unseen 429/529 bodies prevent stable status. Synthetic contract and policy tests do not establish model accuracy or confidence calibration. The observed fields above do not verify every field.

Redirect handling is synthetic evidence: tests cover 301, 302, 304 and 308, with redirects disabled and raw httpx.HTTPStatusError propagation. It is not new live-service evidence. Supported imports and compatibility describes the public-versus-legacy policy validation distinction.