diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 963c83a..881bcf3 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,7 +8,7 @@ on: tag: description: Git tag to publish required: true - default: v0.5.0 + default: v0.6.0 permissions: contents: read @@ -46,8 +46,8 @@ jobs: exit 1 fi adapter_version="$(python -c 'import pathlib, tomllib; print(tomllib.loads(pathlib.Path("adapters/reference_workspace_action/pyproject.toml").read_text())["project"]["version"])')" - if [ "$adapter_version" != "0.1.0" ]; then - echo "Reference workspace adapter version must be 0.1.0; found $adapter_version" >&2 + if [ "$adapter_version" != "0.2.0" ]; then + echo "Reference workspace adapter version must be 0.2.0; found $adapter_version" >&2 exit 1 fi @@ -61,7 +61,7 @@ jobs: pathlib.Path("adapters/reference_workspace_action/pyproject.toml").read_text() )["project"] assert project["name"] == "ace-reference-workspace-action" - assert project["dependencies"] == ["ace-core>=0.5.0,<0.6"] + assert project["dependencies"] == ["ace-core>=0.6.0,<0.7"] PY - name: Install build tooling @@ -74,6 +74,21 @@ jobs: run: | python -m build --outdir dist/core python -m build --outdir dist/reference-adapter adapters/reference_workspace_action + + # The root project uses build_backend.py directly. The independently packaged adapter + # uses setuptools, so normalize its completed sdist through the same fixed-epoch helper + # before validation and upload. + python - <<'PY' + import os + from pathlib import Path + + from build_backend import _normalize_sdist + + archives = sorted(Path("dist/reference-adapter").glob("*.tar.gz")) + assert len(archives) == 1, archives + _normalize_sdist(archives[0], int(os.environ["SOURCE_DATE_EPOCH"])) + PY + python -m twine check dist/core/* dist/reference-adapter/* - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4 diff --git a/CHANGELOG.md b/CHANGELOG.md index 1350c4c..18660ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,32 @@ Notable user- and contributor-visible changes are recorded here. ## Unreleased +## 0.6.0 + +### Measured Intelligence + +- Add domain-neutral, versioned criteria, condition, evidence, evaluation, and governance-proposal + contracts that link an intelligence artifact or cognition revision to exact material-use, + Decision, reviewed Action, observed-result, Outcome, control, and cutoff provenance. +- Classify bounded matched evidence as `useful`, `harmful`, or `unproven` without accepting a + caller-supplied quality label. Missing attribution, mismatched conditions, future leakage, + unavailable outcomes, duplicate evidence, and insufficient matched support remain explicit. +- Persist evaluation and proposal receipts atomically through Core's append-only record boundary. + Exact historical replay survives restart; divergent replay, scope drift, and unauthorized + promotion fail closed. +- Keep promotion, rejection, rollback, and retirement proposals non-effective, non-selectable, and + unapplied. A separately authorized reviewer may record an accept/reject `no_action` Decision but + cannot silently change effective state. + +### Release and hardening boundary + +- Version the Core distribution at 0.6.0 and the separately packaged reference action adapter at + 0.2.0 with an `ace-core>=0.6.0,<0.7` dependency. The unchanged adapter implementation retains its + 0.1.0 capability artifact identity. +- Add the issue #49 F1 generation guard and durable receipt reconciliation, and pin the legacy + optimizer query to `self_optimizer_proposal`. F3 remains unresolved and tracked separately under + its explicit containment and 2026-11-05 deadline. + ### Owner-governed monitoring - Add public append-only lifecycle requests, receipts, and a durable application service for one diff --git a/Dockerfile b/Dockerfile index 05862eb..89aed80 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ FROM python:3.12-slim -ARG ACE_VERSION=0.5.0 +ARG ACE_VERSION=0.6.0 LABEL org.opencontainers.image.title="ace-core" \ org.opencontainers.image.version="${ACE_VERSION}" \ org.opencontainers.image.source="https://github.com/augmented-cognition-engine/core" diff --git a/README.md b/README.md index 3829ec6..18ef33c 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ and provider-neutral, it commits every observation, derivation, brief, decision, action, and outcome as an immutable, product-scoped record under explicit authority. -![version 0.5.0](https://img.shields.io/badge/version-0.5.0-blue) +![version 0.6.0](https://img.shields.io/badge/version-0.6.0-blue) ![Python 3.12](https://img.shields.io/badge/python-3.12-blue) ![License Apache-2.0](https://img.shields.io/badge/license-Apache--2.0-green) ![status: developer preview](https://img.shields.io/badge/status-developer%20preview-orange) @@ -342,23 +342,31 @@ transforms only), `ace.intelligence.personas/v1alpha1` (personas plus signal-rou --- -## What 0.5.0 adds - -0.5.0 is the **Reasoning into Action** release. It carries the governed cognition and Intelligence -foundation from 0.4.x through an exact approved Decision into bounded, attributable work. - -- **Governed action execution.** Core binds an authorized Decision to one effect-free adapter plan, - persists admission before execution, and records success, failure, partial effect, timeout, - cancellation, or restart uncertainty honestly. -- **Human review, verification, repair, and promotion.** Exact-material review happens before an - effect; verification and promotion remain separate after it; repair creates a linked successor - and is forbidden when the earlier effect is unknown. -- **Restart-safe task control.** Negotiated cancellation, declared wall-clock limits, terminal - resource receipts, durable attempt identity, and deterministic linked replay support the bounded - journey. -- **A separately packaged reference adapter.** `ace-reference-workspace-action==0.1.0` imports only - the public Core contract, is explicitly constructed and registered, and performs one create-only - workspace export. It is attached to the 0.5.0 GitHub Release, not bundled in `ace-core`. +## What 0.6.0 adds + +0.6.0 is the **Measured Intelligence** release candidate. It adds a bounded, domain-neutral way to +determine whether an intelligence artifact or governed cognition revision helped, harmed, or +remains unproven under explicit product-owned criteria. The candidate is not a published release +and no governance proposal applies itself. + +- **Exact evaluation identity.** Product-owned criteria, matched conditions, evaluated artifacts, + material-use attribution, Decisions, reviewed Actions, observed results, Outcomes, controls, and + cutoffs remain exact immutable coordinates rather than free-form claims. +- **Useful, harmful, or unproven.** Missing attribution, mismatched conditions, post-cutoff + evidence, unavailable outcomes, duplicate evidence, and insufficient matched support fail closed + to explicit exclusions or `unproven` rather than manufacturing benefit. +- **Append-only governance proposals.** Evaluations may propose promotion, rejection, rollback, or + retirement, but every proposal remains non-effective, non-selectable, unapplied, and subject to + separate human/Core authority. An authorized disposition records `accept` or `reject` as a + durable `no_action` Decision without silently changing live state. +- **Durable replay and provenance.** Evaluation and proposal receipts reopen exactly across a real + store restart; stable replay returns historical material, while divergent replay, scope drift, + and unauthorized promotion fail closed. + +The bounded **Reasoning into Action** topology introduced in 0.5.0 remains unchanged: one ACE host, +one durable store, and explicitly trusted in-process adapters. The separately packaged reference +adapter candidate is distribution 0.2.0 with `ace-core>=0.6.0,<0.7`; its unchanged executable +implementation keeps artifact identity 0.1.0. The governed Intelligence foundation introduced in 0.4.0 remains part of the same install: @@ -722,8 +730,9 @@ stay host-free, and host adapters are the only `core.engine` edge into the publi ## Maturity and limitations -**0.5.0 is a developer preview and a single-node Reasoning into Action release.** Read this section -before you build on it. +**0.6.0 is an unpublished developer-preview release candidate.** Its Measured Intelligence claim +is bounded to the recorded product criteria, matched controls, exact provenance, and single-node +topology. Read this section before you build on it. What is bounded: @@ -767,10 +776,10 @@ The north-star loop is: understand → reason → decide → act with authority → observe outcomes → improve future reasoning ``` -0.5.0 delivers the bounded Reasoning into Action span of that loop: an approved decision proceeds -through exact human review into attributable action, separate verification, linked repair when -effects are known, and explicit promotion. 0.6.0 (*Measured Intelligence*) is next and promotes or -retires reasoning revisions because of measured outcomes. +0.5.0 delivers the bounded Reasoning into Action span of that loop. The unpublished 0.6.0 +(*Measured Intelligence*) candidate connects that journey to later product-owned outcomes and may +propose promotion, rejection, rollback, or retirement without applying any of them. Public artifact +installation and release-owner acceptance remain separate gates. - [Public roadmap](https://github.com/augmented-cognition-engine/core/blob/main/ROADMAP.md) — outcome state, sequencing, and declared boundaries diff --git a/ace/__init__.py b/ace/__init__.py index f254e67..ce7098a 100644 --- a/ace/__init__.py +++ b/ace/__init__.py @@ -1,3 +1,3 @@ """Public Python package identity for ACE.""" -__version__ = "0.5.0" +__version__ = "0.6.0" diff --git a/ace_mcp_client/__init__.py b/ace_mcp_client/__init__.py index 63b0522..f200333 100644 --- a/ace_mcp_client/__init__.py +++ b/ace_mcp_client/__init__.py @@ -1,4 +1,4 @@ # ace_mcp_client — standalone MCP thin client for ACE # Zero engine imports. Pure HTTP calls to the ACE API. -__version__ = "0.5.0" +__version__ = "0.6.0" diff --git a/adapters/reference_workspace_action/README.md b/adapters/reference_workspace_action/README.md index deffef9..33ca5ea 100644 --- a/adapters/reference_workspace_action/README.md +++ b/adapters/reference_workspace_action/README.md @@ -10,9 +10,12 @@ execution creates a new file with exclusive-create semantics. Existing files, sy parent directories, absolute paths, traversal, and paths outside the workspace fail closed. This package is not included in the `ace-core` wheel and is not dynamically discovered. A host must -install it, construct it, and register its exact artifact identity explicitly. The ACE 0.5.0 -release workflow builds it independently and attaches its wheel and source distribution to the -matching GitHub Release; only the Core distribution is sent to PyPI. +install it, construct it, and register its exact artifact identity explicitly. The ACE 0.6.0 +release-candidate workflow builds it independently and would attach its wheel and source +distribution to a separately authorized matching GitHub Release; only the Core distribution would +be sent to PyPI. -The dependency begins at `ace-core>=0.5.0,<0.6`. Install `ace-core==0.5.0` from PyPI and the adapter -wheel from the public [`v0.5.0` GitHub Release](https://github.com/augmented-cognition-engine/core/releases/tag/v0.5.0). +Distribution 0.2.0 targets `ace-core>=0.6.0,<0.7`. The executable implementation is unchanged from +0.1.0, so its public capability artifact identity remains 0.1.0 rather than manufacturing a new +implementation identity for dependency metadata alone. The 0.2.0 archives remain unpublished +candidate artifacts until the separate release gate passes. diff --git a/adapters/reference_workspace_action/pyproject.toml b/adapters/reference_workspace_action/pyproject.toml index dd0f2b5..8fef1bc 100644 --- a/adapters/reference_workspace_action/pyproject.toml +++ b/adapters/reference_workspace_action/pyproject.toml @@ -4,12 +4,12 @@ build-backend = "setuptools.build_meta" [project] name = "ace-reference-workspace-action" -version = "0.1.0" +version = "0.2.0" description = "Reference trusted workspace-export action adapter for ACE" readme = "README.md" requires-python = ">=3.12" license = "Apache-2.0" -dependencies = ["ace-core>=0.5.0,<0.6"] +dependencies = ["ace-core>=0.6.0,<0.7"] [tool.setuptools.packages.find] where = ["src"] diff --git a/adapters/reference_workspace_action/tests/test_adapter.py b/adapters/reference_workspace_action/tests/test_adapter.py index cc7e088..fa607a8 100644 --- a/adapters/reference_workspace_action/tests/test_adapter.py +++ b/adapters/reference_workspace_action/tests/test_adapter.py @@ -1,12 +1,14 @@ from __future__ import annotations import ast +import tomllib from datetime import UTC, datetime, timedelta from pathlib import Path import pytest from ace_reference_workspace_action import ( ACTION_TYPE, + ADAPTER_ARTIFACT, ReferenceWorkspaceActionAdapter, ReferenceWorkspaceActionError, ) @@ -27,6 +29,16 @@ PRODUCT = "product:reference-action" +def test_distribution_targets_core_06_without_rekeying_unchanged_implementation() -> None: + project = tomllib.loads((Path(__file__).resolve().parents[1] / "pyproject.toml").read_text(encoding="utf-8"))[ + "project" + ] + + assert project["version"] == "0.2.0" + assert project["dependencies"] == ["ace-core>=0.6.0,<0.7"] + assert ADAPTER_ARTIFACT.implementation_version == "0.1.0" + + def _precondition(kind: str, sequence: int) -> GovernedStateHeadPreconditionV1Alpha1: return GovernedStateHeadPreconditionV1Alpha1( state_kind=kind, diff --git a/core/engine/version.py b/core/engine/version.py index 82b8ac3..9ce2615 100644 --- a/core/engine/version.py +++ b/core/engine/version.py @@ -1,3 +1,3 @@ """Single source of truth for the ACE distribution version.""" -VERSION = "0.5.0" +VERSION = "0.6.0" diff --git a/docs/design/measured-intelligence-v0.6.0-release-candidate-work-packet-v1.md b/docs/design/measured-intelligence-v0.6.0-release-candidate-work-packet-v1.md new file mode 100644 index 0000000..017bbfe --- /dev/null +++ b/docs/design/measured-intelligence-v0.6.0-release-candidate-work-packet-v1.md @@ -0,0 +1,98 @@ +# ACE 0.6.0 Measured Intelligence release-candidate work packet (v1) + +Status: **bounded release candidate; unpublished; does not close issue #38** + +Date: 2026-08-11 + +## Outcome + +Freeze the final package and build identities for the already merged Measured Intelligence runtime +without merging, tagging, publishing, or claiming the milestone complete. The release candidate +must preserve the public product promise: + +> ACE can determine, under explicit and inspectable product-defined criteria, whether an +> intelligence artifact or governed cognition revision helped, harmed, or remains unproven, and +> can propose—but never silently apply—promotion, rejection, rollback, or retirement. + +The smallest accepted journey remains: + +```text +artifact or cognition revision +→ exact material-use attribution +→ Decision +→ reviewed Action +→ observed result and Outcome +→ matched product-owned evaluation +→ useful | harmful | unproven +→ non-effective governance proposal +→ optional authorized no-action disposition +``` + +## Source and dependencies + +This packet starts from exact Core default-branch commit +`f0d2191ba7cf2d33ccfc3c821422786929be8349`. Runtime Measured Intelligence, issue #49 F1/F5 +hardening, and owner-governed monitoring are already merged inputs. The public issue #49 checklist +marks F1 and F5 complete; unresolved, unwaived F3 is re-dated to `2026-11-05` under documented +containment. + +Release closeout still depends on review and merge of Core PR #95, review and merge of World PR +#17, final artifact verification from the eventual release merge, clean public-index installation, +compatibility/security acceptance, and explicit release-owner approval. This packet does not infer +any of those outcomes. + +## Candidate identities + +| Artifact | Candidate identity | Publication boundary | +|---|---|---| +| Core + Intelligence | `ace-core==0.6.0` | PyPI only after a separately authorized exact `v0.6.0` release | +| Reference action adapter | `ace-reference-workspace-action==0.2.0` | separate wheel and sdist attached to the Core GitHub Release; never bundled into Core or uploaded by the Core PyPI job | + +The adapter distribution changes because its dependency window becomes `ace-core>=0.6.0,<0.7`. +Its executable implementation is unchanged, so the public capability artifact identity remains +0.1.0. Dependency metadata alone must not manufacture a new implementation identity or invalidate +accepted action receipts. + +## Acceptance + +1. Every Core package, import, engine, reference-extension, lock, container, and workflow identity + agrees on 0.6.0. +2. The adapter distribution is 0.2.0, depends exactly on `ace-core>=0.6.0,<0.7`, retains executable + artifact identity 0.1.0, and imports only public `ace.core` contracts. +3. Core and adapter wheel/source archives build twice under one fixed source epoch with byte-equal + pairs, pass strict metadata validation, keep tests out of both wheels, exclude unintended + packages, and keep adapter code out of Core. +4. A clean Python 3.12 environment installs the exact candidate archives, resolves both versions + from `site-packages`, exposes exactly eleven thin MCP tools, and runs the focused package, + measured-impact, authority, replay, and adapter suites. +5. Required repository lint, fast, naked-kernel, security, Canvas, and Docker gates pass on the + final draft-PR head. +6. The draft records exact hashes and limitations. No tag, GitHub Release, PyPI upload, milestone + closure, or supported/public claim occurs in this packet. + +## Fail-closed release conditions + +The candidate fails if any identity diverges; a version is already occupied on PyPI; the Core +archive contains adapter code; an archive contains tests, credentials, or local build state; a +proposal becomes effective or selectable; historical replay reauthorizes or recomputes; the World +journey requires domain nouns in Core/Intelligence; or an unavailable outcome is reported as +benefit. + +## Non-claims + +This packet does not prove causality, general benefit, SI4 completion, live freshness, hostile-code +isolation, distributed execution, cross-process exactly-once effects, automatic promotion, or a +general model of reality. Market's independent `unproven` reproduction remains valid evidence that +the neutral contract can abstain; it is not a release blocker or a harmful result. + +## Owned files, rollback, and deletion criteria + +This packet owns only version identities, release workflow guards, candidate-facing README and +changelog text, focused version tests, this work packet, and its candidate evidence. It changes no +schema, runtime contract, durable record, authority path, Domain Pack, connector policy, MCP tool, +tag, or publication state. + +Rollback reverts only those release-candidate changes. Preserve the evidence as a point-in-time +record if final merge identities or artifact epochs change, and supersede it with public release +evidence only after the actual tag, trusted publication, clean public-index installation, World +artifact reproduction, and release-owner acceptance all pass. diff --git a/docs/evidence/README.md b/docs/evidence/README.md index 9e0fdbf..161f33c 100644 --- a/docs/evidence/README.md +++ b/docs/evidence/README.md @@ -47,6 +47,8 @@ superseded by later work and is kept for audit trail only. — candidate in-transaction generation guard, durable review reconciliation, and legacy table pin; not release closeout - [Measured Intelligence merged-source convergence](measured-intelligence-v0.6.0-merged-source-convergence-candidate-v1.md) — exact merged Core artifact, public World reproduction, independent Market restart proof, and remaining release gates; not release closeout +- [ACE 0.6.0 Measured Intelligence release candidate](measured-intelligence-v0.6.0-release-candidate-v1.md) + — reproducible package identities, installed-artifact proof, and green required CI; unpublished - [State Engine TP0 current-runtime baseline](state-engine-tp0-runtime-baseline-v1.md) - [State Engine TP1A truthful observation outcomes](state-engine-tp1a-truthful-observation-outcomes-v1.md) - [State Engine TP1 reliable memory lifecycle](state-engine-tp1-reliable-memory-lifecycle-v1.md) diff --git a/docs/evidence/measured-intelligence-v0.6.0-release-candidate-v1.md b/docs/evidence/measured-intelligence-v0.6.0-release-candidate-v1.md new file mode 100644 index 0000000..1ef057c --- /dev/null +++ b/docs/evidence/measured-intelligence-v0.6.0-release-candidate-v1.md @@ -0,0 +1,133 @@ +# ACE 0.6.0 Measured Intelligence release-candidate evidence (v1) + +Status: **candidate, unpublished; required repository verification passed; does not close issue #38** + +Date: 2026-08-11 + +## Point-in-time source + +- Default-branch base: `f0d2191ba7cf2d33ccfc3c821422786929be8349` +- Candidate implementation commit: `6e1a3a733e17a5c8e0d7edc9bcb8017ff5f0e8f0` +- Candidate branch: `codex/v0.6.0-release` +- Fixed build epoch: `1786477483`, the candidate implementation commit timestamp + +This record verifies only that exact implementation commit. The evidence commit, PR review, +dependency merges, and any later release commit necessarily change the Core archives and require a +fresh exact-source rebuild. No artifact named below has been tagged, uploaded, or published. + +## Candidate artifacts + +Two independent builds under the fixed epoch produced byte-equal pairs: + +| Artifact | Candidate identity | SHA-256 | +|---|---|---| +| Core wheel | `ace_core-0.6.0-py3-none-any.whl` | `baf11e4a6283a28e1593adb992a8d59a3bfcec29dba003aeb06c94ae3043647f` | +| Core source distribution | `ace_core-0.6.0.tar.gz` | `a42984b3dcb5dfb0872230767de74ed745e79566937d85f47109c3c49510d67a` | +| Reference adapter wheel | `ace_reference_workspace_action-0.2.0-py3-none-any.whl` | `32ec89012aea11fbc08018ccb80dc72ccae435b92c187e65a8b0ad23d3fcc58a` | +| Reference adapter source distribution | `ace_reference_workspace_action-0.2.0.tar.gz` | `0cd3e7fbe746c7780baa6206d9cc2d568d884cb9f949578cabaf0569991db523` | + +Strict package-metadata validation passed for all four archives. An independent archive probe +confirmed: + +- both wheels exclude tests; +- the Core wheel contains no reference-adapter package; +- the adapter wheel contains no Core or engine package; +- the adapter metadata requires exactly `ace-core>=0.6.0,<0.7`; +- both source distributions have normalized epoch, owner, and group metadata. + +The release workflow now normalizes the separately built adapter source distribution with the same +repository build backend used for Core. Before that guard was added, repeated raw adapter source +builds differed in host/build metadata; the release candidate therefore records the discovered +failure and the reproducible result rather than treating a one-off build as sufficient. + +## Installed-artifact probe + +A new CPython 3.12.13 environment outside the repository installed only the exact Core and adapter +wheels above plus their resolved public dependencies. The probe reported: + +- `ace-core==0.6.0` and `ace.__version__ == "0.6.0"`, imported from `site-packages`; +- `ace-reference-workspace-action==0.2.0`, imported from `site-packages`; +- unchanged adapter capability implementation identity `0.1.0`; +- exactly eleven thin runtime tools with Intelligence disabled. + +`pip-audit 2.10.0` reported **no known vulnerabilities** in the installed dependency set. It skipped +only `ace-core==0.6.0` and `ace-reference-workspace-action==0.2.0`, because neither candidate +version exists on PyPI. Exact-version registry probes independently returned not-found for both +candidate versions at the time of this record. + +## Repository verification + +Focused candidate verification: + +```text +PYTHONPATH=adapters/reference_workspace_action/src .venv/bin/pytest \ + tests/test_package_identity.py \ + tests/test_build_backend.py \ + tests/intelligence/test_measured_impact.py \ + tests/intelligence/test_measured_impact_disposition.py \ + adapters/reference_workspace_action/tests/test_adapter.py \ + -q --tb=short +``` + +Result: **51 passed, 2 skipped** in 4.49 seconds. + +Repository lint and format checks: + +- `.venv/bin/ruff check .` — passed; +- `.venv/bin/ruff format --check .` — passed, 2,047 files already formatted. + +Local fast-suite attempt: + +```text +.venv/bin/pytest -m "not e2e" -q --tb=short +``` + +Result: **7,299 passed, 241 skipped, 249 deselected, 7 failed** in 231.88 seconds. The seven +failures were environmental rather than measured-impact or package-identity failures: + +- four loopback socket tests could not bind/connect inside the default local sandbox and passed + unchanged when rerun with loopback access; +- three checksum-frozen historical runtime-baseline tests require a normal Git checkout, while + this packet is intentionally built in a linked Git worktree whose `.git` entry is a file. + +The historical baseline reader was not changed to conceal that worktree limitation: doing so would +change checksum-frozen acceptance source. + +Draft PR #96 then ran the repository workflow from normal-checkout head +`b53acad80af6a038d2e0b25a28de79d2b3b595d4`. GitHub Actions run `31530146316` passed all six +required jobs: + +- lint — passed in 11 seconds; +- Canvas typecheck, tests, and naked build — passed in 1 minute 19 seconds; +- fast tests — passed in 6 minutes 26 seconds; +- security audit — passed in 14 seconds; +- naked kernel with zero extensions — passed in 6 minutes 45 seconds; +- Docker build and health-endpoint probe — passed in 50 seconds. + +That normal-checkout result settles the linked-worktree baseline limitation without changing the +checksum-frozen reader. + +## Product evidence composed, not re-certified + +This packaging packet does not recompute or promote the Measured Intelligence outcome. It composes +already merged Core runtime and issue #49 F1/F5 hardening with two still-reviewable proving targets: + +- Core convergence PR #95 at `475cdf537e1ebae941785adb539bb2b48489c739`; +- World Intelligence public-data PR #17 at `a85da4289ff80fff6e6507b546dca191ff92d841`. + +The World journey demonstrates the useful path from an exact Brief through Decision, reviewed +Action, observed result, Outcome, matched evaluation, and a non-effective proposal. Market's +independent reproduction remains `unproven`, which demonstrates abstention rather than benefit or +harm. Both contracts remain domain-neutral; source policy and domain nouns stay outside Core. + +## Remaining release gates and non-claims + +The candidate is not release-ready until human review and merge of Core PR #95 and World PR #17, +final-merge artifact rebuild, clean public-index installation, independently rerun World artifact +evidence, and explicit release-owner approval all pass. Issue #49 F3 remains open, unwaived, +contained, and explicitly due `2026-11-05`; this packet does not silently resolve it. + +This evidence does not prove causality, general benefit, SI4 completion, live freshness, +hostile-code isolation, distributed execution, cross-process exactly-once effects, automatic +promotion, or ACE 0.6 completion. It authorizes no merge, tag, GitHub Release, PyPI upload, issue +closure, or milestone claim. diff --git a/extensions/reference/extension.py b/extensions/reference/extension.py index d5c837e..45b43ec 100644 --- a/extensions/reference/extension.py +++ b/extensions/reference/extension.py @@ -56,7 +56,7 @@ class ProductExtension: """The open `product` extension — copy this file to start your own.""" name = "product" - version = "0.5.0" + version = "0.6.0" def register(self, reg: "Registry") -> None: # This must remain the first operation. A current reference extension diff --git a/infra/docker-compose.yml b/infra/docker-compose.yml index 2406aed..5df07a1 100644 --- a/infra/docker-compose.yml +++ b/infra/docker-compose.yml @@ -40,7 +40,7 @@ services: context: .. dockerfile: Dockerfile args: - ACE_VERSION: "0.5.0" + ACE_VERSION: "0.6.0" depends_on: surrealdb: condition: service_healthy @@ -61,9 +61,9 @@ services: context: .. dockerfile: Dockerfile args: - ACE_VERSION: "0.5.0" + ACE_VERSION: "0.6.0" labels: - org.opencontainers.image.version: "0.5.0" + org.opencontainers.image.version: "0.6.0" depends_on: surrealdb: condition: service_healthy @@ -98,9 +98,9 @@ services: context: .. dockerfile: Dockerfile args: - ACE_VERSION: "0.5.0" + ACE_VERSION: "0.6.0" labels: - org.opencontainers.image.version: "0.5.0" + org.opencontainers.image.version: "0.6.0" depends_on: surrealdb: condition: service_healthy diff --git a/pyproject.toml b/pyproject.toml index eb180de..2c5924d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "ace-core" -version = "0.5.0" +version = "0.6.0" description = "Self-hosted runtime for governed reasoning and intelligence applications" readme = "README.md" license = "Apache-2.0" diff --git a/tests/test_package_identity.py b/tests/test_package_identity.py index 7ef8f0f..b5e6991 100644 --- a/tests/test_package_identity.py +++ b/tests/test_package_identity.py @@ -20,7 +20,7 @@ def test_distribution_import_cli_and_version_identities() -> None: project = tomllib.loads((ROOT / "pyproject.toml").read_text(encoding="utf-8"))["project"] assert project["name"] == "ace-core" - assert project["version"] == ace.__version__ == ace_mcp_client.__version__ == VERSION == "0.5.0" + assert project["version"] == ace.__version__ == ace_mcp_client.__version__ == VERSION == "0.6.0" assert ProductExtension.version == project["version"] assert project["scripts"]["ace"] == "core.engine.cli.main:cli" assert "aiohttp>=3.14.3" in project["dependencies"] @@ -43,12 +43,13 @@ def test_package_copy_and_public_links_are_release_ready() -> None: def test_release_workflow_defaults_to_and_guards_current_version() -> None: workflow = (ROOT / ".github" / "workflows" / "publish.yml").read_text(encoding="utf-8") - assert "default: v0.5.0" in workflow + assert "default: v0.6.0" in workflow assert "Validate release tag matches package version" in workflow assert 'if [ "$RELEASE_TAG" != "v$package_version" ]' in workflow assert "ace-core-python-distributions" in workflow assert "reference-workspace-action-distributions" in workflow assert "python -m build --outdir dist/reference-adapter adapters/reference_workspace_action" in workflow + assert "from build_backend import _normalize_sdist" in workflow assert "packages-dir: dist/core/" in workflow assert 'gh release upload "$RELEASE_TAG" dist/reference-adapter/* --repo "$GITHUB_REPOSITORY" --clobber' in workflow @@ -56,13 +57,13 @@ def test_release_workflow_defaults_to_and_guards_current_version() -> None: def test_docker_image_includes_public_cli_package() -> None: dockerfile = (ROOT / "Dockerfile").read_text(encoding="utf-8") assert "COPY ace/ ace/" in dockerfile - assert "ARG ACE_VERSION=0.5.0" in dockerfile + assert "ARG ACE_VERSION=0.6.0" in dockerfile assert 'org.opencontainers.image.version="${ACE_VERSION}"' in dockerfile assert "uv sync --frozen --no-dev --no-editable --no-cache" in dockerfile compose = (ROOT / "infra" / "docker-compose.yml").read_text(encoding="utf-8") - assert compose.count('ACE_VERSION: "0.5.0"') == 3 - assert compose.count('org.opencontainers.image.version: "0.5.0"') == 2 + assert compose.count('ACE_VERSION: "0.6.0"') == 3 + assert compose.count('org.opencontainers.image.version: "0.6.0"') == 2 def test_lock_tracks_the_distribution_identity() -> None: diff --git a/uv.lock b/uv.lock index 7aa046f..194579f 100644 --- a/uv.lock +++ b/uv.lock @@ -4,7 +4,7 @@ requires-python = "==3.12.*" [[package]] name = "ace-core" -version = "0.5.0" +version = "0.6.0" source = { editable = "." } dependencies = [ { name = "aiohttp" },