Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

impact

This packaged guide describes setup, exact integration boundaries and migration for the R1 package. The source checkout may contain an unpublished build; see Qualification before choosing an install source.

Impact's Python SDK captures the available semantic content of AI Product work while preserving the application's results, errors, streams, tool effects and existing OpenTelemetry setup. Maintained provider and framework instrumentation owns its native spans; Impact adds only the lifecycle, schema, credential and Product-context evidence needed to close demonstrated gaps. Importing it is passive. Call impact.init() once before creating supported provider or framework clients.

The R1 package requires Python 3.11 or newer. It does not yet implement the selected R1.5 Simulation or Protect capabilities. Remote Capture and a general launcher remain potential future work under the canonical SDK contract. Preloaders remain unimplemented; native-required startup or per-client registration keeps its actual integration-specific status described below.

Install the R1 package

For source evaluation, build the wheel from the repository root. The base package includes Impact's capture machinery but does not install provider clients or application frameworks:

artifact_dir=$(mktemp -d)
uv build --wheel --project python --out-dir "$artifact_dir"
sdk_wheel="$artifact_dir/impact-1.2.0rc1-py3-none-any.whl"

After 1.2.0rc1 is available from the configured Python package index, an application can install it with python -m pip install 'impact==1.2.0rc1'. The local wheel commands in this guide are the valid path before publication.

Install through the application's dependency manager so it resolves Impact together with the application's existing requirements. For a uv project, run this from that application's directory:

uv add "$sdk_wheel"

For a pip requirements workflow, resolve both inputs together with python -m pip install -r requirements.txt "$sdk_wheel", then retain the Impact dependency in the application's requirements. A direct uv pip install "$sdk_wheel" is suitable for a fresh disposable environment; it does not enforce an existing project's pyproject.toml or lockfile.

The R1 package declares the coordinated OpenTelemetry 1.43/0.64 and 1.44/0.65 families. Its ranges preserve either compatible family selected by the application; the development lock retains the exact 1.43.0/0.64b0 baseline. The optional Google ADK 2.7 cell requires OTel API/SDK at most 1.43, so impact[adk] resolves with the 1.43 family rather than 1.44; the base SDK and other compatible extras may select either admitted family. Applications pinned to an older incompatible family need a coordinated telemetry dependency upgrade before installing it. For example, a project requiring SDK 1.39.1 and FastAPI instrumentation 0.60b1 fails normal project resolution; installing the wheel alone replaces some dependencies and leaves that older instrumentation inconsistent. Resolve the complete application and verify its native behavior after an intentional dependency upgrade. Impact preserves compatible customer libraries; it cannot make conflicting OpenTelemetry package requirements coexist in one Python environment.

Applications normally keep their existing provider and framework dependencies. The extras are optional convenience sets for installing the selected customer libraries into a new application or qualification environment; they are not needed when those libraries are already installed. pyproject.toml publishes bounded client ranges only where lower/current source cells share the selected seam; uv.lock records the exact current development cell. Installed-artifact and Product evidence still binds an exact resolved version and does not transfer automatically to every admitted version.

The package admits OTel 1.43/0.64 and 1.44/0.65, protobuf 6.33.5 through 7.x, and Requests 2.33 through 2.x; exact resolved versions remain part of each qualification receipt. Measure installation size, startup and memory in the application's resolved environment. Historical host-specific measurements are indexed in the source repository's qualification history.

Quickstart

Configure IMPACT_ENDPOINT, IMPACT_API_KEY and optionally IMPACT_SERVICE_NAME using the route settings from Impact. Set OPENAI_API_KEY for this example. The provider key authenticates the model call; the Impact key authenticates telemetry. Run this file with Python 3.11 or newer after installing the OpenAI client, either directly or with Impact's optional openai convenience extra:

import impact

runtime = impact.init()
# Initialize before making supported provider/framework calls.
from openai import OpenAI

