@echopath-labs/forgerail 0.1.0-alpha.1 → 0.1.0-alpha.2

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 (142) hide show
  1. package/.codex-plugin/plugin.json +7 -3
  2. package/CHANGELOG.md +8 -0
  3. package/PLUGIN.md +2 -1
  4. package/PRIVACY.md +15 -0
  5. package/README.md +14 -2
  6. package/README.zh-CN.md +13 -2
  7. package/TERMS.md +19 -0
  8. package/adapters/codex.json +1 -1
  9. package/assets/forgerail-icon.svg +6 -0
  10. package/assets/forgerail-logo.svg +7 -0
  11. package/contracts/authority-evidence-v1.schema.json +48 -0
  12. package/contracts/cross-workspace-pack-composition-v1.schema.json +241 -0
  13. package/contracts/effective-profile-v2.schema.json +113 -0
  14. package/contracts/entry-mode-v1.schema.json +20 -0
  15. package/contracts/evidence-identity-v1.schema.json +48 -0
  16. package/contracts/execution-context-identity-v1.schema.json +76 -0
  17. package/contracts/gate-result-v1.schema.json +32 -0
  18. package/contracts/governance-source-v1.schema.json +30 -0
  19. package/contracts/host-adapter-observation-v1.schema.json +61 -0
  20. package/contracts/limited-reason-v1.schema.json +46 -0
  21. package/contracts/operation-authority-requirement-v1.schema.json +43 -0
  22. package/contracts/operation-grant-v1.schema.json +83 -0
  23. package/contracts/phase-slice-correlation-v1.schema.json +20 -0
  24. package/contracts/profile-explanation-v1.schema.json +91 -0
  25. package/contracts/provider-adapter-observation-v1.schema.json +87 -0
  26. package/contracts/return-receipt-v2.schema.json +55 -0
  27. package/contracts/review-authority-requirement-v1.schema.json +117 -0
  28. package/contracts/rollback-envelope-lineage-v1.schema.json +46 -0
  29. package/contracts/rule-claim-v1.schema.json +34 -0
  30. package/contracts/source-dependency-edge-v1.schema.json +37 -0
  31. package/contracts/task-control-revision-v1.schema.json +39 -0
  32. package/contracts/task-envelope-v2.schema.json +67 -0
  33. package/contracts/validation-result-v1.schema.json +57 -0
  34. package/contracts/validation-topology-v1.schema.json +55 -0
  35. package/contracts/workspace-identity-v1.schema.json +28 -0
  36. package/contracts/workspace-relationship-v1.schema.json +31 -0
  37. package/directory/README.md +23 -0
  38. package/directory/evaluations.json +78 -0
  39. package/directory/release-notes-alpha2.md +7 -0
  40. package/directory/submission-candidate.json +80 -0
  41. package/docs/composable-autonomy.zh-CN.md +183 -0
  42. package/docs/control-authority-validation-contracts.md +36 -0
  43. package/docs/control-authority-validation-contracts.zh-CN.md +36 -0
  44. package/docs/control-profile-contracts.md +35 -0
  45. package/docs/control-profile-contracts.zh-CN.md +35 -0
  46. package/docs/control-system-fixture-matrix.md +30 -0
  47. package/docs/control-system-fixture-matrix.zh-CN.md +30 -0
  48. package/docs/control-task-contracts.md +39 -0
  49. package/docs/control-task-contracts.zh-CN.md +39 -0
  50. package/docs/cross-workspace-pack-composition-contract.md +31 -0
  51. package/docs/cross-workspace-pack-composition-contract.zh-CN.md +31 -0
  52. package/docs/installation.md +9 -3
  53. package/docs/installation.zh-CN.md +9 -3
  54. package/docs/release-alpha2.md +21 -0
  55. package/docs/release-alpha2.zh-CN.md +21 -0
  56. package/package.json +9 -3
  57. package/packs/architecture-convergence-audit.json +30 -0
  58. package/scripts/build-universal-directory-candidate.mjs +72 -0
  59. package/scripts/disposable-consumer.mjs +1 -1
  60. package/scripts/fixtures/contracts/authority-evidence.revoked-without-invalidation.invalid.json +22 -0
  61. package/scripts/fixtures/contracts/authority-evidence.revoked.valid.json +32 -0
  62. package/scripts/fixtures/contracts/authority-evidence.valid.json +22 -0
  63. package/scripts/fixtures/contracts/capability-pack.missing-entry.invalid.json +14 -0
  64. package/scripts/fixtures/contracts/capability-pack.valid.json +15 -0
  65. package/scripts/fixtures/contracts/cross-workspace-pack-composition.authority-collapse.invalid.json +156 -0
  66. package/scripts/fixtures/contracts/cross-workspace-pack-composition.false-closure.invalid.json +138 -0
  67. package/scripts/fixtures/contracts/cross-workspace-pack-composition.valid.json +156 -0
  68. package/scripts/fixtures/contracts/effective-profile-v2.optional-unavailable-degraded.valid.json +36 -0
  69. package/scripts/fixtures/contracts/effective-profile-v2.required-unavailable-degraded.invalid.json +36 -0
  70. package/scripts/fixtures/contracts/effective-profile-v2.unresolved-claim-false-complete.invalid.json +34 -0
  71. package/scripts/fixtures/contracts/effective-profile-v2.valid.json +53 -0
  72. package/scripts/fixtures/contracts/effective-profile.duplicate-rule.invalid.json +23 -0
  73. package/scripts/fixtures/contracts/entry-mode.missing-evidence.invalid.json +6 -0
  74. package/scripts/fixtures/contracts/entry-mode.valid.json +6 -0
  75. package/scripts/fixtures/contracts/evidence-identity.unavailable-without-reason.invalid.json +21 -0
  76. package/scripts/fixtures/contracts/evidence-identity.valid.json +21 -0
  77. package/scripts/fixtures/contracts/execution-context-identity.unavailable-without-reason.invalid.json +31 -0
  78. package/scripts/fixtures/contracts/execution-context-identity.valid.json +31 -0
  79. package/scripts/fixtures/contracts/gate-result.satisfied-without-evidence.invalid.json +14 -0
  80. package/scripts/fixtures/contracts/gate-result.valid.json +14 -0
  81. package/scripts/fixtures/contracts/governance-source.unavailable-without-reason.invalid.json +16 -0
  82. package/scripts/fixtures/contracts/governance-source.valid.json +16 -0
  83. package/scripts/fixtures/contracts/host-adapter-observation.claims-authorization.invalid.json +23 -0
  84. package/scripts/fixtures/contracts/host-adapter-observation.valid.json +39 -0
  85. package/scripts/fixtures/contracts/host-adapter.codex.valid.json +1 -1
  86. package/scripts/fixtures/contracts/host-adapter.false-supported.invalid.json +14 -0
  87. package/scripts/fixtures/contracts/host-binding-receipt.valid.json +1 -1
  88. package/scripts/fixtures/contracts/launch-contract.execution-owner.invalid.json +19 -0
  89. package/scripts/fixtures/contracts/limited-reason.unbounded.invalid.json +11 -0
  90. package/scripts/fixtures/contracts/limited-reason.valid.json +11 -0
  91. package/scripts/fixtures/contracts/operation-authority-requirement.no-issuer.invalid.json +22 -0
  92. package/scripts/fixtures/contracts/operation-authority-requirement.valid.json +22 -0
  93. package/scripts/fixtures/contracts/operation-grant.missing-issuer-evidence.invalid.json +34 -0
  94. package/scripts/fixtures/contracts/operation-grant.valid.json +34 -0
  95. package/scripts/fixtures/contracts/phase-slice-correlation.aggregate-closure.invalid.json +12 -0
  96. package/scripts/fixtures/contracts/phase-slice-correlation.valid.json +12 -0
  97. package/scripts/fixtures/contracts/profile-change-candidate.unconfirmed.invalid.json +13 -0
  98. package/scripts/fixtures/contracts/profile-explanation.false-complete.invalid.json +36 -0
  99. package/scripts/fixtures/contracts/profile-explanation.valid.json +29 -0
  100. package/scripts/fixtures/contracts/provider-adapter-observation.unauthenticated-supported.invalid.json +43 -0
  101. package/scripts/fixtures/contracts/provider-adapter-observation.valid.json +62 -0
  102. package/scripts/fixtures/contracts/return-receipt-v2.changed-subject.valid.json +36 -0
  103. package/scripts/fixtures/contracts/return-receipt-v2.unverified-closeout.invalid.json +36 -0
  104. package/scripts/fixtures/contracts/return-receipt-v2.valid.json +36 -0
  105. package/scripts/fixtures/contracts/review-authority-requirement.transitive.invalid.json +33 -0
  106. package/scripts/fixtures/contracts/review-authority-requirement.valid.json +21 -0
  107. package/scripts/fixtures/contracts/rollback-envelope-lineage.reused-grant.invalid.json +24 -0
  108. package/scripts/fixtures/contracts/rollback-envelope-lineage.valid.json +24 -0
  109. package/scripts/fixtures/contracts/rule-claim.inferred-enforceable.invalid.json +16 -0
  110. package/scripts/fixtures/contracts/rule-claim.valid.json +16 -0
  111. package/scripts/fixtures/contracts/source-dependency-edge.unavailable-without-reason.invalid.json +18 -0
  112. package/scripts/fixtures/contracts/source-dependency-edge.valid.json +18 -0
  113. package/scripts/fixtures/contracts/task-control-revision.closed-without-receipt.invalid.json +37 -0
  114. package/scripts/fixtures/contracts/task-control-revision.valid.json +37 -0
  115. package/scripts/fixtures/contracts/task-envelope-v2.missing-workspace-identity.invalid.json +39 -0
  116. package/scripts/fixtures/contracts/task-envelope-v2.valid.json +54 -0
  117. package/scripts/fixtures/contracts/task-envelope-v2.workspace-mismatch.invalid.json +40 -0
  118. package/scripts/fixtures/contracts/validation-result.passed-without-evidence.invalid.json +29 -0
  119. package/scripts/fixtures/contracts/validation-result.valid.json +19 -0
  120. package/scripts/fixtures/contracts/validation-topology.dangling-requirement.invalid.json +32 -0
  121. package/scripts/fixtures/contracts/validation-topology.protected-environment.valid.json +32 -0
  122. package/scripts/fixtures/contracts/validation-topology.valid.json +32 -0
  123. package/scripts/fixtures/contracts/workspace-identity.missing-root.invalid.json +6 -0
  124. package/scripts/fixtures/contracts/workspace-identity.valid.json +14 -0
  125. package/scripts/fixtures/contracts/workspace-relationship.inferred-authority.invalid.json +13 -0
  126. package/scripts/fixtures/contracts/workspace-relationship.valid.json +13 -0
  127. package/scripts/fixtures/control-system/architecture-convergence-cases.json +25 -0
  128. package/scripts/fixtures/control-system/task-2.9-invalid-boundary-matrix.json +203 -0
  129. package/scripts/fixtures/control-system/task-4-diagnosis-health-separation.json +19 -0
  130. package/scripts/fixtures/workspaces/no-node-project/AGENTS.md +3 -0
  131. package/scripts/fixtures/workspaces/no-node-project/README.md +3 -0
  132. package/scripts/fixtures/workspaces/no-node-project/docs/adr/0001-durable-records.md +3 -0
  133. package/scripts/forgerail.mjs +467 -14
  134. package/scripts/lib/contracts.mjs +1132 -2
  135. package/scripts/shadow-comparison.mjs +1 -1
  136. package/scripts/validate-release.mjs +15 -15
  137. package/scripts/validate-universal-directory.mjs +151 -0
  138. package/skills/architecture-convergence-audit/SKILL.md +31 -0
  139. package/skills/architecture-convergence-audit/agents/openai.yaml +7 -0
  140. package/skills/architecture-convergence-audit/assets/github-issue-template.md +26 -0
  141. package/skills/architecture-convergence-audit/references/audit-contract.md +62 -0
  142. package/skills/workspace-health-review/references/health-review.md +15 -0
