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,15 @@
1
+ {
2
+ "schemaVersion": "archcontext.practice-enforcement-policy/v1",
3
+ "mode": "active",
4
+ "rules": [
5
+ {
6
+ "practiceId": "api.contract-before-implementation",
7
+ "enforcement": "complete",
8
+ "checkIds": ["required-test-evidence"],
9
+ "testEvidence": {
10
+ "commands": [],
11
+ "subjects": []
12
+ }
13
+ }
14
+ ]
15
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "schemaVersion": "archcontext.practice-enforcement-policy/v1",
3
+ "mode": "active",
4
+ "recommendations": {
5
+ "budgets": {
6
+ "maxRecommendationsPerRun": -1
7
+ }
8
+ },
9
+ "rules": []
10
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "schemaVersion": "archcontext.practice/v1",
3
+ "id": "compatibility.unknown-field",
4
+ "revision": 1,
5
+ "status": "active",
6
+ "title": "Unknown field fixture",
7
+ "summary": "This fixture must be rejected because it adds an unknown top-level field.",
8
+ "category": "compatibility",
9
+ "tags": ["fixture"],
10
+ "appliesTo": {
11
+ "repositoryKinds": ["application"],
12
+ "languages": [],
13
+ "frameworks": [],
14
+ "pathGlobs": ["**/*"],
15
+ "nodeKinds": ["module"]
16
+ },
17
+ "triggers": {
18
+ "candidateTerms": ["fixture"],
19
+ "pressureSignals": ["fixture"],
20
+ "structuralPredicates": ["fixture"]
21
+ },
22
+ "evidencePolicy": {
23
+ "minimumStrengthForRecommendation": "heuristic",
24
+ "minimumStrengthForCheckpoint": "observed",
25
+ "minimumStrengthForEnforcement": "observed",
26
+ "requiredKindsForEnforcement": ["diff"],
27
+ "maxEnforcementWhenOnlyHeuristic": "advisory"
28
+ },
29
+ "guidance": {
30
+ "questions": ["Fixture?"],
31
+ "preferred": ["Reject unknown fields."],
32
+ "avoid": ["Accepting unknown fields."]
33
+ },
34
+ "checks": [],
35
+ "enforcement": {
36
+ "default": "advisory",
37
+ "promotableTo": "checkpoint",
38
+ "repoOptInRequired": true
39
+ },
40
+ "provenance": {
41
+ "sourceKind": "archcontext-native",
42
+ "sourceRefs": [
43
+ {
44
+ "sourceId": "archcontext.spec"
45
+ }
46
+ ],
47
+ "curator": "archcontext-maintainers",
48
+ "reviewedAt": "2026-06-23"
49
+ },
50
+ "lifecycle": {
51
+ "introducedAt": "2026-06-23",
52
+ "reviewAfter": "2027-06-23",
53
+ "supersedes": []
54
+ },
55
+ "unexpectedField": true
56
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "schemaVersion": "archcontext.projection-target/v1",
3
+ "targetId": "projection_target.architecture.index",
4
+ "type": "architecture-index",
5
+ "scope": {
6
+ "kind": "repository"
7
+ },
8
+ "path": "docs/architecture/index.md",
9
+ "ownership": "human",
10
+ "generatedRegion": {
11
+ "startMarker": "<!-- BEGIN ARCHCONTEXT:generated target=\"projection_target.architecture.index\" -->",
12
+ "endMarker": "<!-- END ARCHCONTEXT:generated target=\"projection_target.architecture.index\" -->"
13
+ },
14
+ "rendererVersion": "archcontext.docs-renderer/v1",
15
+ "format": "markdown",
16
+ "sourceDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
17
+ "outputDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
18
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": "archcontext.recommendation-feedback/v1",
3
+ "feedbackId": "recommendation_feedback.implicit_acceptance",
4
+ "recommendationId": "recommendation.api-owner",
5
+ "runId": "recommendation_run.scheduler",
6
+ "action": "accept",
7
+ "previousStatus": "open",
8
+ "nextStatus": "accepted",
9
+ "actor": {
10
+ "kind": "cli",
11
+ "id": "developer",
12
+ "source": "cli"
13
+ },
14
+ "reason": "This must not be accepted as implicit feedback.",
15
+ "explicit": true,
16
+ "implicitAcceptance": true,
17
+ "repository": {
18
+ "repositoryId": "repo.arch-context",
19
+ "storageRepositoryId": "repo.arch-context"
20
+ },
21
+ "worktree": {
22
+ "workspaceId": "workspace.arch-context",
23
+ "storageWorkspaceId": "workspace.arch-context",
24
+ "branch": "codex/al8",
25
+ "headSha": "0123456789abcdef0123456789abcdef01234567",
26
+ "worktreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
27
+ },
28
+ "createdAt": "2026-06-26T12:05:00.000Z"
29
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "schemaVersion": "archcontext.recommendation-run/v1",
3
+ "runId": "rec_run.invalid_raw_input",
4
+ "repository": {
5
+ "repositoryId": "repo.archcontext",
6
+ "storageRepositoryId": "storage-repo.archcontext"
7
+ },
8
+ "worktree": {
9
+ "workspaceId": "workspace.main",
10
+ "storageWorkspaceId": "storage-workspace.main",
11
+ "branch": "main",
12
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
13
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
14
+ },
15
+ "trigger": {
16
+ "level": "L1",
17
+ "source": "checkpoint"
18
+ },
19
+ "engineVersion": "0.1.3",
20
+ "catalogDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
21
+ "inputDigest": "sha256:dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd",
22
+ "outputDigest": "sha256:eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee",
23
+ "policyMode": "advisory",
24
+ "status": "succeeded",
25
+ "startedAt": "2026-06-25T00:00:00.000Z",
26
+ "recommendationIds": ["rec.al0.boundary-import"],
27
+ "metrics": {
28
+ "matchCount": 1,
29
+ "evidenceBindingCount": 1,
30
+ "unboundEvidenceCount": 0
31
+ },
32
+ "rawInput": "private prompt"
33
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "schemaVersion": "archcontext.recommendation/v2",
3
+ "recommendationId": "rec.invalid.source-body",
4
+ "runId": "rec_run.al0_contract",
5
+ "fingerprint": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
6
+ "subject": "relation.module-api-imports-runtime",
7
+ "status": "open",
8
+ "confidence": "medium",
9
+ "enforcement": "advisory",
10
+ "risk": "medium",
11
+ "uncertainty": "low",
12
+ "evidenceBindingIds": ["binding.evidence.al0.boundary-import"],
13
+ "explanation": ["Invalid recommendation includes source body."],
14
+ "createdAt": "2026-06-25T00:00:00.000Z",
15
+ "updatedAt": "2026-06-25T00:00:00.000Z",
16
+ "sourceBody": "private code"
17
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": "archcontext.review-challenge/v2",
3
+ "challengeId": "chal_bad_private_field",
4
+ "installationId": 10001,
5
+ "repositoryId": 20002,
6
+ "pullRequestNumber": 42,
7
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
8
+ "baseSha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
9
+ "nonce": "nonce_base64url_0001",
10
+ "requiredTrust": "developer",
11
+ "policyProfileId": "policy.default",
12
+ "createdAt": "2026-06-20T09:00:00Z",
13
+ "expiresAt": "2026-06-20T09:15:00Z",
14
+ "status": "PENDING",
15
+ "filename": "src/private.ts"
16
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schemaVersion": "archcontext.adapter-fidelity/v1",
3
+ "id": "adapter-fidelity.native-sot",
4
+ "direction": "export-first",
5
+ "importScope": "initialization-only",
6
+ "nativeIsSourceOfTruth": true,
7
+ "reverseSync": "forbidden",
8
+ "protectedNativeFields": ["evidence", "verification", "constraint", "intervention"]
9
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "schemaVersion": "archcontext.agent-job/v1",
3
+ "jobId": "agent_job.al0_investigate",
4
+ "status": "queued",
5
+ "runnerPort": "codex",
6
+ "repository": {
7
+ "repositoryId": "repo.archcontext",
8
+ "storageRepositoryId": "storage-repo.archcontext"
9
+ },
10
+ "worktree": {
11
+ "workspaceId": "workspace.main",
12
+ "storageWorkspaceId": "storage-workspace.main",
13
+ "branch": "codex/architecture-ledger-al0",
14
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
15
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
16
+ },
17
+ "fingerprint": "sha256:1212121212121212121212121212121212121212121212121212121212121212",
18
+ "trigger": {
19
+ "source": "checkpoint",
20
+ "reason": "medium risk with unresolved evidence coverage"
21
+ },
22
+ "budget": {
23
+ "maxRunsPerTask": 1,
24
+ "maxRunsPerRepositoryPerDay": 3,
25
+ "maxRunsPerDay": 10
26
+ },
27
+ "inputDigest": "sha256:1313131313131313131313131313131313131313131313131313131313131313",
28
+ "promptTemplateDigest": "sha256:1414141414141414141414141414141414141414141414141414141414141414",
29
+ "stalePolicy": "cancel-on-head-change",
30
+ "directMutationAllowed": false,
31
+ "queuedAt": "2026-06-25T00:00:00.000Z",
32
+ "updatedAt": "2026-06-25T00:00:00.000Z"
33
+ }
@@ -0,0 +1,45 @@
1
+ {
2
+ "schemaVersion": "archcontext.architecture-candidate-delta-policy/v1",
3
+ "evaluationId": "candidate_delta_policy.checkout-service",
4
+ "deltaId": "delta.checkout-service",
5
+ "repository": {
6
+ "repositoryId": "repo.checkout",
7
+ "storageRepositoryId": "repo.storage.checkout"
8
+ },
9
+ "worktree": {
10
+ "workspaceId": "workspace.checkout.main",
11
+ "storageWorkspaceId": "workspace.storage.checkout.main",
12
+ "branch": "main",
13
+ "headSha": "abc123",
14
+ "worktreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
15
+ },
16
+ "deltaDigest": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
17
+ "policyVersion": "architecture-candidate-delta-policy/v1",
18
+ "evaluatedAt": "2026-06-26T00:00:00.000Z",
19
+ "decisions": [
20
+ {
21
+ "decisionId": "candidate_delta_policy_decision.checkout-service",
22
+ "candidateChangeId": "candidate_change.checkout-service",
23
+ "target": {
24
+ "kind": "node",
25
+ "id": "module.checkout"
26
+ },
27
+ "stateDimension": "target-state",
28
+ "changeKind": "materially_changed",
29
+ "confidence": "medium",
30
+ "action": "require-checkpoint",
31
+ "reasonCodes": ["medium-confidence", "partial-evidence"],
32
+ "evidenceIds": ["evidence.al5.src-checkout-service"],
33
+ "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
34
+ }
35
+ ],
36
+ "summary": {
37
+ "candidateChanges": 1,
38
+ "autoAccept": 0,
39
+ "requireCheckpoint": 1,
40
+ "requireProof": 0,
41
+ "requireHumanApproval": 0,
42
+ "mappingAmbiguities": 0
43
+ },
44
+ "evaluationDigest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
45
+ }
@@ -0,0 +1,188 @@
1
+ {
2
+ "schemaVersion": "archcontext.architecture-candidate-delta/v1",
3
+ "deltaId": "delta.checkout-service",
4
+ "repository": {
5
+ "repositoryId": "repo.checkout",
6
+ "storageRepositoryId": "repo.storage.checkout"
7
+ },
8
+ "worktree": {
9
+ "workspaceId": "workspace.checkout.main",
10
+ "storageWorkspaceId": "workspace.storage.checkout.main",
11
+ "branch": "main",
12
+ "headSha": "abc123",
13
+ "worktreeDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111"
14
+ },
15
+ "changeCursor": {
16
+ "source": "git",
17
+ "changeSource": "commit",
18
+ "baseSha": "abc122",
19
+ "headSha": "abc123",
20
+ "pathCount": 1,
21
+ "metadataDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
22
+ "codeFactsDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
23
+ },
24
+ "subjectSelectors": [
25
+ {
26
+ "schemaVersion": "archcontext.architecture-subject-selector/v1",
27
+ "selectorId": "subject.path.src-checkout-service",
28
+ "kind": "path",
29
+ "repositoryId": "repo.checkout",
30
+ "stableKey": "path:src/checkout/service.ts",
31
+ "path": "src/checkout/service.ts",
32
+ "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
33
+ }
34
+ ],
35
+ "changedSubjects": [
36
+ {
37
+ "subjectSelectorId": "subject.path.src-checkout-service",
38
+ "changeKind": "materially_changed",
39
+ "rawFactIds": ["fact.git.src-checkout-service"],
40
+ "evidenceIds": ["evidence.al5.src-checkout-service"],
41
+ "digest": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
42
+ }
43
+ ],
44
+ "rawFacts": [
45
+ {
46
+ "factId": "fact.git.src-checkout-service",
47
+ "kind": "git-path-change",
48
+ "subjectSelectorId": "subject.path.src-checkout-service",
49
+ "source": "git",
50
+ "summary": "Git reports materially_changed path src/checkout/service.ts.",
51
+ "evidenceIds": ["evidence.al5.src-checkout-service"],
52
+ "digest": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
53
+ }
54
+ ],
55
+ "interpretations": [
56
+ {
57
+ "interpretationId": "interpretation.al5.src-checkout-service",
58
+ "kind": "code-subject-materially-changed",
59
+ "subjectSelectorId": "subject.path.src-checkout-service",
60
+ "evidenceIds": ["evidence.al5.src-checkout-service"],
61
+ "confidence": "medium",
62
+ "coverage": "partial",
63
+ "heuristic": true,
64
+ "summary": "Code subject changed; architecture mapping is not yet asserted.",
65
+ "digest": "sha256:6666666666666666666666666666666666666666666666666666666666666666"
66
+ }
67
+ ],
68
+ "declaredSubjectMappings": [
69
+ {
70
+ "mappingId": "mapping.checkout-service",
71
+ "subjectSelectorId": "subject.path.src-checkout-service",
72
+ "target": {
73
+ "kind": "entity",
74
+ "id": "module.checkout"
75
+ },
76
+ "matchReason": "declared-path-prefix",
77
+ "confidence": "medium",
78
+ "evidenceIds": ["evidence.al5.src-checkout-service"],
79
+ "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
80
+ }
81
+ ],
82
+ "mappingAmbiguities": [],
83
+ "candidateChanges": [
84
+ {
85
+ "candidateChangeId": "candidate_change.checkout-service",
86
+ "kind": "node-materially-changed",
87
+ "target": {
88
+ "kind": "node",
89
+ "id": "module.checkout"
90
+ },
91
+ "stateDimension": "target-state",
92
+ "changeKind": "materially_changed",
93
+ "subjectSelectorIds": ["subject.path.src-checkout-service"],
94
+ "mappingIds": ["mapping.checkout-service"],
95
+ "ambiguityIds": [],
96
+ "evidenceIds": ["evidence.al5.src-checkout-service"],
97
+ "confidence": "medium",
98
+ "heuristic": true,
99
+ "summary": "Declared architecture node module.checkout may be materially changed by changed code.",
100
+ "digest": "sha256:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
101
+ }
102
+ ],
103
+ "evidenceItems": [
104
+ {
105
+ "schemaVersion": "archcontext.evidence-item/v2",
106
+ "evidenceId": "evidence.al5.src-checkout-service",
107
+ "kind": "git-path-change",
108
+ "strength": "observed",
109
+ "polarity": "positive",
110
+ "origin": "codegraph",
111
+ "subject": "subject.path.src-checkout-service",
112
+ "selector": {
113
+ "kind": "path",
114
+ "id": "subject.path.src-checkout-service",
115
+ "path": "src/checkout/service.ts"
116
+ },
117
+ "summary": "Observed changed path src/checkout/service.ts without source body or diff body.",
118
+ "coverage": {
119
+ "level": "partial",
120
+ "scope": "git-change"
121
+ },
122
+ "supports": ["recommendation", "checkpoint"],
123
+ "provenance": {
124
+ "producer": "architecture-delta",
125
+ "command": "buildArchitectureCandidateDelta",
126
+ "inputDigest": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
127
+ },
128
+ "createdAt": "2026-06-25T00:00:00.000Z",
129
+ "digest": "sha256:8888888888888888888888888888888888888888888888888888888888888888"
130
+ }
131
+ ],
132
+ "evidenceBindings": [
133
+ {
134
+ "schemaVersion": "archcontext.evidence-binding/v1",
135
+ "bindingId": "binding.al5.src-checkout-service",
136
+ "evidenceId": "evidence.al5.src-checkout-service",
137
+ "target": {
138
+ "kind": "subject",
139
+ "id": "subject.path.src-checkout-service"
140
+ },
141
+ "bindingReason": "change-cursor",
142
+ "authorityEffect": "context-only",
143
+ "createdAt": "2026-06-25T00:00:00.000Z",
144
+ "provenance": {
145
+ "producer": "architecture-delta",
146
+ "command": "buildArchitectureCandidateDelta",
147
+ "inputDigest": "sha256:7777777777777777777777777777777777777777777777777777777777777777"
148
+ }
149
+ }
150
+ ],
151
+ "summary": {
152
+ "added": 0,
153
+ "removed": 0,
154
+ "moved": 0,
155
+ "renamed": 0,
156
+ "materiallyChanged": 1,
157
+ "unresolved": 0,
158
+ "mapped": 1,
159
+ "ambiguous": 0,
160
+ "candidateChanges": 1,
161
+ "targetStateChanges": 1,
162
+ "migrationStateProgress": 0,
163
+ "mappingCoverage": {
164
+ "totalChangedSubjects": 1,
165
+ "mappedSubjects": 1,
166
+ "unresolvedSubjects": 0,
167
+ "ambiguousSubjects": 0,
168
+ "coveragePercent": 100
169
+ },
170
+ "unresolvedSubjects": {
171
+ "total": 0,
172
+ "byReason": {
173
+ "declared-graph-unavailable": 0,
174
+ "no-declared-target": 0,
175
+ "multiple-declared-targets": 0,
176
+ "relation-endpoint-unmapped": 0
177
+ },
178
+ "subjectSelectorIds": []
179
+ },
180
+ "evidenceStrengthDistribution": {
181
+ "heuristic": 0,
182
+ "declared": 0,
183
+ "observed": 1,
184
+ "verified": 0
185
+ }
186
+ },
187
+ "deltaDigest": "sha256:9999999999999999999999999999999999999999999999999999999999999999"
188
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "schemaVersion": "archcontext.architecture-event/v1",
3
+ "eventId": "arch_event.al0_contract_freeze",
4
+ "eventType": "authority.contract.freeze",
5
+ "payloadVersion": "v1",
6
+ "repository": {
7
+ "repositoryId": "repo.archcontext",
8
+ "storageRepositoryId": "storage-repo.archcontext"
9
+ },
10
+ "worktree": {
11
+ "workspaceId": "workspace.main",
12
+ "storageWorkspaceId": "storage-workspace.main",
13
+ "branch": "codex/architecture-ledger-al0",
14
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
15
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
16
+ },
17
+ "baseDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
18
+ "resultingDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222",
19
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
20
+ "actor": {
21
+ "kind": "daemon",
22
+ "id": "archctxd.local"
23
+ },
24
+ "source": "apply_update",
25
+ "timestamp": "2026-06-25T00:00:00.000Z",
26
+ "idempotencyKey": "al0-contract-freeze",
27
+ "provenance": {
28
+ "producer": "archctx",
29
+ "command": "archctx apply",
30
+ "inputDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
31
+ },
32
+ "payload": {
33
+ "kind": "authority-contract",
34
+ "subjectIds": ["adr.0040.hybrid-architecture-ledger"],
35
+ "summary": "Freeze the AL0 hybrid architecture ledger authority contract.",
36
+ "changesDigest": "sha256:4444444444444444444444444444444444444444444444444444444444444444"
37
+ },
38
+ "previousEventHash": null
39
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schemaVersion": "archcontext.intervention/v1",
3
+ "id": "intervention.subscription-lifecycle-unification",
4
+ "status": "approved",
5
+ "trigger": {
6
+ "task": "unify-subscription-and-payment-state",
7
+ "pressure": "high",
8
+ "confidence": "medium",
9
+ "signals": ["duplicate-lifecycle-owner", "unjustified-compatibility-path"]
10
+ },
11
+ "thesis": "Subscription owns subscription state; payment exposes payment facts.",
12
+ "targetState": {
13
+ "owners": {
14
+ "subscriptionLifecycle": "module.subscription"
15
+ }
16
+ },
17
+ "constraints": {
18
+ "real": ["persisted-status-values"],
19
+ "inherited": ["internal-v1-callers"]
20
+ },
21
+ "strategy": {
22
+ "selected": "staged"
23
+ },
24
+ "proofPoint": {
25
+ "description": "Move cancellation transition end-to-end to module.subscription."
26
+ },
27
+ "falsifiers": ["untracked-external-consumer-of-internal-api"],
28
+ "killList": [
29
+ {
30
+ "id": "remove-v1-manager",
31
+ "target": "symbol.SubscriptionManagerV1",
32
+ "required": true
33
+ }
34
+ ],
35
+ "completionCriteria": ["remaining-v1-callers == 0"]
36
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "schemaVersion": "archcontext.node/v1",
3
+ "id": "module.subscription",
4
+ "kind": "module",
5
+ "name": "Subscription",
6
+ "status": "active",
7
+ "parent": "capability.subscriptions",
8
+ "summary": "Owns subscription lifecycle and plan transitions.",
9
+ "responsibilities": ["create-subscription", "change-plan"],
10
+ "source": {
11
+ "include": ["src/subscription/**"],
12
+ "exclude": ["src/subscription/generated/**"],
13
+ "entrypoints": ["src/subscription/index.ts"]
14
+ },
15
+ "ownership": {
16
+ "lifecycle": ["subscription"],
17
+ "data": ["datastore.subscription"]
18
+ },
19
+ "interfaces": {
20
+ "provides": ["interface.subscription-api"],
21
+ "consumes": ["interface.payment-api"]
22
+ },
23
+ "criticality": "high",
24
+ "riskDomains": ["payments"]
25
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "schemaVersion": "archcontext.relation/v1",
3
+ "id": "relation.subscription-calls-payment",
4
+ "kind": "calls",
5
+ "source": "module.subscription",
6
+ "target": "module.payment",
7
+ "via": "interface.payment-api",
8
+ "protocol": "https",
9
+ "synchrony": "synchronous",
10
+ "intent": "Authorize or refund payment through the payment boundary.",
11
+ "allowedData": ["payment-reference", "amount", "currency"],
12
+ "forbiddenData": ["card-number", "payment-credential"],
13
+ "criticality": "high"
14
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "schemaVersion": "archcontext.architecture-snapshot/v1",
3
+ "snapshotId": "arch_snapshot.al0_contract_freeze",
4
+ "repository": {
5
+ "repositoryId": "repo.archcontext",
6
+ "storageRepositoryId": "storage-repo.archcontext"
7
+ },
8
+ "worktree": {
9
+ "workspaceId": "workspace.main",
10
+ "storageWorkspaceId": "storage-workspace.main",
11
+ "branch": "codex/architecture-ledger-al0",
12
+ "headSha": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
13
+ "worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000"
14
+ },
15
+ "sourceMode": "dual",
16
+ "eventCursor": {
17
+ "lastEventId": "arch_event.al0_contract_freeze",
18
+ "lastEventHash": "sha256:5555555555555555555555555555555555555555555555555555555555555555"
19
+ },
20
+ "graphDigest": "sha256:6666666666666666666666666666666666666666666666666666666666666666",
21
+ "projectionDigest": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
22
+ "entityCount": 12,
23
+ "relationCount": 8,
24
+ "constraintCount": 4,
25
+ "inputDigests": {
26
+ "modelDigest": "sha256:8888888888888888888888888888888888888888888888888888888888888888",
27
+ "codeFactsDigest": "sha256:9999999999999999999999999999999999999999999999999999999999999999",
28
+ "policyDigest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
29
+ },
30
+ "createdAt": "2026-06-25T00:00:00.000Z"
31
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schemaVersion": "archcontext.architecture-subject-selector/v1",
3
+ "selectorId": "subject.path.src-checkout-service",
4
+ "kind": "path",
5
+ "repositoryId": "repo.checkout",
6
+ "stableKey": "path:src/checkout/service.ts",
7
+ "path": "src/checkout/service.ts",
8
+ "digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
9
+ }