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.
- package/fixtures/boundary/agent-job-expired.json +33 -0
- package/fixtures/boundary/architecture-event-extension.json +41 -0
- package/fixtures/boundary/architecture-node-extension.json +13 -0
- package/fixtures/boundary/attestation-v2-error.json +43 -0
- package/fixtures/boundary/check-delivery-dead-letter.json +14 -0
- package/fixtures/boundary/evidence-binding-context-only.json +20 -0
- package/fixtures/boundary/practice-disabled-overlay.json +59 -0
- package/fixtures/boundary/recommendation-deferred.json +19 -0
- package/fixtures/boundary/review-challenge-v2-organization.json +15 -0
- package/fixtures/boundary/runner-identity-organization-scope.json +16 -0
- package/fixtures/invalid/adapter-fidelity-reverse-sync.json +9 -0
- package/fixtures/invalid/agent-job-direct-mutation.json +32 -0
- package/fixtures/invalid/architecture-event-source-body-field.json +39 -0
- package/fixtures/invalid/architecture-snapshot-unknown-mode.json +29 -0
- package/fixtures/invalid/attestation-v2-finding-field.json +39 -0
- package/fixtures/invalid/check-delivery-legacy-check-name.json +14 -0
- package/fixtures/invalid/cloud-egress-envelope-private-field.json +12 -0
- package/fixtures/invalid/compatibility-illegal-reason.json +17 -0
- package/fixtures/invalid/evidence-binding-summary-substring-authority.json +17 -0
- package/fixtures/invalid/evidence-item-source-body-field.json +27 -0
- package/fixtures/invalid/explorer-projection-write-field.json +21 -0
- package/fixtures/invalid/investigation-report-direct-mutation.json +38 -0
- package/fixtures/invalid/investigation-report-missing-proposed-delta.json +19 -0
- package/fixtures/invalid/node-unknown-field.json +10 -0
- package/fixtures/invalid/notification-event-code-field.json +11 -0
- package/fixtures/invalid/practice-policy-empty-test-evidence.json +15 -0
- package/fixtures/invalid/practice-policy-negative-recommendation-budget.json +10 -0
- package/fixtures/invalid/practice-unknown-field.json +56 -0
- package/fixtures/invalid/projection-target-invalid-ownership.json +18 -0
- package/fixtures/invalid/recommendation-feedback-implicit-acceptance.json +29 -0
- package/fixtures/invalid/recommendation-run-raw-input-field.json +33 -0
- package/fixtures/invalid/recommendation-source-body-field.json +17 -0
- package/fixtures/invalid/review-challenge-v2-private-field.json +16 -0
- package/fixtures/valid/adapter-fidelity.json +9 -0
- package/fixtures/valid/agent-job.json +33 -0
- package/fixtures/valid/architecture-candidate-delta-policy.json +45 -0
- package/fixtures/valid/architecture-candidate-delta.json +188 -0
- package/fixtures/valid/architecture-event.json +39 -0
- package/fixtures/valid/architecture-intervention.json +36 -0
- package/fixtures/valid/architecture-node.json +25 -0
- package/fixtures/valid/architecture-relation.json +14 -0
- package/fixtures/valid/architecture-snapshot.json +31 -0
- package/fixtures/valid/architecture-subject-selector.json +9 -0
- package/fixtures/valid/attestation-v2.json +38 -0
- package/fixtures/valid/attestation.json +25 -0
- package/fixtures/valid/changeset.json +30 -0
- package/fixtures/valid/chatgpt-ga-tool.json +9 -0
- package/fixtures/valid/check-delivery.json +14 -0
- package/fixtures/valid/cloud-egress-envelope.json +11 -0
- package/fixtures/valid/compatibility-contract.json +19 -0
- package/fixtures/valid/constraint.json +22 -0
- package/fixtures/valid/cross-repo-relation.json +23 -0
- package/fixtures/valid/device-identity.json +10 -0
- package/fixtures/valid/entitlement.json +12 -0
- package/fixtures/valid/evidence-binding.json +17 -0
- package/fixtures/valid/evidence-item.json +29 -0
- package/fixtures/valid/explorer-projection.json +53 -0
- package/fixtures/valid/explorer-service.json +11 -0
- package/fixtures/valid/external-document-resource.json +29 -0
- package/fixtures/valid/governance-key-status.json +11 -0
- package/fixtures/valid/investigation-report.json +38 -0
- package/fixtures/valid/landscape.json +36 -0
- package/fixtures/valid/likec4-mapping.json +14 -0
- package/fixtures/valid/notification-event.json +10 -0
- package/fixtures/valid/notification-provider.json +12 -0
- package/fixtures/valid/org-runner-identity.json +10 -0
- package/fixtures/valid/practice-catalog-manifest.json +16 -0
- package/fixtures/valid/practice-check-result.json +17 -0
- package/fixtures/valid/practice-checkpoint.json +94 -0
- package/fixtures/valid/practice-guidance.json +42 -0
- package/fixtures/valid/practice-match.json +23 -0
- package/fixtures/valid/practice-policy.json +33 -0
- package/fixtures/valid/practice-profile.json +22 -0
- package/fixtures/valid/practice-source.json +19 -0
- package/fixtures/valid/practice-waiver.json +14 -0
- package/fixtures/valid/practice.json +93 -0
- package/fixtures/valid/product-version-manifest.json +51 -0
- package/fixtures/valid/projection-target.json +18 -0
- package/fixtures/valid/recommendation-feedback.json +29 -0
- package/fixtures/valid/recommendation-run.json +33 -0
- package/fixtures/valid/recommendation.json +17 -0
- package/fixtures/valid/retrieval-config.json +20 -0
- package/fixtures/valid/retrieval-decision.json +26 -0
- package/fixtures/valid/retrieval-eval.json +14 -0
- package/fixtures/valid/review-challenge-v2.json +15 -0
- package/fixtures/valid/review-result.json +32 -0
- package/fixtures/valid/runner-identity.json +13 -0
- package/fixtures/valid/structurizr-mapping.json +15 -0
- package/fixtures/valid/task-context.json +23 -0
- package/package.json +17 -0
- package/src/control-plane-routes.ts +35 -0
- package/src/external-docs.ts +137 -0
- package/src/github-governance.ts +850 -0
- package/src/index.ts +9 -0
- package/src/ledger.ts +649 -0
- package/src/ports.ts +385 -0
- package/src/practices.ts +433 -0
- package/src/product-version.ts +108 -0
- package/src/schema.ts +145 -0
- package/src/validator.ts +95 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.practice-guidance/v1",
|
|
3
|
+
"catalogDigest": "sha256:235dc7f02375c408a1b1497d0d5bca444abde26519875e2d396f770ae5d3b892",
|
|
4
|
+
"overlayDigest": "sha256:4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945",
|
|
5
|
+
"matches": [
|
|
6
|
+
{
|
|
7
|
+
"schemaVersion": "archcontext.practice-match/v1",
|
|
8
|
+
"practiceId": "compatibility.single-owner",
|
|
9
|
+
"assetRevision": 1,
|
|
10
|
+
"assetDigest": "sha256:52c1f1ed2128f56e0a3e4f07303efa34bda507da54bd0e7914d7cf17f6f27843",
|
|
11
|
+
"title": "Compatibility paths require one lifecycle owner",
|
|
12
|
+
"category": "compatibility",
|
|
13
|
+
"score": 87,
|
|
14
|
+
"confidence": "high",
|
|
15
|
+
"enforcement": "checkpoint",
|
|
16
|
+
"matchedBy": ["predicate", "retrieval", "scope", "signal"],
|
|
17
|
+
"evidence": [
|
|
18
|
+
{
|
|
19
|
+
"kind": "symbol",
|
|
20
|
+
"strength": "observed",
|
|
21
|
+
"subject": "symbol.billingLegacyV1",
|
|
22
|
+
"digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
23
|
+
"observedAt": "1970-01-01T00:00:00.000Z"
|
|
24
|
+
}
|
|
25
|
+
],
|
|
26
|
+
"explanation": ["compatibility.single-owner: A compatibility path must have one accountable owner."],
|
|
27
|
+
"sourceTrust": "curated-static"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"constraints": ["compatibility.single-owner: A compatibility path must have one accountable owner."],
|
|
31
|
+
"decisions": [],
|
|
32
|
+
"realConstraints": ["compatibility.single-owner:symbol.billingLegacyV1"],
|
|
33
|
+
"unknowns": [],
|
|
34
|
+
"requiredCheckpoints": ["practice:compatibility.single-owner@1"],
|
|
35
|
+
"resources": [
|
|
36
|
+
{
|
|
37
|
+
"type": "practice",
|
|
38
|
+
"uri": "archcontext://practice/compatibility.single-owner@1",
|
|
39
|
+
"digest": "sha256:52c1f1ed2128f56e0a3e4f07303efa34bda507da54bd0e7914d7cf17f6f27843"
|
|
40
|
+
}
|
|
41
|
+
]
|
|
42
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.practice-match/v1",
|
|
3
|
+
"practiceId": "compatibility.single-owner",
|
|
4
|
+
"assetRevision": 1,
|
|
5
|
+
"assetDigest": "sha256:52c1f1ed2128f56e0a3e4f07303efa34bda507da54bd0e7914d7cf17f6f27843",
|
|
6
|
+
"title": "Compatibility paths require one lifecycle owner",
|
|
7
|
+
"category": "compatibility",
|
|
8
|
+
"score": 87,
|
|
9
|
+
"confidence": "high",
|
|
10
|
+
"enforcement": "checkpoint",
|
|
11
|
+
"matchedBy": ["predicate", "retrieval", "scope", "signal"],
|
|
12
|
+
"evidence": [
|
|
13
|
+
{
|
|
14
|
+
"kind": "symbol",
|
|
15
|
+
"strength": "observed",
|
|
16
|
+
"subject": "symbol.billingLegacyV1",
|
|
17
|
+
"digest": "sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
|
|
18
|
+
"observedAt": "1970-01-01T00:00:00.000Z"
|
|
19
|
+
}
|
|
20
|
+
],
|
|
21
|
+
"explanation": ["compatibility.single-owner: A compatibility path must have one accountable owner."],
|
|
22
|
+
"sourceTrust": "curated-static"
|
|
23
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.practice-enforcement-policy/v1",
|
|
3
|
+
"mode": "active",
|
|
4
|
+
"recommendations": {
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"policyMode": "advisory",
|
|
7
|
+
"frequency": {
|
|
8
|
+
"minIntervalMs": 60000,
|
|
9
|
+
"cooldownMs": 604800000
|
|
10
|
+
},
|
|
11
|
+
"budgets": {
|
|
12
|
+
"maxRecommendationsPerRun": 25,
|
|
13
|
+
"maxL3InvestigationsPerRun": 1,
|
|
14
|
+
"maxRunsPerTask": 1,
|
|
15
|
+
"maxRunsPerRepositoryPerDay": 25,
|
|
16
|
+
"maxRunsPerDay": 100
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
"rules": [
|
|
20
|
+
{
|
|
21
|
+
"practiceId": "api.contract-before-implementation",
|
|
22
|
+
"enforcement": "complete",
|
|
23
|
+
"checkIds": ["required-test-evidence"],
|
|
24
|
+
"testEvidence": {
|
|
25
|
+
"commands": ["bun test packages/api-contract.test.ts"],
|
|
26
|
+
"subjects": ["schema.public-api"]
|
|
27
|
+
},
|
|
28
|
+
"scope": {
|
|
29
|
+
"pathGlobs": ["packages/**"]
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
]
|
|
33
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.practice-profile/v1",
|
|
3
|
+
"id": "profile.typescript.service",
|
|
4
|
+
"revision": 1,
|
|
5
|
+
"status": "active",
|
|
6
|
+
"title": "TypeScript service profile",
|
|
7
|
+
"repositoryKinds": ["service"],
|
|
8
|
+
"languages": ["typescript"],
|
|
9
|
+
"frameworks": [],
|
|
10
|
+
"includePracticeIds": ["compatibility.single-owner"],
|
|
11
|
+
"excludePracticeIds": [],
|
|
12
|
+
"provenance": {
|
|
13
|
+
"sourceKind": "archcontext-native",
|
|
14
|
+
"sourceRefs": [
|
|
15
|
+
{
|
|
16
|
+
"sourceId": "archcontext.spec"
|
|
17
|
+
}
|
|
18
|
+
],
|
|
19
|
+
"curator": "archcontext-maintainers",
|
|
20
|
+
"reviewedAt": "2026-06-23"
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.practice-source/v1",
|
|
3
|
+
"id": "archcontext.adr.0010",
|
|
4
|
+
"name": "ADR-0010 Compatibility Code Requires Contract",
|
|
5
|
+
"sourceType": "archcontext",
|
|
6
|
+
"uri": "docs/adr/ADR-0010-compatibility-code-requires-contract.md",
|
|
7
|
+
"revision": "2026-06-23",
|
|
8
|
+
"licenseSpdx": "NOASSERTION",
|
|
9
|
+
"licenseLevel": "A",
|
|
10
|
+
"usagePolicy": "repo-authored",
|
|
11
|
+
"retrievedAt": "2026-06-23T00:00:00Z",
|
|
12
|
+
"contentDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
13
|
+
"attribution": "ArchContext maintainers",
|
|
14
|
+
"review": {
|
|
15
|
+
"status": "approved",
|
|
16
|
+
"reviewer": "archcontext-maintainers",
|
|
17
|
+
"reviewedAt": "2026-06-23"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.practice-waiver/v1",
|
|
3
|
+
"practiceId": "modularity.no-new-cycle",
|
|
4
|
+
"checkId": "no-new-cycle",
|
|
5
|
+
"scope": {
|
|
6
|
+
"subjects": ["module.a->module.b"]
|
|
7
|
+
},
|
|
8
|
+
"owner": "team-architecture",
|
|
9
|
+
"reason": "External migration window requires keeping this edge until the cutover date.",
|
|
10
|
+
"createdAt": "2026-06-24T00:00:00.000Z",
|
|
11
|
+
"reviewAt": "2026-07-10T00:00:00.000Z",
|
|
12
|
+
"expiresAt": "2026-07-24T00:00:00.000Z",
|
|
13
|
+
"evidenceDigest": "sha256:cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
|
14
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.practice/v1",
|
|
3
|
+
"id": "compatibility.single-owner",
|
|
4
|
+
"revision": 1,
|
|
5
|
+
"status": "active",
|
|
6
|
+
"title": "Compatibility paths require one lifecycle owner",
|
|
7
|
+
"summary": "A compatibility path must have one accountable owner and a bounded removal condition.",
|
|
8
|
+
"category": "compatibility",
|
|
9
|
+
"tags": ["compatibility", "migration"],
|
|
10
|
+
"appliesTo": {
|
|
11
|
+
"repositoryKinds": ["application", "service", "library"],
|
|
12
|
+
"languages": [],
|
|
13
|
+
"frameworks": [],
|
|
14
|
+
"pathGlobs": ["**/*"],
|
|
15
|
+
"nodeKinds": ["module", "service", "public-api"]
|
|
16
|
+
},
|
|
17
|
+
"triggers": {
|
|
18
|
+
"candidateTerms": ["compatibility", "legacy", "fallback"],
|
|
19
|
+
"pressureSignals": ["unjustified-wrapper-adapter"],
|
|
20
|
+
"structuralPredicates": ["compatibility-path-added"]
|
|
21
|
+
},
|
|
22
|
+
"evidencePolicy": {
|
|
23
|
+
"minimumStrengthForRecommendation": "heuristic",
|
|
24
|
+
"minimumStrengthForCheckpoint": "observed",
|
|
25
|
+
"minimumStrengthForEnforcement": "observed",
|
|
26
|
+
"requiredKindsForEnforcement": ["diff", "symbol"],
|
|
27
|
+
"maxEnforcementWhenOnlyHeuristic": "advisory"
|
|
28
|
+
},
|
|
29
|
+
"guidance": {
|
|
30
|
+
"questions": ["Who owns removal?"],
|
|
31
|
+
"preferred": ["Adapt at one boundary."],
|
|
32
|
+
"avoid": ["Permanent fallback code."]
|
|
33
|
+
},
|
|
34
|
+
"checks": [
|
|
35
|
+
{
|
|
36
|
+
"checkId": "compatibility-contract-required",
|
|
37
|
+
"mode": "deterministic",
|
|
38
|
+
"parameters": {
|
|
39
|
+
"requireOwner": true
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"enforcement": {
|
|
44
|
+
"default": "advisory",
|
|
45
|
+
"promotableTo": "complete",
|
|
46
|
+
"repoOptInRequired": true,
|
|
47
|
+
"fixtureGate": {
|
|
48
|
+
"positive": [
|
|
49
|
+
{
|
|
50
|
+
"id": "fixture.compatibility.single-owner.positive",
|
|
51
|
+
"path": "evals/practices/enforcement-waiver-adversarial.jsonl",
|
|
52
|
+
"description": "Compatibility path with missing owner fails when opted into complete enforcement."
|
|
53
|
+
}
|
|
54
|
+
],
|
|
55
|
+
"nearNegative": [
|
|
56
|
+
{
|
|
57
|
+
"id": "fixture.compatibility.single-owner.near-negative",
|
|
58
|
+
"path": "evals/practices/benign-negative.jsonl",
|
|
59
|
+
"description": "Benign legacy wording does not become complete enforcement."
|
|
60
|
+
}
|
|
61
|
+
],
|
|
62
|
+
"mixedChange": [
|
|
63
|
+
{
|
|
64
|
+
"id": "fixture.compatibility.single-owner.mixed-change",
|
|
65
|
+
"path": "packages/core/practice-engine/test/practice-engine.test.ts",
|
|
66
|
+
"description": "Mixed implementation and test changes keep production evidence scoped."
|
|
67
|
+
}
|
|
68
|
+
],
|
|
69
|
+
"baseline": [
|
|
70
|
+
{
|
|
71
|
+
"id": "fixture.compatibility.single-owner.baseline",
|
|
72
|
+
"path": "packages/core/practice-engine/test/practice-engine.test.ts",
|
|
73
|
+
"description": "Previous checkpoint baseline keeps existing compatibility paths from being treated as new."
|
|
74
|
+
}
|
|
75
|
+
]
|
|
76
|
+
}
|
|
77
|
+
},
|
|
78
|
+
"provenance": {
|
|
79
|
+
"sourceKind": "archcontext-native",
|
|
80
|
+
"sourceRefs": [
|
|
81
|
+
{
|
|
82
|
+
"sourceId": "archcontext.adr.0010"
|
|
83
|
+
}
|
|
84
|
+
],
|
|
85
|
+
"curator": "archcontext-maintainers",
|
|
86
|
+
"reviewedAt": "2026-06-23"
|
|
87
|
+
},
|
|
88
|
+
"lifecycle": {
|
|
89
|
+
"introducedAt": "2026-06-23",
|
|
90
|
+
"reviewAfter": "2027-06-23",
|
|
91
|
+
"supersedes": []
|
|
92
|
+
}
|
|
93
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.product-version-manifest/v1",
|
|
3
|
+
"product": {
|
|
4
|
+
"name": "archctx",
|
|
5
|
+
"version": "0.1.5",
|
|
6
|
+
"distribution": "one-package"
|
|
7
|
+
},
|
|
8
|
+
"packageManager": "bun@1.3.10",
|
|
9
|
+
"engines": {
|
|
10
|
+
"node": ">=24 <26"
|
|
11
|
+
},
|
|
12
|
+
"surfaces": {
|
|
13
|
+
"cli": {
|
|
14
|
+
"packageName": "@archcontext/surfaces",
|
|
15
|
+
"version": "0.1.5",
|
|
16
|
+
"entrypoint": "archctx"
|
|
17
|
+
},
|
|
18
|
+
"daemon": {
|
|
19
|
+
"packageName": "@archcontext/local-runtime",
|
|
20
|
+
"version": "0.1.5",
|
|
21
|
+
"entrypoint": "archctx daemon start",
|
|
22
|
+
"rpcSchemaVersion": "archcontext.runtime-rpc/v1"
|
|
23
|
+
},
|
|
24
|
+
"mcp": {
|
|
25
|
+
"packageName": "@archcontext/surfaces",
|
|
26
|
+
"version": "0.1.5",
|
|
27
|
+
"entrypoint": "archctx mcp",
|
|
28
|
+
"transport": "stdio"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"schemas": {
|
|
32
|
+
"schemaSetVersion": "2026-06-25.al0-ledger",
|
|
33
|
+
"contractsPackageVersion": "0.1.5",
|
|
34
|
+
"reviewChallenge": "archcontext.review-challenge/v2",
|
|
35
|
+
"attestation": "archcontext.attestation/v2",
|
|
36
|
+
"deviceIdentity": "archcontext.device-identity/v1",
|
|
37
|
+
"runnerIdentity": "archcontext.runner-identity/v1"
|
|
38
|
+
},
|
|
39
|
+
"runtime": {
|
|
40
|
+
"localRpc": {
|
|
41
|
+
"schemaVersion": "archcontext.runtime-rpc/v1",
|
|
42
|
+
"protocol": "http-loopback"
|
|
43
|
+
},
|
|
44
|
+
"sqliteMigrations": "0001_runtime_state..0004_changeset_journal",
|
|
45
|
+
"codeGraph": {
|
|
46
|
+
"packageName": "@colbymchenry/codegraph",
|
|
47
|
+
"requiredVersion": "1.0.1",
|
|
48
|
+
"adapter": "codegraph-cli"
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
@@ -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": "mixed",
|
|
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.lifecycle_accept",
|
|
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": "Architecture owner accepted the recommendation after local readback.",
|
|
15
|
+
"explicit": true,
|
|
16
|
+
"implicitAcceptance": false,
|
|
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.al0_contract",
|
|
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
|
+
"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
|
+
"completedAt": "2026-06-25T00:00:01.000Z",
|
|
27
|
+
"recommendationIds": ["rec.al0.boundary-import"],
|
|
28
|
+
"metrics": {
|
|
29
|
+
"matchCount": 1,
|
|
30
|
+
"evidenceBindingCount": 1,
|
|
31
|
+
"unboundEvidenceCount": 0
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.recommendation/v2",
|
|
3
|
+
"recommendationId": "rec.al0.boundary-import",
|
|
4
|
+
"runId": "rec_run.al0_contract",
|
|
5
|
+
"fingerprint": "sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",
|
|
6
|
+
"subject": "relation.module-api-imports-runtime",
|
|
7
|
+
"practiceId": "modularity.respect-dependency-direction",
|
|
8
|
+
"status": "open",
|
|
9
|
+
"confidence": "medium",
|
|
10
|
+
"enforcement": "advisory",
|
|
11
|
+
"risk": "medium",
|
|
12
|
+
"uncertainty": "low",
|
|
13
|
+
"evidenceBindingIds": ["binding.evidence.al0.boundary-import"],
|
|
14
|
+
"explanation": ["Recommendation is supported by a typed predicate subject and bound evidence."],
|
|
15
|
+
"createdAt": "2026-06-25T00:00:00.000Z",
|
|
16
|
+
"updatedAt": "2026-06-25T00:00:00.000Z"
|
|
17
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.retrieval-config/v1",
|
|
3
|
+
"defaultMode": "lexical",
|
|
4
|
+
"lexical": {
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"tokenizer": "english-normalized+jieba-search"
|
|
7
|
+
},
|
|
8
|
+
"embedding": {
|
|
9
|
+
"enabled": false,
|
|
10
|
+
"provider": "local-deterministic",
|
|
11
|
+
"dimensions": 64,
|
|
12
|
+
"egress": "forbidden"
|
|
13
|
+
},
|
|
14
|
+
"decisionGate": {
|
|
15
|
+
"minContextRecallLift": 0.08,
|
|
16
|
+
"minConstraintRecallLift": 0.05,
|
|
17
|
+
"maxIrrelevantRatio": 0.25,
|
|
18
|
+
"maxToolCallIncrease": 0
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.retrieval-decision/v1",
|
|
3
|
+
"decidedAt": "2026-06-20T00:00:00.000Z",
|
|
4
|
+
"baseline": {
|
|
5
|
+
"mode": "lexical",
|
|
6
|
+
"contextRecall": 0.8,
|
|
7
|
+
"constraintRecall": 0.75,
|
|
8
|
+
"irrelevantRatio": 0.1,
|
|
9
|
+
"toolCalls": 1
|
|
10
|
+
},
|
|
11
|
+
"candidate": {
|
|
12
|
+
"mode": "embedding",
|
|
13
|
+
"contextRecall": 0.82,
|
|
14
|
+
"constraintRecall": 0.76,
|
|
15
|
+
"irrelevantRatio": 0.12,
|
|
16
|
+
"toolCalls": 1
|
|
17
|
+
},
|
|
18
|
+
"thresholds": {
|
|
19
|
+
"minContextRecallLift": 0.08,
|
|
20
|
+
"minConstraintRecallLift": 0.05,
|
|
21
|
+
"maxIrrelevantRatio": 0.25,
|
|
22
|
+
"maxToolCallIncrease": 0
|
|
23
|
+
},
|
|
24
|
+
"decision": "keep-lexical",
|
|
25
|
+
"evidenceDigest": "sha256:3333333333333333333333333333333333333333333333333333333333333333"
|
|
26
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.retrieval-eval/v1",
|
|
3
|
+
"id": "eval.local-context-recall.v1",
|
|
4
|
+
"seed": 42,
|
|
5
|
+
"queries": [
|
|
6
|
+
{
|
|
7
|
+
"id": "q.loopback-explorer",
|
|
8
|
+
"text": "show the local explorer loopback boundary",
|
|
9
|
+
"expectedContextIds": ["adr.0032", "guardrail.local-loopback"],
|
|
10
|
+
"expectedConstraintIds": ["constraint.zero-egress"],
|
|
11
|
+
"prohibitedContextIds": ["saas.source-upload"]
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.review-challenge/v2",
|
|
3
|
+
"challengeId": "chal_20260620_0001",
|
|
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
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.review/v1",
|
|
3
|
+
"reviewId": "review_123",
|
|
4
|
+
"taskSessionId": "task_123",
|
|
5
|
+
"snapshot": {
|
|
6
|
+
"headSha": "abc123",
|
|
7
|
+
"worktreeDigest": "sha256:0000000000000000000000000000000000000000000000000000000000000000",
|
|
8
|
+
"modelDigest": "sha256:1111111111111111111111111111111111111111111111111111111111111111",
|
|
9
|
+
"codeFactsDigest": "sha256:2222222222222222222222222222222222222222222222222222222222222222"
|
|
10
|
+
},
|
|
11
|
+
"posture": "intervention",
|
|
12
|
+
"result": "fail_action_required",
|
|
13
|
+
"summary": {
|
|
14
|
+
"errors": 1,
|
|
15
|
+
"warnings": 2,
|
|
16
|
+
"notices": 1
|
|
17
|
+
},
|
|
18
|
+
"findings": [
|
|
19
|
+
{
|
|
20
|
+
"id": "finding_1",
|
|
21
|
+
"type": "unjustified-compatibility-path",
|
|
22
|
+
"severity": "error",
|
|
23
|
+
"evidenceRefs": ["evidence_12"],
|
|
24
|
+
"message": "LegacyStatusMapper has no compatibility contract.",
|
|
25
|
+
"recommendedAction": "Migrate internal callers and delete the mapper."
|
|
26
|
+
}
|
|
27
|
+
],
|
|
28
|
+
"cleanup": {
|
|
29
|
+
"required": 3,
|
|
30
|
+
"completed": 2
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.runner-identity/v1",
|
|
3
|
+
"runnerId": "runner_0001",
|
|
4
|
+
"installationId": 10001,
|
|
5
|
+
"repositoryIds": [20002],
|
|
6
|
+
"workflowRef": "owner/repo/.github/workflows/archcontext-review.yml@refs/heads/main",
|
|
7
|
+
"publicKeyId": "key_runner_0001",
|
|
8
|
+
"publicKeyFingerprint": "sha256:7777777777777777777777777777777777777777777777777777777777777777",
|
|
9
|
+
"status": "active",
|
|
10
|
+
"createdAt": "2026-06-20T09:00:00Z",
|
|
11
|
+
"rotatedAt": null,
|
|
12
|
+
"revokedAt": null
|
|
13
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.structurizr-mapping/v1",
|
|
3
|
+
"id": "mapping.structurizr.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
|
+
"structurizr": {
|
|
10
|
+
"workspace": "ArchContext",
|
|
11
|
+
"model": ["softwareSystem", "container", "component"],
|
|
12
|
+
"views": ["systemLandscape", "container", "component"]
|
|
13
|
+
},
|
|
14
|
+
"views": ["systemLandscape", "container"]
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": "archcontext.task-context/v1",
|
|
3
|
+
"task": "Add team invitations and role-based access",
|
|
4
|
+
"posture": "structural",
|
|
5
|
+
"architecturePressure": {
|
|
6
|
+
"level": "medium",
|
|
7
|
+
"score": 47,
|
|
8
|
+
"signals": []
|
|
9
|
+
},
|
|
10
|
+
"refactorConfidence": {
|
|
11
|
+
"level": "high",
|
|
12
|
+
"score": 82,
|
|
13
|
+
"coverage": []
|
|
14
|
+
},
|
|
15
|
+
"relevantNodes": ["module.auth", "module.team"],
|
|
16
|
+
"constraints": ["constraint.authorization-boundary"],
|
|
17
|
+
"decisions": ["adr.0009.permission-model"],
|
|
18
|
+
"realConstraints": [],
|
|
19
|
+
"unknowns": [],
|
|
20
|
+
"recommendedTargetState": {},
|
|
21
|
+
"requiredCheckpoints": ["after-data-model-change", "before-task-complete"],
|
|
22
|
+
"resources": []
|
|
23
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "archctx-contracts",
|
|
3
|
+
"version": "0.1.5",
|
|
4
|
+
"private": false,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"files": [
|
|
8
|
+
"src",
|
|
9
|
+
"fixtures"
|
|
10
|
+
],
|
|
11
|
+
"publishConfig": {
|
|
12
|
+
"access": "public"
|
|
13
|
+
},
|
|
14
|
+
"exports": {
|
|
15
|
+
".": "./src/index.ts"
|
|
16
|
+
}
|
|
17
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { digestJson } from "./schema";
|
|
2
|
+
|
|
3
|
+
export const CONTROL_PLANE_ROUTES = [
|
|
4
|
+
"GET /oauth/github/start",
|
|
5
|
+
"POST /oauth/github/callback",
|
|
6
|
+
"POST /device/authorize",
|
|
7
|
+
"POST /device/complete",
|
|
8
|
+
"GET /entitlements/:repository",
|
|
9
|
+
"POST /github/webhook",
|
|
10
|
+
"POST /stripe/webhook",
|
|
11
|
+
"GET /v1/challenges",
|
|
12
|
+
"POST /v1/challenges",
|
|
13
|
+
"GET /v1/challenges/:challenge",
|
|
14
|
+
"POST /v1/challenges/:challenge/lease",
|
|
15
|
+
"POST /v1/challenges/:challenge/attestations",
|
|
16
|
+
"POST /v1/challenges/:challenge/cancel",
|
|
17
|
+
"POST /v1/device-keys",
|
|
18
|
+
"POST /v1/device-keys/:device/revoke",
|
|
19
|
+
"POST /v1/runner-keys",
|
|
20
|
+
"POST /v1/runner-keys/:runner/rotate",
|
|
21
|
+
"POST /v1/runner-keys/:runner/revoke",
|
|
22
|
+
"POST /attestations/verify",
|
|
23
|
+
"POST /org-runners",
|
|
24
|
+
"POST /org-runners/:runner/revoke",
|
|
25
|
+
"GET /mcp/metadata",
|
|
26
|
+
"GET /chatgpt/directory",
|
|
27
|
+
"POST /chatgpt/releases/:version/rollback",
|
|
28
|
+
"GET /notifications/providers",
|
|
29
|
+
"PUT /notifications/providers/:provider",
|
|
30
|
+
"POST /notifications/events"
|
|
31
|
+
] as const;
|
|
32
|
+
|
|
33
|
+
export function controlPlaneRouteDigest(routes: readonly string[] = CONTROL_PLANE_ROUTES): string {
|
|
34
|
+
return digestJson([...routes]);
|
|
35
|
+
}
|