client = OpenAI()
try:
    result = client.responses.create(
        model="gpt-4.1-mini-2025-04-14",
        input="Say hello in one sentence.",
    )
    print(result.output_text)
finally:
    runtime.shutdown()

Ordinary supported provider calls require only initialization. Use scoped context when the application has useful identities to supply, and a manual span to capture a larger application operation:

This complete enrichment example runs in its own process:

import impact

runtime = impact.init()
from openai import OpenAI

client = OpenAI()
try:
    with impact.context(
        session_id="conversation-1", execution_id="request-42", user_reference="customer-17"
    ):
        with impact.span("answer", role="entry", input={"question": "Where is my order?"}) as operation:
            result = client.responses.create(
                model="gpt-4.1-mini-2025-04-14",
                input="Explain how a customer can find their order status.",
            )
            answer = result.output_text
            operation.set_output(answer)
    print(answer)
finally:
    runtime.shutdown()

context and span add information without being required for automatic provider capture. Set stable deployment defaults with init(context=impact.ImpactContext(...)) using environment, version_id, component_id, build_id and deployment_id when those values are known.

Route credentials establish Workspace and Product tenancy. Context values are correlation claims. Keep Environment, Product Version, component/build/deployment, Session, execution, parent execution, purpose, user reference and DomainRun(kind, id) distinct. A Simulation run ID must not be reused as an execution or Session ID.

Core API and lifecycle

API Purpose
init(...) Starts one compatible runtime and activates installed integrations. Repeating equivalent setup returns that runtime; conflicting settings reject.
context(...) Applies validated task-scoped Product context.
span(name, ...) Captures an explicit application boundary and preserves native output, exception or cancellation behavior.
operation(name, role=..., capture=...) Decorates sync/async functions or generators with the same manual boundary, optionally capturing named arguments.
inject_context(carrier) / extract_context(carrier) Propagates W3C parentage and bounded logical execution fields; apply extraction with context(propagated=...).
feedback(...) Records inline or post-hoc native feedback with a stable occurrence identity.
attach_realtime(connection, ...) Observes an existing OpenAI Realtime connection; the application retains the socket.
status() Reports provider ownership, integration activation states, limitations, local delivery and cleanup state.
flush(timeout_millis=...) Makes a bounded attempt to export finished telemetry. It does not prove platform admission or readback.
shutdown(timeout_millis=...) Flushes and stops SDK-owned work; a retry skips cleanup phases that already succeeded.

Manual capture never changes application exceptions or cancellation identity. Serialization loss leaves an explicit partial or omission marker. Context identifiers allow 1,024 UTF-8 bytes and purpose allows 65,536; empty strings, NUL, malformed Unicode and unknown fields reject before capture.

inject_context() combines initialized context defaults with the current scope's overrides. It fills and returns the supplied carrier with W3C traceparent/tracestate, impact-execution-id, impact-parent-execution-id, impact-session-id, and the optional impact-domain-run-kind/impact-domain-run-id pair. A conflicting existing value raises ValueError without changing the input; equal values are accepted. Successful shutdown removes initialized defaults. JavaScript uses the same selected wire fields. Python reports malformed/incomplete fields in extraction issues; inspect those and validate the sender's trust before applying correlation; carrier values never authorize a Product route.

Shared execution provenance uses impact.execution.origin, impact.execution.input.reference and distinct impact.<evaluation|dataset|case|experiment|replay>.id attributes. Source references use code.file.path, code.function.name, code.line.number, impact.source.basis.id and impact.source.observed.at; correlation values use impact.correlation.*, matching JavaScript's custom fields. These supplied claims do not establish route authority or trigger source inspection. Product retains older attribute dialects when reading history.

Every listed R1 automatic integration defaults to "auto". Disable an installed owner when the application needs to retain that owner without Impact importing or changing it:

runtime = impact.init(
    service_name="support-agent",
    endpoint="https://your-impact-endpoint",
    api_key="your-impact-key",
    integrations=impact.IntegrationOptions(
        openai="disabled",
        langchain="disabled",
    ),
)

