Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 8 additions & 8 deletions provenance/transformations.json
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@
"sourcePath": "windows-client/README.md",
"sourceBlob": "96fa82dd5e8c38e40f60fdaf883e33ef26ae4f8b",
"sourceMode": "100644",
"resultSha256": "01f6a44784bf386ad764776e1c184b25a4e92686e88b4d9f76ec206ce703b5da",
"resultSha256": "dd7680b127e2d267ae86ee9b5b7ae45d1681569f2e4ffdbf924a91a8c3d05610",
"task": "T060/T062/T188",
"reason": "Remove runtime repository trust overrides, document the inactive bounded bridge transition, and replace a broken monorepo schema link with the standalone fail-closed validator and provenance."
},
Expand All @@ -457,7 +457,7 @@
"sourcePath": "windows-client/astral_client/protocol.py",
"sourceBlob": "c16ec978cd8517f336e2966797c25545bd29ff24",
"sourceMode": "100644",
"resultSha256": "1b180b5debfc37eeb55f1fd5fbd35435b9ea2bc8d923fd0316c105dd2ad13ed5",
"resultSha256": "309e92be0ad63ded0c6c71288dc1c9bd2212810a208fce5b69eade4dbf109ea1",
"task": "T166",
"reason": "Carry the exact runtime-v3 authority object and protected-executor disposition in the Windows delivery protocol."
},
Expand All @@ -475,7 +475,7 @@
"sourcePath": "windows-client/deployment/runtime-manifest.json",
"sourceBlob": "711a46165ede46df4f1d580994d6fce0427f7c8f",
"sourceMode": "100644",
"resultSha256": "0367fc09456b558a403d9fa978b13c7dafd8391eb219a759915489bb9498ee68",
"resultSha256": "b4e7722bc485d417c7ac908d15de9112ad3e906d645195f4cbc96aa5496ea674",
"task": "T166",
"reason": "Declare runtime contract v3 and the protected-executor file in the signed Windows deployment bundle."
},
Expand All @@ -493,16 +493,16 @@
"sourcePath": "windows-client/requirements-release.lock.txt",
"sourceBlob": "f533dbb4dfcedf6398a8c1649dccd37fd4c1f7f7",
"sourceMode": "100644",
"resultSha256": "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943",
"resultSha256": "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d",
"task": "T166",
"reason": "Pin the exact signed LETS v1.0.10 wheel URL and digest for reproducible Windows candidates."
"reason": "Pin the exact signed LETS v1.0.11 wheel URL and digest for reproducible Windows candidates."
},
{
"path": "windows-client/requirements.in",
"sourcePath": "windows-client/requirements.in",
"sourceBlob": "17727135e29ec6a7bafc0950777a2e134e4f3ef6",
"sourceMode": "100644",
"resultSha256": "f7b1be1847f9a5deda45b9e191edb086c032fcf5b940245ef292a3fb4f961770",
"resultSha256": "5bd4739e9a0db246de0d9df06315be3e2f8f734e40a48e2569a00124382c3a5a",
"task": "T166",
"reason": "Declare the signed LETS public executor dependency consumed by the Windows protected runtime."
},
Expand Down Expand Up @@ -556,7 +556,7 @@
"sourcePath": "windows-client/tests/test_release_lock_060.py",
"sourceBlob": "d0609608eb814ed3705f4ef19b878b47bcf6fd07",
"sourceMode": "100644",
"resultSha256": "71c6266028ac017b55994930c2e91b35ca4ce99d03b201269c0493be81748ab5",
"resultSha256": "745c7aeeb9f88d2a37ce211917dd8b2b9b1564983aa2afe36ced072319eeec84",
"task": "T166",
"reason": "Verify the exact signed LETS wheel lock and protected-executor candidate inventory."
},
Expand Down Expand Up @@ -601,7 +601,7 @@
"sourcePath": "windows-client/win_agent/byo_host.py",
"sourceBlob": "6ed2071b286421438f09c14cc6725540e2de370e",
"sourceMode": "100644",
"resultSha256": "7d2aa7a4f8a0e3932fae796fdaca23ff2884fe6ebfd4dad88ddf2cd2dee39307",
"resultSha256": "b6d3a896f990f2c6fd859d883b15db18517eadf7419d42bfafc3904eed5a815b",
"task": "T166",
"reason": "Validate the exact owner, binding, lease, lineage, audience, runtime, and generation fence before Windows launch."
},
Expand Down
4 changes: 2 additions & 2 deletions windows-client/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,11 +210,11 @@ The permit travels under the typed MCP caller capability
actuator, the client compares owner, binding, agent, runtime generation, tool,
scope/capability/transition, audience, nonce, sequence, one-unit cost,
content-free effect evidence, and the exact post-filter argument digest. It
then calls LETS v1.0.10 `ReceiptVerifier.verify_and_claim()` against the
then calls LETS v1.0.11 `ReceiptVerifier.verify_and_claim()` against the
persistent store. Missing, stale, wrong-host, invalid-signature, replayed, or
unclaimable receipts fail closed and the tool function is not called.

