Repository navigation
Releases
v0.1.0.dev7
v0.1.0.dev7 — roster instance locations
This prerelease adds RosterError.instance_path so consumers can locate a rejected roster instance, for example ('legs', 3, 'timeout_s') for the fourth entry's timeout. The tuple comes from the same selected validation error as the existing schema path.
Nonedenotes an unavailable location, including direct/non-schema errors;()denotes the evaluated document root.- Existing
.documentattribution remains authoritative. Resolved indices refer to the final merged roster. - Constructor signatures, error codes, fixed messages and
.args,.path,.missing, validation selection/order, input copying, schema bytes, prompt/assets and package exports remain unchanged.
Under the current canonical schema, path elements are canonical field names and integer indices. Unknown-property errors identify their containing object without adding arbitrary unknown-key spelling or input values. Exception internals and serialization retain their existing behavior.
Published source: 62c3a741b729c6359cc5079a0306fad1fdd1fac8, the merge of PR #23. Its Git tree exactly matches the formally reviewed candidate f7e941000924172cd692ee84af8c840049876b29.
Verification: the candidate passed the three required family reviews with AGREED and ROUND_INTEGRITY_OK; a separate fresh Astra review found no material or Minor defect. Source/archive verification passed 1,541 tests, with nine installed public-consumer checks and synthetic smoke drivers. The merged commit passed separate package CI and API compatibility CI. The release workflow passed all four Ubuntu 24.04/macOS 15 × Python 3.12/3.14 verification jobs and published the wheel, sdist and release manifest. Downloaded assets match the CI artifacts byte-for-byte and match the manifest's source identity, version, sizes and SHA256 digests.
Automatic host delivery failed at its missing GitHub App configuration check after successful asset publication. The owner-requested follow-up is delivered directly to the three existing host proposal PRs below; no App/configuration change is included.
Host follow-up: adopt the verified release and retain/render .document plus typed .instance_path in host diagnostics, covering later-entry failures, root/unavailable locations and final-merged indices. Host formatting, native execution, pins and installation remain independently owned by Codex #46, Claude #1 and AGY #2.
Issue #9 remains partially resolved/open: arbitrary unknown-key names, raw validator explanations and verdict-side diagnostics are outside this bounded property. Pre-existing release-status wording remains assigned to PR #27. Synthetic tests do not establish real-provider behavior or host adoption/installation.
v0.1.0.dev6
Shared runtime compatibility and supported older consumer behavior are now explicit common contracts (R-SHARED-RUNTIME-COMPAT, C81-C83).
The additive Python API provides:
- Strict immutable consumer/runtime descriptions and deterministic, context-sensitive consumer binding IDs.
- Exact declared compatibility checks, including required commands and capabilities.
- Explicit or established-legacy binding selection, with refusal for missing, malformed, ambiguous or unsupported context.
- Conservative retention decisions that preserve consumer/active references and retain all assets when dependencies are unknown.
- Stable runtime-refusal codes preserved across ordinary copy, deepcopy and pickle reconstruction.
The dev4 public API floor, existing provider schemas/prompts and runtime bundle identities are preserved. No new dependency is introduced. See the API contract.
Hosts authenticate artifacts and compatibility evidence and own installation transactions, native adapters, configuration, authentication and execution. These pure APIs do not deploy a common launcher or certify a host's C81-C83 lifecycle. Codex adoption is separately reviewed; Claude and AGY maintainers receive pinned follow-up work through their existing proposal PRs. Existing users do not acquire a different host context merely by upgrading this library.
Local verification: 1,521 tests passed in both source and unpacked sdist on macOS ARM64/Python 3.12.13. Authoring/assets/API checks and all four installed-wheel drivers passed; the two rebuilt wheels were byte-identical. Final independent review and exact-head native CI evidence are recorded in PR #28.
This is a development prerelease. The published-event workflow verifies the exact tag on native macOS/Ubuntu with Python 3.12/3.14, then publishes its normalized sdist, rebuilt wheel and triad-release.json manifest. Consumers should verify that manifest and exact archive hashes before adoption.
v0.1.0.dev5
Changes
This prerelease fixes admission of otherwise valid AGY review results that include provider-generated toolAction or toolSummary metadata. It implements the shared C80 / R-AGY-METADATA contract and consolidates the PR #20/#22 adoption and release documentation in PR #24.
- Adds the public
separate_agy_metadata(raw, *, declared_fields=())helper. It strictly parses original JSON first, then separates only undeclared top-leveltoolActionandtoolSummaryfields. It returns payload and metadata dictionaries without changing the raw input. - Applies that separation automatically in
admit_outputfor theagy-stream-jsoncarrier. Declared fields, nested fields and other unknown fields remain subject to the existing contract. - Preserves duplicate-key, encoding and non-finite-number rejection; terminal failure checks; canonical schema validation; all six invocation bindings; and negative review verdicts. Generic
validate_verdict,native-finaland other carriers remain strict. - Clarifies C23 recovery: retain original AGY bytes and separated metadata, project the payload when needed, and pass the projected JSON through strict
native-finalvalidation. - Documents independent Codex, Claude and AGY host adoption, manual release notice delivery and the existing automation limits.
Consumer action
The README and dated status documents in this frozen source were written before publication and still call dev5 an unpublished candidate. This release and its completed artifact manifest supersede that publication-status wording; the retained wording has no runtime effect.
Pin this exact release and verify the wheel/sdist against the triad-release.json manifest attached by the release workflow. Hosts adopting the helper directly must preserve raw output and metadata, and retain their terminal, schema and invocation-binding checks. Existing host-specific adapters, model/effort selection, installation and configuration remain host-owned.
This library release does not approve or deploy Codex adapter PR #47, upgrade an installed toolkit, or establish fresh installed-session behavior. Each consumer must complete its own integration, native verification and review. The two-host automated notice workflow is separate from the owner-requested manual notices to all three consumers; no GitHub App configuration is changed by this release.
Compatibility and verification
- Additive API; existing dev4 public API floor and canonical schema identities are retained.
- Python 3.12 or later, as before. This is a development prerelease, not a stable release.
- Reviewed PR #24 candidate:
30bf2c93d712ea6adbecb54adb7516d6ce017246. - Merge source:
859f27c07c1123e87b50344f587999a0cbc172a6; its complete file tree is identical to the reviewed candidate. - Final review round
20261023-lib24-release-r2-b73603: Opus, Sol and Argon allSAFE TO MERGE, collectionAGREED, finalROUND_INTEGRITY_OK; separate Astra comparison found no actionable defect. - Candidate validation: 1,397 local tests, specification assets and authoring map, API compatibility, sdist-to-wheel rebuild and installed-wheel verification; exact-head native Ubuntu/macOS CI passed.
- Published archives are supplied only by the exact-tag release workflow after its four native source/archive/wheel verification jobs pass. The attached manifest records the final source commit and artifact identities.
PR: #24
Full comparison: v0.1.0.dev4...v0.1.0.dev5
v0.1.0.dev4
Development prerelease of the common TRIAD Python library. Requires Python 3.12
or later; distributed under the MIT license.
This version provides original-JSON parsing, canonical v2 verdict admission,
named roster merging and validation, shared prompt rendering, output-carrier
extraction, agreement reduction and bounded asynchronous host callbacks. It also
includes safe roster diagnostics and transport-object shape validation. Codex,
Claude, Gemini CLI and AGY entries are configurable; native execution remains
owned by each consumer.
The canonical specification, common prompt assets and deterministic implementation
are maintained together in this repository. The public API and conformance maps
describe the implemented contracts and their limits.
Obtain the library
The release workflow attaches these assets after the tagged source passes native
macOS/Ubuntu verification with Python 3.12 and 3.14:
Use the library installation and source-build guide
to select and verify exact artifacts, install in an isolated environment and
check the installed API/bundles. See the API contract
and conformance map.
This package is distributed through GitHub Releases, not a Python package index.
Consumer integration and deployment remain independent. Release-notice PRs report
library changes and artifact links; they do not automatically adopt or install
the library in a host.
Consumer change list — dev4 (clarified 2026-10-22)
This section describes the already published dev4 package. The source is
087af94a7078de0ae9701fb057840b5492f51f66; the wheel SHA-256 is
c5bfdf10c4ce81f431ec7f77106e4d77b1556ac9c7b6b01bdb6616f988e8b2cc.
This clarification changes release notes only, not the tag, package version or assets.
- Admission diagnostics:
AdmissionError.field, schema.pathand
selected-required-only.missingprovide structured, value-free diagnostic
metadata. Keep refusal codes and invocation-binding checks intact. - Prompt provenance:
render_review_clauses(..., with_manifest=True)
optionally returns rendered text with an ordered clause-name/hash manifest.
The default return remains text; host custody remains host-owned. - Separate roster stages:
merge_rostervalidates defaults and override
inputs and returns an independent merge;validate_resolvedvalidates the
final roster. The intermediate merge can be incomplete, so validate before
consuming it.resolve_rosterretains its validated-result behavior. - Roster diagnostics:
RosterError.path,.missingand.document
identify the selected schema failure and defaults/override/resolved stage.
The path is a schema path, not an input index;anyOfcan leave
.missing=None. Fixed messages and first-error selection remain intact. - Transport shape:
validate_transport_receiptandReceiptError
validate the parsed nested transport object. They do not establish truthful
execution, invocation equality, current attempts or packet/receipt custody.
These additions do not change all-selected unanimous agreement. Keep
acceptance metadata required, including for informational entries; keep
legacy schema $id identities and exact bundle/provenance verification.
Native spawning, provider controls, host diagnostics and deployment remain
consumer responsibilities.
Post-release follow-up — not included in dev4
- Issue #9:
instance-location diagnostics remain optional and unimplemented. Do not assume
aninstance_pathAPI or infer an input location from the schema path. - Issue #17 and
issue #21:
preserve existing schema identities and the acceptance contract pending any
separately approved transition. - Issue #5:
additional extraction boundaries remain held. - PR #20 proposes
wording-only corrections; draft PR #22
reconciles adoption status and records the release plan. Both are open as of
2026-10-22 and are not changes to these release assets.
Host maintainer handoff
The inspected Codex, Claude and AGY manifests already record this exact dev4
source and wheel. No package refresh is required solely because of this notice.
Each host maintainer should review the relevant API/diagnostic behavior, make
needed adapter/test/documentation changes in its owning repository, and report
an implementation PR or evidence that no change is needed. Any later library
upgrade must use its own published version and verified manifest.
- Codex handoff PR #46
- Claude handoff PR #1
— implement incodefoundry-io/triadsource, then export. - AGY handoff PR #2
— current default branchfeat/agy-triad-dispatch; retainhost="B".
These handoffs convey changes and integration responsibilities. Each host owns
its implementation, verification, release and installation decisions.