@receiz/ai-skills 106.0.0 → 107.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +12 -4
  2. package/package.json +9 -2
  3. package/receiz-architecture/manifest.json +4 -4
  4. package/receiz-authority-security/manifest.json +4 -4
  5. package/receiz-bearer-ownership/SKILL.md +65 -0
  6. package/receiz-bearer-ownership/agents/openai.yaml +4 -0
  7. package/receiz-bearer-ownership/manifest.json +14 -0
  8. package/receiz-build-production-system/manifest.json +4 -4
  9. package/receiz-causal-sync/manifest.json +4 -4
  10. package/receiz-command-builder/manifest.json +4 -4
  11. package/receiz-constitutional-laws/manifest.json +4 -4
  12. package/receiz-cross-app-state/SKILL.md +69 -0
  13. package/receiz-cross-app-state/agents/openai.yaml +4 -0
  14. package/receiz-cross-app-state/manifest.json +14 -0
  15. package/receiz-deterministic-replay/manifest.json +4 -4
  16. package/receiz-domain-builder/manifest.json +4 -4
  17. package/receiz-identity-profile/SKILL.md +64 -0
  18. package/receiz-identity-profile/agents/openai.yaml +4 -0
  19. package/receiz-identity-profile/manifest.json +14 -0
  20. package/receiz-mcp-agent-skill/resources/mcp-tool-map.md +20 -1
  21. package/receiz-migrations/SKILL.md +1 -2
  22. package/receiz-migrations/manifest.json +4 -4
  23. package/receiz-observability/manifest.json +4 -4
  24. package/receiz-offline-command/SKILL.md +72 -0
  25. package/receiz-offline-command/agents/openai.yaml +4 -0
  26. package/receiz-offline-command/manifest.json +14 -0
  27. package/receiz-offline-first/manifest.json +4 -4
  28. package/receiz-performance/manifest.json +4 -4
  29. package/receiz-portable-artifacts/manifest.json +4 -4
  30. package/receiz-portable-continuity/SKILL.md +69 -0
  31. package/receiz-portable-continuity/agents/openai.yaml +4 -0
  32. package/receiz-portable-continuity/manifest.json +14 -0
  33. package/receiz-proof-media/SKILL.md +69 -0
  34. package/receiz-proof-media/agents/openai.yaml +4 -0
  35. package/receiz-proof-media/manifest.json +14 -0
  36. package/receiz-proof-skill/resources/sdk-reference.md +18 -1
  37. package/receiz-receipt-admission/SKILL.md +60 -0
  38. package/receiz-receipt-admission/agents/openai.yaml +4 -0
  39. package/receiz-receipt-admission/manifest.json +14 -0
  40. package/receiz-release/manifest.json +4 -4
  41. package/receiz-testing/manifest.json +4 -4
package/README.md CHANGED
@@ -1,14 +1,17 @@
1
1
  # Receiz AI Skills
2
2
 
3
- `receiz-build-production-system` is the v106 orchestration skill for substantial
3
+ `receiz-build-production-system` remains the constitutional orchestration skill for substantial
4
4
  Receiz applications. Fourteen focused constitutional skills supply architecture,
5
5
  domain, law, command, authority, replay, offline, causal, artifact, migration,
6
6
  performance, observability, testing, and release contracts. The earlier nine
7
- domain skills remain packaged for compatibility.
7
+ domain skills remain packaged for compatibility. v107 adds seven executable
8
+ operation skills for identity profiles, portable continuity, generic bearer
9
+ ownership, offline commands, proof media, cross-app state, and receipt admission.
10
+ Every current manifest requires SDK/MCP `>=107.0.0 <108.0.0`, ruleset `107.0.0`, and registry digest `4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6`.
8
11
 
9
12
  This package teaches AI agents how to understand, verify, build with, and operate Receiz from the existing repository surfaces.
10
13
 
11
- It is published as `@receiz/ai-skills` and is an exact-version dependency of both `@receiz/sdk` and `@receiz/mcp-server`. Installing either package places all twenty-four skill directories under `node_modules/@receiz/ai-skills` for explicit loading by an agent host.
14
+ It is published as `@receiz/ai-skills` and is an exact-version dependency of both `@receiz/sdk` and `@receiz/mcp-server`. Installing either package places all thirty-one skill directories under `node_modules/@receiz/ai-skills` for explicit loading by an agent host.
12
15
 
13
16
  Receiz is a proof-native artifact system. A Receiz object is not a database row. It is a proof-carrying artifact. The artifact's witnessed history is the truth boundary. Server state, database state, UI state, marketplace state, and model memory are projections only. Old witnessed truth is not stale. If a projection is wrong, rebuild it from object history. If truth is missing, append new truth. Never mutate witnessed truth.
14
17
 
@@ -22,7 +25,12 @@ Agents may acquire scoped delegated access through the official Receiz Connect/O
22
25
 
23
26
  ## How Agents Should Use This Package
24
27
 
25
- Start with `receiz-build-production-system` when work spans multiple constitutional domains. Its machine-readable manifest requires the exact active signed registry digest, command-only mutation, independent verification, MCP conformance, and a passing release lock. Use a focused v106 skill for narrower production work. The compatibility router `receiz-skill-bundle` and proof/domain skills remain available for earlier workflows.
28
+ Start with `receiz-build-production-system` when work spans multiple constitutional domains. Its machine-readable manifest requires the exact active signed registry digest, command-only mutation, independent verification, MCP conformance, and a passing release lock. Use a focused v107 operation skill for SDK/MCP implementation and a constitutional skill for broader system law. The compatibility router `receiz-skill-bundle` and proof/domain skills remain available for earlier workflows.
29
+
30
+ The v107 operation skills are executable contracts. Each binds exact SDK calls,
31
+ MCP plan/execute tools, delegated scopes, proof heads, idempotency, offline and
32
+ conflict behavior, receipt verification, confirmation boundaries, and deterministic
33
+ emulator fixtures. They never grant autonomous mutation authority.
26
34
 