@@ -0,0 +1,53 @@
1
+ {
2
+ "schemaVersion": "2.0",
3
+ "profileId": "profile:demo",
4
+ "revisionId": "profile-revision:demo-1",
5
+ "workspaceIdentityId": "workspace:demo",
6
+ "computed": true,
7
+ "computedAt": "2026-08-18T00:00:00Z",
8
+ "completeness": "complete",
9
+ "sourceIds": ["source:agents"],
10
+ "workspaceRelationshipIds": [],
11
+ "ruleClaims": [
12
+ {
13
+ "schemaVersion": "1.0",
14
+ "claimId": "claim:review",
15
+ "workspaceIdentityId": "workspace:demo",
16
+ "sourceId": "source:agents",
17
+ "ruleKey": "review.required",
18
+ "normalizedValue": true,
19
+ "precedenceClass": "workspace-instructions",
20
+ "applicabilityScope": ["code-change"],
21
+ "observationPoint": "AGENTS.md#review",
22
+ "status": "confirmed",
23
+ "enforcement": "enforceable",
24
+ "dependencyEdgeIds": ["edge:skill"],
25
+ "observedAt": "2026-08-18T00:00:00Z",
26
+ "limitedReason": null
27
+ }
28
+ ],
29
+ "dependencyEdges": [
30
+ {
31
+ "schemaVersion": "1.0",
32
+ "edgeId": "edge:skill",
33
+ "workspaceIdentityId": "workspace:demo",
34
+ "declaringSourceId": "source:agents",
35
+ "target": {
36
+ "kind": "skill",
37
+ "locator": ".codex/skills/review/SKILL.md",
38
+ "identity": "skill:review"
39
+ },
40
+ "requiredness": "required",
41
+ "applicabilityScope": ["code-change"],
42
+ "provenanceStatus": "structured",
43
+ "observationStatus": "available",
44
+ "affectedClaimIds": ["claim:review"],
45
+ "observedAt": "2026-08-18T00:00:00Z",
46
+ "limitedReason": null
47
+ }
48
+ ],
49
+ "applicablePackIds": [],
50
+ "conflicts": [],
51
+ "explanationId": "explanation:demo-1",
52
+ "limitedReasons": []
53
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "workspace": "fixture-workspace",
4
+ "computed": true,
5
+ "rules": [
6
+ {
7
+ "id": "git.primary-branch",
8
+ "value": "main",
9
+ "source": "repository metadata",
10
+ "precedence": 1,
11
+ "status": "observed"
12
+ },
13
+ {
14
+ "id": "git.primary-branch",
15
+ "value": "develop",
16
+ "source": "inferred prose",
17
+ "precedence": 5,
18
+ "status": "inferred"
19
+ }
20
+ ],
21
+ "packs": [],
22
+ "conflicts": []
23
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "mode": "imported",
4
+ "sourceEvidenceIds": [],
5
+ "observedAt": "2026-08-18T08:00:00Z"
6
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "mode": "resumed",
4
+ "sourceEvidenceIds": ["evidence:existing-work"],
5
+ "observedAt": "2026-08-18T08:00:00Z"
6
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "evidenceId": "evidence:remote-policy",
4
+ "workspaceIdentityId": "workspace:echopath",
5
+ "scopeKind": "subject",
6
+ "taskId": "task:2.6",
7
+ "subjectId": "subject:task-2.6",
8
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
9
+ "controlRevisionId": "control-revision:task-2.6-1",
10
+ "source": {
11
+ "kind": "provider",
12
+ "providerId": "github",
13
+ "locator": "repository-policy",
14
+ "providerEvidenceId": null
15
+ },
16
+ "contentDigest": null,
17
+ "observedAt": "2026-08-18T08:30:00Z",
18
+ "availability": "unavailable",
19
+ "sanitized": true,
20
+ "limitedReason": null
21
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "evidenceId": "evidence:task-2.6-tests",
4
+ "workspaceIdentityId": "workspace:echopath",
5
+ "scopeKind": "subject",
6
+ "taskId": "task:2.6",
7
+ "subjectId": "subject:task-2.6",
8
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
9
+ "controlRevisionId": "control-revision:task-2.6-1",
10
+ "source": {
11
+ "kind": "test",
12
+ "providerId": null,
13
+ "locator": "npm test",
14
+ "providerEvidenceId": null
15
+ },
16
+ "contentDigest": "cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
17
+ "observedAt": "2026-08-18T08:30:00Z",
18
+ "availability": "available",
19
+ "sanitized": true,
20
+ "limitedReason": null
21
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "executionContextIdentityId": "execution-context:npm-test",
4
+ "workspaceIdentityId": "workspace:forgerail",
5
+ "subjectId": "subject:commit-a",
6
+ "entrypoint": {
7
+ "entrypointId": "entrypoint:npm-test",
8
+ "kind": "local-command",
9
+ "locator": "plugins/forgerail/package.json#scripts.test",
10
+ "digest": null
11
+ },
12
+ "invocationRoot": "/workspace/plugins/forgerail",
13
+ "executor": { "executorId": "executor:codex", "kind": "host-agent" },
14
+ "runner": { "runnerId": "runner:local-node", "trustClass": "local-observed" },
15
+ "toolIdentities": ["node:24.15.0"],
16
+ "providerIdentities": [],
17
+ "dependencies": [
18
+ {
19
+ "dependencyId": "execution-dependency:ancestor-env",
20
+ "kind": "environment-file",
21
+ "locator": "external://ancestor/.env",
22
+ "boundary": "unavailable-external",
23
+ "declared": false,
24
+ "availability": "unavailable",
25
+ "evidenceIdentityId": null,
26
+ "limitedReason": null
27
+ }
28
+ ],
29
+ "observedAt": "2026-08-18T15:30:00Z",
30
+ "sanitized": true
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "executionContextIdentityId": "execution-context:npm-test",
4
+ "workspaceIdentityId": "workspace:forgerail",
5
+ "subjectId": "subject:commit-a",
6
+ "entrypoint": {
7
+ "entrypointId": "entrypoint:npm-test",
8
+ "kind": "local-command",
9
+ "locator": "plugins/forgerail/package.json#scripts.test",
10
+ "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
11
+ },
12
+ "invocationRoot": "/workspace/plugins/forgerail",
13
+ "executor": { "executorId": "executor:codex", "kind": "host-agent" },
14
+ "runner": { "runnerId": "runner:local-node", "trustClass": "local-observed" },
15
+ "toolIdentities": ["node:24.15.0"],
16
+ "providerIdentities": [],
17
+ "dependencies": [
18
+ {
19
+ "dependencyId": "execution-dependency:node",
20
+ "kind": "toolchain",
21
+ "locator": "toolchain://node/24.15.0",
22
+ "boundary": "allowlisted-external",
23
+ "declared": true,
24
+ "availability": "available",
25
+ "evidenceIdentityId": "evidence:node-version",
26
+ "limitedReason": null
27
+ }
28
+ ],
29
+ "observedAt": "2026-08-18T15:30:00Z",
30
+ "sanitized": true
31
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "gateResultId": "gate-result:task-2.6-validation",
4
+ "gateId": "gate:task-2.6-validation",
5
+ "gateKind": "validation",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
8
+ "controlRevisionId": "control-revision:task-2.6-1",
9
+ "subjectId": "subject:task-2.6",
10
+ "disposition": "satisfied",
11
+ "evidenceIdentityIds": [],
12
+ "evaluatedAt": "2026-08-18T08:30:00Z",
13
+ "limitedReason": null
14
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "gateResultId": "gate-result:task-2.6-validation",
4
+ "gateId": "gate:task-2.6-validation",
5
+ "gateKind": "validation",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
8
+ "controlRevisionId": "control-revision:task-2.6-1",
9
+ "subjectId": "subject:task-2.6",
10
+ "disposition": "satisfied",
11
+ "evidenceIdentityIds": ["evidence:task-2.6-tests"],
12
+ "evaluatedAt": "2026-08-18T08:30:00Z",
13
+ "limitedReason": null
14
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "sourceId": "source:platform-policy",
4
+ "workspaceIdentityId": "workspace:demo",
5
+ "sourceKind": "platform-policy",
6
+ "locator": "provider:repository-policy",
7
+ "ownerId": null,
8
+ "precedenceClass": "platform-enforced",
9
+ "applicabilityScope": ["protected-branch"],
10
+ "workspaceRelationshipIds": [],
11
+ "observationStatus": "unavailable",
12
+ "ruleClaimIds": [],
13
+ "dependencyEdgeIds": [],
14
+ "observedAt": "2026-08-18T00:00:00Z",
15
+ "limitedReason": null
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "sourceId": "source:agents",
4
+ "workspaceIdentityId": "workspace:demo",
5
+ "sourceKind": "instructions",
6
+ "locator": "AGENTS.md",
7
+ "ownerId": "owner:demo",
8
+ "precedenceClass": "workspace-instructions",
9
+ "applicabilityScope": ["workspace"],
10
+ "workspaceRelationshipIds": [],
11
+ "observationStatus": "observed",
12
+ "ruleClaimIds": ["claim:review"],
13
+ "dependencyEdgeIds": ["edge:skill"],
14
+ "observedAt": "2026-08-18T00:00:00Z",
15
+ "limitedReason": null
16
+ }
@@ -0,0 +1,23 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "observationId": "host-observation:codex-task",
4
+ "adapterId": "codex",
5
+ "adapterVersion": "0.1.0-alpha.1",
6
+ "hostIdentityId": "host:codex-desktop",
7
+ "workspaceIdentityId": "workspace:forgerail",
8
+ "scopeKind": "subject",
9
+ "taskId": "task:2.7",
10
+ "subjectId": "subject:commit-a",
11
+ "controlRevisionId": "control-revision:1",
12
+ "authorizationClaim": true,
13
+ "capabilities": [
14
+ {
15
+ "capability": "mutation",
16
+ "state": "supported",
17
+ "evidenceIdentityIds": ["evidence:host-can-write"],
18
+ "limitedReason": null
19
+ }
20
+ ],
21
+ "observedAt": "2026-08-18T15:30:00Z",
22
+ "sanitized": true
23
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "observationId": "host-observation:codex-task",
4
+ "adapterId": "codex",
5
+ "adapterVersion": "0.1.0-alpha.1",
6
+ "hostIdentityId": "host:codex-desktop",
7
+ "workspaceIdentityId": "workspace:forgerail",
8
+ "scopeKind": "subject",
9
+ "taskId": "task:2.7",
10
+ "subjectId": "subject:commit-a",
11
+ "controlRevisionId": "control-revision:1",
12
+ "authorizationClaim": false,
13
+ "capabilities": [
14
+ {
15
+ "capability": "execution-context",
16
+ "state": "supported",
17
+ "evidenceIdentityIds": ["evidence:execution-context"],
18
+ "limitedReason": null
19
+ },
20
+ {
21
+ "capability": "mutation",
22
+ "state": "profile-only",
23
+ "evidenceIdentityIds": [],
24
+ "limitedReason": {
25
+ "schemaVersion": "1.0",
26
+ "reasonId": "reason:host-mutation-needs-grant",
27
+ "code": "unsupported-capability",
28
+ "impact": "unverified",
29
+ "summary": "Host mutation capability does not claim current operation authorization.",
30
+ "evidenceIdentityIds": [],
31
+ "locators": ["host://codex/mutation"],
32
+ "observedAt": "2026-08-18T15:30:00Z",
33
+ "sanitized": true
34
+ }
35
+ }
36
+ ],
37
+ "observedAt": "2026-08-18T15:30:00Z",
38
+ "sanitized": true
39
+ }
@@ -11,7 +11,7 @@
11
11
  "activationBoundary": "new-task-required",
