An AI agent can produce a convincing completion report. It can mention a pull request, a commit hash, a test count, and a destination. None of that proves the destination accepted the result. It proves only that the model produced text that looks like evidence.
That distinction becomes critical when completed work is allowed to become durable company memory. If the system remembers self-reported success, one polished but false summary can contaminate future decisions.
Unlimited Skills 0.6.8 is live on PyPI. It adds a generic transport for independently signed completion receipts to the public MIT core. The public client validates a bounded envelope and forwards it to an owner-configured provider. It does not own trust keys, authenticate the signer, authorize a memory write, or decide that the work was accepted.
A completion receipt is not assistant prose with a new name
Version 0.6.8 introduces two explicit input paths:
unlimited-skills context completion-receipt --file receipt.json --json
unlimited-skills context completion-receipt --stdin --json
There is no inline receipt argument. File input is bounded, while stdin keeps the signed envelope out of shell history. Before launching the provider, the public client rejects duplicate JSON properties, unknown fields, malformed digests, and malformed Ed25519 envelope encoding.
That is structural validation, not trust verification. The private provider still has to verify the signature, issuer and key policy, audience, checker identity, project and entity scope, sensitivity, destination acceptance, idempotency, conflicts, and visibility. A receipt can be well-formed and still be unauthorized.
Public status output follows the same minimization rule. It returns state and identifiers, but never echoes the completion summary, evidence, signature, or full receipt.
The Stop hook accepts a transport trigger, not a model verdict
The installed Stop hook does not scan the working directory or promote the last assistant message. It never turns prose, URLs, pull request numbers, hashes, test counts, or tool logs into completion memory.
It will enqueue only an explicit host-supplied trusted_completion_receipt object or a relative trusted_completion_receipt_file inside an owner-configured inbox. Even those fields are not proof. If a model or plugin can populate one, the provider must still reject it unless signature and policy verification succeed.
Inbox paths are resolved after joining, path traversal and symlink or junction escape are rejected, and file size is capped. UNLIMITED_SKILLS_NO_COMPLETION_MEMORY=1 disables the handoff.
The hook has a two-second hard timeout and performs enqueue only. It does not wait for atom generation, indexing, or a visibility check before allowing the agent turn to finish. This keeps a slow memory service from turning every final response into a blocked workflow.
Committed, indexed, visible, and accepted are different states
A durable learning path needs more than a success boolean. The private transaction contract is designed around a sequence:
RECEIVED -> VERIFIED -> PREPARED -> COMMITTED -> PROJECTED -> INDEXED -> VISIBLE
It also has explicit alternatives: REJECTED, QUARANTINED, DUPLICATE_VISIBLE, and COMMITTED_NOT_VISIBLE. A record can reach durable storage and still fail projection, indexing, or retrieval proof. In that case it is not reported as accepted.
This is the central semantic change in 0.6.8: committed does not mean visible. Acceptance requires the provider’s post-write visibility semantics, not merely proof that a database transaction occurred. Retrying the same receipt can resume repair instead of creating another logical completion.
Receipt identity and artifact identity are separate as well. Conflicting digests for an immutable artifact go to quarantine. Mutable file or decision updates require an explicit supersedes relationship. Existing file-first atoms participate in deduplication before a new record is written.
The learning loop now has a trustworthy handoff point
Version 0.6.7 added opt-in retrieval of cited business context beside a selected skill. Version 0.6.8 preserves that path and adds the missing return channel: after work is independently checked and accepted at its destination, a signed receipt can be evaluated by the owner-controlled provider and, if policy permits, become durable memory that later retrieval can see.
That creates the shape of a safe operational loop:
- Retrieve bounded, source-backed context.
- Perform the work using the selected procedure.
- Have an independent system check the result and destination acceptance.
- Submit a signed receipt through the public transport.
- Let the private provider authenticate, commit, index, and prove visibility.
- Return that verified memory as cited reference data on a future task.
This completion-memory path is separate from Unlimited Skills’ existing local Learning Loop for skill-routing feedback. That loop can inspect diagnostics and preview improvement candidates, but it does not automatically rewrite skills. Version 0.6.8 does not change that boundary and does not let the model improve its own instructions by declaring success.
New completion memory coexists with the existing system
The release does not require a destructive migration. The current file-first backend remains supported. A protocol-v2 private server can add an atomic verified-completion overlay while leaving the legacy base index and daemon untouched.
The stdio provider remains a thin policy and client boundary; it does not read company files itself. The same versioned receipt, health, scope, entity, sensitivity, provenance, and response states can move from a local loopback service to a future remote company-memory service without changing the agent contract.
That is a compatibility direction, not a hosted-product claim. Version 0.6.8 does not ship a remote deployment, automatic sync, or a cross-entity write lane. It does not delete, replace, or migrate library/local. Company code, data, trust keys, key rotation, and write authority remain outside the public repository.
The release gates tested refusal as seriously as success
The exact installed wheel had to retain the complete 0.6.7 retrieval contract and pass the new receipt-transport gate. Valid signed-envelope shapes had to reach the configured provider through both file and stdin transports. Duplicate JSON properties and malformed signature envelopes had to stop before provider launch. Assistant prose containing PR, SHA, and test-count language had to produce zero receipt calls. A stalled provider could not hold the Stop hook beyond its fixed budget.
The public pull request records 93 passed focused tests, 161 passed product-verifier tests with 11 out of 11 frozen contracts, and a full-suite baseline of 1,302 passed with 3 skipped. Clean-install and public-upgrade package smoke passed, as did exact-wheel retrieval, receipt, metadata, and doctor gates. An independent review and temporary end-to-end verification returned GO.
Publication used OIDC Trusted Publishing from the exact approved main commit. The public package was verified before the matching GitHub release was created.
Try Unlimited Skills 0.6.8
Install or upgrade the local core:
python -m pip install --upgrade unlimited-skills==0.6.8
unlimited-skills quickstart
For local vector and hybrid retrieval:
python -m pip install --upgrade "unlimited-skills[all]==0.6.8"
unlimited-skills vector-reindex
Read the 0.6.8 release, inspect the provider and receipt contract, or install it from PyPI.
The useful memory is not the agent’s most confident story about what happened. It is the result that was independently checked, accepted by the right destination, authenticated under owner policy, and proven visible for the next task.