The other R1 keys are google, google_adk, anthropic, openai_agents, agno, pydantic_ai, aws_bedrock, microsoft_agent_framework and mcp. Selections are frozen, appear in status().integrations and form part of initialization identity; repeated init() calls must use equivalent selections. Realtime attachment remains an explicit API because the application owns the connection.

Managed mode reads IMPACT_ENDPOINT, IMPACT_API_KEY and IMPACT_SERVICE_NAME, or accepts explicit endpoint, api_key and service_name options. Missing configuration is diagnosed before capture. Set sampling="all" (default), "none", or a finite float greater than zero and at most one, such as 0.1, for parent-aware whole-operation sampling. A supplied customer provider owns its sampler; conflicting SDK sampling configuration rejects before activation.

Automatic setup reporting requires the complete route envelope supplied by Impact: IMPACT_SETUP_REPORT_ENDPOINT, IMPACT_SETUP_REPORT_API_KEY, IMPACT_ROUTE_ID, IMPACT_ROUTE_REVISION and IMPACT_ENVIRONMENT_ID. The developer still makes no additional SDK call. If that envelope is absent, capture continues and status().setup_report.outcome is not-configured; a partially supplied envelope rejects during initialization instead of guessing route ownership.

Managed mode supplies endpoint and api_key. Impact owns its provider only when tracer_provider is omitted. When no process-global tracer provider has already been registered, Impact also registers that managed provider through OpenTelemetry's public API so libraries with native global instrumentation route through the same destination. It never replaces an earlier global provider. In that case, status().provider_ownership["global_traces"] is "external"; pass the customer provider as tracer_provider if Impact should attach its destination to it. Impact owns a LoggerProvider only when an endpoint is present and no logger is supplied. Shutdown closes only SDK-owned resources; replacing or reconfiguring capture after shutdown requires a new process.

Customer-owned mode uses public provider APIs:

import os

runtime = impact.init(
    service_name="support-agent",
    tracer_provider=customer_tracer_provider,
    logger_provider=customer_logger_provider,
    endpoint=os.environ["IMPACT_ENDPOINT"],
    api_key=os.environ["IMPACT_API_KEY"],
)

When supplying a customer provider, pass the Impact endpoint and key explicitly as above. Omitting both selects customer-routed delivery, even if the managed-mode environment variables are present. In that mode, the customer's exporter must already send to Impact; exporting to another destination alone does not create an Impact Trace.

With an Impact endpoint, destination processors export detached copies and leave customer records unchanged. Without an endpoint, delivery remains customer-owned; correlated content logs require an explicit LoggerProvider. Customer samplers remain authoritative, and processors attached to customer providers remain installed but inactive after shutdown because Python OpenTelemetry exposes no public removal API.

Integrations

Machine-readable status().integration_details gives the support state and attributed evidence for each exact claim. The 17 operation-specific catalogue entries below define their supported boundaries and limitations. An installed extra, import or local flush alone is not support proof.

