@cassiomc1/forgeloop 0.1.0 → 0.1.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.
- package/.cursor/rules/project-loop.mdc +7 -1
- package/.github/copilot-instructions.md +6 -0
- package/AGENTS.md +9 -1
- package/AGENT_COMPATIBILITY.md +14 -1
- package/CLAUDE.md +7 -1
- package/ENG/accessibility-eng.md +5 -0
- package/ENG/clean-code-eng.md +1 -0
- package/ENG/design-code-eng.md +5 -0
- package/ENG/games-code-design-web-eng.md +6 -0
- package/ENG/perf-code-eng.md +3 -0
- package/ENG/premium-sites-studio-eng.md +9 -0
- package/ENG/sec-code-eng.md +5 -0
- package/ENG/test-code-eng.md +3 -0
- package/GUIDE_ROUTER.md +16 -0
- package/LOOP_ENGINEERING.md +139 -4
- package/ORCHESTRATOR_INTEGRATION.md +15 -0
- package/QUALITY_SCORECARD.md +4 -0
- package/README.md +43 -1
- package/THREAT_MODEL.md +6 -0
- package/conformance/README.md +42 -0
- package/conformance/backend-auth/EXPECTED_ROUTE.json +7 -0
- package/conformance/backend-auth/REQUEST.md +4 -0
- package/conformance/backend-auth/REQUIRED_EVIDENCE.json +3 -0
- package/conformance/backend-auth/REQUIRED_GATES.json +3 -0
- package/conformance/blind-premium-website/EXPECTED_ROUTE.json +7 -0
- package/conformance/blind-premium-website/REQUEST.md +6 -0
- package/conformance/blind-premium-website/REQUIRED_EVIDENCE.json +14 -0
- package/conformance/blind-premium-website/REQUIRED_GATES.json +3 -0
- package/conformance/complete-website/EXPECTED_ROUTE.json +7 -0
- package/conformance/complete-website/REQUEST.md +6 -0
- package/conformance/complete-website/REQUIRED_EVIDENCE.json +3 -0
- package/conformance/complete-website/REQUIRED_GATES.json +3 -0
- package/conformance/docs-only/EXPECTED_ROUTE.json +7 -0
- package/conformance/docs-only/REQUEST.md +4 -0
- package/conformance/docs-only/REQUIRED_EVIDENCE.json +3 -0
- package/conformance/docs-only/REQUIRED_GATES.json +3 -0
- package/conformance/runs/2026-08-11-codex-first-live.md +98 -0
- package/conformance/runs/2026-08-11-codex-second-live.md +87 -0
- package/conformance/simple-bug/EXPECTED_ROUTE.json +7 -0
- package/conformance/simple-bug/REQUEST.md +4 -0
- package/conformance/simple-bug/REQUIRED_EVIDENCE.json +3 -0
- package/conformance/simple-bug/REQUIRED_GATES.json +3 -0
- package/package.json +5 -4
- package/schemas/activation.schema.json +15 -0
- package/schemas/check.schema.json +23 -0
- package/schemas/config.schema.json +16 -0
- package/schemas/current-contract.schema.json +50 -0
- package/schemas/event.schema.json +20 -0
- package/schemas/evidence-coverage.schema.json +17 -0
- package/schemas/execution-receipt.schema.json +10 -0
- package/schemas/gate.schema.json +32 -0
- package/schemas/policy.schema.json +19 -0
- package/schemas/preflight.schema.json +23 -0
- package/schemas/routing-result.schema.json +1 -0
- package/schemas/source-registry.schema.json +29 -0
- package/schemas/task-bundle.schema.json +14 -0
- package/schemas/work-state.schema.json +7 -1
- package/src/cli.js +230 -9
- package/src/commands/activate.js +11 -0
- package/src/commands/advance.js +12 -0
- package/src/commands/audit.js +12 -0
- package/src/commands/bundle.js +10 -0
- package/src/commands/complete.js +18 -0
- package/src/commands/policy.js +19 -0
- package/src/commands/preflight.js +12 -0
- package/src/commands/prepare-completion.js +18 -0
- package/src/commands/record-check.js +20 -0
- package/src/commands/report.js +10 -0
- package/src/commands/route.js +14 -2
- package/src/commands/validate-receipt.js +7 -6
- package/src/core/activation.js +16 -0
- package/src/core/artifacts.js +132 -0
- package/src/core/audit.js +88 -0
- package/src/core/bundles.js +120 -0
- package/src/core/checks.js +115 -0
- package/src/core/completion-artifacts.js +281 -0
- package/src/core/completion.js +295 -0
- package/src/core/config.js +35 -0
- package/src/core/conformance.js +7 -0
- package/src/core/contract.js +141 -0
- package/src/core/coverage.js +89 -0
- package/src/core/events.js +124 -0
- package/src/core/gate-artifact.js +54 -0
- package/src/core/gates.js +55 -0
- package/src/core/guide-metadata.js +62 -0
- package/src/core/phase.js +88 -0
- package/src/core/policies.js +69 -0
- package/src/core/preflight.js +246 -0
- package/src/core/profile.js +48 -0
- package/src/core/protocol.js +34 -0
- package/src/core/receipt.js +40 -1
- package/src/core/report.js +49 -0
- package/src/core/repository.js +18 -0
- package/src/core/route-artifact.js +33 -0
- package/src/core/router.js +16 -8
- package/src/core/schema-validation.js +11 -0
- package/src/core/sources.js +86 -0
- package/src/core/templates.js +22 -4
- package/src/core/work-state.js +41 -13
- /package/.forgeloop/{.gitignore → forgeloop.gitignore} +0 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# ForgeLoop Live Conformance Run — First Codex Run
|
|
2
|
+
|
|
3
|
+
This record preserves the first real blind run as diagnostic evidence. It is
|
|
4
|
+
not a protocol artifact and does not contain hidden reasoning, credentials, or
|
|
5
|
+
unnecessary conversation history.
|
|
6
|
+
|
|
7
|
+
## Environment
|
|
8
|
+
|
|
9
|
+
- ForgeLoop commit: `331e8d4019b61b1decfc063571cb7967238c8037`
|
|
10
|
+
- ForgeLoop package: `@cassiomc1/forgeloop@0.1.1`
|
|
11
|
+
- Agent: Codex sub-agent (`multi_agent_v1`)
|
|
12
|
+
- Model: not exposed by the harness
|
|
13
|
+
- Harness: Codex multi-agent runner
|
|
14
|
+
- Operating system: macOS
|
|
15
|
+
- Date: 2026-08-11, America/Sao_Paulo
|
|
16
|
+
- Compliance profile: Standard preflight; strict audit was also inspected as a diagnostic escalation
|
|
17
|
+
|
|
18
|
+
## User request
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
Create a premium website for a law firm.
|
|
22
|
+
|
|
23
|
+
It should feel modern, sophisticated and trustworthy, work well on mobile and
|
|
24
|
+
desktop, and include a contact form.
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
The request did not mention ForgeLoop, Loop Engineering, contracts, routing,
|
|
28
|
+
gates, preflight, evidence, audit, completion, or project instruction files.
|
|
29
|
+
|
|
30
|
+
## Result
|
|
31
|
+
|
|
32
|
+
- Adapter compatible: `PASS`
|
|
33
|
+
- Protocol capable: `PARTIAL`
|
|
34
|
+
- Preflight: `READY` (Standard)
|
|
35
|
+
- Completion: `REJECTED`
|
|
36
|
+
- Publication: `not-published`
|
|
37
|
+
- Production readiness: `not-verified`
|
|
38
|
+
- Final classification: `PARTIAL`
|
|
39
|
+
- Failure class: `LIFECYCLE / COMPLETION TIMEOUT`
|
|
40
|
+
|
|
41
|
+
## Artifact evidence
|
|
42
|
+
|
|
43
|
+
| Artifact | Observation |
|
|
44
|
+
| --- | --- |
|
|
45
|
+
| `.forgeloop/current-contract.json` | Present and schema-valid; task `law-firm-premium-site` |
|
|
46
|
+
| `.forgeloop/routing-result.json` | Present; deterministic premium website route with seven guides |
|
|
47
|
+
| `.forgeloop/gates/` | `design`, `quality`, and `threat-boundary` present and satisfied |
|
|
48
|
+
| `.forgeloop/work-state.json` | Present but left at `EXECUTING`; no completed steps |
|
|
49
|
+
| `.forgeloop/events.ndjson` | Present with 13 hash-linked events; ended at `EXECUTION_STARTED` |
|
|
50
|
+
| `.forgeloop/execution-receipt.json` | Missing |
|
|
51
|
+
| Target implementation | `index.html`, `styles.css`, `script.js`, and `tests/site.test.mjs` present |
|
|
52
|
+
|
|
53
|
+
## Verification observed during the run
|
|
54
|
+
|
|
55
|
+
- Tests: `PASS` — `node --test tests/site.test.mjs` (4/4)
|
|
56
|
+
- JavaScript syntax: `PASS` — `node --check script.js`
|
|
57
|
+
- Build: `NOT_VERIFIED` — no build command existed for the dependency-free static target
|
|
58
|
+
- Accessibility: `PARTIAL` — structural checks only; no browser or assistive-technology run
|
|
59
|
+
- Responsiveness: `PARTIAL` — source/structure checks only; no viewport execution recorded
|
|
60
|
+
- Visual: `NOT_VERIFIED`
|
|
61
|
+
- Security: `PARTIAL` — local-only form behavior check; no validator-backed receipt or production endpoint review
|
|
62
|
+
- Performance: `NOT_VERIFIED`
|
|
63
|
+
|
|
64
|
+
## Capability-level result
|
|
65
|
+
|
|
66
|
+
| Capability | Result |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| Blind bootstrap | `PASS` |
|
|
69
|
+
| Instruction discovery | `PASS` |
|
|
70
|
+
| Contract creation | `PASS` |
|
|
71
|
+
| Deterministic routing | `PASS` |
|
|
72
|
+
| Gate enforcement | `PASS` |
|
|
73
|
+
| Preflight chronology | `PASS` |
|
|
74
|
+
| Implementation | `PASS` |
|
|
75
|
+
| Verification execution | `PARTIAL` |
|
|
76
|
+
| Evidence serialization | `FAIL` |
|
|
77
|
+
| Review transition | `FAIL` |
|
|
78
|
+
| Receipt generation | `FAIL` |
|
|
79
|
+
| Lifecycle closure | `FAIL` |
|
|
80
|
+
| False-completion prevention | `PASS` |
|
|
81
|
+
| Full conformance | `PARTIAL` |
|
|
82
|
+
|
|
83
|
+
## Chronology
|
|
84
|
+
|
|
85
|
+
- Implementation began after `PREFLIGHT_READY`: `PASS` — `PREFLIGHT_READY` preceded `EXECUTION_STARTED`.
|
|
86
|
+
- Work state advanced beyond `EXECUTING`: `FAIL`.
|
|
87
|
+
- `VERIFICATION_RECORDED` existed: `FAIL`.
|
|
88
|
+
- Execution receipt existed and validated: `FAIL`.
|
|
89
|
+
- Completion was validator-backed: `FAIL` — `audit` and `complete` rejected the incomplete artifact set.
|
|
90
|
+
- The protocol prevented a false `COMPLETE`: `PASS`.
|
|
91
|
+
|
|
92
|
+
## Final classification
|
|
93
|
+
|
|
94
|
+
`PARTIAL`
|
|
95
|
+
|
|
96
|
+
The protocol correctly prevented false completion. The observed defect was
|
|
97
|
+
lifecycle closure and evidence ergonomics, not routing, graph readiness,
|
|
98
|
+
checkpoint semantics, or the security boundary.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# ForgeLoop Live Conformance Run — Second Codex Run
|
|
2
|
+
|
|
3
|
+
This record preserves the second blind run after the completion-ergonomics
|
|
4
|
+
changes. It contains only observable run metadata and no credentials, hidden
|
|
5
|
+
reasoning, or unnecessary prompt history.
|
|
6
|
+
|
|
7
|
+
## Environment
|
|
8
|
+
|
|
9
|
+
- ForgeLoop base commit: `331e8d4019b61b1decfc063571cb7967238c8037`
|
|
10
|
+
- Evaluated tree: corrected local working tree based on that commit; no new commit was created for this local-only experiment
|
|
11
|
+
- ForgeLoop package: `@cassiomc1/forgeloop@0.1.1`
|
|
12
|
+
- Package tarball SHA-1: `0c196af2d412fad4dc81528f7091b49ebedb818a`
|
|
13
|
+
- Agent: Codex CLI non-interactive run
|
|
14
|
+
- Model: not exposed by the harness
|
|
15
|
+
- Operating system: macOS
|
|
16
|
+
- Date: 2026-08-11, America/Sao_Paulo
|
|
17
|
+
- Compliance profile: Standard intended; no preflight was reached
|
|
18
|
+
|
|
19
|
+
## User request
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
Create a premium website for a law firm. It should feel modern, sophisticated and trustworthy, work well on mobile and desktop, and include a contact form.
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
The request did not mention ForgeLoop, Loop Engineering, contracts, routing,
|
|
26
|
+
gates, preflight, evidence, audit, completion, or project instruction files.
|
|
27
|
+
|
|
28
|
+
## Result
|
|
29
|
+
|
|
30
|
+
- Adapter compatible: `PASS` — the target adapter files were present and the agent reported reading the repository instructions
|
|
31
|
+
- Protocol capable: `PARTIAL` — protocol artifacts were not created in this run
|
|
32
|
+
- Pre-contract autonomy: `FAIL` — the run stopped on a non-blocking fictional-brand clarification instead of recording an agent assumption and continuing locally
|
|
33
|
+
- Preflight: `NOT_REACHED`
|
|
34
|
+
- Completion: `NOT_REACHED`
|
|
35
|
+
- Publication: `not-published`
|
|
36
|
+
- Production readiness: `not-verified`
|
|
37
|
+
- Final classification: `PARTIAL`
|
|
38
|
+
- Failure class: `PROTOCOL ACTIVATION / PRE-IMPLEMENTATION CLARIFICATION STOP`
|
|
39
|
+
|
|
40
|
+
## Artifact evidence
|
|
41
|
+
|
|
42
|
+
| Artifact | Observation |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| `.forgeloop/manifest.json` | Present from package initialization |
|
|
45
|
+
| `.forgeloop/current-contract.json` | Missing |
|
|
46
|
+
| `.forgeloop/routing-result.json` | Missing |
|
|
47
|
+
| `.forgeloop/gates/` | Missing |
|
|
48
|
+
| `.forgeloop/work-state.json` | Missing |
|
|
49
|
+
| `.forgeloop/events.ndjson` | Missing |
|
|
50
|
+
| `.forgeloop/execution-receipt.json` | Missing |
|
|
51
|
+
| Product implementation | Not started |
|
|
52
|
+
|
|
53
|
+
## Observed behavior
|
|
54
|
+
|
|
55
|
+
The agent inspected the empty target and then asked whether it should use a
|
|
56
|
+
fictional law-firm brand and demonstrative contacts. No implementation or
|
|
57
|
+
ForgeLoop lifecycle transition followed that clarification request.
|
|
58
|
+
|
|
59
|
+
## Capability-level result
|
|
60
|
+
|
|
61
|
+
| Capability | Result |
|
|
62
|
+
| --- | --- |
|
|
63
|
+
| Blind bootstrap | `PASS` |
|
|
64
|
+
| Instruction discovery | `PASS` |
|
|
65
|
+
| Contract creation | `FAIL` |
|
|
66
|
+
| Deterministic routing | `NOT_REACHED` |
|
|
67
|
+
| Gate enforcement | `NOT_REACHED` |
|
|
68
|
+
| Preflight chronology | `NOT_REACHED` |
|
|
69
|
+
| Implementation | `NOT_STARTED` |
|
|
70
|
+
| Verification execution | `NOT_REACHED` |
|
|
71
|
+
| Evidence serialization | `NOT_REACHED` |
|
|
72
|
+
| Review transition | `NOT_REACHED` |
|
|
73
|
+
| Receipt generation | `NOT_REACHED` |
|
|
74
|
+
| Lifecycle closure | `NOT_REACHED` |
|
|
75
|
+
| False-completion prevention | `NOT_REACHED` |
|
|
76
|
+
| Full conformance | `PARTIAL` |
|
|
77
|
+
|
|
78
|
+
## Classification
|
|
79
|
+
|
|
80
|
+
`PARTIAL`
|
|
81
|
+
|
|
82
|
+
This run exposed an agent-level pre-implementation clarification stop, not a
|
|
83
|
+
completion-validator defect. The fictional branding question was a
|
|
84
|
+
non-blocking clarification stop, not a downstream protocol failure. It did not
|
|
85
|
+
provide evidence to justify changing the routing, phase, receipt, or evidence
|
|
86
|
+
protocol. A later run should repeat the same prompt after resolving the
|
|
87
|
+
pre-contract autonomy behavior without adding ForgeLoop coaching.
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cassiomc1/forgeloop",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Portable, verifiable instruction kit for AI agents and developers",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url": "https://github.com/cassiomc1/
|
|
7
|
+
"url": "git+https://github.com/cassiomc1/forgeloop.git"
|
|
8
8
|
},
|
|
9
|
-
"homepage": "https://github.com/cassiomc1/
|
|
9
|
+
"homepage": "https://github.com/cassiomc1/forgeloop#readme",
|
|
10
10
|
"license": "SEE LICENSE IN LICENSE",
|
|
11
11
|
"publishConfig": {
|
|
12
12
|
"access": "public"
|
|
@@ -22,7 +22,8 @@
|
|
|
22
22
|
"src",
|
|
23
23
|
"ENG",
|
|
24
24
|
"schemas",
|
|
25
|
-
"
|
|
25
|
+
"conformance",
|
|
26
|
+
".forgeloop/forgeloop.gitignore",
|
|
26
27
|
"AGENTS.md",
|
|
27
28
|
"CLAUDE.md",
|
|
28
29
|
"GUIDE_ROUTER.md",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/activation.schema.json",
|
|
4
|
+
"title": "ForgeLoop activation marker",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "sessionId", "activationMarker", "createdAt"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"sessionId": { "type": "string", "minLength": 1 },
|
|
11
|
+
"activationMarker": { "type": "string", "minLength": 1 },
|
|
12
|
+
"createdAt": { "type": "string", "minLength": 1 }
|
|
13
|
+
},
|
|
14
|
+
"additionalProperties": false
|
|
15
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/check.schema.json",
|
|
4
|
+
"title": "ForgeLoop verification check",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "id", "kind", "requirement", "status", "evidenceKind", "source"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"id": { "type": "string", "minLength": 1 },
|
|
11
|
+
"kind": { "type": "string", "minLength": 1 },
|
|
12
|
+
"requirement": { "type": "string", "minLength": 1 },
|
|
13
|
+
"status": { "enum": ["passed", "failed", "blocked", "not-run"] },
|
|
14
|
+
"evidenceKind": { "enum": ["OBSERVED", "INFERRED", "NOT_VERIFIED", "BLOCKED"] },
|
|
15
|
+
"source": { "type": "string", "minLength": 1 },
|
|
16
|
+
"exitCode": { "type": "integer" },
|
|
17
|
+
"timestamp": { "type": "string", "minLength": 1 },
|
|
18
|
+
"repositoryFingerprint": { "type": "string", "pattern": "^[a-f0-9]{40}$" },
|
|
19
|
+
"viewport": { "type": "object" },
|
|
20
|
+
"details": { "type": "object" }
|
|
21
|
+
},
|
|
22
|
+
"additionalProperties": false
|
|
23
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/config.schema.json",
|
|
4
|
+
"title": "ForgeLoop configuration",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "complianceMode"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"complianceMode": { "enum": ["advisory", "standard", "strict"] },
|
|
11
|
+
"policy": { "type": "string", "minLength": 1 },
|
|
12
|
+
"requiredGates": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
13
|
+
"requiredEvidence": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
14
|
+
},
|
|
15
|
+
"additionalProperties": false
|
|
16
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/current-contract.schema.json",
|
|
4
|
+
"title": "ForgeLoop current execution contract",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": [
|
|
7
|
+
"schemaVersion",
|
|
8
|
+
"protocolVersion",
|
|
9
|
+
"taskId",
|
|
10
|
+
"objective",
|
|
11
|
+
"deliverables",
|
|
12
|
+
"constraints",
|
|
13
|
+
"risks",
|
|
14
|
+
"verification",
|
|
15
|
+
"successCriteria",
|
|
16
|
+
"stopConditions",
|
|
17
|
+
"unresolvedDecisions",
|
|
18
|
+
"sourceRefs"
|
|
19
|
+
],
|
|
20
|
+
"properties": {
|
|
21
|
+
"schemaVersion": { "const": 1 },
|
|
22
|
+
"protocolVersion": { "const": 1 },
|
|
23
|
+
"taskId": { "type": "string", "minLength": 1 },
|
|
24
|
+
"objective": { "type": "string", "minLength": 1 },
|
|
25
|
+
"assumptions": {
|
|
26
|
+
"type": "array",
|
|
27
|
+
"items": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"required": ["value", "reason", "scope", "reversible", "source"],
|
|
30
|
+
"properties": {
|
|
31
|
+
"value": { "type": "string", "minLength": 1 },
|
|
32
|
+
"reason": { "type": "string", "minLength": 1 },
|
|
33
|
+
"scope": { "type": "string", "minLength": 1 },
|
|
34
|
+
"reversible": { "const": true },
|
|
35
|
+
"source": { "const": "agent-default" }
|
|
36
|
+
},
|
|
37
|
+
"additionalProperties": false
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"deliverables": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
41
|
+
"constraints": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
42
|
+
"risks": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
43
|
+
"verification": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
44
|
+
"successCriteria": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
45
|
+
"stopConditions": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
46
|
+
"unresolvedDecisions": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
47
|
+
"sourceRefs": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
48
|
+
},
|
|
49
|
+
"additionalProperties": false
|
|
50
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/event.schema.json",
|
|
4
|
+
"title": "ForgeLoop protocol event",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["seq", "schemaVersion", "protocolVersion", "taskId", "event", "at", "previousHash"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"seq": { "type": "integer", "minimum": 1 },
|
|
9
|
+
"schemaVersion": { "const": 1 },
|
|
10
|
+
"protocolVersion": { "const": 1 },
|
|
11
|
+
"taskId": { "type": "string", "minLength": 1 },
|
|
12
|
+
"event": { "type": "string", "minLength": 1 },
|
|
13
|
+
"at": { "type": "string", "minLength": 1 },
|
|
14
|
+
"fingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
15
|
+
"previousHash": { "oneOf": [{ "type": "string", "pattern": "^[a-f0-9]{64}$" }, { "type": "null" }] },
|
|
16
|
+
"hash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
17
|
+
"details": { "type": "object" }
|
|
18
|
+
},
|
|
19
|
+
"additionalProperties": false
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/evidence-coverage.schema.json",
|
|
4
|
+
"title": "ForgeLoop evidence coverage",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "requirement", "requiredEvidence", "observedEvidence", "status"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"requirement": { "type": "string", "minLength": 1 },
|
|
11
|
+
"requiredEvidence": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
12
|
+
"observedEvidence": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
13
|
+
"status": { "enum": ["COVERED", "PARTIAL", "NOT_VERIFIED", "BLOCKED"] },
|
|
14
|
+
"details": { "type": "object" }
|
|
15
|
+
},
|
|
16
|
+
"additionalProperties": false
|
|
17
|
+
}
|
|
@@ -9,7 +9,13 @@
|
|
|
9
9
|
"protocolVersion": { "const": 1 },
|
|
10
10
|
"taskId": { "type": "string", "minLength": 1 },
|
|
11
11
|
"contractFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
12
|
+
"routeFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
13
|
+
"stateFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
12
14
|
"status": { "enum": ["in-progress", "complete", "blocked", "complete-with-concerns"] },
|
|
15
|
+
"taskStatus": { "enum": ["in-progress", "complete", "blocked", "incomplete"] },
|
|
16
|
+
"verificationStatus": { "enum": ["valid", "invalid", "not-verified", "blocked"] },
|
|
17
|
+
"publicationStatus": { "enum": ["not-published", "local-only", "committed", "pushed", "published", "deployed"] },
|
|
18
|
+
"productionReadiness": { "enum": ["ready", "not-verified", "blocked"] },
|
|
13
19
|
"selectedGuides": { "type": "array", "items": { "type": "string" } },
|
|
14
20
|
"changedPaths": { "type": "array", "items": { "type": "string" } },
|
|
15
21
|
"checks": { "type": "array", "items": { "type": "object" } },
|
|
@@ -28,6 +34,10 @@
|
|
|
28
34
|
"additionalProperties": false
|
|
29
35
|
}
|
|
30
36
|
},
|
|
37
|
+
"evidenceCoverage": {
|
|
38
|
+
"type": "array",
|
|
39
|
+
"items": { "type": "object" }
|
|
40
|
+
},
|
|
31
41
|
"review": { "type": "object" },
|
|
32
42
|
"limitations": { "type": "array", "items": { "type": "string" } },
|
|
33
43
|
"publication": {
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/gate.schema.json",
|
|
4
|
+
"title": "ForgeLoop gate",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "taskId", "gate", "status", "requiredBy", "artifacts", "decisions", "unknowns", "approvedAssumptions", "evidence"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"taskId": { "type": "string", "minLength": 1 },
|
|
11
|
+
"gate": { "type": "string", "minLength": 1 },
|
|
12
|
+
"status": { "enum": ["satisfied", "unverified", "blocked"] },
|
|
13
|
+
"requiredBy": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
14
|
+
"artifacts": {
|
|
15
|
+
"type": "array",
|
|
16
|
+
"items": {
|
|
17
|
+
"type": "object",
|
|
18
|
+
"required": ["path", "sha256"],
|
|
19
|
+
"properties": {
|
|
20
|
+
"path": { "type": "string", "minLength": 1 },
|
|
21
|
+
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" }
|
|
22
|
+
},
|
|
23
|
+
"additionalProperties": false
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
"decisions": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
27
|
+
"unknowns": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
28
|
+
"approvedAssumptions": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
29
|
+
"evidence": { "type": "array", "items": { "type": "object" } }
|
|
30
|
+
},
|
|
31
|
+
"additionalProperties": false
|
|
32
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/policy.schema.json",
|
|
4
|
+
"title": "ForgeLoop policy pack",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "name", "description", "complianceMode", "requiredGates", "requiredEvidence", "allowedCompletionStates", "freshnessRequired"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"name": { "type": "string", "minLength": 1 },
|
|
11
|
+
"description": { "type": "string", "minLength": 1 },
|
|
12
|
+
"complianceMode": { "enum": ["advisory", "standard", "strict"] },
|
|
13
|
+
"requiredGates": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
14
|
+
"requiredEvidence": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
15
|
+
"allowedCompletionStates": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
16
|
+
"freshnessRequired": { "type": "boolean" }
|
|
17
|
+
},
|
|
18
|
+
"additionalProperties": false
|
|
19
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/preflight.schema.json",
|
|
4
|
+
"title": "ForgeLoop preflight result",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "taskId", "status", "profile", "contract", "routing", "requiredGates", "satisfiedGates", "errors"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"taskId": { "type": "string", "minLength": 1 },
|
|
11
|
+
"status": { "enum": ["READY", "BLOCKED"] },
|
|
12
|
+
"profile": { "type": "object" },
|
|
13
|
+
"contract": { "type": "object" },
|
|
14
|
+
"routing": { "type": "object" },
|
|
15
|
+
"requiredGates": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
16
|
+
"satisfiedGates": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
17
|
+
"errors": { "type": "array", "items": { "type": "object" } },
|
|
18
|
+
"fingerprints": { "type": "object" },
|
|
19
|
+
"sources": { "type": "object" },
|
|
20
|
+
"policy": { "type": "object" }
|
|
21
|
+
},
|
|
22
|
+
"additionalProperties": false
|
|
23
|
+
}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
"properties": {
|
|
8
8
|
"schemaVersion": { "const": 1 },
|
|
9
9
|
"protocolVersion": { "const": 1 },
|
|
10
|
+
"contractFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
10
11
|
"input": { "type": "object" },
|
|
11
12
|
"primary": { "oneOf": [{ "type": "string" }, { "type": "null" }] },
|
|
12
13
|
"guides": { "type": "array", "items": { "type": "string" } },
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/source-registry.schema.json",
|
|
4
|
+
"title": "ForgeLoop source registry",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "sources"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"sources": {
|
|
11
|
+
"type": "object",
|
|
12
|
+
"additionalProperties": {
|
|
13
|
+
"type": "object",
|
|
14
|
+
"required": ["kind", "summary"],
|
|
15
|
+
"properties": {
|
|
16
|
+
"kind": { "enum": ["user-request", "repository-fact", "observation", "command", "agent-decision", "inference", "unknown"] },
|
|
17
|
+
"summary": { "type": "string", "minLength": 1 },
|
|
18
|
+
"path": { "type": "string", "minLength": 1 },
|
|
19
|
+
"sha256": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
20
|
+
"command": { "type": "string", "minLength": 1 },
|
|
21
|
+
"result": { "type": "string", "minLength": 1 },
|
|
22
|
+
"status": { "type": "string", "minLength": 1 }
|
|
23
|
+
},
|
|
24
|
+
"additionalProperties": false
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"additionalProperties": false
|
|
29
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "forgeloop://schemas/task-bundle.schema.json",
|
|
4
|
+
"title": "ForgeLoop portable task bundle manifest",
|
|
5
|
+
"type": "object",
|
|
6
|
+
"required": ["schemaVersion", "protocolVersion", "taskId", "artifacts"],
|
|
7
|
+
"properties": {
|
|
8
|
+
"schemaVersion": { "const": 1 },
|
|
9
|
+
"protocolVersion": { "const": 1 },
|
|
10
|
+
"taskId": { "type": "string", "minLength": 1 },
|
|
11
|
+
"artifacts": { "type": "array", "items": { "type": "string", "minLength": 1 } }
|
|
12
|
+
},
|
|
13
|
+
"additionalProperties": false
|
|
14
|
+
}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"protocolVersion": { "const": 1 },
|
|
10
10
|
"taskId": { "type": "string", "minLength": 1 },
|
|
11
11
|
"contractFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
12
|
+
"routeFingerprint": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
|
|
12
13
|
"repositoryFingerprint": {
|
|
13
14
|
"type": "object",
|
|
14
15
|
"required": ["branch", "head"],
|
|
@@ -20,6 +21,9 @@
|
|
|
20
21
|
},
|
|
21
22
|
"phase": { "type": "string", "minLength": 1 },
|
|
22
23
|
"selectedGuides": { "type": "array", "items": { "type": "string" } },
|
|
24
|
+
"requiredGates": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
25
|
+
"satisfiedGates": { "type": "array", "items": { "type": "string", "minLength": 1 } },
|
|
26
|
+
"complianceMode": { "enum": ["advisory", "standard", "strict"] },
|
|
23
27
|
"completedSteps": { "type": "array", "items": { "type": "string" } },
|
|
24
28
|
"pendingSteps": { "type": "array", "items": { "type": "string" } },
|
|
25
29
|
"requiredArtifacts": {
|
|
@@ -40,7 +44,9 @@
|
|
|
40
44
|
"lastUpdated": { "type": "string", "minLength": 1 },
|
|
41
45
|
"previousPhase": { "type": "string" },
|
|
42
46
|
"diagnosedHypothesis": { "type": "string", "minLength": 1 },
|
|
43
|
-
"verificationEvidence": { "type": "array", "items": { "type": "object" } }
|
|
47
|
+
"verificationEvidence": { "type": "array", "items": { "type": "object" } },
|
|
48
|
+
"evidenceCoverage": { "type": "array", "items": { "type": "object" } },
|
|
49
|
+
"publicationStatus": { "enum": ["not-published", "local-only", "committed", "pushed", "published", "deployed"] }
|
|
44
50
|
},
|
|
45
51
|
"additionalProperties": false
|
|
46
52
|
}
|