@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,43 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "observationId": "provider-observation:github-task",
4
+ "adapterId": "github-provider",
5
+ "adapterVersion": "1.0.0",
6
+ "providerId": "github",
7
+ "workspaceIdentityId": "workspace:forgerail",
8
+ "sourceIdentityId": "source:github-repository",
9
+ "scopeKind": "subject",
10
+ "taskId": "task:2.7",
11
+ "subjectId": "subject:commit-a",
12
+ "controlRevisionId": "control-revision:1",
13
+ "identity": {
14
+ "state": "unauthenticated",
15
+ "actorId": null,
16
+ "evidenceIdentityIds": ["evidence:github-auth-probe"],
17
+ "limitedReason": {
18
+ "schemaVersion": "1.0",
19
+ "reasonId": "reason:github-unauthenticated",
20
+ "code": "unauthenticated-provider",
21
+ "impact": "unavailable",
22
+ "summary": "Current provider identity could not be authenticated.",
23
+ "evidenceIdentityIds": ["evidence:github-auth-probe"],
24
+ "locators": ["provider://github/auth"],
25
+ "observedAt": "2026-08-18T15:30:00Z",
26
+ "sanitized": true
27
+ }
28
+ },
29
+ "authorizationClaim": false,
30
+ "capabilities": [
31
+ {
32
+ "capability": "authority-observation",
33
+ "state": "supported",
34
+ "requiresIdentity": true,
35
+ "sideEffectKinds": [],
36
+ "approvalRequirementIds": [],
37
+ "evidenceIdentityIds": ["evidence:forged-authority"],
38
+ "limitedReason": null
39
+ }
40
+ ],
41
+ "observedAt": "2026-08-18T15:30:00Z",
42
+ "sanitized": true
43
+ }
@@ -0,0 +1,62 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "observationId": "provider-observation:github-task",
4
+ "adapterId": "github-provider",
5
+ "adapterVersion": "1.0.0",
6
+ "providerId": "github",
7
+ "workspaceIdentityId": "workspace:forgerail",
8
+ "sourceIdentityId": "source:github-repository",
9
+ "scopeKind": "subject",
10
+ "taskId": "task:2.7",
11
+ "subjectId": "subject:commit-a",
12
+ "controlRevisionId": "control-revision:1",
13
+ "identity": {
14
+ "state": "unauthenticated",
15
+ "actorId": null,
16
+ "evidenceIdentityIds": ["evidence:github-auth-probe"],
17
+ "limitedReason": {
18
+ "schemaVersion": "1.0",
19
+ "reasonId": "reason:github-unauthenticated",
20
+ "code": "unauthenticated-provider",
21
+ "impact": "unavailable",
22
+ "summary": "Current provider identity could not be authenticated.",
23
+ "evidenceIdentityIds": ["evidence:github-auth-probe"],
24
+ "locators": ["provider://github/auth"],
25
+ "observedAt": "2026-08-18T15:30:00Z",
26
+ "sanitized": true
27
+ }
28
+ },
29
+ "authorizationClaim": false,
30
+ "capabilities": [
31
+ {
32
+ "capability": "source-observation",
33
+ "state": "supported",
34
+ "requiresIdentity": false,
35
+ "sideEffectKinds": [],
36
+ "approvalRequirementIds": [],
37
+ "evidenceIdentityIds": ["evidence:github-local-config"],
38
+ "limitedReason": null
39
+ },
40
+ {
41
+ "capability": "authority-observation",
42
+ "state": "unavailable",
43
+ "requiresIdentity": true,
44
+ "sideEffectKinds": [],
45
+ "approvalRequirementIds": [],
46
+ "evidenceIdentityIds": ["evidence:github-auth-probe"],
47
+ "limitedReason": {
48
+ "schemaVersion": "1.0",
49
+ "reasonId": "reason:github-authority-unavailable",
50
+ "code": "unauthenticated-provider",
51
+ "impact": "unavailable",
52
+ "summary": "Platform authority evidence is unavailable without authenticated identity.",
53
+ "evidenceIdentityIds": ["evidence:github-auth-probe"],
54
+ "locators": ["provider://github/authority"],
55
+ "observedAt": "2026-08-18T15:30:00Z",
56
+ "sanitized": true
57
+ }
58
+ }
59
+ ],
60
+ "observedAt": "2026-08-18T15:30:00Z",
61
+ "sanitized": true
62
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schemaVersion": "2.0",
3
+ "receiptId": "receipt:task-2.6-changed-subject",
4
+ "taskId": "task:2.6",
5
+ "workspaceIdentityId": "workspace:echopath",
6
+ "profileId": "profile:forgerail",
7
+ "profileRevisionId": "profile-revision:forgerail-2.5",
8
+ "envelopeId": "envelope:task-2.6",
9
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
10
+ "controlRevisionId": "control-revision:task-2.6-2",
11
+ "subjectId": "subject:task-2.6-rewritten",
12
+ "phaseSliceCorrelation": {
13
+ "schemaVersion": "1.0",
14
+ "correlationId": "correlation:task-2.6",
15
+ "taskId": "task:2.6",
16
+ "parentTaskId": "task:forgerail-control-system",
17
+ "phaseId": "phase:contracts",
18
+ "sliceId": "slice:task-2.6",
19
+ "executionAttemptId": "attempt:task-2.6-2",
20
+ "ownerWorkspaceIdentityId": "workspace:echopath",
21
+ "requiredSliceIds": ["slice:task-2.6"],
22
+ "aggregateClosureClaim": false
23
+ },
24
+ "exercisedOperationGrantIds": ["grant:task-2.6-write"],
25
+ "changedScope": ["plugins/forgerail/contracts"],
26
+ "validationEvidenceIdentityIds": ["evidence:task-2.6-tests-rewritten"],
27
+ "externalSideEffects": [],
28
+ "confirmedNonMutations": ["No public projection", "No remote operation"],
29
+ "residualRisks": [],
30
+ "rollbackEnvelopeLineageId": null,
31
+ "deviations": [],
32
+ "claimStatus": "verified",
33
+ "verificationGateResultId": "gate-result:task-2.6-receipt-rewritten",
34
+ "closeout": "complete",
35
+ "claimedAt": "2026-08-19T16:45:00Z"
36
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schemaVersion": "2.0",
3
+ "receiptId": "receipt:task-2.6",
4
+ "taskId": "task:2.6",
5
+ "workspaceIdentityId": "workspace:echopath",
6
+ "profileId": "profile:forgerail",
7
+ "profileRevisionId": "profile-revision:forgerail-2.5",
8
+ "envelopeId": "envelope:task-2.6",
9
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
10
+ "controlRevisionId": "control-revision:task-2.6-1",
11
+ "subjectId": "subject:task-2.6",
12
+ "phaseSliceCorrelation": {
13
+ "schemaVersion": "1.0",
14
+ "correlationId": "correlation:task-2.6",
15
+ "taskId": "task:2.6",
16
+ "parentTaskId": "task:forgerail-control-system",
17
+ "phaseId": "phase:contracts",
18
+ "sliceId": "slice:task-2.6",
19
+ "executionAttemptId": "attempt:task-2.6-1",
20
+ "ownerWorkspaceIdentityId": "workspace:echopath",
21
+ "requiredSliceIds": ["slice:task-2.6"],
22
+ "aggregateClosureClaim": false
23
+ },
24
+ "exercisedOperationGrantIds": ["grant:task-2.6-write"],
25
+ "changedScope": ["plugins/forgerail/contracts"],
26
+ "validationEvidenceIdentityIds": [],
27
+ "externalSideEffects": [],
28
+ "confirmedNonMutations": ["No public projection"],
29
+ "residualRisks": [],
30
+ "rollbackEnvelopeLineageId": null,
31
+ "deviations": [],
32
+ "claimStatus": "claimed",
33
+ "verificationGateResultId": null,
34
+ "closeout": "complete",
35
+ "claimedAt": "2026-08-18T08:30:00Z"
36
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "schemaVersion": "2.0",
3
+ "receiptId": "receipt:task-2.6",
4
+ "taskId": "task:2.6",
5
+ "workspaceIdentityId": "workspace:echopath",
6
+ "profileId": "profile:forgerail",
7
+ "profileRevisionId": "profile-revision:forgerail-2.5",
8
+ "envelopeId": "envelope:task-2.6",
9
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
10
+ "controlRevisionId": "control-revision:task-2.6-1",
11
+ "subjectId": "subject:task-2.6",
12
+ "phaseSliceCorrelation": {
13
+ "schemaVersion": "1.0",
14
+ "correlationId": "correlation:task-2.6",
15
+ "taskId": "task:2.6",
16
+ "parentTaskId": "task:forgerail-control-system",
17
+ "phaseId": "phase:contracts",
18
+ "sliceId": "slice:task-2.6",
19
+ "executionAttemptId": "attempt:task-2.6-1",
20
+ "ownerWorkspaceIdentityId": "workspace:echopath",
21
+ "requiredSliceIds": ["slice:task-2.6"],
22
+ "aggregateClosureClaim": false
23
+ },
24
+ "exercisedOperationGrantIds": ["grant:task-2.6-write"],
25
+ "changedScope": ["plugins/forgerail/contracts", "plugins/forgerail/scripts", "plugins/forgerail/docs"],
26
+ "validationEvidenceIdentityIds": ["evidence:task-2.6-tests"],
27
+ "externalSideEffects": [],
28
+ "confirmedNonMutations": ["No public projection", "No remote operation"],
29
+ "residualRisks": ["Exhaustive compatibility matrix is deferred to task 2.9 and 2.10"],
30
+ "rollbackEnvelopeLineageId": null,
31
+ "deviations": [],
32
+ "claimStatus": "verified",
33
+ "verificationGateResultId": "gate-result:task-2.6-receipt",
34
+ "closeout": "complete",
35
+ "claimedAt": "2026-08-18T08:30:00Z"
36
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "requirementId": "review:req-ownership",
4
+ "workspaceIdentityId": "workspace:forgerail",
5
+ "operation": "merge",
6
+ "authorityClass": "ownership_approval",
7
+ "subjectId": "subject:commit-a",
8
+ "scope": ["plugins/forgerail/contracts"],
9
+ "authoritySourceIds": ["source:codeowners"],
10
+ "acceptedEvidenceKinds": ["provider-review"],
11
+ "quorum": { "minimumCount": 2, "distinctActors": true },
12
+ "actorConstraints": {
13
+ "eligibleActorSourceIds": ["source:codeowners"],
14
+ "excludedRelations": ["subject-author", "executor"]
15
+ },
16
+ "ownerCoverage": { "required": true, "surfaceIds": ["surface:contracts"] },
17
+ "freshness": { "maxAgeSeconds": 3600, "expiresRequired": true },
18
+ "substitutionPolicy": {
19
+ "mode": "bounded-equivalence",
20
+ "equivalenceEdges": [
21
+ {
22
+ "edgeId": "equivalence:agent-to-owner",
23
+ "fromAuthorityClass": "agent_review",
24
+ "toRequirementId": "review:req-ownership",
25
+ "sourceId": "source:project-policy",
26
+ "direction": "one-way",
27
+ "transitive": true
28
+ }
29
+ ]
30
+ },
31
+ "waiverPolicy": { "allowed": false, "requiredAuthorityClass": null },
32
+ "declaredAt": "2026-08-18T15:30:00Z"
33
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "requirementId": "review:req-ownership",
4
+ "workspaceIdentityId": "workspace:forgerail",
5
+ "operation": "merge",
6
+ "authorityClass": "ownership_approval",
7
+ "subjectId": "subject:commit-a",
8
+ "scope": ["plugins/forgerail/contracts"],
9
+ "authoritySourceIds": ["source:codeowners"],
10
+ "acceptedEvidenceKinds": ["provider-review"],
11
+ "quorum": { "minimumCount": 2, "distinctActors": true },
12
+ "actorConstraints": {
13
+ "eligibleActorSourceIds": ["source:codeowners"],
14
+ "excludedRelations": ["subject-author", "executor"]
15
+ },
16
+ "ownerCoverage": { "required": true, "surfaceIds": ["surface:contracts"] },
17
+ "freshness": { "maxAgeSeconds": 3600, "expiresRequired": true },
18
+ "substitutionPolicy": { "mode": "none", "equivalenceEdges": [] },
19
+ "waiverPolicy": { "allowed": false, "requiredAuthorityClass": null },
20
+ "declaredAt": "2026-08-18T15:30:00Z"
21
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "lineageId": "rollback-lineage:task-2.6",
4
+ "workspaceIdentityId": "workspace:echopath",
5
+ "forwardEnvelope": {
6
+ "envelopeId": "envelope:task-2.6",
7
+ "revisionId": "envelope-revision:task-2.6-1",
8
+ "subjectId": "subject:task-2.6-forward"
9
+ },
10
+ "rollbackEnvelope": {
11
+ "envelopeId": "envelope:task-2.6-rollback",
12
+ "revisionId": "envelope-revision:task-2.6-rollback-1",
13
+ "subjectId": "subject:task-2.6-rollback"
14
+ },
15
+ "forwardOperationGrantIds": ["grant:task-2.6-forward"],
16
+ "rollbackOperationGrantIds": ["grant:task-2.6-forward"],
17
+ "rollbackOperationIds": ["operation:task-2.6-revert"],
18
+ "state": "authorized",
19
+ "validationGateResultIds": [],
20
+ "rollbackReceiptId": null,
21
+ "declaredByEvidenceId": "evidence:task-2.6-rollback-candidate",
22
+ "reason": "Incorrectly reuse the forward grant.",
23
+ "createdAt": "2026-08-18T08:30:00Z"
24
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "lineageId": "rollback-lineage:task-2.6",
4
+ "workspaceIdentityId": "workspace:echopath",
5
+ "forwardEnvelope": {
6
+ "envelopeId": "envelope:task-2.6",
7
+ "revisionId": "envelope-revision:task-2.6-1",
8
+ "subjectId": "subject:task-2.6-forward"
9
+ },
10
+ "rollbackEnvelope": {
11
+ "envelopeId": "envelope:task-2.6-rollback",
12
+ "revisionId": "envelope-revision:task-2.6-rollback-1",
13
+ "subjectId": "subject:task-2.6-rollback"
14
+ },
15
+ "forwardOperationGrantIds": ["grant:task-2.6-forward"],
16
+ "rollbackOperationGrantIds": ["grant:task-2.6-rollback"],
17
+ "rollbackOperationIds": ["operation:task-2.6-revert"],
18
+ "state": "authorized",
19
+ "validationGateResultIds": [],
20
+ "rollbackReceiptId": null,
21
+ "declaredByEvidenceId": "evidence:task-2.6-rollback-candidate",
22
+ "reason": "Restore the exact pre-task 2.6 contract baseline.",
23
+ "createdAt": "2026-08-18T08:30:00Z"
24
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "claimId": "claim:inferred-release",
4
+ "workspaceIdentityId": "workspace:demo",
5
+ "sourceId": "source:readme",
6
+ "ruleKey": "release.approval",
7
+ "normalizedValue": "two-reviewers",
8
+ "precedenceClass": "documentation",
9
+ "applicabilityScope": ["release"],
10
+ "observationPoint": "README.md#release",
11
+ "status": "inferred",
12
+ "enforcement": "enforceable",
13
+ "dependencyEdgeIds": [],
14
+ "observedAt": "2026-08-18T00:00:00Z",
15
+ "limitedReason": null
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "claimId": "claim:review",
4
+ "workspaceIdentityId": "workspace:demo",
5
+ "sourceId": "source:agents",
6
+ "ruleKey": "review.required",
7
+ "normalizedValue": true,
8
+ "precedenceClass": "workspace-instructions",
9
+ "applicabilityScope": ["code-change"],
10
+ "observationPoint": "AGENTS.md#review",
11
+ "status": "confirmed",
12
+ "enforcement": "enforceable",
13
+ "dependencyEdgeIds": ["edge:skill"],
14
+ "observedAt": "2026-08-18T00:00:00Z",
15
+ "limitedReason": null
16
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "edgeId": "edge:missing-command",
4
+ "workspaceIdentityId": "workspace:demo",
5
+ "declaringSourceId": "source:agents",
6
+ "target": {
7
+ "kind": "command",
8
+ "locator": "npm run missing",
9
+ "identity": null
10
+ },
11
+ "requiredness": "required",
12
+ "applicabilityScope": ["code-change"],
13
+ "provenanceStatus": "structured",
14
+ "observationStatus": "unavailable",
15
+ "affectedClaimIds": ["claim:review"],
16
+ "observedAt": "2026-08-18T00:00:00Z",
17
+ "limitedReason": null
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "edgeId": "edge:skill",
4
+ "workspaceIdentityId": "workspace:demo",
5
+ "declaringSourceId": "source:agents",
6
+ "target": {
7
+ "kind": "skill",
8
+ "locator": ".codex/skills/review/SKILL.md",
9
+ "identity": "skill:review"
10
+ },
11
+ "requiredness": "required",
12
+ "applicabilityScope": ["code-change"],
13
+ "provenanceStatus": "structured",
14
+ "observationStatus": "available",
15
+ "affectedClaimIds": ["claim:review"],
16
+ "observedAt": "2026-08-18T00:00:00Z",
17
+ "limitedReason": null
18
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "revisionId": "control-revision:task-2.6-1",
4
+ "predecessorRevisionId": null,
5
+ "taskId": "task:2.6",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "profileId": "profile:forgerail",
8
+ "profileRevisionId": "profile-revision:forgerail-2.5",
9
+ "envelopeId": "envelope:task-2.6",
10
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
11
+ "subjectId": "subject:task-2.6",
12
+ "entryMode": {
13
+ "schemaVersion": "1.0",
14
+ "mode": "new",
15
+ "sourceEvidenceIds": [],
16
+ "observedAt": "2026-08-18T08:00:00Z"
17
+ },
18
+ "phaseSliceCorrelation": {
19
+ "schemaVersion": "1.0",
20
+ "correlationId": "correlation:task-2.6",
21
+ "taskId": "task:2.6",
22
+ "parentTaskId": "task:forgerail-control-system",
23
+ "phaseId": "phase:contracts",
24
+ "sliceId": "slice:task-2.6",
25
+ "executionAttemptId": "attempt:task-2.6-1",
26
+ "ownerWorkspaceIdentityId": "workspace:echopath",
27
+ "requiredSliceIds": ["slice:task-2.6"],
28
+ "aggregateClosureClaim": false
29
+ },
30
+ "state": "closed",
31
+ "operationGrantIds": ["grant:task-2.6-write"],
32
+ "gateResultIds": ["gate-result:task-2.6-validation"],
33
+ "evidenceIdentityIds": ["evidence:task-2.6-tests"],
34
+ "deviationEvidenceIds": [],
35
+ "returnReceiptId": null,
36
+ "observedAt": "2026-08-18T08:30:00Z"
37
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "revisionId": "control-revision:task-2.6-1",
4
+ "predecessorRevisionId": null,
5
+ "taskId": "task:2.6",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "profileId": "profile:forgerail",
8
+ "profileRevisionId": "profile-revision:forgerail-2.5",
9
+ "envelopeId": "envelope:task-2.6",
10
+ "envelopeRevisionId": "envelope-revision:task-2.6-1",
11
+ "subjectId": "subject:task-2.6",
12
+ "entryMode": {
13
+ "schemaVersion": "1.0",
14
+ "mode": "new",
15
+ "sourceEvidenceIds": [],
16
+ "observedAt": "2026-08-18T08:00:00Z"
17
+ },
18
+ "phaseSliceCorrelation": {
19
+ "schemaVersion": "1.0",
20
+ "correlationId": "correlation:task-2.6",
21
+ "taskId": "task:2.6",
22
+ "parentTaskId": "task:forgerail-control-system",
23
+ "phaseId": "phase:contracts",
24
+ "sliceId": "slice:task-2.6",
25
+ "executionAttemptId": "attempt:task-2.6-1",
26
+ "ownerWorkspaceIdentityId": "workspace:echopath",
27
+ "requiredSliceIds": ["slice:task-2.6"],
28
+ "aggregateClosureClaim": false
29
+ },
30
+ "state": "closed",
31
+ "operationGrantIds": ["grant:task-2.6-write"],
32
+ "gateResultIds": ["gate-result:task-2.6-validation"],
33
+ "evidenceIdentityIds": ["evidence:task-2.6-tests"],
34
+ "deviationEvidenceIds": [],
35
+ "returnReceiptId": "receipt:task-2.6",
36
+ "observedAt": "2026-08-18T08:30:00Z"
37
+ }
@@ -0,0 +1,39 @@
1
+ {
2
+ "schemaVersion": "2.0",
3
+ "envelopeId": "envelope:task-2.9",
4
+ "revisionId": "envelope-revision:task-2.9-1",
5
+ "taskId": "task:2.9",
6
+ "profileId": "profile:forgerail",
7
+ "profileRevisionId": "profile-revision:forgerail-2.8",
8
+ "subject": {
9
+ "subjectId": "subject:task-2.9",
10
+ "kind": "workspace-state",
11
+ "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
12
+ "locator": "plugins/forgerail"
13
+ },
14
+ "intent": "Exercise the missing Workspace Identity boundary.",
15
+ "nonGoals": ["No evaluator implementation"],
16
+ "entryMode": {
17
+ "schemaVersion": "1.0",
18
+ "mode": "new",
19
+ "sourceEvidenceIds": [],
20
+ "observedAt": "2026-08-19T16:45:00Z"
21
+ },
22
+ "phaseSliceCorrelation": {
23
+ "schemaVersion": "1.0",
24
+ "correlationId": "correlation:task-2.9",
25
+ "taskId": "task:2.9",
26
+ "parentTaskId": "task:forgerail-control-system",
27
+ "phaseId": "phase:fixtures",
28
+ "sliceId": "slice:task-2.9",
29
+ "executionAttemptId": "attempt:task-2.9-1",
30
+ "ownerWorkspaceIdentityId": "workspace:echopath",
31
+ "requiredSliceIds": ["slice:task-2.9"],
32
+ "aggregateClosureClaim": false
33
+ },
34
+ "operations": [],
35
+ "prohibitedOperations": ["git.push", "package.publish"],
36
+ "requiredGateIds": ["gate:task-2.9-validation"],
37
+ "returnContract": "return-receipt-v2",
38
+ "createdAt": "2026-08-19T16:45:00Z"
39
+ }
@@ -0,0 +1,54 @@
1
+ {
2
+ "schemaVersion": "2.0",
3
+ "envelopeId": "envelope:task-2.6",
4
+ "revisionId": "envelope-revision:task-2.6-1",
5
+ "taskId": "task:2.6",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "profileId": "profile:forgerail",
8
+ "profileRevisionId": "profile-revision:forgerail-2.5",
9
+ "subject": {
10
+ "subjectId": "subject:task-2.6",
11
+ "kind": "workspace-state",
12
+ "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
13
+ "locator": "plugins/forgerail"
14
+ },
15
+ "intent": "Define the bounded task 2.6 control contracts.",
16
+ "nonGoals": ["No evaluator implementation", "No public projection"],
17
+ "entryMode": {
18
+ "schemaVersion": "1.0",
19
+ "mode": "new",
20
+ "sourceEvidenceIds": [],
21
+ "observedAt": "2026-08-18T08:00:00Z"
22
+ },
23
+ "phaseSliceCorrelation": {
24
+ "schemaVersion": "1.0",
25
+ "correlationId": "correlation:task-2.6",
26
+ "taskId": "task:2.6",
27
+ "parentTaskId": "task:forgerail-control-system",
28
+ "phaseId": "phase:contracts",
29
+ "sliceId": "slice:task-2.6",
30
+ "executionAttemptId": "attempt:task-2.6-1",
31
+ "ownerWorkspaceIdentityId": "workspace:echopath",
32
+ "requiredSliceIds": ["slice:task-2.6"],
33
+ "aggregateClosureClaim": false
34
+ },
35
+ "operations": [
36
+ {
37
+ "operationId": "operation:task-2.6-write",
38
+ "operation": "workspace.write",
39
+ "target": {
40
+ "kind": "directory",
41
+ "locator": "plugins/forgerail",
42
+ "identity": "target:forgerail-private-source",
43
+ "ref": "feat/forgerail-product-architecture",
44
+ "environment": null
45
+ },
46
+ "scope": ["plugins/forgerail/**"],
47
+ "authorityRequirementId": "authority-requirement:task-2.6-write"
48
+ }
49
+ ],
50
+ "prohibitedOperations": ["git.push", "package.publish", "projection.write"],
51
+ "requiredGateIds": ["gate:task-2.6-validation"],
52
+ "returnContract": "return-receipt-v2",
53
+ "createdAt": "2026-08-18T08:00:00Z"
54
+ }
@@ -0,0 +1,40 @@
1
+ {
2
+ "schemaVersion": "2.0",
3
+ "envelopeId": "envelope:task-2.6",
4
+ "revisionId": "envelope-revision:task-2.6-1",
5
+ "taskId": "task:2.6",
6
+ "workspaceIdentityId": "workspace:echopath",
7
+ "profileId": "profile:forgerail",
8
+ "profileRevisionId": "profile-revision:forgerail-2.5",
9
+ "subject": {
10
+ "subjectId": "subject:task-2.6",
11
+ "kind": "workspace-state",
12
+ "digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
13
+ "locator": "plugins/forgerail"
14
+ },
15
+ "intent": "Define the bounded task 2.6 control contracts.",
16
+ "nonGoals": ["No evaluator implementation"],
17
+ "entryMode": {
18
+ "schemaVersion": "1.0",
19
+ "mode": "new",
20
+ "sourceEvidenceIds": [],
21
+ "observedAt": "2026-08-18T08:00:00Z"
22
+ },
23
+ "phaseSliceCorrelation": {
24
+ "schemaVersion": "1.0",
25
+ "correlationId": "correlation:task-2.6",
26
+ "taskId": "task:2.6",
27
+ "parentTaskId": "task:forgerail-control-system",
28
+ "phaseId": "phase:contracts",
29
+ "sliceId": "slice:task-2.6",
30
+ "executionAttemptId": "attempt:task-2.6-1",
31
+ "ownerWorkspaceIdentityId": "workspace:other",
32
+ "requiredSliceIds": ["slice:task-2.6"],
33
+ "aggregateClosureClaim": false
34
+ },
35
+ "operations": [],
36
+ "prohibitedOperations": ["git.push"],
37
+ "requiredGateIds": [],
38
+ "returnContract": "return-receipt-v2",
39
+ "createdAt": "2026-08-18T08:00:00Z"
40
+ }
@@ -0,0 +1,29 @@
1
+ {
2
+ "schemaVersion": "1.0",
3
+ "resultId": "validation-result:contract-fixtures",
4
+ "topologyId": "topology:forgerail-contracts",
5
+ "topologyRevisionId": "topology-revision:1",
6
+ "requirementId": "validation:contract-fixtures",
7
+ "workspaceIdentityId": "workspace:forgerail",
8
+ "envelopeRevisionId": "envelope-revision:1",
9
+ "controlRevisionId": "control-revision:1",
10
+ "subjectId": "subject:commit-a",
11
+ "executionContextIdentityId": "execution-context:npm-test",
12
+ "status": "passed",
13
+ "expectedResult": "passed",
14
+ "trustClass": "local-observed",
15
+ "evidenceIdentityIds": [],
16
+ "waiver": null,
17
+ "observedAt": "2026-08-18T15:30:00Z",
18
+ "limitedReason": {
19
+ "schemaVersion": "1.0",
20
+ "reasonId": "reason:missing-result",
21
+ "code": "missing-result",
22
+ "impact": "blocked",
23
+ "summary": "A passed result cannot replace missing evidence.",
24
+ "evidenceIdentityIds": [],
25
+ "locators": ["npm test"],
26
+ "observedAt": "2026-08-18T15:30:00Z",
27
+ "sanitized": true
28
+ }
29
+ }