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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ Versioning and release requirements are in
[the release policy](docs/release/versioning-and-launch.md) and
[the readiness audit](docs/release/public-readiness-audit.md). The current
[support boundary](SUPPORT.md),
[v0.1.4 candidate notes](docs/release/v0.1.4-release-notes.md),
[published v0.1.3 release notes](docs/release/v0.1.3-release-notes.md), historical
[v0.1.2 release notes](docs/release/v0.1.2-release-notes.md), historical
[v0.1.1 release notes](docs/release/v0.1.1-release-notes.md), historical
Expand Down
2 changes: 1 addition & 1 deletion artifact_memory/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
"""Provider-free Artifact Memory v0 reference runtime."""

__version__ = "0.1.3"
__version__ = "0.1.4"
CONTRACT_VERSION = "v0"
133 changes: 133 additions & 0 deletions docs/release/v0.1.4-release-notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
# Artifact Memory 0.1.4 release notes

Artifact Memory 0.1.4 is a private-vault onboarding and coordination-plane
update over v0.1.3. It adds a CLI-first path for bounded private operational
context, strict portable coordination records, local-first synchronization,
repository-bound freshness and scoping, and optional authenticated HTTP seams
for WITS coordination.

Release status is established only by an owner-signed annotated `v0.1.4` tag
and its verified release-manifest binding. This reviewed source document does
not claim that signing, publication, or attestation has occurred.

## Private-vault onboarding

- The private-project guide and synthetic end-to-end fixture demonstrate
canonical records outside Git, replaceable SQLite projections, literal
search, bounded context-pack v4 export, and independent informational recall.
- Public fixtures remain wholly synthetic. Real vault records, generated
private views, credentials, raw conversations, and private topology remain
outside the public repository.
- The session-ledger importer converts a bounded dated Markdown done log into
deterministic private draft knowledge records. It rejects undated content,
oversized input, unsafe paths, immutable collisions, and credential-like
material before publishing any record.
- A generated projection or context pack remains a disposable view rather than
the canonical source. Storage does not imply encryption or backup, and
expiry does not establish deletion or global erasure.

## Coordination records and local-first synchronization

- Strict TaskPacket, WorkReceipt, and AccessLabel schemas preserve portable
UUID identity, display-name provenance, typed evidence, predecessor
transitions, project-scoped permissions, and explicit no-authority fields.
- Revision identity remains the complete `(record_id, revision_digest)` pair.
Local and hub sets merge by union; different revisions of one logical record
coexist, while different bytes claiming the same complete pair are
quarantined rather than auto-resolved.
- Local append writes immutable coordination records and an outbox receipt
before network synchronization. Pending HTTP outcomes survive interruption
and require exact replay and acknowledgement before removal.
- Sync verifies complete authorized history, current task leaves, pair-set
digests, bounded pagination, continuation binding, and explicit exclusion
counts. Withheld identities are not disclosed by count-only receipts.
- Resource limits are checked before expensive parsing, canonicalization, or
uniqueness comparison. Unsafe files, links, reparse points, oversized state,
recursive JSON, out-of-profile canonical values, and interrupted local apply
fail with typed outcomes.

## Repository identity, onboarding, context and freshness

- A committed `.agent-memory/repo.json` binds a repository to a stable UUID and
public-safe display name without treating a path, remote URL, hostname, or
checkout location as identity.
- Project onboarding validates the exact server-bound label and repository
identity, synchronizes the authorized set, and publishes immutable link,
kickoff, receipt, attempt, checkpoint, and recovery evidence transactionally.
- Scoped coordination context export uses the latest authorized projection and
effective AccessLabel. Grant/deny overlap, stale or ambiguous bindings, and
unsupported required extensions fail closed.
- Freshness is linked to an exact repository head. A kickoff pack may report
current, stale, dirty, unavailable, or unsupported evidence without claiming
global task truth.
Comment thread
joefeser marked this conversation as resolved.
Resolved
- The exact-head hardening reviewed through PR #158 bounds retained
coordination reads, project-UUID sets, interrupted-apply recovery, and
canonicalization failure paths while preserving typed outcomes.
- Acceptance commands are escaped and rendered as untrusted informational
data. Artifact Memory never executes them or promotes them into tool policy.