The released LETS wheel is pinned by its exact v1.0.10 GitHub release URL and
The released LETS wheel is pinned by its exact v1.0.11 GitHub release URL and
SHA-256 in `requirements-release.lock.txt`; the warden itself remains a
separately deployed service.

Expand Down
2 changes: 1 addition & 1 deletion windows-client/astral_client/protocol.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@
RUNTIME_CONTRACT_VERSIONS = (3,)
LEGACY_RUNTIME_DISPOSITIONS = {2: "dispatch_mediated_only"}
RUNTIME_LOCK_ARTIFACT = "requirements-release.lock.txt"
RUNTIME_LOCK_SHA256 = "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943"
RUNTIME_LOCK_SHA256 = "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d"

VOICE_DEVICE_ID_KEY = "astraldeep.voice.device_id.v1"
VOICE_TRANSCRIPT_TOPIC = "astraldeep.voice.transcript.v1"
Expand Down
8 changes: 4 additions & 4 deletions windows-client/deployment/runtime-lock-contract.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"runtime_contract_version": 3,
"digest_algorithm": "sha256",
"lock_artifact": "windows-client/requirements-release.lock.txt",
"lock_digest": "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943",
"lock_digest": "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d",
"bundle_digest_contract": "canonical-json-utf8-v1",
"bundle_digest_vector": {
"files": {
Expand All @@ -19,20 +19,20 @@
{
"id": "exact-contract-and-lock",
"advertised_runtime_contract_version": 3,
"advertised_lock_digest": "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943",
"advertised_lock_digest": "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d",
"compatible": true
},
{
"id": "legacy-v2-dispatch-mediated-only",
"advertised_runtime_contract_version": 2,
"advertised_lock_digest": "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943",
"advertised_lock_digest": "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d",
"compatible": false,
"refusal_code": "legacy_runtime_dispatch_mediated_only"
},
{
"id": "runtime-contract-mismatch",
"advertised_runtime_contract_version": 1,
"advertised_lock_digest": "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943",
"advertised_lock_digest": "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d",
"compatible": false,
"refusal_code": "runtime_contract_unsupported"
},
Expand Down
6 changes: 3 additions & 3 deletions windows-client/deployment/runtime-manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
"python_version": "3.11",
"target_platform": "win_amd64",
"deployment_profile_sha256": "771bd01cacaff4db5ef9e8bda6991b8502942da9630719720a475b05b9594bec",
"requirements_input_sha256": "f7b1be1847f9a5deda45b9e191edb086c032fcf5b940245ef292a3fb4f961770",
"requirements_lock_sha256": "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943",
"requirements_input_sha256": "5bd4739e9a0db246de0d9df06315be3e2f8f734e40a48e2569a00124382c3a5a",
"requirements_lock_sha256": "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d",
"runtime_contract_version": 3,
"required_runtime_lock_sha256": "948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943",
"required_runtime_lock_sha256": "f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d",
"worker_entrypoint": "AstralDeep.exe --byo-worker"
}
4 changes: 2 additions & 2 deletions windows-client/requirements-release.lock.txt
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ id==1.6.1 \
--hash=sha256:f5ec41ed2629a508f5d0988eda142e190c9c6da971100612c4de9ad9f9b237ca
idna==3.18 \
--hash=sha256:7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2
lets-agent @ https://github.com/AstralDeep/LETS/releases/download/v1.0.10/lets_agent-1.0.10-py3-none-any.whl \
--hash=sha256:292e98eb33d1203f8da6242c8cecdd38a0dbccdef6efeab7c60332eb58fc77d4
lets-agent @ https://github.com/AstralDeep/LETS/releases/download/v1.0.11/lets_agent-1.0.11-py3-none-any.whl \
--hash=sha256:c22dd4c55b1f8e62200455c370ea1b56fb2a96da7fbeae1406e3d0b1365f8c80
livekit==1.1.14 \
--hash=sha256:b8f8d38f131956297923e520bc4375bc9ebfa255cab7f125cb7755bfca71df24
markdown-it-py==4.2.0 \
Expand Down
2 changes: 1 addition & 1 deletion windows-client/requirements.in
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,4 @@ pyinstaller==6.21.0
livekit==1.1.14
# Public protected-executor contracts only; the independently deployed warden
# remains outside the Windows client and AstralProjection runtime.
lets-agent @ https://github.com/AstralDeep/LETS/releases/download/v1.0.10/lets_agent-1.0.10-py3-none-any.whl
lets-agent @ https://github.com/AstralDeep/LETS/releases/download/v1.0.11/lets_agent-1.0.11-py3-none-any.whl
10 changes: 5 additions & 5 deletions windows-client/tests/test_release_lock_060.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,9 @@ def test_complete_lock_is_exact_hashed_and_covers_direct_inputs():
assert direct
assert all(locked.get(name) == version for name, version in direct.items())
assert {"pyinstaller", "sigstore", "astralprims", "pefile", "pywin32-ctypes"} <= set(locked)
assert locked["lets-agent"] == "1.0.10"
assert "lets-agent @ https://github.com/AstralDeep/LETS/releases/download/v1.0.10/" in text
assert "292e98eb33d1203f8da6242c8cecdd38a0dbccdef6efeab7c60332eb58fc77d4" in text
assert locked["lets-agent"] == "1.0.11"
assert "lets-agent @ https://github.com/AstralDeep/LETS/releases/download/v1.0.11/" in text
assert "c22dd4c55b1f8e62200455c370ea1b56fb2a96da7fbeae1406e3d0b1365f8c80" in text


def test_manifest_and_package_spec_bind_the_exact_lock_bytes():
Expand Down Expand Up @@ -140,11 +140,11 @@ def test_lock_reader_normalizes_ignores_host_helper_and_fails_closed(tmp_path):

lock.write_text(
"lets-agent @ https://github.com/AstralDeep/LETS/releases/download/"
"v1.0.10/lets_agent-1.0.10-py3-none-any.whl \\\n"
"v1.0.11/lets_agent-1.0.11-py3-none-any.whl \\\n"
" --hash=sha256:" + "c" * 64 + "\n",
encoding="utf-8",
)
assert tool.locked_packages(lock) == {"lets-agent": "1.0.10"}
assert tool.locked_packages(lock) == {"lets-agent": "1.0.11"}

lock.write_text("foo==1\nfoo==1\n", encoding="utf-8")
with pytest.raises(tool.CandidateManifestError, match="repeats package foo"):
Expand Down
4 changes: 4 additions & 0 deletions windows-client/tests/test_win_agent_lets.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
from win_agent import lets_executor as executor


def test_executor_is_pinned_to_lets_v1_0_11() -> None:
assert executor.LETS_RELEASE == "v1.0.11"


@pytest.fixture(autouse=True)
def _reset_executor():
agent._reset_protected_executor_for_tests()
Expand Down
2 changes: 1 addition & 1 deletion windows-client/win_agent/byo_host.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
LEGACY_RUNTIME_DISPOSITIONS = {2: "dispatch_mediated_only"}
PACKAGED_RUNTIME_LOCK_ARTIFACT = "requirements-release.lock.txt"
PACKAGED_RUNTIME_LOCK_SHA256 = (
"948def355ae1e4c37478d2c87c287d41d3a81055a96ff813c341d1b466096943"
"f376ece93b3754b02498e8243a88b3c68282fd26d80c868d85c23bb7ac1d317d"
)
BUNDLE_FILE_NAMES = (
"agent_main.py",
Expand Down
4 changes: 2 additions & 2 deletions windows-client/win_agent/lets_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
This module therefore implements only Astral's small, versioned transport
envelope while delegating receipt parsing, signature verification, clock
checks, persistent replay defense, and rollback protection to the public LETS
v1.0.10 executor API.
v1.0.11 executor API.

Configuration is local operator state. Raw receipts, operator keys, tool
arguments, and filesystem paths are never returned in exceptions or card
Expand Down Expand Up @@ -51,7 +51,7 @@

LETS_CALLER_CAPABILITY: Final = "astraldeep.lets/v1"
PERMIT_TYPE: Final = "astraldeep.protected-permit/v1"
LETS_RELEASE: Final = "v1.0.10"
LETS_RELEASE: Final = "v1.0.11"
RECEIPT_WIRE_TYPE: Final = "lets.receipt/v1"
EVIDENCE_TYPE: Final = "astral.tool-effect/v1"
CONTEXT_TYPE: Final = "astral.protected-effect-context/v1"
Expand Down
Loading