Skip to content

Releases

provider-core 0.6.8

Choose a tag to compare

@numpde numpde released this 07 Nov 06:58

provider-core 0.6.8

This maintenance release incorporates source and tooling corrections made after the published 0.6.7 release. The provider-core package version advances without changing the NMR Jobs API schema or introducing the planned shared provider-service loop.

Interpreter input validation now states the accepted positive timeout and context-byte domains directly. Optional history cursors and JSON Schema fields have explicit absence handling; unverified model-report arguments remain excluded from recorded conversation history. The prose-service retry path retains its cross-Job backoff policy and treats missing or invalid Retry-After advice explicitly.

Acquisition, image-retirement and wheelhouse tools now distinguish missing caller inputs from explicitly selected values, validate artifact identities without silently substituting missing hashes, and report bounded command failures. The wheelhouse-tool image invokes Python with -B instead of publishing a global bytecode-control environment variable. These changes do not replace the independently pinned shared-delivery or wheelhouse-tool releases.

Repository quality checks now enforce one source line per release-note paragraph and list item. A separate opt-in cleanup command removes generated Python bytecode while leaving the existing source-hygiene checks strict. Test fixtures and assertion conventions were revised for explicit failure and cleanup handling without intentionally changing their fault scenarios.

The release workflow must still build and qualify the exact 0.6.8 wheel, source distribution, installation locks, source bundles and hash records from this committed revision. Native four-provider adoption and deployment checks remain separate.

provider-core 0.6.7

Choose a tag to compare

@numpde numpde released this 06 Nov 21:42

provider-core 0.6.7

A cancelled Job or expired Attempt confirmed by the NMR Jobs API can settle
its original pre-execution resources and release the claim once. The SDK
exposes the checked disposition to provider loops without treating an
operator's local stop, an uncertain START or entered science as a server
revocation. Unresolved work and unacknowledged reports remain owned.

Prose interpretation now sends each outbound model HTTP request in its own
bounded Python process. The provider retains conversation, scientific
preparation and Attempt ownership. Original request deadlines, framed
responses, TLS verification, cooperative close and TERM/KILL escalation
have independently checked cleanup boundaries. An unconfirmed child exit
does not free capacity or authorize another scientific request. The process
carrier requires the Linux/POSIX environment used by provider containers;
unsupported opaque TLS customizations are explicitly refused.

ProseService carries one configured language-model service's backoff and
valid Retry-After between Jobs. A subsequent interpretation cannot bypass
that service's outstanding delay, while another configured service may remain
available. Providers should construct these service bindings once at startup
and keep prose-dependent Jobs unstarted while all alternatives are delayed;
the SDK does not own the provider's Job-discovery loop.

Result publication now reports elapsed wait for the original retained report.
One delivery_stalled warning also covers a matching NMR Jobs API receipt
followed by an uncompleted local queue update. These observations do not
cancel storage, replay an accepted report, or release an unfinished Attempt.
Protected diagnostics retain the age of the original execution failure.

The local B4 SDK and consumer fault tests use HTTPS peers, bounded outages,
counted scientific operations and exact publication receipts. They do not
qualify the native four-provider deployment. In particular, reconstructed
SECS and NMRNet branches require new installed-artifact testing, and the
previous environment blocked three Unix-domain-socket SDK tests. Complete
release artifact qualification and positive native/container deployment
checks remain release gates; see notes 061 and 060.

This version does not implement the later shared provider-service extraction
or recovery of selected results lost when a provider dies before durable
outbox handoff. No NMR Jobs API schema change is required.

provider-core 0.6.6

Choose a tag to compare

@numpde numpde released this 04 Nov 13:49

provider-core 0.6.6

Interpreter requests that exhausted an inherited deadline could report resource
retirement as unconfirmed before promptly cancellable I/O had a chance to close.
The original exchange now gets one separately bounded cleanup allowance. Repeated
retirement calls share that allowance; blocked cleanup stays owned and cannot
authorize another request. Request deadlines still prohibit new work and late
successful responses. Existing API, upload and outbox calls without an inherited
deadline retain their bounded re-observation behavior.

AttemptExecutor.delivery_accepted exposes the existing verified relay
acknowledgement independently of cleanup. Providers can clear delivery pressure
for unrelated Jobs while retaining the original controller and its unfinished
cleanup. This does not prove API publication, release the full claim, or permit
scientific replay.