## Authenticated HTTP coordination seams

- The optional HTTP sync adapter uses standard-library TLS, refuses redirects
and URL credentials, ignores environment proxies, and permits cleartext only
for literal loopback fixtures. Bearers are supplied out of band through an
environment variable or in-memory API and are not persisted.
- The adapter verifies the expected logical hub, principal, exact AccessLabel,
sequential page receipts, complete authorized pair set, and the existing
local projection contract. It does not create a second coordination store.
- `artifact-memory claim` accepts one explicit exact open TaskPacket reference.
The authenticated hub alone mints and admits a claimed successor; the client
performs a second verified pull and reports only reference-bound evidence.
- Claim conflicts never select a fallback task. Lost or invalid responses are
unverified outcomes, and retries require the same original exact reference.
- The synthetic WITS bridge fixtures demonstrate protocol interoperability on
one machine. They do not establish deployed two-host operation, automatic
worker launch, production availability, or HTTP project onboarding.

## Compatibility

- Published v0.1.0-v0.1.3 schemas retain their original meanings. Existing
record, context-pack, exchange, retention, release, search, and projection
contracts are not silently reinterpreted.
- Coordination schemas and CLI commands are additive and opt-in. Existing
provider-free record, projection, search, context, and release commands
remain available.
- The local-directory sync adapter and deterministic fixture behavior remain
supported. HTTP transport requires separately provisioned compatible WITS
routes, bearer capabilities, retained labels, origin/project ownership, and
server token policy.
- WITS's original authenticated round-trip v0 canary remains intentionally
pinned to the owner-signed Artifact Memory 0.1.0 package and rejects other
package versions. Run that historical canary in its dedicated 0.1.0
environment; do not substitute 0.1.4 until WITS separately updates its
release binding and expected-version guard. The v0.1.4 coordination HTTP
fixtures are separate, explicitly pinned interoperability evidence.
- Repository onboarding writes a new strict public identity manifest only when
explicitly invoked. Existing repositories are not discovered or modified
automatically.

## Authority and remaining limitations

Artifact Memory preserves and transports informational evidence. Records,
labels, receipts, context packs, kickoff packs, successful sync, and an
authenticated transport grant no execution, mutation, routing, disclosure,
credential, spending, deployment, approval, declassification, or merge
authority. A WITS Task Packet or HACP route remains a separate authority-bearing
contract enforced by its owning system.

The reference runtime is not a hosted coordination service, scheduler, agent
runner, credential manager, or global deletion system. HTTP project onboarding
and automatic worker launch remain unsupported. Integrity and provenance do not
establish authenticity or trust; unsigned evidence remains
`integrity-verified / issuer-unverified`. Generated indexes remain replaceable,
and private-vault custody, encryption, backup, retention, and disclosure policy
remain operator responsibilities.

## Verification

Before publication, run the complete unit and conformance suites, public-safety
and public-JSON scans, installed-package smoke test, platform matrix, release
compatibility checks, deterministic candidate preparation, and the signed-tag
release-candidate verifier against the exact owner-approved commit. Publication
then triggers the separate keyless attestation workflow; that supplemental
workflow does not replace owner signing.
2 changes: 1 addition & 1 deletion docs/release/versioning-and-launch.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ Artifact Memory versions five surfaces independently:
| --- | --- | --- |
| Protocol | Product protocol generation such as `v0`. | Describes the supported product contract set; it is not an implementation API promise. |
| Schemas | Every schema identifier ends in its own `/vN`. | Breaking field, identity, authority, or required-behavior changes require a new schema version. |
| Reference CLI/package | Python package semantic version, currently `0.1.3`. | Before 1.0, implementation APIs may change; versioned record and receipt contracts are not silently reinterpreted. |
| Reference CLI/package | Python package semantic version, currently `0.1.4`. | Before 1.0, implementation APIs may change; versioned record and receipt contracts are not silently reinterpreted. |
| Adapters/providers | Provider-owned contract `/vN` plus the Artifact Memory adapter-manifest version. | Provider schemas remain provider contracts and never become core schemas implicitly. |
| Fixtures/receipts | Each vector and receipt schema has its own `/vN`. | Checked receipts bind exact fixture bytes and cannot be carried forward after vectors change. |