Claim Route and selected owner Exact operation boundary Current limitation
py.openai.public.v1 OpenAI 3.8.0; official owner 1.1b0 plus Impact supplement Responses, Chat Completions and Embeddings create; sync/async unary, helpers and consumed streams Raw response bodies that the application does not parse or consume do not expose semantic output.
py.openai.azure.v1 AzureOpenAI through the same selected client/owner Responses, Chat Completions and Embeddings create Deployment, API version, credentials, region and entitlement remain customer-owned.
py.openai.foundry.v1 Standard OpenAI client at an explicit Foundry endpoint The same selected inference operations No Foundry project, resource, retrieval, Search or control-plane claim.
py.openai.compatible.v1 Standard OpenAI client at an explicit private/local base URL The same selected client operations No arbitrary dialect, named vendor, tool, stream or usage compatibility follows.
py.anthropic.public.v1 Anthropic 1.5.0; official owner 1.1b1 plus Impact supplement Messages create/stream, typed parse, sync/async consumed streams Public Messages only; Claude on Google Cloud is excluded from R1.
py.google.models.developer.v1 Google Gen AI 2.23.0; official owner 1.1b1 plus Impact supplement generate_content, generate_content_stream, embed_content Already-constructed clients cannot be discovered through the public SDK.
py.google.models.vertex.v1 Vertex-configured Google Gen AI client; same owner The same selected Models operations Project, location, ADC and model entitlement remain customer/cloud responsibilities.
py.google.interactions.v1 Google Gen AI 2.23.0; Developer API; official owner plus Impact lifecycle supplement model create/stream/tool continuation plus application-called get/cancel/delete Background create, terminal acquisition and built-in-agent routes are outside R1; regular model Interactions were unavailable on the tested Vertex route.
py.google-adk.runner.v1 Google ADK 2.7.0; Impact runner events plus provider owner Runner.run and run_async, including model/tool/session events Impact supplies native telemetry defaults when RunConfig.telemetry is unset and preserves an explicit application value. Shutdown marks the observation partial and stops capture without closing the native iterator. JSON-native action state deltas are retained without invoking ADK serializers; custom-serialized long_running_tool_ids are omitted and reported as partial.
py.langgraph.langchain.v1 LangChain 1.4.0, core 1.6.2, LangGraph 1.2.11; official owner 1.1b1 runnable/graph unary, graph stream, tools and retrieval Live hooks expose semantic output and provider identity, not the raw SSE response body; framework and provider IDs may differ.
py.openai-agents.runner.v1 OpenAI Agents 0.22.2; official owner 1.1b0 plus provider owner run, run_sync, run_streamed; tools and handoffs The Runner result owns delivered final output and aggregate usage; a provider child need not expose either independently.
py.agno.agent.v1 Agno 3.0.9; official owner 1.1b0 plus Impact stream supplement Agent.run/arun, unary and caller-consumed sync/async streams Team and Workflow are unassessed; shutdown leaves native streams usable but observation partial.
py.pydantic-ai.agent.v1 PydanticAI slim 2.42.0; native instrumentation plus provider owner Agent run, run_sync and run_stream Existing enabled global settings and explicit per-Agent settings remain customer-owned. Use IntegrationOptions(pydantic_ai="disabled") for a process-wide Impact opt-out.
py.microsoft-agent-framework.v1 Agent Framework core 1.18.0, OpenAI adapter 1.14.3, orchestrations 1.1.1; native telemetry plus Impact supplement Agent.run(stream=False|True) and Workflow.run(stream=False|True), tools and selected orchestration Cross-task stream consumption and durable checkpoint restoration are unassessed.
py.bedrock.converse.v1 Boto3/Botocore 1.43.92; Botocore owner 0.64b0 plus Impact supplement Converse and caller-consumed ConverseStream InvokeModel, ApplyGuardrail, aiobotocore and partner dialects are outside this claim.
py.mcp.client-tools.v1 Official MCP SDK 2.2.0; customer-owned connections caller-owned connect/initialize, list_tools, call_tool and close over stdio and Streamable HTTP Passive observation of application-initiated discovery, capabilities, protocol/request IDs and actual tool input/result/error; no SDK-initiated connection, background discovery or invocation.
py.openai-realtime.server.v1 OpenAI Realtime 3.8.0, websockets 15.0.1; explicit Impact attachment caller-owned server WebSocket control, response, tool, usage and terminal events Browser media, SIP, RTP, playback and SDK-owned connections are outside this claim.

Framework and provider spans can describe distinct work in one execution; their presence does not prove another paid call. Existing customer instrumentation and destinations remain customer-owned.

The base package installs the selected OpenTelemetry capture owners for every retained integration. It does not install provider clients, application frameworks, MCP or Realtime transports. impact.init() checks for those customer libraries without importing absent or disabled integrations and activates only the applicable owners.

