archctx-contracts 0.1.5

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 (100) hide show
  1. package/fixtures/boundary/agent-job-expired.json +33 -0
  2. package/fixtures/boundary/architecture-event-extension.json +41 -0
  3. package/fixtures/boundary/architecture-node-extension.json +13 -0
  4. package/fixtures/boundary/attestation-v2-error.json +43 -0
  5. package/fixtures/boundary/check-delivery-dead-letter.json +14 -0
  6. package/fixtures/boundary/evidence-binding-context-only.json +20 -0
  7. package/fixtures/boundary/practice-disabled-overlay.json +59 -0
  8. package/fixtures/boundary/recommendation-deferred.json +19 -0
  9. package/fixtures/boundary/review-challenge-v2-organization.json +15 -0
  10. package/fixtures/boundary/runner-identity-organization-scope.json +16 -0
  11. package/fixtures/invalid/adapter-fidelity-reverse-sync.json +9 -0
  12. package/fixtures/invalid/agent-job-direct-mutation.json +32 -0
  13. package/fixtures/invalid/architecture-event-source-body-field.json +39 -0
  14. package/fixtures/invalid/architecture-snapshot-unknown-mode.json +29 -0
  15. package/fixtures/invalid/attestation-v2-finding-field.json +39 -0
  16. package/fixtures/invalid/check-delivery-legacy-check-name.json +14 -0
  17. package/fixtures/invalid/cloud-egress-envelope-private-field.json +12 -0
  18. package/fixtures/invalid/compatibility-illegal-reason.json +17 -0
  19. package/fixtures/invalid/evidence-binding-summary-substring-authority.json +17 -0
  20. package/fixtures/invalid/evidence-item-source-body-field.json +27 -0
  21. package/fixtures/invalid/explorer-projection-write-field.json +21 -0
  22. package/fixtures/invalid/investigation-report-direct-mutation.json +38 -0
  23. package/fixtures/invalid/investigation-report-missing-proposed-delta.json +19 -0
  24. package/fixtures/invalid/node-unknown-field.json +10 -0
  25. package/fixtures/invalid/notification-event-code-field.json +11 -0
  26. package/fixtures/invalid/practice-policy-empty-test-evidence.json +15 -0
  27. package/fixtures/invalid/practice-policy-negative-recommendation-budget.json +10 -0
  28. package/fixtures/invalid/practice-unknown-field.json +56 -0
  29. package/fixtures/invalid/projection-target-invalid-ownership.json +18 -0
  30. package/fixtures/invalid/recommendation-feedback-implicit-acceptance.json +29 -0
  31. package/fixtures/invalid/recommendation-run-raw-input-field.json +33 -0
  32. package/fixtures/invalid/recommendation-source-body-field.json +17 -0
  33. package/fixtures/invalid/review-challenge-v2-private-field.json +16 -0
  34. package/fixtures/valid/adapter-fidelity.json +9 -0
  35. package/fixtures/valid/agent-job.json +33 -0
  36. package/fixtures/valid/architecture-candidate-delta-policy.json +45 -0
  37. package/fixtures/valid/architecture-candidate-delta.json +188 -0
  38. package/fixtures/valid/architecture-event.json +39 -0
  39. package/fixtures/valid/architecture-intervention.json +36 -0
  40. package/fixtures/valid/architecture-node.json +25 -0
  41. package/fixtures/valid/architecture-relation.json +14 -0
  42. package/fixtures/valid/architecture-snapshot.json +31 -0
  43. package/fixtures/valid/architecture-subject-selector.json +9 -0
  44. package/fixtures/valid/attestation-v2.json +38 -0
  45. package/fixtures/valid/attestation.json +25 -0
  46. package/fixtures/valid/changeset.json +30 -0
  47. package/fixtures/valid/chatgpt-ga-tool.json +9 -0
  48. package/fixtures/valid/check-delivery.json +14 -0
  49. package/fixtures/valid/cloud-egress-envelope.json +11 -0
  50. package/fixtures/valid/compatibility-contract.json +19 -0
  51. package/fixtures/valid/constraint.json +22 -0
  52. package/fixtures/valid/cross-repo-relation.json +23 -0
  53. package/fixtures/valid/device-identity.json +10 -0
  54. package/fixtures/valid/entitlement.json +12 -0
  55. package/fixtures/valid/evidence-binding.json +17 -0
  56. package/fixtures/valid/evidence-item.json +29 -0
  57. package/fixtures/valid/explorer-projection.json +53 -0
  58. package/fixtures/valid/explorer-service.json +11 -0
  59. package/fixtures/valid/external-document-resource.json +29 -0
  60. package/fixtures/valid/governance-key-status.json +11 -0
  61. package/fixtures/valid/investigation-report.json +38 -0
  62. package/fixtures/valid/landscape.json +36 -0
  63. package/fixtures/valid/likec4-mapping.json +14 -0
  64. package/fixtures/valid/notification-event.json +10 -0
  65. package/fixtures/valid/notification-provider.json +12 -0
  66. package/fixtures/valid/org-runner-identity.json +10 -0
  67. package/fixtures/valid/practice-catalog-manifest.json +16 -0
  68. package/fixtures/valid/practice-check-result.json +17 -0
  69. package/fixtures/valid/practice-checkpoint.json +94 -0
  70. package/fixtures/valid/practice-guidance.json +42 -0
  71. package/fixtures/valid/practice-match.json +23 -0
  72. package/fixtures/valid/practice-policy.json +33 -0
  73. package/fixtures/valid/practice-profile.json +22 -0
  74. package/fixtures/valid/practice-source.json +19 -0
  75. package/fixtures/valid/practice-waiver.json +14 -0
  76. package/fixtures/valid/practice.json +93 -0
  77. package/fixtures/valid/product-version-manifest.json +51 -0
  78. package/fixtures/valid/projection-target.json +18 -0
  79. package/fixtures/valid/recommendation-feedback.json +29 -0
  80. package/fixtures/valid/recommendation-run.json +33 -0
  81. package/fixtures/valid/recommendation.json +17 -0
  82. package/fixtures/valid/retrieval-config.json +20 -0
  83. package/fixtures/valid/retrieval-decision.json +26 -0
  84. package/fixtures/valid/retrieval-eval.json +14 -0
  85. package/fixtures/valid/review-challenge-v2.json +15 -0
  86. package/fixtures/valid/review-result.json +32 -0
  87. package/fixtures/valid/runner-identity.json +13 -0
  88. package/fixtures/valid/structurizr-mapping.json +15 -0
  89. package/fixtures/valid/task-context.json +23 -0
  90. package/package.json +17 -0
  91. package/src/control-plane-routes.ts +35 -0
  92. package/src/external-docs.ts +137 -0
  93. package/src/github-governance.ts +850 -0
  94. package/src/index.ts +9 -0
  95. package/src/ledger.ts +649 -0
  96. package/src/ports.ts +385 -0
  97. package/src/practices.ts +433 -0
  98. package/src/product-version.ts +108 -0
  99. package/src/schema.ts +145 -0
  100. package/src/validator.ts +95 -0