Expand Down
16 changes: 8 additions & 8 deletions fixtures/synthetic/scan/v2/expected-receipt.json
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
{
"case_count": 7,
"cases": [
{"excluded_entry_count": 0, "failure_codes": [], "id": "complete-file", "manifest_ref": "manifest://f8a73f74fe531b11edff773cb2e60aafc428726fc92234fd9f50968212b43e1f", "manifest_tree_digest": "sha-256:12d95ba17f4e886845a16f47cbd9baf3e15daab3a5ee264148a37f5e661051c2", "outcome": "complete", "receipt_ref": "scan-receipt://sha-256/60904c6bb8e9683520e5bee4917d01b9853f16f8589644f32282ebb1cec14ec7", "warning_codes": []},
{"excluded_entry_count": 1, "failure_codes": [], "id": "declared-exclusion", "manifest_ref": "manifest://734c54a61fd7eca22f63ad72b707b8093559bade29ac9e75a23191452e3a6b76", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "complete", "receipt_ref": "scan-receipt://sha-256/57896c26dc60b9410e5d7ccfc0f042c7e3df794df2d43afb84f0c11811c50d85", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": ["unreadable"], "id": "inaccessible-entry", "manifest_ref": "manifest://d027f409de045584140f1c667cc5c12f33d9d1f908623e00718967f3bfb5654a", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "partial", "receipt_ref": "scan-receipt://sha-256/25c03a8878406894d3de776e307afd1d419053884f272d601b66fbb2d69afe30", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": ["unstable"], "id": "changing-file", "manifest_ref": "manifest://fe08626dca8aaab25919e0964123e77bcce0e6ee2ee7a91d348e0c9f1bc4320c", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "partial", "receipt_ref": "scan-receipt://sha-256/914262efefc49ef4b942b04f34e3d44fdb6cc62d3129ca01f1b4e9ff9f4ae980", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": [], "id": "byte-budget", "manifest_ref": "manifest://5cf0b959f636529c1b5ba20196882618cc896c291d1399d5d4806f299a2b263e", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "partial", "receipt_ref": "scan-receipt://sha-256/701c7890893b0f588b8f375213cf9d7fe75972bfc6c7bd31dfe302f35f5dba65", "warning_codes": ["resource-limit"]},
{"excluded_entry_count": 0, "failure_codes": ["unreadable"], "id": "unavailable-root", "manifest_ref": "manifest://f705a1b2eead1bbfcf342eab20af596ed18061af6f5c6e07346d3c5dc3b722b5", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "failed", "receipt_ref": "scan-receipt://sha-256/89e9c19eb4daf7d38e70002592b88457614f3e7c5de45db04a6653bea0399fad", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": [], "id": "caller-cancelled", "manifest_ref": "manifest://fc7e07358e2f065681468f8336da90525ddfa3298336bf116c8f233a34c74289", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "cancelled", "receipt_ref": "scan-receipt://sha-256/b502fe3472ffb879228adc2c2449cad5902a0e54c2188ee01651fbde64a01b96", "warning_codes": ["cancelled"]}
{"excluded_entry_count": 0, "failure_codes": [], "id": "complete-file", "manifest_ref": "manifest://f8a73f74fe531b11edff773cb2e60aafc428726fc92234fd9f50968212b43e1f", "manifest_tree_digest": "sha-256:12d95ba17f4e886845a16f47cbd9baf3e15daab3a5ee264148a37f5e661051c2", "outcome": "complete", "receipt_ref": "scan-receipt://sha-256/d172ea6b5cf3bc025032ede9d24eba595f3389d28a0fb75a98497cbce4e603a6", "warning_codes": []},
{"excluded_entry_count": 1, "failure_codes": [], "id": "declared-exclusion", "manifest_ref": "manifest://734c54a61fd7eca22f63ad72b707b8093559bade29ac9e75a23191452e3a6b76", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "complete", "receipt_ref": "scan-receipt://sha-256/4aa5fb37d7937d6fde0a2d72dde7971eaa83db3915a9296fba9947485741f2ff", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": ["unreadable"], "id": "inaccessible-entry", "manifest_ref": "manifest://d027f409de045584140f1c667cc5c12f33d9d1f908623e00718967f3bfb5654a", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "partial", "receipt_ref": "scan-receipt://sha-256/c4f5fac9399338ae1af61e4159d21a80c24aef05773193c50f8f390104b77661", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": ["unstable"], "id": "changing-file", "manifest_ref": "manifest://fe08626dca8aaab25919e0964123e77bcce0e6ee2ee7a91d348e0c9f1bc4320c", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "partial", "receipt_ref": "scan-receipt://sha-256/7c78e45d9f3bff06150c5951c14fa8e32c546601248d8e7ab98e1e799a126e6e", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": [], "id": "byte-budget", "manifest_ref": "manifest://5cf0b959f636529c1b5ba20196882618cc896c291d1399d5d4806f299a2b263e", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "partial", "receipt_ref": "scan-receipt://sha-256/88f537ff280721a7290d2e469acf0b346b5778b58d44510d7f850a5bb0d1f531", "warning_codes": ["resource-limit"]},
{"excluded_entry_count": 0, "failure_codes": ["unreadable"], "id": "unavailable-root", "manifest_ref": "manifest://f705a1b2eead1bbfcf342eab20af596ed18061af6f5c6e07346d3c5dc3b722b5", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "failed", "receipt_ref": "scan-receipt://sha-256/887d7e6a24926a73609ed32817a96bc4faa1b07011a24d604ffcf2e09556a47c", "warning_codes": []},
{"excluded_entry_count": 0, "failure_codes": [], "id": "caller-cancelled", "manifest_ref": "manifest://fc7e07358e2f065681468f8336da90525ddfa3298336bf116c8f233a34c74289", "manifest_tree_digest": "sha-256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "outcome": "cancelled", "receipt_ref": "scan-receipt://sha-256/47c8ca1a8e95e499170a082db9fb57a7769ef867a9c7a0b8ffcf2d711d41398d", "warning_codes": ["cancelled"]}
],
"claims": [
"declared exclusions remain separately accounted without weakening a complete outcome",
Expand All @@ -21,7 +21,7 @@
],
"outcome": "complete",
"outcomes": {"cancelled": 1, "complete": 2, "failed": 1, "partial": 3},
"receipt_id": "scan-conformance-receipt://4493b3cd4bd78aafd28c9d945323abd42bf782bde6db6af87e33ce20e58b38fd",
"receipt_id": "scan-conformance-receipt://9e2261524828bc7554d77f7922cb9334289d9cbc3c9996c64e951c62067c59aa",
"schema_id": "artifact-memory/scan-conformance-receipt/v1",
"synthetic": true
}
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "artifact-memory"
version = "0.1.3"
version = "0.1.4"
Comment thread
joefeser marked this conversation as resolved.
Resolved
description = "Provider-free reference runtime for portable, verifiable artifact memory"
readme = "README.md"
requires-python = ">=3.11"
Expand Down
Loading