The installed-package test lanes now include 88 reproducible generated scenarios:
local TLS stalls, cooperative and held cleanup, interpreter retry/repair/handoff,
and 1,024 outbox intake/replay/conflict/hold/publication/restart transitions.
make tests/fuzz/provider-core runs this corpus separately. Tests use synthetic
inputs and local peers; they do not establish live model quality or scientific
inference. The broader repository quality debt is recorded in note 058.

Providers need the new SDK for interpreter cleanup and the acceptance predicate.
This release requires no shared API proxy or outbox replacement.

provider-core 0.6.5

Choose a tag to compare

@numpde numpde released this 04 Nov 11:39

provider-core 0.6.5

Interface-bound acquisition could select the host's merged DNS configuration
even when those resolvers were unreachable through the selected interface.
The shared acquisition owner now captures configured resolvers on the host
before starting its gateway and passes that private file read-only to the proxy.

  • Named interfaces prefer NetworkManager device DNS, then systemd-resolved link
    DNS. If neither supplies usable IPv4 resolvers, the existing configured global
    resolver files remain the fallback. The system route uses global configuration.
  • The first usable configured set is captured once per scope. Query failures do
    not switch sources, append public resolvers or remove interface binding.
  • The gateway needs no host manager tools or management sockets. The same
    stdlib acquisition_tool/dns.py helper is included in the source bundle for
    provider-owned build launchers; they need not duplicate discovery policy.
  • --resolver-file is explicit authority for the proxy. An unusable file fails
    before readiness instead of falling back to container DNS configuration.

The existing service proxy retains its resolver behavior when no capture is
supplied. This release requires no API proxy/outbox restart. The interpreter's
0.6.4 late-acceptance correction is unchanged.

DNS configuration is fixed for an acquisition scope. DHCP or manager changes
apply to its next scope; this is not a live DNS refresh service. IPv6-only DNS
remains unsupported by the existing IPv4 acquisition transport.

provider-core 0.6.4

Choose a tag to compare

@numpde numpde released this 04 Nov 11:11

provider-core 0.6.4

Retiring an interpretation while provider preparation was already running could
discard a later accepted result. The conversation checked its retired state
before recognizing ToolFinished, leaving the shared interpreter without the
accepted preparation even though the provider had completed it.

The conversation now retains completion from already-admitted preparation
before enforcing retirement for further activity. Late model replies still
cannot start preparation, and retirement still prevents subsequent turns and
handoffs. Provider callbacks, native settlement and the original run task remain
provider-owned; retained acceptance does not authorize execution after Job stop.

The regression holds an admitted preparation, retires model I/O, then completes
preparation with ToolFinished(None). It verifies retained acceptance, one
dispatch and no successor model. Existing installed-package qualification also
covers late replies, fixed deadlines, cleanup failures and native-only imports.

provider-core 0.6.3

Choose a tag to compare

@numpde numpde released this 04 Nov 10:46

provider-core 0.6.3

The shared interpreter binds each information-tool definition to its handler and
provides the callback and outcome contracts needed by the joint provider refactor.
Orchestration remains in one interpreter module; scientific tools and resource
ownership remain with providers.

  • Provider dispatch and dynamic constraint callbacks receive the fixed absolute
    model deadline through not_after. Inspection can use that deadline while
    admitted preparation retains its independent work deadline.
  • ModelWindowExpired permits model advancement only when the provider has
    settled an expired inspection. Ordinary timeouts and cleanup failures remain
    provider failures; the SDK does not infer scientific retirement.
  • report_interpretation_problem uses
    ModelReportedInterpretationProblem(model_summary=...) for an unverified
    handoff. Successor history receives only the provider-selected summary, while
    the structured report can remain as a protected exception cause. Raw report
    arguments are excluded from history on both handoff and corrective rejection.
  • Dynamic constraint accessors may return NotImplemented to retain ordinary
    SDK schema lookup without duplicating it. InterpretationResult.model_visit
    identifies the selected model by its one-based captured endpoint order.
  • Interpreter.failures exposes observed protected model failures before
    scientific effects and after retirement. accepted_result continues to retain
    accepted preparation, including ToolFinished(None), through cleanup failure.
  • InterpretationInputRejected distinguishes an initial-context credential
    refusal from exhausted model allocations and scientific callback failures.
  • api_config.https_trust builds trust directly from captured CA bytes, retaining
    the shared TLS environment policy without dummy transport settings or rereads.
  • ChatEndpointFactory binds captured endpoint grants to fresh per-visit HTTP
    owners. Its context_bytes reserves the exact carrier envelope, so history
    pagination does not fill space needed for model and request-control fields.