27
35
  Do not invent APIs. Use the SDK and MCP maps inside the skills, then inspect the repo when a requested operation is not listed.
28
36
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@receiz/ai-skills",
3
- "version": "106.0.0",
3
+ "version": "107.0.0",
4
4
  "description": "Authoritative Receiz AI operating skills for proof-native SDK and MCP agents.",
5
5
  "type": "module",
6
6
  "files": [
@@ -28,7 +28,14 @@
28
28
  "receiz-observability",
29
29
  "receiz-testing",
30
30
  "receiz-release",
31
- "receiz-build-production-system"
31
+ "receiz-build-production-system",
32
+ "receiz-identity-profile",
33
+ "receiz-portable-continuity",
34
+ "receiz-bearer-ownership",
35
+ "receiz-offline-command",
36
+ "receiz-proof-media",
37
+ "receiz-cross-app-state",
38
+ "receiz-receipt-admission"
32
39
  ],
33
40
  "keywords": [
34
41
  "receiz",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-architecture",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.truth.stronger-first",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-authority-security",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.authority.capability-bound",
@@ -0,0 +1,65 @@
1
+ ---
2
+ name: receiz-bearer-ownership
3
+ description: Use when claiming ownership of any qualifying Receiz bearer artifact and invalidating its previous active owner projection.
4
+ ---
5
+
6
+ # Receiz Bearer Ownership
7
+
8
+ Claim the generic enclosing artifact, not a card-specific or subpayload-specific invention. Verify the stronger proof object before projecting its embedded payload.
9
+
10
+ ## Exact SDK operation
11
+
12
+ Use `proofHead.get`, `ownership.claimBearerAsset`, and `receipts.verify` for every supported artifact type.
13
+
14
+ ```ts
15
+ import { createReceizClient } from "@receiz/sdk";
16
+
17
+ const receiz = createReceizClient({ accessToken });
18
+ const expectedOwnershipHead = await receiz.proofHead.get({ aggregateId: `ownership:${artifactId}` });
19
+ const result = await receiz.ownership.claimBearerAsset({
20
+ artifactBytes: new Uint8Array(await artifactFile.arrayBuffer()),
21
+ filename: artifactFile.name,
22
+ mimeType: artifactFile.type || "application/octet-stream",
23
+ claimantKeyId,
24
+ expectedOwnershipHead,
25
+ idempotencyKey: `claim:${artifactId}:${claimantKeyId}:${expectedOwnershipHead.digest}`,
26
+ });
27
+ if (!await receiz.receipts.verify(result.receipt)) throw new Error("receipt_invalid");
28
+ if (result.previousOwnerProjection.active || !result.owner.active) throw new Error("custody_conflict");
29
+ ```
30
+
31
+ ## Required authority
32
+
33
+ Require the claimant Receiz identity plus delegated `receiz:record` and `receiz:seal` scopes or the corresponding signed-in session. The enclosing sealed artifact remains ownership authority.
34
+
35
+ ## Required proof head
36
+
37
+ Read `ownership:${artifactId}` immediately before planning. Pass that exact head; never use a subpayload hash as the ownership boundary.
38
+
39
+ ## Idempotency
40
+
41
+ Bind the key to artifact identity, claimant identity, artifact bytes, and expected ownership head. Exact replay returns the original admitted artifact; changed input with the same key is a conflict.
42
+
43
+ ## Offline behavior
44
+
45
+ Offline work may verify the artifact and queue signed claim intent, but cannot report global ownership. Display `queued`, preserve the original artifact, and admit only after reconnect.
46
+
47
+ ## Conflict behavior
48
+
49
+ On `ownership_head_stale` or `custody_conflict`, fetch the canonical ownership head and show the current owner/custody chain. Never overwrite, silently retry against a new owner, or revive the previous active projection.
50
+
51
+ ## Receipt verification
52
+
53
+ Verify the returned canonical receipt and confirm `previousOwnerProjection.active === false`, `owner.active === true`, and ownership-head continuity before reporting ownership.
54
+
55
+ ## User confirmation
56
+
57
+ Show artifact ID/type, claimant key ID, prior owner, expected head, irreversible custody consequence, and idempotency key. Require explicit confirmation.
58
+
59
+ ## MCP parity
60
+
61
+ Call `receiz_proof_head_get`, then `receiz_bearer_asset_claim_plan`. Require the exact digest, call `receiz_bearer_asset_claim_execute`, then call `receiz_receipt_verify`. MCP planning and subpayload hashes are not proof authority.
62
+
63
+ ## Emulator fixture
64
+
65
+ Run `generic-bearer-transfer` and `previous-owner-projection-invalidation` across all supported artifact families.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Receiz Bearer Ownership"
3
+ short_description: "Claim generic bearer proof artifacts"
4
+ default_prompt: "Use $receiz-bearer-ownership to claim a qualifying bearer artifact through its enclosing proof."
@@ -0,0 +1,14 @@
1
+ {
2
+ "schema": "receiz.ai-skill-contract.v107",
3
+ "name": "receiz-bearer-ownership",
4
+ "version": "107.0.0",
5
+ "requires": { "sdk": ">=107.0.0 <108.0.0", "mcp": ">=107.0.0 <108.0.0", "ruleset": "107.0.0", "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6" },
6
+ "laws": ["receiz.ownership.enclosing-proof", "receiz.custody.single-active-owner", "receiz.receipt.verify"],
7
+ "sdkOperations": ["ownership.claimBearerAsset", "proofHead.get", "receipts.verify"],
8
+ "allowedTools": ["receiz_bearer_asset_claim_plan", "receiz_bearer_asset_claim_execute", "receiz_proof_head_get", "receiz_receipt_verify"],
9
+ "requiredScopes": ["receiz:record", "receiz:seal"],
10
+ "emulatorFixtures": ["generic-bearer-transfer", "previous-owner-projection-invalidation"],
11
+ "forbiddenOperations": ["direct-state-write", "subpayload-authority", "previous-owner-reactivation", "authority-bypass"],
12
+ "requiredEvidence": ["receipt-verification", "emulator-conformance", "release-lock-pass"],
13
+ "maximumAutonomousAuthority": "inspect-plan-simulate"
14
+ }
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-build-production-system",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.truth.stronger-first",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-causal-sync",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.merge.causal",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-command-builder",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.command-only-mutation",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-constitutional-laws",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.registry.digest-alignment",
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: receiz-cross-app-state
3
+ description: Use when carrying verified namespaced account state between Receiz applications without a shared app database or identity fork.
4
+ ---
5
+
6
+ # Receiz Cross-App State
7
+
8
+ Continue the same Receiz identity across applications by restoring portable account truth and appending isolated namespaces. Cross-app continuation is an identity primitive, not session sharing.
9
+
10
+ ## Exact SDK operation
11
+
12
+ Use `identity.restoreAccount`, `identity.appendAccountState`, `continuity.reconcile`, and `continuity.commit`.
13
+
14
+ ```ts
15
+ import { createReceizClient } from "@receiz/sdk";
16
+
17
+ const receiz = createReceizClient({ accessToken });
18
+ const account = await receiz.identity.restoreAccount(identityRecord, { artifactKind: "identity-record" });
19
+ const appended = await receiz.identity.appendAccountState(account, {
20
+ expectedHead: account.head,
21
+ idempotencyKey: `app:${appNamespace}:${account.head.digest}`,
22
+ allowedNamespaces: [appNamespace],
23
+ additions: { appState: { [appNamespace]: verifiedAppState } },
24
+ });
25
+ const plan = await receiz.continuity.reconcile({ priorOwnerScope, idempotencyKey: `continue:${appended.head.digest}` });
26
+ if (plan.status !== "ready") throw new Error("continuity_conflict");
27
+ await receiz.continuity.commit({
28
+ priorOwnerScope,
29
+ receizKeyId: appended.identity.keyId,
30
+ idempotencyKey: `continue:${appended.head.digest}`,
31
+ planDigest: plan.receipt.planDigest,
32
+ });
33
+ ```
34
+
35
+ ## Required authority
36
+
37
+ The verified Record, Seal, Key, or Vault supplies local identity authority. Reconciliation requires `receiz:record`. An application may append only explicitly allowed namespaces.
38
+
39
+ ## Required proof head
40
+
41
+ Append against the restored identity-account head. Commit only the exact reconciliation plan digest built from that account and owner scope.
42
+
43
+ ## Idempotency
44
+
45
+ Bind keys to application namespace, state digest, restored head, and owner scope. A new application state append always gets a new key; history is immutable.
46
+
47
+ ## Offline behavior
48
+
49
+ Project verified portable state immediately in the destination app. Offline additions remain local appends; background work may synchronize later without remounting or downgrading the settled surface.
50
+
51
+ ## Conflict behavior
52
+
53
+ Reject unauthorized or previously occupied namespaces. On global conflict, preserve both verified histories, stop the affected namespace/owner lane, and require a declared append resolution.
54
+
55
+ ## Receipt verification
56
+
57
+ Verify the re-exported artifact after local append. Verify canonical receipts for globally admitted additions; the reconciliation plan receipt itself is not admission.
58
+
59
+ ## User confirmation
60
+
61
+ Show origin identity key, destination app namespace, data categories, expected head, prior owner scope, and plan digest. Require confirmation before export mutation or global commit.
62
+
63
+ ## MCP parity
64
+
65
+ Call `receiz_continuity_sync_plan`, require exact digest confirmation, call `receiz_continuity_sync_execute`, and call `receiz_receipt_verify` for returned canonical append receipts. MCP cannot read or rewrite another app namespace directly.
66
+
67
+ ## Emulator fixture
68
+
69
+ Run `portable-restore-cross-app-continuation` and `namespace-isolation`.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Receiz Cross-App State"
3
+ short_description: "Continue verified state across apps"
4
+ default_prompt: "Use $receiz-cross-app-state to carry verified account state across Receiz applications."
@@ -0,0 +1,14 @@
1
+ {
2
+ "schema": "receiz.ai-skill-contract.v107",
3
+ "name": "receiz-cross-app-state",
4
+ "version": "107.0.0",
5
+ "requires": { "sdk": ">=107.0.0 <108.0.0", "mcp": ">=107.0.0 <108.0.0", "ruleset": "107.0.0", "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6" },
6
+ "laws": ["receiz.identity.cross-app-continuity", "receiz.namespace.isolation", "receiz.local-truth.immediate"],
7
+ "sdkOperations": ["identity.restoreAccount", "identity.appendAccountState", "continuity.reconcile", "continuity.commit"],
8
+ "allowedTools": ["receiz_continuity_sync_plan", "receiz_continuity_sync_execute", "receiz_receipt_verify"],
9
+ "requiredScopes": ["receiz:record"],
10
+ "emulatorFixtures": ["portable-restore-cross-app-continuation", "namespace-isolation"],
11
+ "forbiddenOperations": ["cross-namespace-write", "identity-fork", "database-as-account-truth", "authority-bypass"],
12
+ "requiredEvidence": ["receipt-verification", "emulator-conformance", "release-lock-pass"],
13
+ "maximumAutonomousAuthority": "inspect-plan-simulate"
14
+ }
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-deterministic-replay",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.replay.deterministic",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-domain-builder",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.command-only-mutation",
@@ -0,0 +1,64 @@
1
+ ---
2
+ name: receiz-identity-profile
3
+ description: Use when reading or updating a Receiz identity profile, checking or changing a username, or attaching raw or prepublished proof media.
4
+ ---
5
+
6
+ # Receiz Identity Profile
7
+
8
+ Preserve one Receiz identity while appending profile truth. A rename releases the prior username globally; the replacement username is appended to the same original identity.
9
+
10
+ ## Exact SDK operation
11
+
12
+ Use `identity.getProfile`, `identity.checkUsernameAvailability`, and `identity.updateProfile` from `createReceizClient`. `avatar` accepts either a raw `File` or a previously returned media proof reference.
13
+
14
+ ```ts
15
+ import { createReceizClient } from "@receiz/sdk";
16
+
17
+ const receiz = createReceizClient({ accessToken });
18
+ const current = await receiz.identity.getProfile();
19
+ const availability = await receiz.identity.checkUsernameAvailability(nextUsername);
20
+ if (!availability.available && !availability.isCurrent) throw new Error("username_taken");
21
+ const result = await receiz.identity.updateProfile({
22
+ identity: current.identity,
23
+ expectedHead: current.head,
24
+ idempotencyKey: `profile:${current.head.digest}:${nextUsername}`,
25
+ profile: { username: nextUsername, displayName, avatar: avatarFileOrMediaReference },
26
+ });
27
+ if (!await receiz.receipts.verify(result.receipt)) throw new Error("receipt_invalid");
28
+ ```
29
+
30
+ ## Required authority
31
+
32
+ Require the signed-in identity session or delegated `profile` scope. Availability is advisory and never reserves a username. The identity proof, not the username, is the continuity root.
33
+
34
+ ## Required proof head
35
+
36
+ Pass the exact `head` returned by `identity.getProfile`. Never synthesize it or replace it with DB, session, or UI state.
37
+
38
+ ## Idempotency
39
+
40
+ Derive one stable key from the intended patch and expected head. Reuse it only for byte-for-byte equivalent intent; changed intent requires a new key.
41
+
42
+ ## Offline behavior
43
+
44
+ Queue the identity-signed proposal and show `queued` as local intent, never as global completion. A queued rename does not reserve the username.
45
+
46
+ ## Conflict behavior
47
+
48
+ On `stale_proof_head`, reread the canonical head, show the verified additions, and request confirmation for a rebased append. On `username_taken`, keep the same identity and choose another available username. Never restore the released name by rewriting history.
49
+
50
+ ## Receipt verification
51
+
52
+ Report `committed` only after `receipts.verify(result.receipt)` returns true and the returned head follows the expected head.
53
+
54
+ ## User confirmation
55
+
56
+ Show the current and next username, released prior username, profile fields, media identity, expected head, and idempotency key. Require explicit confirmation before mutation.
57
+
58
+ ## MCP parity
59
+
60
+ Call `receiz_identity_profile_get`, then `receiz_username_check`, then `receiz_identity_profile_update_plan`. Show its consequences and require the exact `confirmationDigest`; call `receiz_identity_profile_update_execute` with identical `planDigest` and `confirmation`, then independently call `receiz_receipt_verify`.
61
+
62
+ ## Emulator fixture
63
+
64
+ Run `username-race`, `rename-stale-head`, and `offline-rename-global-conflict`. Emulator evidence is simulation evidence, never production verification.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Receiz Identity Profile"
3
+ short_description: "Operate identity profile proof safely"
4
+ default_prompt: "Use $receiz-identity-profile to update a Receiz identity profile with exact proof-head and receipt checks."
@@ -0,0 +1,14 @@
1
+ {
2
+ "schema": "receiz.ai-skill-contract.v107",
3
+ "name": "receiz-identity-profile",
4
+ "version": "107.0.0",
5
+ "requires": { "sdk": ">=107.0.0 <108.0.0", "mcp": ">=107.0.0 <108.0.0", "ruleset": "107.0.0", "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6" },
6
+ "laws": ["receiz.identity.continuity", "receiz.history.append-only", "receiz.receipt.verify"],
7
+ "sdkOperations": ["identity.getProfile", "identity.checkUsernameAvailability", "identity.updateProfile"],
8
+ "allowedTools": ["receiz_identity_profile_get", "receiz_username_check", "receiz_identity_profile_update_plan", "receiz_identity_profile_update_execute", "receiz_receipt_verify"],
9
+ "requiredScopes": ["profile"],
10
+ "emulatorFixtures": ["username-race", "rename-stale-head", "offline-rename-global-conflict"],
11
+ "forbiddenOperations": ["direct-state-write", "identity-replacement", "username-reservation-assumption", "authority-bypass"],
12
+ "requiredEvidence": ["receipt-verification", "emulator-conformance", "release-lock-pass"],
13
+ "maximumAutonomousAuthority": "inspect-plan-simulate"
14
+ }
@@ -1,6 +1,6 @@
1
1
  # MCP Tool Map
2
2
 
3
- ## v105 Application Compiler And Semantic Operations
3
+ ## v107 Application Compiler And Semantic Operations
4
4
 
5
5
  | Need | Tool | Mutation |
6
6
  |---|---|---|
@@ -22,6 +22,25 @@ verification verdict or proof authority.
22
22
 
23
23
  Source: `packages/receiz-mcp-server/src/index.ts`.
24
24
 
25
+ ## v107 Unified Operations
26
+
27
+ | Need | Tool | Mutation |
28
+ |---|---|---|
29
+ | Read identity/profile proof state | `receiz_identity_profile_get` | Read-only |
30
+ | Check username availability | `receiz_username_check` | Advisory read-only result |
31
+ | Plan identity/profile update | `receiz_identity_profile_update_plan` | Read-only digest-bound plan |
32
+ | Execute identity/profile update | `receiz_identity_profile_update_execute` | Exact plan confirmation and verified receipt required |
33
+ | Plan proof-media publication | `receiz_media_publish_plan` | Read-only digest-bound plan |
34
+ | Execute proof-media publication | `receiz_media_publish_execute` | Exact plan confirmation and verified receipt required |
35
+ | Plan generic bearer claim | `receiz_bearer_asset_claim_plan` | Read-only digest-bound plan |
36
+ | Execute generic bearer claim | `receiz_bearer_asset_claim_execute` | Enclosing artifact verification, exact confirmation, and verified receipt required |
37
+ | Plan continuity synchronization | `receiz_continuity_sync_plan` | Read-only digest-bound plan |
38
+ | Execute continuity synchronization | `receiz_continuity_sync_execute` | Exact plan confirmation and verified receipt required |
39
+ | Read proof head | `receiz_proof_head_get` | Read-only |
40
+ | Verify canonical receipt | `receiz_receipt_verify` | Read-only verification |
41
+
42
+ Portable artifact restore, namespaced account-state append, and offline command signing remain local SDK operations because the developer-held artifact and key are the stronger source of truth. MCP never upgrades a queued proposal into committed state without canonical admission and receipt verification.
43
+
25
44
  ## Diagnostics And Setup
26
45
 
27
46
  - `receiz_doctor`: SDK doctor for app/tenant diagnostics.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: receiz-migrations
3
- description: Use when upgrading Receiz schemas, commands, events, projections, rulesets, registries, or v105 applications.
3
+ description: Use when upgrading Receiz schemas, commands, events, projections, rulesets, registries, or applications to v107.
4
4
  ---
5
5
 
6
6
  # receiz-migrations
@@ -50,4 +50,3 @@ Refuse completion when any manifest input, law, test, conformance result, indepe
50
50
  Request: Inventory every write, classify its disposition, preserve historical readers, and fail closed on ambiguous authority.
51
51
 
52
52
  Return a written implementation contract and read-only plan first. Execute only allowed commands after exact confirmation, then report registry digest, laws, authority, tests, independent evidence, release-lock status, and the exact remaining boundary.
53
-
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-migrations",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.migration.forward-only",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-observability",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.observability.lower-authority",
@@ -0,0 +1,72 @@
1
+ ---
2
+ name: receiz-offline-command
3
+ description: Use when executing or durably queuing identity-signed Receiz commands while preserving local truth, proof-head order, and conflict isolation.
4
+ ---
5
+
6
+ # Receiz Offline Command
7
+
8
+ Offline intent is signed and durable but is not global admission. Preserve FIFO order inside each proof-object lane and allow independent lanes to resume in parallel.
9
+
10
+ ## Exact SDK operation
11
+
12
+ Use `offline.createCommandQueue`, `offline.executeOrQueue`, and `receipts.verify`.
13
+
14
+ ```ts
15
+ import { createReceizClient } from "@receiz/sdk";
16
+
17
+ const receiz = createReceizClient({ accessToken });
18
+ const queue = receiz.offline.createCommandQueue({
19
+ storage,
20
+ connected: () => navigator.onLine,
21
+ execute: sendSignedEnvelope,
22
+ verifyReceipt: (receipt) => receiz.receipts.verify(receipt),
23
+ projectLocal: projectVerifiedLocalIntent,
24
+ });
25
+ const result = await queue.executeOrQueue({
26
+ command: { operation, proofObjectId: expectedHead.aggregateId, payload },
27
+ identity: deviceIdentity,
28
+ expectedHead,
29
+ idempotencyKey,
30
+ });
31
+ if (result.status === "committed" && !await receiz.receipts.verify(result.receipt)) {
32
+ throw new Error("receipt_invalid");
33
+ }
34
+ ```
35
+
36
+ The one-shot equivalent is `offline.executeOrQueue(input, dependencies)`.
37
+
38
+ ## Required authority
39
+
40
+ Require the carried Receiz device identity and the operation's delegated scope; generic queue inspection uses `receiz:record`. A signed command is intent, not global admission.
41
+
42
+ ## Required proof head
43
+
44
+ The command `proofObjectId` must equal `expectedHead.aggregateId`. Use verified local/artifact truth immediately; never refetch weaker state before projecting it.
45
+
46
+ ## Idempotency
47
+
48
+ The SDK derives a deterministic command ID from operation, payload, proof-object ID, expected head, and idempotency key. Reuse is valid only for the identical command.
49
+
50
+ ## Offline behavior
51
+
52
+ `queued` means `globallyCommitted: false` and has no receipt. Persist it, project only lawful local intent, and resume on reconnect. Do not display fake global completion.
53
+
54
+ ## Conflict behavior
55
+
56
+ A conflict stops only its proof-object lane; independent lanes continue. Present the canonical head and require a new confirmed command to rebase. Never mutate an existing envelope.
57
+
58
+ ## Receipt verification
59
+
60
+ The queue verifies every committed receipt before persisting `committed`. Treat missing, mismatched, or invalid receipts as `receipt_invalid`.
61
+
62
+ ## User confirmation
63
+
64
+ Require confirmation before enqueue or execution. Show operation, payload consequences, proof-object ID, expected head, idempotency key, and whether the device is offline.
65
+
66
+ ## MCP parity
67
+
68
+ MCP has no second offline authority or store. Use `receiz_proof_head_get` before the operation-specific plan/execute tools and `receiz_receipt_verify` after admission. A service worker may request resume/status only.
69
+
70
+ ## Emulator fixture
71
+
72
+ Run `offline-rename-global-conflict` and `interrupted-sync-deterministic-resume` to prove ordering and lane isolation.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Receiz Offline Command"
3
+ short_description: "Queue signed proof-native commands"
4
+ default_prompt: "Use $receiz-offline-command to execute or queue an identity-signed Receiz command safely."
@@ -0,0 +1,14 @@
1
+ {
2
+ "schema": "receiz.ai-skill-contract.v107",
3
+ "name": "receiz-offline-command",
4
+ "version": "107.0.0",
5
+ "requires": { "sdk": ">=107.0.0 <108.0.0", "mcp": ">=107.0.0 <108.0.0", "ruleset": "107.0.0", "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6" },
6
+ "laws": ["receiz.offline.signed-intent", "receiz.local-truth.immediate", "receiz.receipt.verify"],
7
+ "sdkOperations": ["offline.createCommandQueue", "offline.executeOrQueue", "receipts.verify"],
8
+ "allowedTools": ["receiz_proof_head_get", "receiz_receipt_verify"],
9
+ "requiredScopes": ["receiz:record"],
10
+ "emulatorFixtures": ["offline-rename-global-conflict", "interrupted-sync-deterministic-resume"],
11
+ "forbiddenOperations": ["queued-as-committed", "unsigned-command", "cross-lane-blocking", "authority-bypass"],
12
+ "requiredEvidence": ["receipt-verification", "emulator-conformance", "release-lock-pass"],
13
+ "maximumAutonomousAuthority": "inspect-plan-simulate"
14
+ }
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-offline-first",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.offline.verified-local-first",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-performance",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.performance.known-truth-first",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-portable-artifacts",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.artifact.sealed-truth",
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: receiz-portable-continuity
3
+ description: Use when restoring Record, Seal, Key, or Vault account truth, appending namespaced local state, or reconciling verified additions across devices.
4
+ ---
5
+
6
+ # Receiz Portable Continuity
7
+
8
+ Treat the verified portable artifact as the account source of truth. Server reconciliation may append verified additions beneath it; it may not replace it.
9
+
10
+ ## Exact SDK operation
11
+
12
+ Use `identity.restoreAccount`, `identity.appendAccountState`, `continuity.reconcile`, and `continuity.commit`.
13
+
14
+ ```ts
15
+ import { createReceizClient } from "@receiz/sdk";
16
+
17
+ const receiz = createReceizClient({ accessToken });
18
+ const account = await receiz.identity.restoreAccount(artifactFile, { artifactKind: "receiz-key" });
19
+ const local = await receiz.identity.appendAccountState(account, {
20
+ expectedHead: account.head,
21
+ idempotencyKey: `state:${account.head.digest}:calendar`,
22
+ allowedNamespaces: ["calendar"],
23
+ additions: { appState: { calendar: verifiedCalendarAddition } },
24
+ });
25
+ const plan = await receiz.continuity.reconcile({ priorOwnerScope, idempotencyKey: `sync:${local.head.digest}` });
26
+ if (plan.status === "conflict") throw new Error("continuity_conflict");
27
+ const committed = await receiz.continuity.commit({
28
+ priorOwnerScope,
29
+ receizKeyId: local.identity.keyId,
30
+ idempotencyKey: `sync:${local.head.digest}`,
31
+ planDigest: plan.receipt.planDigest,
32
+ });
33
+ ```
34
+
35
+ ## Required authority
36
+
37
+ Local restore authority comes from the verified enclosing artifact. Online reconcile/commit requires a signed-in identity session or delegated `receiz:record` scope. Neither MCP nor server state outranks the artifact.
38
+
39
+ ## Required proof head
40
+
41
+ Use the restored `account.head` for local appends and the reconciliation plan basis for commit. Reject any head from a different identity-account aggregate.
42
+
43
+ ## Idempotency
44
+
45
+ Bind the local append key to namespace, additions, and expected head. Bind synchronization to the restored head and prior owner scope. Never reuse a key with changed bytes or scope.
46
+
47
+ ## Offline behavior
48
+
49
+ Restore and namespaced append work from verified local artifact truth. Online reconciliation waits; it must not make the local signed-in experience half-restored.
50
+
51
+ ## Conflict behavior
52
+
53
+ On stale head, preserve the restored artifact, inspect verified additions, and append a new resolution. Namespace collisions and owner-scope conflicts stop that lane without erasing other state.
54
+
55
+ ## Receipt verification
56
+
57
+ Local append evidence is the re-exported verified artifact and new local head. Global synchronization is complete only after the canonical commit result and its verified append evidence; never treat the plan receipt as admission.
58
+
59
+ ## User confirmation
60
+
61
+ Require confirmation before appending a namespace or committing an owner-scope transition. Show artifact kind, key ID, namespaces, prior scope, head, plan digest, and exact consequences.
62
+
63
+ ## MCP parity
64
+
65
+ Call `receiz_continuity_sync_plan`, show `writesPerformed: 0`, require the exact confirmation digest, call `receiz_continuity_sync_execute`, and then call `receiz_receipt_verify` for any canonical receipt returned by the committed additions.
66
+
67
+ ## Emulator fixture
68
+
69
+ Run `interrupted-sync-deterministic-resume` and `portable-restore-cross-app-continuation`.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Receiz Portable Continuity"
3
+ short_description: "Restore and reconcile portable identity"
4
+ default_prompt: "Use $receiz-portable-continuity to restore portable account truth and reconcile verified additions."
@@ -0,0 +1,14 @@
1
+ {
2
+ "schema": "receiz.ai-skill-contract.v107",
3
+ "name": "receiz-portable-continuity",
4
+ "version": "107.0.0",
5
+ "requires": { "sdk": ">=107.0.0 <108.0.0", "mcp": ">=107.0.0 <108.0.0", "ruleset": "107.0.0", "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6" },
6
+ "laws": ["receiz.identity.portable", "receiz.local-truth.stronger", "receiz.history.append-only"],
7
+ "sdkOperations": ["identity.restoreAccount", "identity.appendAccountState", "continuity.reconcile", "continuity.commit"],
8
+ "allowedTools": ["receiz_continuity_sync_plan", "receiz_continuity_sync_execute", "receiz_receipt_verify"],
9
+ "requiredScopes": ["receiz:record"],
10
+ "emulatorFixtures": ["interrupted-sync-deterministic-resume", "portable-restore-cross-app-continuation"],
11
+ "forbiddenOperations": ["direct-state-write", "artifact-truth-replacement", "namespace-rewrite", "authority-bypass"],
12
+ "requiredEvidence": ["receipt-verification", "emulator-conformance", "release-lock-pass"],
13
+ "maximumAutonomousAuthority": "inspect-plan-simulate"
14
+ }
@@ -0,0 +1,69 @@
1
+ ---
2
+ name: receiz-proof-media
3
+ description: Use when publishing identity-owned avatar or banner proof media or atomically attaching raw or prepublished media to a profile.
4
+ ---
5
+
6
+ # Receiz Proof Media
7
+
8
+ Media is a proof-bearing identity attachment. Preserve source/transformed digests, media proof identity, owner identity, and verification route.
9
+
10
+ ## Exact SDK operation
11
+
12
+ Use `media.publishIdentityImage`, `identity.updateProfile`, and `receipts.verify`. Raw `File` input must go directly through the atomic profile update; separately publish only when a reusable proof reference is intended.
13
+
14
+ ```ts
15
+ import { createReceizClient } from "@receiz/sdk";
16
+
17
+ const receiz = createReceizClient({ accessToken });
18
+ const published = await receiz.media.publishIdentityImage({
19
+ file: avatarFile,
20
+ kind: "avatar",
21
+ identityKeyId: current.identity.keyId,
22
+ });
23
+ if (!await receiz.receipts.verify(published.receipt)) throw new Error("receipt_invalid");
24
+ const result = await receiz.identity.updateProfile({
25
+ identity: current.identity,
26
+ expectedHead: current.head,
27
+ idempotencyKey: `avatar:${current.head.digest}:${published.reference.mediaProofId}`,
28
+ profile: { avatar: published.reference },
29
+ });
30
+ if (!await receiz.receipts.verify(result.receipt)) throw new Error("receipt_invalid");
31
+ ```
32
+
33
+ For one atomic raw upload, pass `profile: { avatar: avatarFile }` to `identity.updateProfile` and skip independent publication.
34
+
35
+ ## Required authority
36
+
37
+ Independent publication requires `receiz:media.write`; profile attachment requires `profile`. The media owner identity must match the profile identity.
38
+
39
+ ## Required proof head
40
+
41
+ Independent media publication creates its media proof head. Profile attachment must use the exact current identity/profile head and the full validated media proof reference.
42
+
43
+ ## Idempotency
44
+
45
+ Bind publication to source bytes, kind, and owner key. Bind attachment to media proof ID and profile head. Never substitute a URL while reusing the same key.
46
+
47
+ ## Offline behavior
48
+
49
+ Stage raw bytes locally without claiming publication. A known verified media reference may render immediately. Queue attachment intent only with its complete reference and expected profile head.
50
+
51
+ ## Conflict behavior
52
+
53
+ On media rejection or profile failure, the raw atomic operation rolls back the entire profile mutation. For prepublished media, keep the independently verified media object and rebase only the profile attachment.
54
+
55
+ ## Receipt verification
56
+
57
+ Verify the publication receipt before reuse and the profile receipt after attachment. Check owner identity and all digests; a URL alone is not proof media.
58
+
59
+ ## User confirmation
60
+
61
+ Show kind, owner identity, source file, transformed dimensions, verification URL, expected profile head, and whether the operation is atomic raw upload or two-step reusable publication.
62
+
63
+ ## MCP parity
64
+
65
+ For reusable media, call `receiz_media_publish_plan`, confirm its digest, call `receiz_media_publish_execute`, and call `receiz_receipt_verify`. Then call `receiz_identity_profile_update_plan`, confirm, call `receiz_identity_profile_update_execute`, and verify again.
66
+
67
+ ## Emulator fixture
68
+
69
+ Run `profile-media-atomic-rollback` and require no partial profile or media attachment after injected failure.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Receiz Proof Media"
3
+ short_description: "Publish identity-owned proof media"
4
+ default_prompt: "Use $receiz-proof-media to publish and attach identity-owned proof media atomically."
@@ -0,0 +1,14 @@
1
+ {
2
+ "schema": "receiz.ai-skill-contract.v107",
3
+ "name": "receiz-proof-media",
4
+ "version": "107.0.0",
5
+ "requires": { "sdk": ">=107.0.0 <108.0.0", "mcp": ">=107.0.0 <108.0.0", "ruleset": "107.0.0", "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6" },
6
+ "laws": ["receiz.media.proof-reference", "receiz.profile.atomic-media", "receiz.receipt.verify"],
7
+ "sdkOperations": ["media.publishIdentityImage", "identity.updateProfile", "receipts.verify"],
8
+ "allowedTools": ["receiz_media_publish_plan", "receiz_media_publish_execute", "receiz_identity_profile_update_plan", "receiz_identity_profile_update_execute", "receiz_receipt_verify"],
9
+ "requiredScopes": ["receiz:media.write", "profile"],
10
+ "emulatorFixtures": ["profile-media-atomic-rollback"],
11
+ "forbiddenOperations": ["url-as-proof", "partial-profile-media-commit", "owner-substitution", "authority-bypass"],
12
+ "requiredEvidence": ["receipt-verification", "emulator-conformance", "release-lock-pass"],
13
+ "maximumAutonomousAuthority": "inspect-plan-simulate"
14
+ }
@@ -1,6 +1,6 @@
1
1
  # SDK Reference For Proof Work
2
2
 
3
- The v105 app compiler APIs (`defineReceizApp`, `compileReceizAppContract`, and
3
+ The v107 app compiler APIs (`defineReceizApp`, `compileReceizAppContract`, and
4
4
  repository planning/checking functions) inspect and integrate applications.
5
5
  They do not verify proof bytes. Continue to use `verification.verifyArtifact`
6
6
  for the indivisible integrity, owner, namespace, and continuity verdict.
@@ -62,6 +62,23 @@ Use proof memory as admitted truth. It is not cache.
62
62
  - `receiz.sports.resolveCardMemory(...)`
63
63
  - `receiz.sports.resolvePitchDayProof(...)`
64
64
 
65
+ ## v107 Unified Operations
66
+
67
+ - `receiz.identity.getProfile()`
68
+ - `receiz.identity.checkUsernameAvailability(...)`
69
+ - `receiz.identity.updateProfile(...)`
70
+ - `receiz.identity.restoreAccount(...)`
71
+ - `receiz.identity.appendAccountState(...)`
72
+ - `receiz.media.publishIdentityImage(...)`
73
+ - `receiz.ownership.claimBearerAsset(...)`
74
+ - `receiz.continuity.reconcile(...)`
75
+ - `receiz.continuity.commit(...)`
76
+ - `receiz.proofHeads.get(...)`
77
+ - `receiz.receipts.verify(...)`
78
+ - `receiz.offline.executeOrQueue(...)`
79
+
80
+ Mutations require the canonical expected head and idempotency key. Project committed state only after canonical receipt verification; queued offline proposals are not global commitment.
81
+
65
82
  ## Identity Proof Helpers
66
83
 
67
84
  - `createReceizIdIdentity`
@@ -0,0 +1,60 @@
1
+ ---
2
+ name: receiz-receipt-admission
3
+ description: Use when verifying a v107 canonical admission receipt, checking proof-head continuity, or refusing tampered and mismatched outcomes.
4
+ ---
5
+
6
+ # Receiz Receipt Admission
7
+
8
+ A canonical receipt proves admitted append evidence but remains beneath the sealed proof object. Never treat a plan, MCP response, self-hash, or UI success state as admission.
9
+
10
+ ## Exact SDK operation
11
+
12
+ Use `proofHead.get` and `receipts.verify` after the canonical mutation returns its receipt.
13
+
14
+ ```ts
15
+ import { createReceizClient } from "@receiz/sdk";
16
+
17
+ const receiz = createReceizClient({ accessToken });
18
+ const before = await receiz.proofHead.get({ aggregateId });
19
+ const result = await executeConfirmedOperation(before);
20
+ if (!await receiz.receipts.verify(result.receipt)) throw new Error("receipt_invalid");
21
+ if (result.receipt.head.aggregateId !== aggregateId) throw new Error("receipt_invalid");
22
+ const after = await receiz.proofHead.get({ aggregateId });
23
+ if (after.digest !== result.receipt.head.digest) throw new Error("stale_proof_head");
24
+ ```
25
+
26
+ ## Required authority
27
+
28
+ Proof-head reads require `receiz:record`. Verification is local cryptographic/structural evidence; it does not grant mutation authority or outrank the sealed artifact.
29
+
30
+ ## Required proof head
31
+
32
+ Record the aggregate's verified head before mutation. The receipt must bind the same aggregate and its admission head digest; compare the returned canonical head after admission.
33
+
34
+ ## Idempotency
35
+
36
+ An exact duplicate request must reproduce the original admitted outcome and receipt. Reusing the key with different intent must fail `idempotency_conflict`.
37
+
38
+ ## Offline behavior
39
+
40
+ Verify carried receipts locally when all verification material is present. A queued command has no canonical receipt and must remain `globallyCommitted: false`.
41
+
42
+ ## Conflict behavior
43
+
44
+ Reject tampering, aggregate mismatch, prior-head mismatch, invalid digest, and stale head. Preserve the last verified head and require a new confirmed plan; never repair a receipt in place.
45
+
46
+ ## Receipt verification
47
+
48
+ Require exact canonical schema, admission receipt, receipt digest, head/admission digest equality, and `receipts.verify(...) === true`. Then compare operation, aggregate, and expected transition.
49
+
50
+ ## User confirmation
51
+
52
+ Receipt verification is read-only. The mutation producing it still requires confirmation of operation, authority, expected head, consequences, and idempotency key. Do not ask users to confirm a receipt after the fact as a substitute for verification.
53
+
54
+ ## MCP parity
55
+
56
+ Call `receiz_proof_head_get` before planning. After the operation-specific execute tool returns, call `receiz_receipt_verify` independently. The plan digest confirms user intent; the canonical receipt verifies admission; neither replaces the proof object.
57
+
58
+ ## Emulator fixture
59
+
60
+ Run `duplicate-idempotency-and-conflicting-reuse` and `canonical-receipt-tampering-rejection`.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Receiz Receipt Admission"
3
+ short_description: "Verify admission receipts and heads"
4
+ default_prompt: "Use $receiz-receipt-admission to verify canonical receipts against the expected proof head."
@@ -0,0 +1,14 @@
1
+ {
2
+ "schema": "receiz.ai-skill-contract.v107",
3
+ "name": "receiz-receipt-admission",
4
+ "version": "107.0.0",
5
+ "requires": { "sdk": ">=107.0.0 <108.0.0", "mcp": ">=107.0.0 <108.0.0", "ruleset": "107.0.0", "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6" },
6
+ "laws": ["receiz.receipt.verify", "receiz.proof-head.continuity", "receiz.stronger-truth.sealed-artifact"],
7
+ "sdkOperations": ["proofHead.get", "receipts.verify"],
8
+ "allowedTools": ["receiz_proof_head_get", "receiz_receipt_verify"],
9
+ "requiredScopes": ["receiz:record"],
10
+ "emulatorFixtures": ["duplicate-idempotency-and-conflicting-reuse", "canonical-receipt-tampering-rejection"],
11
+ "forbiddenOperations": ["plan-as-admission", "receipt-repair", "queued-as-committed", "authority-bypass"],
12
+ "requiredEvidence": ["receipt-verification", "emulator-conformance", "release-lock-pass"],
13
+ "maximumAutonomousAuthority": "inspect-plan-simulate"
14
+ }
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-release",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.release.locked-digest",
@@ -2,10 +2,10 @@
2
2
  "schema": "receiz.ai-skill-contract.v106",
3
3
  "name": "receiz-testing",
4
4
  "requires": {
5
- "sdk": ">=106.0.0 <107.0.0",
6
- "mcp": ">=106.0.0 <107.0.0",
7
- "ruleset": "106.0.0",
8
- "registryDigest": "bf851c209e807309672c0f466411baa5607ce6b3195fe4eb16755edfeb7f5a1a"
5
+ "sdk": ">=107.0.0 <108.0.0",
6
+ "mcp": ">=107.0.0 <108.0.0",
7
+ "ruleset": "107.0.0",
8
+ "registryDigest": "4d0caa6172a69c3bf5817c1c35db5630e555b5d6d824091d45a90fb426b86ef6"
9
9
  },
10
10
  "laws": [
11
11
  "receiz.testing.independent-evidence",