Repository navigation
Antaeus v0.1.0
First public release. Antaeus turns human-written policies into versioned,
testable decisions (allow, review, deny, or failure) and runs locally
without an account. It includes a credential-free deterministic quickstart and
an experimental bring-your-own-key OpenAI semantic evaluator. The semantic
evaluator has not been measured on a frozen corpus and is not suitable for
enforcement. Public Go APIs and CLI behavior may still change in minor
releases before v1.0.0; see compatibility.
Install with brew install antaeusio/tap/antaeus, with
go install github.com/antaeusio/antaeus/cmd/antaeus@v0.1.0, or by downloading
an archive from this release and checking it against SHA256SUMS. Archives
carry GitHub build-provenance attestations
(gh attestation verify <archive> --repo antaeusio/antaeus).
Added
-
Release archives for macOS (amd64, arm64), Linux (amd64, arm64), and Windows (amd64) with SHA-256 checksums and build-provenance attestations, plus a Homebrew tap.
antaeus versionreports the module version forgo installbuilds. -
Experimental OpenAI Responses semantic adapter
io.antaeus.openai@0.1.0with strict structured output,store: false, a digest-pinned instruction template, a fixed origin without redirects, bounded bodies and typed retryable failures. CLIevaluate-profilenow runs OpenAI profiles using theOPENAI_API_KEYadapter default or explicit bindings, requiring saved project trust for project-supplied credential configuration. See the adapter guide. -
Profile-driven execution with bounded retries, deadlines, confidence escalation, operational fallbacks, and portable attempt traces.
-
CLI configuration inspection, credential checks, and project-scoped digest trust/revocation with strict local manifests.
-
Local profile and credential-reference precedence with immutable snapshots, project-digest trust checks, and redacted source summaries.
-
Initial repository foundation.
-
Go module and thin command foundation with version reporting.
-
Locked local validation and supported-target cross-build entry points.
-
Pre-v1 compatibility and planned platform-support documentation.
-
Portable v0alpha1 policy, decision request, Decision, and Problem Details schemas.
-
OpenAPI 3.1.2 description, examples, and offline conformance fixtures.
-
Public Go policy and decision types, canonical policy digests, validation, and deterministic reduction.
-
Provider-neutral evaluator types plus a digest-bound deterministic fixture-set contract and adapter.
-
Local evaluator execution that attaches policy outcomes after evidence, reduces deterministically, and records explicit fixture identity in Decision metadata.
-
Constrained JSON and YAML 1.2 policy loading with resource limits, stable parser errors, and language-neutral rejection fixtures.
-
CLI policy validation and exact, credential-free local fixture evaluation with RFC 8785 input canonicalization.
Changed
- CLI
evaluate-profileno longer requires--fixture-setand--casefor semantic profiles; fixture profiles still require both, and semantic profiles reject them. The diagnostic for uninstalled adapters changed from "only the deterministic fixture adapter is installed" to name both installed adapters. - Preserve UTF-8 character boundaries when truncating valid profile validation messages, retaining the 512-byte message cap, ASCII output, error codes and wrapped causes. This does not sanitize malformed adapter text or change policy/profile identity, Decisions or published schemas.
- Publish complete CLI trust markers atomically without overwriting existing entries, reject dangling intermediate configuration symlinks, and check user/trust directory containment by filesystem identity. Existing marker keys and published schemas remain unchanged; granting trust now requires same-directory hard-link support. See the configuration migration.
- Align execution metadata and Decision adapter/fixture versions with the existing ECMA-262 nonblank patterns: reject U+FEFF-only text and accept U+0085 as nonblank. Add Go/JavaScript conformance without changing published schemas or other fields' explicit whitespace rules. This affects result/Decision validation, both Go execution paths,
regression.Run, and CLIevaluate,testandevaluate-profilewith unusual fixture versions. A U+FEFF-version fixture still loads but fails later result validation on single-attempt/regression paths; see the field-specific migration. - Go profile-runner and CLI
evaluate-profilefailure Decisions expose the terminal operational code, append it after the generic unresolved reason, and classify transient retryability only when all unresolved rules failed solely for that cause. Deny precedence, the standalone reducer, legacy commands and published schemas are unchanged. See the Go/CLI migration note. - Retries no longer sleep away the final budget when the next jittered delay leaves no time to retry. Eligible fallback evidence can now produce a policy judgment where the old runner failed at the deadline; without recovery, transient trace/rule codes can replace the deadline code. Published schemas and the reducer are unchanged. Cancellation and exhausted deadlines retain precedence. See the Go/CLI migration note.
- Profile-runner Go callers must explicitly set
AllowSyntheticFixturesfor non-enforcement fixture execution. Enforcement still rejects fixtures. The fixture-only CLI opts in internally; its flags/output and published schemas are unchanged. See the migration note. - Documented existing adapter panic propagation, deferred cleanup and embedding-host isolation responsibilities; panics do not produce a Decision or completed trace.
- Tightened the unreleased v0alpha1 evaluator metadata so mode and synthetic status are explicit and deterministic fixtures carry exact set and adapter versions.
Fixed
scripts/with-build-lockkeeps the lock until an interrupted command's whole process group has stopped (escalating to KILL after a bounded wait), serializes stale-lock takeover, waits for owners that have not yet written metadata, and no longer treats another user's process as dead.scripts/test-build-lockcovers these cases (#42).scripts/cross-buildpinsGOAMD64=v1andGOARM64=v8.0instead of inheriting the caller's environment.