The matrix records the selected versions resolved by the maintained all-extras environment. Optional public client convenience extras use bounded compatible ranges where the same public seam passes the lower and current cells. Narrow cells remain explicit: OpenAI Realtime stays on openai==3.8.0; Google ADK stays on 2.7.0 and caps the resolved OTel API/SDK at 1.43; ADK 2.8 and 2.9 cap OpenTelemetry below the version required by the selected Google owner. MCP 2.2.0 remains exact because its focused supplement uses version-specific seams. Agno's public Agent and FunctionCall seams pass both 2.9.0 and 3.0.9 source cells. Microsoft Agent Framework core 1.17.0/1.18.0 and its OpenAI adapter 1.14.2/1.14.3 pass the same selected Agent, Workflow and lifecycle cells. These bounds do not expand the route or operation claims in the table.

The matrix does not promise every route that a client can address. For each retained operation, check status().integrations and the actual representative Trace as described under Qualification.

PydanticAI setup

Import the explicit helper API from impact.integrations.pydantic_ai. This does not alter automatic activation through impact.init().

When the selected PydanticAI peer is installed, impact.init() activates the framework's official global instrumentation default with Impact's tracer and content settings. Construct agents after init. Existing enabled global instrumentation and explicit per-Agent settings, including instrument=False, remain authoritative.

PydanticAI uses the same global False value for its untouched default and for Agent.instrument_all(False). Impact cannot distinguish those states. To prevent Impact from activating PydanticAI across the process, use impact.init(integrations=impact.IntegrationOptions(pydantic_ai="disabled")). Calling Agent.instrument_all(False) before ordinary Impact initialization does not provide that opt-out.

Plain agents constructed after impact.init() use the selected global instrumentation automatically; they need no per-Agent setup or manual span. Add an enclosing impact.span only when the application wants to name and correlate a larger execution boundary that PydanticAI cannot infer. Native PydanticAI metrics remain customer-owned; Impact does not claim managed metric export.

Streaming, content and credentials

Capture observes semantic stream output only as the native owner and caller expose it. It does not read ahead, call a model again, close an application stream during SDK shutdown or turn partial consumption into a completed response. Completion, caller stop, provider error, cancellation and SDK shutdown remain distinct. Terminal identity and usage are known only when the native path exposes them. Dropping an unclosed stream cannot promise terminal output or usage.

The Google Interactions supplement assembles consumed text, function calls and function results. Its buffer admits up to 1 MiB of JSON-encoded semantic values and 2,048 segments, snapshots structured values before yielding them, and marks overflow as impact.google.stream.projection=partial.local-limit. Terminal identity, usage and outcome remain observable after that content limit. EOF without a terminal event and interrupted consumption retain an explicitly partial or unavailable result.

Selected R1 Product content includes semantic input, output, system instructions, tool definitions, model, response identity, finish reason and usage. It does not promise a raw provider request or response envelope, unknown vendor extensions, or replay of every consumed chunk. Unknown fields that an upstream owner or explicit application capture does emit remain intact through the telemetry pipeline. Focused integrations may retain additional bounded evidence where their matrix row says so; overflow and serialization loss remain explicit.

Explicit capture preserves ordinary stored Pydantic model fields after a bounded inspection of the model's resolved CoreSchema. Declared field exclusions and resolved serialization aliases are honored. Models with custom or computed fields, conditional exclusion, extra fields, or an unsupported field shape are not converted by application hooks; their safe siblings remain with partial.serialization-loss. A custom model serializer or unsupported model shape records omitted.serialization-failure instead of exposing a raw backing-field representation.

Released OpenAI instrumentation 1.1b0 misses Responses.parse and function-call/tool-result Responses history items. Impact connects the typed parse seam to the same official owner and supplements semantic function calls and tool results in input history. Ordinary messages still use upstream's projection; this does not restore native request envelopes.