12
12
  "verification": {
13
13
  "mode": "new-task-discovery",
14
- "expectedSkills": ["forgerail", "forgerail-workspace-diagnosis", "workspace-health-review"]
14
+ "expectedSkills": ["architecture-convergence-audit", "forgerail", "forgerail-workspace-diagnosis", "workspace-health-review"]
15
15
  },
16
16
  "limitations": ["A new task is required after adoption."]
17
17
  }
@@ -0,0 +1,14 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "id": "claude-code",
4
+ "displayName": "Claude Code",
5
+ "status": "supported",
6
+ "instructionDiscovery": "task-start",
7
+ "skillDiscovery": "agent-skills",
8
+ "bindingTarget": "CLAUDE.md",
9
+ "bindingModes": ["managed-block", "thin-reference"],
10
+ "managedMarker": "forgerail:binding:claude-code:v1",
11
+ "activationBoundary": "host-specific-verification-required",
12
+ "verification": { "mode": "profile-only", "expectedSkills": [] },
13
+ "limitations": ["End-to-end activation has not been verified for alpha.1."]
14
+ }
@@ -16,7 +16,7 @@
16
16
  ],
17
17
  "changedFiles": ["AGENTS.md"],
18
18
  "validationEvidence": ["Applied content digest matched the approved Adoption Plan."],