This intentionally updates the new shared Interpreter callback/report API.
Provider adoption must update callbacks, prompts, report names, protected
projection and policy together. The lower-level ToolConversation API is unchanged.

The release qualification exercises the installed wheel, native-only dependency
closure, contracts, real local TLS/proxy fixtures and artifact rebuild. Provider
migration and running deployment evidence remain separate; this release does not
claim that every provider already uses the common workflow.

provider-core 0.6.2

Choose a tag to compare

@numpde numpde released this 03 Nov 14:19

Provider-core 0.6.2

Make shared acquisition cleanup survive Bash errexit. Cleanup authority now
belongs to the owning process and remains available after callback function
locals unwind. The owner checks its process identity before retiring resources,
resets state for each session, and preserves caller EXIT behavior and original
failure or cancellation status. Callbacks do not need special error guards to
keep cleanup safe.

This release also carries the immutable-bootstrap and one-probe identity
mapping corrections described in the 0.6.1 candidate note. Use 0.6.2 for shared
acquisition adoption; 0.6.0 has a repeated-use defect, and the 0.6.1 publication
was held as a draft after the callback cleanup failure was reproduced.

The repository adds a general check for bytecode suppression in literal Python
launches, including isolated Python's environment semantics. Dynamic or split
argument construction remains outside that static check; real repeated-session
tests verify the complete source snapshot remains unchanged.

provider-core 0.6.0

Choose a tag to compare

@numpde numpde released this 03 Nov 13:36

Known issue: the shared acquisition identity helper can write bytecode into a writable verified bootstrap, causing the next acquisition to refuse it. Use provider-core 0.6.2, which also corrects callback cleanup under Bash errexit.

Provider-core 0.6.0

This release supplies one shared acquisition lifecycle for provider build and
download workflows. Thin Bash adapters retain their existing target selection,
artifact locks, hashes and publication policy. The common session owns mapped
identity, offline workers, lazy interface-bound gateway and isolated relay,
ordered worker execution, cancellation and dependency retirement.

The additional acquisition-owner-0.6.0.tar.gz release asset contains the
complete source bootstrap, including the exact qualified identity dependency
and proxy transport. Its member inventory and dependency identity are recorded
in the release record, and qualification rebuilds the exact archive bytes.
Consumers verify their checked-in bootstrap against that record before use;
cold acquisition needs no ambient host package installation.

Worker results are available only after confirmed retirement. An unresolved
worker retains its relay and gateway; unresolved relay retirement retains its
gateway. A fresh retirement receipt authorizes releasing caller-owned inputs.
Ordinary callback failure and actual cancellation retain their original status,
while caller traps and live worker output remain usable.

The scientific SDK gains no mandatory identity dependency. Existing API proxy
and outbox behavior is unchanged. Networked BuildKit acquisition and daemon
bootstrap-image pulls retain the boundaries documented in note 045.

provider-core 0.5.17

Choose a tag to compare

@numpde numpde released this 03 Nov 12:05

provider-core 0.5.17

The shared acquisition HTTP/CONNECT proxy now supports a private Unix listener
and a bounded loopback-to-Unix relay. Launchers can give a download worker the
relay's disconnected network namespace while the gateway owns the selected
device or explicit system route. Existing TCP proxy invocations remain valid.

Both transports live in the same standard-library module, so a verified
three-file source snapshot can bootstrap acquisition before the wheel pool or
wheelhouse tool exists. Consumer launchers still own container identity,
readiness and worker-to-relay-to-gateway retirement.

HTTP/CONNECT and failure tests exercise the new transport. The maintained live
qualification passed on both deployment engines with a read-only Unix socket
grant, matching relay/worker network namespaces, successful proxied traffic and
no direct external route. Each provider's launcher adoption is qualified
separately; a wheel upgrade alone does not enforce container isolation.

provider-core 0.5.16

Choose a tag to compare

@numpde numpde released this 03 Nov 10:21

provider-core 0.5.16

The shared tool conversation now imports and runs with injected carriers in a
native-only installation, without HTTP dependencies. Chat and exchange failure
definitions live in lightweight modules; existing public imports expose the
same exception types and retain their evidence fields.

Actual HTTP chat use still requires the API extra. Native and API installation
tests cover both the dependency boundary and public exception identity.