For Responses streams that stop before a terminal response, Impact retains bounded text deltas actually consumed and the identity observed in response.created. Missing terminal usage remains unknown. Retention is bounded by encoded content size, fragment count and part count; omitted content carries an explicit limit marker. The compatibility owner avoids an extra async iterator around the selected native streams and leaves provider-owned iterator cleanup with OpenAI after native response cleanup. It preserves native errors and cancellation without reading ahead. Selected OpenAI 3.13/Python 3.14 early-close calls can still emit an upstream httpcore2 cleanup warning; paired calls reproduced it with and without Impact while preserving native results. Stream-manager cleanup stays with OpenAI; Impact does not traverse its decoder or HTTP-client internals.

Google records function parameter schemas in gen_ai.tool.definitions and a requested response schema in impact.google.response.schema; impact.google.response.schema_source preserves which supported config spelling supplied it. OpenAI records a requested output schema in impact.openai.response.schema, with source text.format.schema, response_format.json_schema.schema, text_format or response_format. Anthropic uses impact.anthropic.response.schema, with source output_config.format.schema or output_format. When available, impact.capture.<provider>.response.schema records capture or a known serialization/attribute-limit omission. A failed pre-call snapshot or a limit too small for the marker can leave both the schema and marker unavailable. Provider transport configuration, HTTP clients and known OpenAI, Anthropic and Google MCP credential paths are excluded from copied evidence. Ordinary application fields with similar names remain. Capture sanitizes copies and never mutates native request or response objects.

The bounded handling of complex Pydantic values omits unsafe callback-bearing subtrees with an explicit partial marker, retains safe ordinary siblings and does not execute application serializers.

Feedback and diagnostics

feedback() requires a name and at least a score, label or explanation. Omit target only while a valid recording span is active. An explicit native span, Product Trace or Session target creates a separate linked carrier and never mutates an ended span. Retain the returned id, producer and occurred_at when retrying the same occurrence. recorded=True means local capture only. Both packages bound the compact emitted feedback JSON, including its target, to 1 MiB of UTF-8 bytes, 4,096 JSON values and nesting below 64 levels. Labels and explanations share that whole-occurrence budget; oversized or invalid feedback is rejected before enqueueing.

status() separates trace and log provider ownership, each integration's activation state, limitations, bounded delivery counts and cleanup progress. Exact package owners and versions remain in the maintained integration matrix. status().runtime_id matches the generated impact.runtime.id on SDK-owned evidence and Impact-routed copies, alongside impact.sdk.version; caller context cannot override these SDK facts. Customer records remain unchanged. After Realtime attachment, status().realtime reports active connections and cumulative observed/captured/dropped counts, including completed connections. A successful flush() establishes only local exporter completion. Use the qualification readback for authenticated durable evidence.

An observed receiver rejection adds specific guidance to the existing delivery diagnosis: verify authorization, the OTLP route or request compatibility. Correct that configuration and run a fresh operation. A later successful export clears the current failure hint; cumulative delivery loss still records the earlier failed attempt.

Migrating from the earlier impact package

The R1 package keeps the public distribution and import name, but migration from the earlier public package requires code changes and is not drop-in compatible.

Earlier surface R1 replacement
Python 3.10 Python 3.11 or newer is required.
old endpoint configuration Supply the exact route endpoint and key with IMPACT_ENDPOINT/IMPACT_API_KEY or endpoint/api_key; endpoints are not derived from keys.
with_context, tags with impact.context(...); map only validated Product context fields rather than arbitrary process tags.
with_trace_context, with_impact_trace_context Use impact.inject_context(carrier), then with impact.context(propagated=impact.extract_context(carrier)) on receipt. Carrier values never grant Product tenancy.
trace, start_interaction, interaction controllers Use with impact.span(...) as operation, set output on the handle, and remove controller lifecycle code.
score Use impact.feedback(...) for native user or application feedback. It does not turn an old score into an Eval conclusion.
mark No current R1 package replacement. The canonical contract selects a bounded R1.5 Protect replacement; it does not restore a generic mark API.
instrument_asgi_app Call impact.init() during application startup and use a normal application boundary or maintained framework integration; there is no general launcher wrapper in R1.
old heartbeat and chat registration No general SDK heartbeat or legacy chat-handler alias is activated. R1.5 will use setup/traffic and actual Simulation/Protect readiness, plus one selected Simulation registration.
module-level shutdown impact.shutdown() remains available; prefer the returned runtime's shutdown() when the owner is already in scope.