19
- "discoveredSkills": ["forgerail", "forgerail-workspace-diagnosis", "workspace-health-review"],
19
+ "discoveredSkills": ["architecture-convergence-audit", "forgerail", "forgerail-workspace-diagnosis", "workspace-health-review"],
20
20
  "activationVerification": {
21
21
  "mode": "new-task",
22
22
  "verified": true
@@ -0,0 +1,19 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "envelope": {
4
+ "schemaVersion": "1.0",
5
+ "taskId": "fixture-task-1",
6
+ "intent": "Update local documentation with ForgeRail guidance.",
7
+ "nonGoals": ["Publish a release"],
8
+ "ownerWorkspace": "fixture-workspace",
9
+ "allowedOperations": ["read files", "edit documentation", "run local validation"],
10
+ "prohibitedOperations": ["push", "merge", "tag", "release"],
11
+ "packs": [],
12
+ "approvalGates": ["remote-integration-approval", "release-approval"],
13
+ "validation": ["git diff --check passes"],
14
+ "returnContract": "forgerail-return-receipt-v1"
15
+ },
16
+ "effectiveRuleSources": ["AGENTS.md", "ForgeRail Core"],
17
+ "hostAgent": "Codex",
18
+ "executionOwner": "forgerail"
19
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "reasonId": "reason:unbounded",
4
+ "code": "arbitrary-secret-bearing-reason",
5
+ "impact": "unavailable",
6
+ "summary": "Unbounded reason codes are not an interoperable control contract.",
7
+ "evidenceIdentityIds": [],
8
+ "locators": [],
9
+ "observedAt": "2026-08-18T15:30:00Z",
10
+ "sanitized": false
11
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "reasonId": "reason:provider-unavailable",
4
+ "code": "unavailable-provider",
5
+ "impact": "unavailable",
6
+ "summary": "The provider could not be observed from the current execution context.",
7
+ "evidenceIdentityIds": ["evidence:provider-probe"],
8
+ "locators": ["provider://github/authority"],
9
+ "observedAt": "2026-08-18T15:30:00Z",
10
+ "sanitized": true
11
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "requirementId": "authority-requirement:task-2.6-write",
4
+ "workspaceIdentityId": "workspace:echopath",
5
+ "operation": "workspace.write",
6
+ "target": {
7
+ "kind": "directory",
8
+ "locator": "plugins/forgerail/contracts",
9
+ "identity": "target:forgerail-contracts",
10
+ "ref": "feat/forgerail-product-architecture",
11
+ "environment": null
12
+ },
13
+ "subjectId": "subject:task-2.6",
14
+ "scope": ["plugins/forgerail/contracts/**"],
15
+ "eligibleIssuerSourceIds": [],
16
+ "acceptedIssuerEvidenceKinds": ["explicit-current-user-instruction"],
17
+ "freshness": {
18
+ "maxAgeSeconds": 86400,
19
+ "expiresRequired": true
20
+ },
21
+ "declaredAt": "2026-08-18T08:00:00Z"
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "requirementId": "authority-requirement:task-2.6-write",
4
+ "workspaceIdentityId": "workspace:echopath",
5
+ "operation": "workspace.write",
6
+ "target": {
7
+ "kind": "directory",
8
+ "locator": "plugins/forgerail/contracts",
9
+ "identity": "target:forgerail-contracts",
10
+ "ref": "feat/forgerail-product-architecture",
11
+ "environment": null
12
+ },
13
+ "subjectId": "subject:task-2.6",
14
+ "scope": ["plugins/forgerail/contracts/**"],
15
+ "eligibleIssuerSourceIds": ["source:user-approval"],
16
+ "acceptedIssuerEvidenceKinds": ["explicit-current-user-instruction"],
17
+ "freshness": {
18
+ "maxAgeSeconds": 86400,
19
+ "expiresRequired": true
20
+ },
21
+ "declaredAt": "2026-08-18T08:00:00Z"
22
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "grantId": "grant:task-2.6-write",
4
+ "grantDigest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
5
+ "authorityRequirementId": "authority-requirement:task-2.6-write",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "envelopeId": "envelope:task-2.6",
8
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
9
+ "executorId": "host:codex",
10
+ "operation": "workspace.write",
11
+ "target": {
12
+ "kind": "directory",
13
+ "locator": "plugins/forgerail",
14
+ "identity": "target:forgerail-private-source",
15
+ "ref": "feat/forgerail-product-architecture",
16
+ "environment": null
17
+ },
18
+ "subjectId": "subject:task-2.6",
19
+ "candidateId": null,
20
+ "scope": ["plugins/forgerail/**"],
21
+ "issuerId": "user:workspace-owner",
22
+ "issuerEvidenceId": "",
23
+ "issuedAt": "2026-08-18T08:00:00Z",
24
+ "notBefore": "2026-08-18T08:00:00Z",
25
+ "expiresAt": "2026-08-19T08:00:00Z",
26
+ "status": "current",
27
+ "invalidatedAt": null,
28
+ "invalidationEvidenceId": null,
29
+ "supersededByGrantId": null,
30
+ "retroactiveEffect": {
31
+ "applies": false,
32
+ "scope": []
33
+ }
34
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "grantId": "grant:task-2.6-write",
4
+ "grantDigest": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
5
+ "authorityRequirementId": "authority-requirement:task-2.6-write",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "envelopeId": "envelope:task-2.6",
8
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
9
+ "executorId": "host:codex",
10
+ "operation": "workspace.write",
11
+ "target": {
12
+ "kind": "directory",
13
+ "locator": "plugins/forgerail",
14
+ "identity": "target:forgerail-private-source",
15
+ "ref": "feat/forgerail-product-architecture",
16
+ "environment": null
17
+ },
18
+ "subjectId": "subject:task-2.6",
19
+ "candidateId": null,
20
+ "scope": ["plugins/forgerail/**"],
21
+ "issuerId": "user:workspace-owner",
22
+ "issuerEvidenceId": "evidence:user-approval-task-2.6",
23
+ "issuedAt": "2026-08-18T08:00:00Z",
24
+ "notBefore": "2026-08-18T08:00:00Z",
25
+ "expiresAt": "2026-08-19T08:00:00Z",
26
+ "status": "current",
27
+ "invalidatedAt": null,
28
+ "invalidationEvidenceId": null,
29
+ "supersededByGrantId": null,
30
+ "retroactiveEffect": {
31
+ "applies": false,
32
+ "scope": []
33
+ }
34
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "correlationId": "correlation:task-2.6",
4
+ "taskId": "task:2.6",
5
+ "parentTaskId": "task:forgerail-control-system",
6
+ "phaseId": "phase:contracts",
7
+ "sliceId": "slice:task-2.6",
8
+ "executionAttemptId": "attempt:task-2.6-1",
9
+ "ownerWorkspaceIdentityId": "workspace:echopath",
10
+ "requiredSliceIds": ["slice:other"],
11
+ "aggregateClosureClaim": true
12
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "correlationId": "correlation:task-2.6",
4
+ "taskId": "task:2.6",
5
+ "parentTaskId": "task:forgerail-control-system",
6
+ "phaseId": "phase:contracts",
7
+ "sliceId": "slice:task-2.6",
8
+ "executionAttemptId": "attempt:task-2.6-1",
9
+ "ownerWorkspaceIdentityId": "workspace:echopath",
10
+ "requiredSliceIds": ["slice:task-2.6"],
11
+ "aggregateClosureClaim": false
12
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "candidateId": "candidate:fixture-validation-rule",
4
+ "workspace": "fixture-workspace",
5
+ "ruleId": "validation.docs-links",
6
+ "proposedValue": "run documentation link validation after navigation changes",
7
+ "evidence": ["three completed tasks required the same missing link check"],
8
+ "targetOwner": "fixture-workspace",
9
+ "targetSource": "AGENTS.md",
10
+ "reason": "The candidate cannot bypass the explicit confirmation boundary.",
11
+ "requiresConfirmation": false,
12
+ "status": "candidate"
13
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "explanationId": "explanation:demo-2",
4
+ "profileId": "profile:demo",
5
+ "profileRevisionId": "profile-revision:demo-2",
6
+ "workspaceIdentityId": "workspace:demo",
7
+ "generatedAt": "2026-08-18T00:00:00Z",
8
+ "completeness": "complete",
9
+ "sourceSummaries": [
10
+ {
11
+ "sourceId": "source:agents",
12
+ "status": "unavailable",
13
+ "claimIds": ["claim:review"],
14
+ "limitedReason": "Source cannot be read."
15
+ }
16
+ ],
17
+ "claimDecisions": [
18
+ {
19
+ "claimId": "claim:review",
20
+ "sourceId": "source:agents",
21
+ "disposition": "unresolved",
22
+ "reasonCode": "required-source-unavailable",
23
+ "dependencyEdgeIds": ["edge:skill"]
24
+ }
25
+ ],
26
+ "conflicts": [],
27
+ "confirmationNeeds": [
28
+ {
29
+ "needId": "confirmation:review",
30
+ "claimIds": ["claim:review"],
31
+ "reasonCode": "required-source-unavailable",
32
+ "prompt": "Confirm the governing review source."
33
+ }
34
+ ],
35
+ "limitedReasons": []
36
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "explanationId": "explanation:demo-1",
4
+ "profileId": "profile:demo",
5
+ "profileRevisionId": "profile-revision:demo-1",
6
+ "workspaceIdentityId": "workspace:demo",
7
+ "generatedAt": "2026-08-18T00:00:00Z",
8
+ "completeness": "complete",
9
+ "sourceSummaries": [
10
+ {
11
+ "sourceId": "source:agents",
12
+ "status": "observed",
13
+ "claimIds": ["claim:review"],
14
+ "limitedReason": null
15
+ }
16
+ ],
17
+ "claimDecisions": [
18
+ {
19
+ "claimId": "claim:review",
20
+ "sourceId": "source:agents",
21
+ "disposition": "active",
22
+ "reasonCode": "highest-applicable-precedence",
23
+ "dependencyEdgeIds": ["edge:skill"]
24
+ }
25
+ ],
26
+ "conflicts": [],
27
+ "confirmationNeeds": [],
28
+ "limitedReasons": []
29
+ }