@@ -0,0 +1,38 @@
1
+ {
2
+ "schemaVersion": "archcontext.attestation/v2",
3
+ "attestationId": "att_20260620_0001",
4
+ "challengeId": "chal_20260620_0001",
5
+ "installationId": 10001,
6
+ "repositoryId": 20002,
7
+ "pullRequestNumber": 42,
8
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
9
+ "baseSha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
10
+ "mergeBaseSha": "cccccccccccccccccccccccccccccccccccccccc",
11
+ "headTreeOid": "tree_aaaaaaaa",
12
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
13
+ "modelDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
14
+ "policyDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
15
+ "codeFactsDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
16
+ "reviewDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
17
+ "result": "pass",
18
+ "execution": {
19
+ "trustLevel": "developer",
20
+ "source": "clean-commit-worktree",
21
+ "principalId": "device_0001",
22
+ "publicKeyId": "key_device_0001"
23
+ },
24
+ "runtime": {
25
+ "version": "0.2.0",
26
+ "buildDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
27
+ "codeGraphVersion": "1.0.1",
28
+ "capabilitiesDigest": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
29
+ },
30
+ "nonce": "nonce_base64url_0001",
31
+ "startedAt": "2026-06-20T09:03:00Z",
32
+ "completedAt": "2026-06-20T09:04:00Z",
33
+ "expiresAt": "2026-06-20T09:15:00Z",
34
+ "signature": {
35
+ "algorithm": "ed25519",
36
+ "value": "base64url_signature"
37
+ }
38
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "schemaVersion": "archcontext.attestation/v1",
3
+ "attestationId": "att_123",
4
+ "challengeId": "challenge_123",
5
+ "repository": {
6
+ "provider": "github",
7
+ "owner": "ancienttwo",
8
+ "name": "arch-context",
9
+ "visibility": "private"
10
+ },
11
+ "headSha": "abc123",
12
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
13
+ "reviewDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
14
+ "device": {
15
+ "deviceId": "device_local",
16
+ "publicKeyId": "pk_local"
17
+ },
18
+ "issuedAt": "2026-06-19T00:00:00Z",
19
+ "expiresAt": "2026-06-19T00:10:00Z",
20
+ "trustLevel": "developer",
21
+ "signature": {
22
+ "alg": "ed25519",
23
+ "value": "base64-test-signature"
24
+ }
25
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "schemaVersion": "archcontext.changeset/v1",
3
+ "id": "changeset.01JTEST",
4
+ "status": "proposed",
5
+ "base": {
6
+ "headSha": "abc123",
7
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
8
+ "modelDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
9
+ },
10
+ "reason": {
11
+ "taskSessionId": "task_123",
12
+ "interventionId": "intervention.subscription-lifecycle-unification"
13
+ },
14
+ "operations": [
15
+ {
16
+ "op": "update_entity_fields",
17
+ "entityId": "module.subscription",
18
+ "expectedHash": "sha256:old",
19
+ "changes": {
20
+ "responsibilities": {
21
+ "add": ["expose-subscription-status"]
22
+ }
23
+ }
24
+ }
25
+ ],
26
+ "preconditions": ["no-uncommitted-change-under:.archcontext/model", "schema-valid-before"],
27
+ "postconditions": ["schema-valid-after", "no-dangling-reference"],
28
+ "requiresConfirmation": true,
29
+ "idempotencyKey": "cs_test"
30
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schemaVersion": "archcontext.chatgpt-ga-tool/v1",
3
+ "toolName": "archcontext_prepare_task",
4
+ "surface": "local-runtime",
5
+ "readOnlyByDefault": true,
6
+ "dataClassification": "local-architecture",
7
+ "requiresLocalConfirmationForWrite": false,
8
+ "disclosure": "Private repository content is processed by the local runtime; remote ArchContext MCP exposes metadata only."
9
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "schemaVersion": "archcontext.check-delivery/v1",
3
+ "deliveryId": "delivery_0001",
4
+ "challengeId": "chal_20260620_0001",
5
+ "checkRunId": "check_0001",
6
+ "checkName": "ArchContext / Developer Review",
7
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
8
+ "status": "PENDING",
9
+ "attemptCount": 0,
10
+ "nextAttemptAt": null,
11
+ "lastErrorCode": null,
12
+ "createdAt": "2026-06-20T09:00:00Z",
13
+ "updatedAt": "2026-06-20T09:00:00Z"
14
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": "archcontext.cloud-egress/v1",
3
+ "requestId": "req_0001",
4
+ "category": "github.pull-head",
5
+ "method": "GET",
6
+ "host": "api.github.com",
7
+ "pathTemplate": "/repos/{owner}/{repo}/pulls/{pull_number}",
8
+ "statusCode": 200,
9
+ "latencyMs": 42,
10
+ "recordedAt": "2026-06-20T09:00:00Z"
11
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "schemaVersion": "archcontext.compatibility/v1",
3
+ "id": "compatibility.subscription-webhook-v1",
4
+ "status": "active",
5
+ "kind": "external-contract",
6
+ "protects": {
7
+ "type": "webhook-payload",
8
+ "id": "interface.subscription-webhook-v1"
9
+ },
10
+ "consumers": ["partner.acme"],
11
+ "legacyPaths": ["src/subscription/webhook-v1.ts"],
12
+ "reason": "External partner migration window is still active.",
13
+ "owner": "module.integration",
14
+ "introducedAt": "2026-06-19T00:00:00Z",
15
+ "reviewAt": "2026-08-01T00:00:00Z",
16
+ "expiresAt": "2026-09-30T00:00:00Z",
17
+ "removalConditions": ["remaining-consumers == 0", "v1-delivery-count-30d == 0"],
18
+ "migrationIssue": "GH-482"
19
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "schemaVersion": "archcontext.constraint/v1",
3
+ "id": "constraint.payment-data-boundary",
4
+ "name": "Payment data boundary",
5
+ "severity": "error",
6
+ "scope": {
7
+ "nodes": ["module.subscription"]
8
+ },
9
+ "rule": {
10
+ "type": "forbid-data-access",
11
+ "target": "datastore.payment",
12
+ "operations": ["reads", "writes"]
13
+ },
14
+ "allowedVia": ["interface.payment-api"],
15
+ "rationale": "Payment data must remain owned by the payment module.",
16
+ "humanExplanation": {
17
+ "title": "订阅模块不能直接读取付款数据库",
18
+ "consequence": "Direct access would couple billing logic to payment storage.",
19
+ "recommendation": "Query payment state through the payment interface."
20
+ },
21
+ "requiresAdrForException": true
22
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "schemaVersion": "archcontext.cross-repo-relation/v1",
3
+ "id": "relation.web-calls-api",
4
+ "kind": "calls",
5
+ "source": {
6
+ "repositoryId": "repo.web",
7
+ "nodeId": "module.checkout-ui"
8
+ },
9
+ "target": {
10
+ "repositoryId": "repo.api",
11
+ "nodeId": "module.billing-api"
12
+ },
13
+ "via": {
14
+ "kind": "interface",
15
+ "id": "interface.billing-http"
16
+ },
17
+ "synchrony": "synchronous",
18
+ "intent": "Checkout UI asks the billing API to create a subscription.",
19
+ "owner": "team.growth",
20
+ "allowedData": ["account-id", "plan-id"],
21
+ "forbiddenData": ["payment-credential"],
22
+ "criticality": "high"
23
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": "archcontext.device-identity/v1",
3
+ "deviceId": "device_0001",
4
+ "accountId": "acct_0001",
5
+ "publicKeyId": "key_device_0001",
6
+ "publicKeyFingerprint": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
7
+ "status": "active",
8
+ "createdAt": "2026-06-20T09:00:00Z",
9
+ "revokedAt": null
10
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": "archcontext.entitlement/v1",
3
+ "entitlementId": "ent_acct_42_2026",
4
+ "accountId": "acct_42",
5
+ "plan": "pro",
6
+ "billingInterval": "annual",
7
+ "privateRepositoryScope": "user-all-private-repositories",
8
+ "repositoryNumericIds": [1001, 1002],
9
+ "issuedAt": "2026-06-19T00:00:00Z",
10
+ "validUntil": "2027-06-19T00:00:00Z",
11
+ "offlineUntil": "2026-06-26T00:00:00Z"
12
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "schemaVersion": "archcontext.evidence-binding/v1",
3
+ "bindingId": "binding.evidence.al0.boundary-import",
4
+ "evidenceId": "evidence.al0.boundary-import",
5
+ "target": {
6
+ "kind": "recommendation",
7
+ "id": "rec.al0.boundary-import"
8
+ },
9
+ "bindingReason": "predicate-subject",
10
+ "authorityEffect": "checkpoint-eligible",
11
+ "createdAt": "2026-06-25T00:00:00.000Z",
12
+ "provenance": {
13
+ "producer": "practice-engine",
14
+ "command": "matchPracticesForTask",
15
+ "inputDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
16
+ }
17
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": "archcontext.evidence-item/v2",
3
+ "evidenceId": "evidence.al0.boundary-import",
4
+ "kind": "import-edge-added",
5
+ "strength": "observed",
6
+ "polarity": "positive",
7
+ "origin": "codegraph",
8
+ "subject": "relation.module-api-imports-runtime",
9
+ "selector": {
10
+ "kind": "relation",
11
+ "id": "relation.module-api-imports-runtime",
12
+ "path": "packages/core/application/src/index.ts",
13
+ "startLine": 1,
14
+ "endLine": 1
15
+ },
16
+ "summary": "CodeGraph observed an import edge for the changed subject.",
17
+ "coverage": {
18
+ "level": "partial",
19
+ "scope": "changed-paths"
20
+ },
21
+ "supports": ["recommendation", "checkpoint"],
22
+ "provenance": {
23
+ "producer": "codegraph-adapter",
24
+ "command": "codegraph explore",
25
+ "inputDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
26
+ },
27
+ "createdAt": "2026-06-25T00:00:00.000Z",
28
+ "digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
29
+ }
@@ -0,0 +1,53 @@
1
+ {
2
+ "schemaVersion": "archcontext.explorer-projection/v1",
3
+ "generatedAt": "2026-06-20T00:00:00.000Z",
4
+ "repository": {
5
+ "repositoryId": "repo.local",
6
+ "headSha": "abc123",
7
+ "worktreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
8
+ "modelDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
9
+ },
10
+ "nodes": [
11
+ {
12
+ "id": "module.runtime-daemon",
13
+ "name": "Runtime Daemon",
14
+ "kind": "module",
15
+ "repositoryId": "repo.local",
16
+ "verificationStatus": "MATCHED",
17
+ "pressure": {
18
+ "level": "low",
19
+ "score": 12,
20
+ "signals": []
21
+ },
22
+ "sourceSelectors": [
23
+ {
24
+ "path": "packages/local-runtime/runtime-daemon/src/index.ts",
25
+ "symbolId": "ArchctxDaemon",
26
+ "startLine": 41,
27
+ "endLine": 300
28
+ }
29
+ ]
30
+ }
31
+ ],
32
+ "relations": [
33
+ {
34
+ "id": "relation.cli-runtime",
35
+ "source": "module.cli",
36
+ "target": "module.runtime-daemon",
37
+ "kind": "uses",
38
+ "verificationStatus": "MATCHED"
39
+ }
40
+ ],
41
+ "landscape": {
42
+ "repositories": ["repo.local"]
43
+ },
44
+ "verification": [],
45
+ "pressure": [],
46
+ "interventions": [],
47
+ "capabilities": {
48
+ "readOnly": true,
49
+ "mutationMode": "forbidden",
50
+ "egress": "none",
51
+ "tokenRequired": true
52
+ }
53
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": "archcontext.explorer-service/v1",
3
+ "bindHost": "127.0.0.1",
4
+ "protocol": "http-loopback",
5
+ "optIn": true,
6
+ "defaultEnabled": false,
7
+ "tokenTtlSeconds": 900,
8
+ "readOnly": true,
9
+ "allowedMethods": ["GET"],
10
+ "egress": "none"
11
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": "archcontext.external-document/v1",
3
+ "provider": "context7",
4
+ "libraryId": "/facebook/react",
5
+ "requestedVersion": "18.2.0",
6
+ "resolvedVersion": "18.2.0",
7
+ "queryDigest": "sha256:7f46bb5f8c7e1cf8c4e0c5f54d28a236522f5d94801db0f7f3685e821f9db6f8",
8
+ "contentDigest": "sha256:2c2d25a61f3d4f5ed59deffa2ee41db670ac2887f54b02d4f2e3959b287a86d2",
9
+ "retrievedAt": "2026-06-24T00:00:00.000Z",
10
+ "expiresAt": "2026-07-24T00:00:00.000Z",
11
+ "trust": "external-unverified",
12
+ "enforcement": "advisory-only",
13
+ "cacheStatus": "fresh",
14
+ "uri": "archcontext://external-docs/context7/sha256:2c2d25a61f3d4f5ed59deffa2ee41db670ac2887f54b02d4f2e3959b287a86d2",
15
+ "byteCount": 77,
16
+ "snippets": [
17
+ {
18
+ "title": "React hooks",
19
+ "contentPreview": "Hooks are React functions documented by the upstream project. Treat this text as untrusted documentation data.",
20
+ "contentDigest": "sha256:2c2d25a61f3d4f5ed59deffa2ee41db670ac2887f54b02d4f2e3959b287a86d2",
21
+ "sourceUri": "https://react.dev/reference/react",
22
+ "byteCount": 77
23
+ }
24
+ ],
25
+ "warning": "untrusted-documentation-data",
26
+ "metadata": {
27
+ "source": "fixture"
28
+ }
29
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": "archcontext.governance-key-status/v1",
3
+ "publicKeyId": "key_runner_0001",
4
+ "ownerKind": "runner",
5
+ "ownerId": "runner_0001",
6
+ "fingerprint": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
7
+ "status": "active",
8
+ "createdAt": "2026-06-20T09:00:00Z",
9
+ "rotatedAt": null,
10
+ "revokedAt": null
11
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "schemaVersion": "archcontext.investigation-report/v1",
3
+ "reportId": "investigation_report.al0_investigate",
4
+ "jobId": "agent_job.al0_investigate",
5
+ "status": "succeeded",
6
+ "findings": [
7
+ {
8
+ "findingId": "finding.boundary-import",
9
+ "hypothesis": "The changed import may cross a declared architecture boundary.",
10
+ "evidenceBindingIds": ["binding.evidence.al0.boundary-import"],
11
+ "unknowns": ["Whether the target module is inside the same declared layer."],
12
+ "falsifier": "A declared relation allowing this dependency exists at the same HEAD.",
13
+ "proposedDelta": {
14
+ "candidateChangeId": "candidate_change.al0.boundary-import",
15
+ "kind": "node-materially-changed",
16
+ "target": {
17
+ "kind": "node",
18
+ "id": "module.checkout"
19
+ },
20
+ "stateDimension": "target-state",
21
+ "changeKind": "materially_changed",
22
+ "subjectSelectorIds": ["subject.path.src-checkout-service"],
23
+ "mappingIds": ["mapping.checkout-service"],
24
+ "ambiguityIds": [],
25
+ "evidenceIds": ["evidence.al0.boundary-import"],
26
+ "confidence": "medium",
27
+ "heuristic": true,
28
+ "summary": "The checkout module may be materially changed by the observed boundary import.",
29
+ "digest": "sha256:1515151515151515151515151515151515151515151515151515151515151515"
30
+ },
31
+ "proposedDeltaDigest": "sha256:1515151515151515151515151515151515151515151515151515151515151515",
32
+ "confidence": "medium"
33
+ }
34
+ ],
35
+ "outputDigest": "sha256:1616161616161616161616161616161616161616161616161616161616161616",
36
+ "createdAt": "2026-06-25T00:00:00.000Z",
37
+ "directMutationAllowed": false
38
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schemaVersion": "archcontext.landscape/v1",
3
+ "id": "landscape.archcontext-product",
4
+ "name": "ArchContext Product",
5
+ "repositories": [
6
+ {
7
+ "repositoryId": "repo.web",
8
+ "numericRepositoryId": 1001,
9
+ "name": "archcontext-web",
10
+ "role": "frontend",
11
+ "owner": "team.growth",
12
+ "defaultBranch": "main"
13
+ },
14
+ {
15
+ "repositoryId": "repo.api",
16
+ "numericRepositoryId": 1002,
17
+ "name": "archcontext-api",
18
+ "role": "runtime",
19
+ "owner": "team.platform",
20
+ "defaultBranch": "main"
21
+ }
22
+ ],
23
+ "relations": ["relation.web-calls-api"],
24
+ "ownership": {
25
+ "team.growth": ["repo.web"],
26
+ "team.platform": ["repo.api"]
27
+ },
28
+ "scope": {
29
+ "defaultActiveRepositories": ["repo.web"],
30
+ "maxActiveRepositories": 3
31
+ },
32
+ "syncPolicy": {
33
+ "mode": "git-worktree-only",
34
+ "archcontextSyncService": "forbidden"
35
+ }
36
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "schemaVersion": "archcontext.likec4-mapping/v1",
3
+ "id": "mapping.likec4.native",
4
+ "exportMode": "export-first",
5
+ "native": {
6
+ "nodeKinds": ["capability", "module", "component", "interface", "datastore", "external-system"],
7
+ "relationKinds": ["depends-on", "calls", "publishes", "subscribes", "reads", "writes"]
8
+ },
9
+ "likec4": {
10
+ "elementKinds": ["person", "system", "container", "component"],
11
+ "relationLabels": ["depends-on", "calls", "publishes", "subscribes", "reads", "writes"]
12
+ },
13
+ "views": ["landscape", "module"]
14
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": "archcontext.notification-event/v1",
3
+ "eventId": "notification.review-complete",
4
+ "prUrl": "https://github.com/ancienttwo/arch-context/pull/12",
5
+ "result": "pass_with_warnings",
6
+ "riskLevel": "medium",
7
+ "commitSha": "abc1234",
8
+ "runtimeVersion": "archctx/1.1.0",
9
+ "occurredAt": "2026-06-19T00:00:00Z"
10
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": "archcontext.notification-provider/v1",
3
+ "id": "notification-provider.slack-review",
4
+ "provider": "slack",
5
+ "enabled": true,
6
+ "target": "https://hooks.slack.com/services/example",
7
+ "secretRef": "secret://slack-review-webhook",
8
+ "retry": {
9
+ "maxAttempts": 3,
10
+ "backoffSeconds": 30
11
+ }
12
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": "archcontext.org-runner-identity/v1",
3
+ "runnerId": "runner_acme_prod_1",
4
+ "installationId": 12345,
5
+ "repositoryNumericIds": [1001, 1002],
6
+ "publicKeyId": "org_pk_1",
7
+ "publicKeyFingerprint": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
8
+ "status": "active",
9
+ "createdAt": "2026-06-19T00:00:00Z"
10
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": "archcontext.practice-catalog-manifest/v1",
3
+ "catalogVersion": "2026.06.0",
4
+ "productVersion": "0.1.5",
5
+ "generatedAt": "2026-06-23T00:00:00Z",
6
+ "entries": [
7
+ {
8
+ "id": "compatibility.single-owner",
9
+ "revision": 1,
10
+ "digest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
11
+ "sourceIds": ["archcontext.adr.0010"]
12
+ }
13
+ ],
14
+ "sourceIds": ["archcontext.adr.0010"],
15
+ "catalogDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
16
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "schemaVersion": "archcontext.practice-check-result/v1",
3
+ "practiceId": "modularity.no-new-cycle",
4
+ "checkId": "no-new-cycle",
5
+ "assetDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
6
+ "enforcement": "complete",
7
+ "status": "fail",
8
+ "reasonCode": "violation",
9
+ "deterministic": true,
10
+ "subjects": ["module.a->module.b"],
11
+ "subjectDigests": ["sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"],
12
+ "message": "Complete would introduce a new import cycle.",
13
+ "remediation": {
14
+ "action": "remove-new-import-cycle-or-add-a-more-specific-boundary",
15
+ "paths": []
16
+ }
17
+ }
@@ -0,0 +1,94 @@
1
+ {
2
+ "schemaVersion": "archcontext.practice-checkpoint/v1",
3
+ "taskSessionId": "task_cli",
4
+ "event": "post-edit",
5
+ "headSha": "abc123",
6
+ "expectedHeadSha": "abc123",
7
+ "worktreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
8
+ "expectedWorktreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
9
+ "fresh": true,
10
+ "reasonCode": "no-op",
11
+ "staleReasons": [],
12
+ "changedPaths": ["src/billing/adapter.ts"],
13
+ "toolCallId": "toolu_123",
14
+ "catalogDigest": "sha256:235dc7f02375c408a1b1497d0d5bca444abde26519875e2d396f770ae5d3b892",
15
+ "previousCatalogDigest": "sha256:235dc7f02375c408a1b1497d0d5bca444abde26519875e2d396f770ae5d3b892",
16
+ "contextDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
17
+ "previousContextDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
18
+ "practiceGuidanceDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
19
+ "previousPracticeGuidanceDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
20
+ "delta": {
21
+ "schemaVersion": "archcontext.practice-delta/v1",
22
+ "added": [],
23
+ "removed": [],
24
+ "upgraded": [],
25
+ "downgraded": [],
26
+ "unchanged": [
27
+ {
28
+ "schemaVersion": "archcontext.practice-match/v1",
29
+ "practiceId": "compatibility.single-owner",
30
+ "assetRevision": 1,
31
+ "assetDigest": "sha256:52c1f1ed2128f56e0a3e4f07303efa34bda507da54bd0e7914d7cf17f6f27843",
32
+ "title": "Compatibility paths require one lifecycle owner",
33
+ "category": "compatibility",
34
+ "score": 87,
35
+ "confidence": "high",
36
+ "enforcement": "checkpoint",
37
+ "matchedBy": ["predicate", "retrieval", "scope", "signal"],
38
+ "evidence": [],
39
+ "explanation": ["compatibility.single-owner: A compatibility path must have one accountable owner."],
40
+ "sourceTrust": "curated-static"
41
+ }
42
+ ],
43
+ "requiresProof": []
44
+ },
45
+ "noOpDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444",
46
+ "resultDigest": "sha256:5555555555555555555555555555555555555555555555555555555555555555",
47
+ "hook": {
48
+ "egress": "none",
49
+ "failOpen": true,
50
+ "pathCount": 1,
51
+ "network": "forbidden",
52
+ "pathSummary": {
53
+ "schemaVersion": "archcontext.checkpoint-path-summary/v1",
54
+ "total": 1,
55
+ "source": 1,
56
+ "generated": 0,
57
+ "ignored": 0,
58
+ "binary": 0,
59
+ "deleted": 0,
60
+ "renameHints": 0
61
+ },
62
+ "coalesced": false,
63
+ "skippedAnalysis": false,
64
+ "coalescedEventCount": 1,
65
+ "coalesceKey": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
66
+ "elapsedMs": 12
67
+ },
68
+ "nextSnapshot": {
69
+ "schemaVersion": "archcontext.practice-checkpoint-snapshot/v1",
70
+ "task": "remove legacy v1 wrapper",
71
+ "headSha": "abc123",
72
+ "worktreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
73
+ "contextDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
74
+ "practiceGuidanceDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333",
75
+ "catalogDigest": "sha256:235dc7f02375c408a1b1497d0d5bca444abde26519875e2d396f770ae5d3b892",
76
+ "matches": [
77
+ {
78
+ "schemaVersion": "archcontext.practice-match/v1",
79
+ "practiceId": "compatibility.single-owner",
80
+ "assetRevision": 1,
81
+ "assetDigest": "sha256:52c1f1ed2128f56e0a3e4f07303efa34bda507da54bd0e7914d7cf17f6f27843",
82
+ "title": "Compatibility paths require one lifecycle owner",
83
+ "category": "compatibility",
84
+ "score": 87,
85
+ "confidence": "high",
86
+ "enforcement": "checkpoint",
87
+ "matchedBy": ["predicate", "retrieval", "scope", "signal"],
88
+ "evidence": [],
89
+ "explanation": ["compatibility.single-owner: A compatibility path must have one accountable owner."],
90
+ "sourceTrust": "curated-static"
91
+ }
92
+ ]
93
+ }
94
+ }