The accepted R1.5 migration contract covers Impactful's public exports, configuration and actual application consumers, including Simulation, Protect, heartbeat replacement, CLI/IDE Source sync and installation assistance. Those replacements are planned; this guide will add exact migration instructions as their implementations are qualified. SDK installation snippets must continue to use only APIs available in the selected artifact.

R1.5 adds no Python 3.10, LlamaIndex or historical Google client support requirement. Product instructions and downloadable artifacts migrate alongside the application.

Qualification

status() identifies the installed artifact, selected capture owners, activation states, current support claims, loss and cleanup state. Each Supported claim retains its exact operation and ownership limits. Source contributors should use the root R1 execution plan for current release status; a source build does not establish package-index publication. Named JavaScript vendor coexistence evidence does not establish Python vendor coexistence.

For first use, initialize before client construction, run one representative application operation, then flush or shut down and inspect its Trace in the intended Impact Product and Environment. Check the actual input, output, model, tool effect and usage that the operation exposes. A local flush() success proves exporter completion only. The route setup report distinguishes a running SDK awaiting traffic from local delivery failures; it does not invent a representative Trace or claim durable readback. Keep supplied route/environment revisions current.

If the expected operation is missing, inspect status() for a disabled/missing owner, unsupported peer, late client construction, customer-owned destination or export failure. Repair that stated cause and repeat the same kind of application operation with a new execution ID. If only a facet is missing, inspect the claim's native stream/helper boundary and partial/omission markers before changing instrumentation. Do not add a second owner as a generic repair.

The standalone source checkout contains runnable qualification applications in python/examples, coexistence and Collector examples. Its canonical SDK specification is impact-sdk.md. Authenticated source-to-Product checks use the configured Impact APIs from the platform-owned black-box harness; the SDK repository does not import platform code. The installed qualification guide describes the shared receipt and readback procedure. Those source-only files are not required at runtime.

For source contributors, exact dependencies live in pyproject.toml and uv.lock; setup commands do not provision cloud resources:

uv run --project python --locked --all-extras pytest python/tests
uv run --project python --locked --all-extras ruff check python
uv run --project python --locked --all-extras python -m build --no-isolation python

Release files for impact 1.2.0rc1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for impact 1.2.0rc1
File Size Uploaded
impact-1.2.0rc1.tar.gz 447.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for impact 1.2.0rc1
File Interpreter ABI Platform
impact-1.2.0rc1-py3-none-any.whl Python 3 none any Details

Total release size: 580.3 kB

Release files / impact-1.2.0rc1.tar.gz

Download URL impact-1.2.0rc1.tar.gz
Size 447.6 kB
Tags Source
SHA-256 checksum
How to use checksums
4660b66e4d246e40c113b1ac4c91161d6b042ee5d9bb21338b54847e46924f03
BLAKE2b-256 checksum
How to use checksums
acc143680708b21cfe4b19e3fa8846465c0ff8754d378936c785a1a922dc61ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log

Release files / impact-1.2.0rc1-py3-none-any.whl

Download URL impact-1.2.0rc1-py3-none-any.whl
Size 132.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f5a52eed85de0ad846c9a2d3db14f2db44eed6072bd6db3e47c86d02bd0fca0b
BLAKE2b-256 checksum
How to use checksums
b842324fcb9688ea1c65ec5b495aeac6172674b4f2506315f45e2709a2a224b5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 13, 2026.

Transparency log
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page