@cassiomc1/forgeloop 1.13.0 → 1.14.0
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/AGENT_COMPATIBILITY.md +8 -0
- package/DOCS_INDEX.md +35 -3
- package/ENG/nodejs-backend-development-eng.md +2 -2
- package/ENG/sec-code-eng.md +7 -7
- package/EXECUTION_STATE.md +12 -0
- package/LOOP_ENGINEERING.md +28 -2
- package/ORCHESTRATOR_INTEGRATION.md +9 -5
- package/PROTOCOL_INTEGRATION.md +55 -2
- package/README.md +40 -25
- package/TERMINOLOGY.md +2 -0
- package/THREAT_MODEL.md +140 -1
- package/completions/_forgeloop +19 -1
- package/completions/forgeloop.bash +37 -1
- package/completions/forgeloop.fish +123 -1
- package/docs/ADVISORY_CONTEXT.md +25 -0
- package/docs/AGENT_BROWSER_ADAPTER.md +81 -0
- package/docs/AGENT_BROWSER_VERIFICATION.md +6 -0
- package/docs/AGENT_PROTOCOL_SUMMARY.md +27 -2
- package/docs/AGENT_SKILL.md +66 -0
- package/docs/ARTIFACT_REFERENCE.md +123 -0
- package/docs/AUDIT_UX.md +46 -0
- package/docs/BROWSER_VERIFICATION.md +136 -0
- package/docs/CLI_REFERENCE.md +366 -6
- package/docs/CODE_ATTESTATION.md +2 -2
- package/docs/DOCUMENTATION_GUIDE.md +32 -11
- package/docs/JEV_BENCHMARKS.md +31 -0
- package/docs/MODEL_ROUTING.md +37 -0
- package/docs/OPENSRC_ADAPTER.md +241 -0
- package/docs/PACKAGE_CONTENTS.md +35 -8
- package/docs/PROVIDERS.md +126 -0
- package/docs/PROVIDER_ARCHITECTURE.md +199 -0
- package/docs/RECIPES.md +9 -0
- package/docs/RELEASE_CHECKLIST.md +38 -5
- package/docs/SECURITY_REVIEW.md +71 -0
- package/docs/SEMANTIC_DECISION_PLANE.md +71 -0
- package/docs/TEST_INTELLIGENCE.md +29 -0
- package/docs/TEST_PRUNING.md +14 -0
- package/docs/TROUBLESHOOTING.md +198 -1
- package/docs/UNIVERSAL_INTEGRATION.md +31 -0
- package/docs/assets/diagrams/forgeloop-code-attestation-flow.html +2 -2
- package/docs/assets/diagrams/forgeloop-code-attestation-flow.receipt.json +5 -5
- package/docs/assets/diagrams/forgeloop-code-attestation-flow.svg +1 -1
- package/docs/assets/diagrams/forgeloop-engineering-flow.html +39 -26
- package/docs/assets/diagrams/forgeloop-engineering-flow.receipt.json +6 -6
- package/docs/assets/diagrams/forgeloop-engineering-flow.svg +26 -26
- package/docs/assets/diagrams/forgeloop-verification-trust-flow.html +2 -1
- package/docs/assets/diagrams/forgeloop-verification-trust-flow.receipt.json +5 -5
- package/docs/assets/diagrams/forgeloop-verification-trust-flow.svg +1 -1
- package/docs/diagrams/README.md +13 -9
- package/docs/diagrams/forgeloop-code-attestation-flow.workflow.json +1 -1
- package/docs/diagrams/forgeloop-engineering-flow.workflow.json +24 -19
- package/docs/diagrams/forgeloop-verification-trust-flow.workflow.json +1 -0
- package/docs/diagrams/reviews/forgeloop-code-attestation-flow.review.json +4 -4
- package/docs/diagrams/reviews/forgeloop-engineering-flow.review.json +4 -4
- package/docs/diagrams/reviews/forgeloop-verification-trust-flow.review.json +4 -4
- package/docs/documentation-manifest.json +750 -5
- package/docs/protocol-requirements.json +24 -0
- package/package.json +30 -3
- package/schemas/config.schema.json +14 -0
- package/schemas/context-plan.schema.json +18 -0
- package/schemas/semantic-decision.schema.json +46 -0
- package/schemas/test-utility.schema.json +44 -0
- package/scripts/CI_VALIDATORS.md +6 -6
- package/scripts/benchmark-jev.mjs +5 -0
- package/scripts/benchmark-test-intelligence.mjs +4 -0
- package/scripts/generate-agent-protocol-summary.mjs +4 -1
- package/scripts/generate-forgeloop-skill.mjs +133 -0
- package/scripts/jev-smoke.mjs +19 -0
- package/skills/forgeloop/README.md +9 -0
- package/skills/forgeloop/SKILL.md +77 -0
- package/skills/forgeloop/references/lifecycle.md +9 -0
- package/skills/forgeloop/references/recovery.md +7 -0
- package/skills/forgeloop/references/verification.md +7 -0
- package/src/adapters/agent-browser/assertions.js +47 -0
- package/src/adapters/agent-browser/commands.js +54 -0
- package/src/adapters/agent-browser/index.js +3 -0
- package/src/adapters/agent-browser/locator.js +40 -0
- package/src/adapters/agent-browser/process.js +215 -0
- package/src/adapters/agent-browser/provider.js +313 -0
- package/src/adapters/emulated-services/constants.js +24 -0
- package/src/adapters/emulated-services/index.js +7 -0
- package/src/adapters/emulated-services/process.js +162 -0
- package/src/adapters/emulated-services/provider.js +282 -0
- package/src/adapters/opensrc/normalize.js +90 -0
- package/src/adapters/opensrc/process.js +248 -0
- package/src/adapters/opensrc/provider.js +338 -0
- package/src/adapters/opensrc/search.js +264 -0
- package/src/adapters/typesafe/client.js +28 -0
- package/src/adapters/typesafe/engine.js +63 -0
- package/src/adapters/typesafe/normalize.js +41 -0
- package/src/cli.js +108 -0
- package/src/commands/checkpoint-revalidate.js +176 -0
- package/src/commands/context-plan.js +38 -0
- package/src/commands/contract-create.js +264 -0
- package/src/commands/contract-revise.js +236 -0
- package/src/commands/decision-show.js +14 -0
- package/src/commands/decision-status.js +22 -0
- package/src/commands/discover.js +41 -0
- package/src/commands/doctor.js +15 -0
- package/src/commands/gate-record.js +205 -0
- package/src/commands/gate-revalidate.js +137 -0
- package/src/commands/model-route.js +32 -0
- package/src/commands/route.js +146 -18
- package/src/commands/semantic-plan.js +17 -0
- package/src/commands/task-abandon.js +224 -0
- package/src/commands/task-migrate-contract-bootstrap-repair.js +288 -0
- package/src/commands/task-repair-contract-bootstrap.js +263 -0
- package/src/commands/test-inventory.js +5 -0
- package/src/commands/test-prune-plan.js +5 -0
- package/src/commands/test-prune-probe.js +5 -0
- package/src/commands/test-utility.js +5 -0
- package/src/commands/validate-protocol.js +10 -1
- package/src/core/artifact-registry.js +24 -0
- package/src/core/audit-ux.js +514 -0
- package/src/core/browser-verification/constants.js +149 -0
- package/src/core/browser-verification/normalize.js +254 -0
- package/src/core/browser-verification/provider.js +519 -0
- package/src/core/browser-verification/service.js +115 -0
- package/src/core/checkpoint-revalidation.js +319 -0
- package/src/core/cli-command-definitions.js +241 -0
- package/src/core/command-executors.js +110 -0
- package/src/core/command-input.js +115 -43
- package/src/core/completion-artifacts.js +14 -5
- package/src/core/completion.js +4 -6
- package/src/core/config.js +3 -0
- package/src/core/context-compiler/budget.js +9 -0
- package/src/core/context-compiler/candidates.js +39 -0
- package/src/core/context-compiler/compiler.js +63 -0
- package/src/core/context-compiler/fingerprint.js +11 -0
- package/src/core/context-compiler/policy.js +13 -0
- package/src/core/context-compiler/result.js +23 -0
- package/src/core/contract-bootstrap-recovery.js +655 -0
- package/src/core/contract-revision.js +210 -0
- package/src/core/decision/artifact.js +69 -0
- package/src/core/decision/benchmarks.js +103 -0
- package/src/core/decision/cache.js +27 -0
- package/src/core/decision/constants.js +58 -0
- package/src/core/decision/cutover.js +34 -0
- package/src/core/decision/engine.js +22 -0
- package/src/core/decision/errors.js +68 -0
- package/src/core/decision/events.js +101 -0
- package/src/core/decision/freshness.js +19 -0
- package/src/core/decision/normalizers/index.js +115 -0
- package/src/core/decision/policy.js +18 -0
- package/src/core/decision/projection.js +16 -0
- package/src/core/decision/question-registry.js +201 -0
- package/src/core/decision/request.js +26 -0
- package/src/core/decision/resolver.js +130 -0
- package/src/core/decision/result.js +58 -0
- package/src/core/decision/service.js +156 -0
- package/src/core/decision/state-builder.js +65 -0
- package/src/core/decision/task-bindings.js +30 -0
- package/src/core/decision/test-provider.js +32 -0
- package/src/core/decision/thresholds.js +15 -0
- package/src/core/error-codes.js +278 -0
- package/src/core/events.js +226 -57
- package/src/core/evidence-readiness.js +9 -0
- package/src/core/execution-prerequisites.js +14 -0
- package/src/core/execution-profile.js +63 -38
- package/src/core/gate-provenance.js +124 -0
- package/src/core/integration-invocation-policy.js +27 -4
- package/src/core/integration-resources.js +86 -61
- package/src/core/model-router/constants.js +10 -0
- package/src/core/model-router/policy.js +103 -0
- package/src/core/model-router/router.js +37 -0
- package/src/core/next-action-model.js +58 -0
- package/src/core/next-action-phases.js +130 -42
- package/src/core/next-action-refresh.js +43 -9
- package/src/core/next-action-review-phase.js +7 -2
- package/src/core/next-action.js +35 -7
- package/src/core/phase.js +128 -10
- package/src/core/preflight-consistency.js +23 -9
- package/src/core/preflight-loaders.js +37 -5
- package/src/core/protocol-info.js +65 -0
- package/src/core/protocol.js +20 -0
- package/src/core/reconcile-closure.js +128 -52
- package/src/core/recovery-history.js +1 -0
- package/src/core/resumability.js +154 -44
- package/src/core/route-artifact.js +15 -1
- package/src/core/router.js +67 -1
- package/src/core/runtime-context.js +118 -61
- package/src/core/schema-validation.js +3 -0
- package/src/core/security-review/constants.js +64 -0
- package/src/core/security-review/normalize.js +245 -0
- package/src/core/security-review/provider.js +204 -0
- package/src/core/security-review/service.js +134 -0
- package/src/core/semantic-planning/constants.js +19 -0
- package/src/core/semantic-planning/projection.js +94 -0
- package/src/core/semantic-planning/service.js +15 -0
- package/src/core/sources.js +37 -0
- package/src/core/task-claim-state.js +201 -1
- package/src/core/task-conflict-inspection.js +31 -5
- package/src/core/task-paths.js +13 -0
- package/src/core/task-recovery.js +1 -0
- package/src/core/templates.js +3 -0
- package/src/core/test-intelligence/benchmarks.js +68 -0
- package/src/core/test-intelligence/inventory.js +73 -0
- package/src/core/test-intelligence/prune.js +90 -0
- package/src/core/test-intelligence/semantic-state.js +15 -0
- package/src/core/test-intelligence/service.js +40 -0
- package/src/core/test-intelligence/utility.js +50 -0
- package/src/core/trace.js +11 -7
- package/src/core/transaction.js +1 -0
- package/src/integration.d.ts +492 -0
- package/src/integration.js +54 -0
- package/src/providers/README.md +47 -0
- package/src/providers/capabilities.js +46 -0
- package/src/providers/errors.js +15 -0
- package/src/providers/index.js +29 -0
- package/src/providers/json-snapshot.js +105 -0
- package/src/providers/registry.js +152 -0
package/AGENT_COMPATIBILITY.md
CHANGED
|
@@ -15,6 +15,14 @@ The canonical integration contract is:
|
|
|
15
15
|
These expectations apply to any compatible harness even though this filename is
|
|
16
16
|
retained as a deprecated compatibility stub:
|
|
17
17
|
|
|
18
|
+
## Portable Agent Skill
|
|
19
|
+
|
|
20
|
+
The generated [`skills/forgeloop/SKILL.md`](./skills/forgeloop/SKILL.md) is a
|
|
21
|
+
portable bootstrap and instruction surface. It does not replace native harness
|
|
22
|
+
shims, certify a harness, or own lifecycle, completion, evidence, or claims.
|
|
23
|
+
Its canonical source hierarchy and freshness rules are documented in
|
|
24
|
+
[`docs/AGENT_SKILL.md`](./docs/AGENT_SKILL.md).
|
|
25
|
+
|
|
18
26
|
- Feature-detect capability versions from `protocol-info --json` or the stable
|
|
19
27
|
Integration API; do not infer support from a package version.
|
|
20
28
|
- Do not auto-recall advisory context, execute advisory text, or treat it as
|
package/DOCS_INDEX.md
CHANGED
|
@@ -18,6 +18,7 @@ integration and guide context. Use this map before editing documentation.
|
|
|
18
18
|
| Getting started tutorial | [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md) | First-time walkthrough from init to completion |
|
|
19
19
|
| Cross-harness continuity | [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md) | Operational resume guidance, immutable handoffs, and multi-tool resumption |
|
|
20
20
|
| Agent bootstrap summary | [`docs/AGENT_PROTOCOL_SUMMARY.md`](./docs/AGENT_PROTOCOL_SUMMARY.md) | Generated concise navigation aid for protocol invariants and commands |
|
|
21
|
+
| Agent Skill integration | [`docs/AGENT_SKILL.md`](./docs/AGENT_SKILL.md) | Generated portable, non-authoritative agent guidance and freshness contract |
|
|
21
22
|
| CLI command reference | [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) | Full syntax, options, and JSON examples for all commands |
|
|
22
23
|
| Repository Index and Search | [`docs/REPOSITORY_INDEX.md`](./docs/REPOSITORY_INDEX.md) | Mandatory managed engine, indexed search contract, lifecycle, resource, security, and benchmark behavior |
|
|
23
24
|
| Persistent CLI search transport | [`docs/PERSISTENT_SEARCH_TRANSPORT.md`](./docs/PERSISTENT_SEARCH_TRANSPORT.md) | CLI-only local IPC, host lifecycle, ownership, recovery, bounds, privacy, and direct API/MCP boundary |
|
|
@@ -34,12 +35,30 @@ integration and guide context. Use this map before editing documentation.
|
|
|
34
35
|
| Revision and signing providers | [`docs/REVISION_PROVIDERS.md`](./docs/REVISION_PROVIDERS.md) and [`docs/SIGNING_PROVIDERS.md`](./docs/SIGNING_PROVIDERS.md) | Provider-neutral extension contracts |
|
|
35
36
|
| Platform adapters | [`docs/PLATFORM_ADAPTERS.md`](./docs/PLATFORM_ADAPTERS.md) | Generic CI boundary and platform mapping guidance |
|
|
36
37
|
| Universal integration API | [`docs/UNIVERSAL_INTEGRATION.md`](./docs/UNIVERSAL_INTEGRATION.md) | Programmatic integration subpath, envelope semantics, and consumer map |
|
|
38
|
+
| Audit UX read model | [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md) | Bounded read-only task timeline, health, verification, ownership, and completion projection |
|
|
37
39
|
| Advisory context providers | [`docs/ADVISORY_CONTEXT.md`](./docs/ADVISORY_CONTEXT.md) | Optional external host context, non-evidence trust boundary, allowlist normalization, and safety rules |
|
|
40
|
+
| Provider extension architecture | [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) | Provider-neutral architecture, invocation lifecycle, strict snapshots, cancellation, trust, and authority boundaries |
|
|
41
|
+
| Provider extension reference | [`docs/PROVIDERS.md`](./docs/PROVIDERS.md) | Capability discovery, provider kinds, common contract, limits, errors, and maintainer checklist |
|
|
42
|
+
| Security Review provider | [`docs/SECURITY_REVIEW.md`](./docs/SECURITY_REVIEW.md) | Bounded host-injected observation API, strict findings, timeout/cancellation, and non-authority boundary |
|
|
38
43
|
| Ripwire advisory adapter | [`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md) | Ripwire-specific registration, process contract, JSON mapping, limits, and verification |
|
|
44
|
+
| OpenSrc advisory adapter | [`docs/OPENSRC_ADAPTER.md`](./docs/OPENSRC_ADAPTER.md) | OpenSrc-specific registration, version qualification, cache containment, deterministic search, limits, and verification |
|
|
45
|
+
| Agent Browser verification adapter | [`docs/AGENT_BROWSER_ADAPTER.md`](./docs/AGENT_BROWSER_ADAPTER.md) | Optional host-owned browser executable, bounded observation mapping, isolation, exact origins, screenshots, and trust boundary |
|
|
39
46
|
| Local-first MCP adapter | [`docs/MCP.md`](./docs/MCP.md) | stdio default, optional strict loopback HTTP; server modes/capabilities and canonical resources |
|
|
40
47
|
| Adaptive execution-profile benchmarks | [`docs/EXECUTION_PROFILE_BENCHMARKS.md`](./docs/EXECUTION_PROFILE_BENCHMARKS.md) | Measured provider/host runs, robust statistics, paired/distribution deltas, tail status, outliers, and profile-aware host context |
|
|
41
48
|
| Knowledge integration gap analysis | [`docs/KNOWLEDGE_INTEGRATION_GAP_ANALYSIS.md`](./docs/KNOWLEDGE_INTEGRATION_GAP_ANALYSIS.md) | Repository-only research audit of candidate coverage, proven gaps, canonical homes, context cost, and intentional skip/defer decisions |
|
|
42
49
|
| Knowledge sources and provenance | [`docs/KNOWLEDGE_SOURCES.md`](./docs/KNOWLEDGE_SOURCES.md) | Snapshot, licensing observations, source roles, accepted/skipped concepts, and reuse boundaries |
|
|
50
|
+
| Semantic decision plane | [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md) | Mandatory bounded Jev/TypeSafe System One decisions, typed non-authoritative results, freshness, and fail-closed boundaries |
|
|
51
|
+
| Model routing | [`docs/MODEL_ROUTING.md`](./docs/MODEL_ROUTING.md) | Model-route tiers, host-model selection, deterministic safety floors, and ForgeLoop authority boundaries |
|
|
52
|
+
| Jev benchmarks | [`docs/JEV_BENCHMARKS.md`](./docs/JEV_BENCHMARKS.md) | Offline fixtures, live interoperability smoke, live benchmark calls, usage, latency, and non-generalized claims |
|
|
53
|
+
| Test intelligence | [`docs/TEST_INTELLIGENCE.md`](./docs/TEST_INTELLIGENCE.md) | Bounded test utility analysis, protected-test rules, semantic classification, and non-evidence status |
|
|
54
|
+
| Test pruning | [`docs/TEST_PRUNING.md`](./docs/TEST_PRUNING.md) | Keep/probe/block planning, isolated probes, and deterministic proof before any removal or rewrite |
|
|
55
|
+
| Repository Index | [`docs/REPOSITORY_INDEX.md`](./docs/REPOSITORY_INDEX.md) | Managed engine, index lifecycle, CLI/API/MCP behavior, privacy, recovery, and search boundaries |
|
|
56
|
+
| Persistent search transport | [`docs/PERSISTENT_SEARCH_TRANSPORT.md`](./docs/PERSISTENT_SEARCH_TRANSPORT.md) | CLI-only local IPC, host ownership, recovery, limits, and direct API/MCP differences |
|
|
57
|
+
| Provider architecture | [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) and [`docs/PROVIDERS.md`](./docs/PROVIDERS.md) | Provider-neutral invocation, strict normalization, cancellation, trust, and non-authority boundaries |
|
|
58
|
+
| Structural quality | [`docs/STRUCTURAL_QUALITY.md`](./docs/STRUCTURAL_QUALITY.md) | Optional provider-neutral baseline, delta policy, and evidence boundaries |
|
|
59
|
+
| Security review | [`docs/SECURITY_REVIEW.md`](./docs/SECURITY_REVIEW.md) | Host-injected bounded security observations and non-authoritative findings |
|
|
60
|
+
| Agent Browser verification | [`docs/AGENT_BROWSER_ADAPTER.md`](./docs/AGENT_BROWSER_ADAPTER.md) and [`docs/AGENT_BROWSER_VERIFICATION.md`](./docs/AGENT_BROWSER_VERIFICATION.md) | Optional browser adapter, exact-origin observations, screenshots, and non-evidence limits |
|
|
61
|
+
| Documentation history | [`docs/history/README.md`](./docs/history/README.md) | Archived audits, release evidence, and completed validation records with current-owner links |
|
|
43
62
|
| Documentation guide | [`docs/DOCUMENTATION_GUIDE.md`](./docs/DOCUMENTATION_GUIDE.md) | Rules and checklist for modifying documentation |
|
|
44
63
|
| Current release checklist | [`docs/RELEASE_CHECKLIST.md`](./docs/RELEASE_CHECKLIST.md) | Package, protocol, attestation, integration, and publication gates |
|
|
45
64
|
| Core npm package contents | [`docs/PACKAGE_CONTENTS.md`](./docs/PACKAGE_CONTENTS.md) | Published consumer surface, intentional inclusions, exclusions, and clean-room verification |
|
|
@@ -75,8 +94,13 @@ is historical evidence and is not part of the published core package.
|
|
|
75
94
|
| --- | --- |
|
|
76
95
|
| **First-time user or developer** | [`docs/GETTING_STARTED.md`](./docs/GETTING_STARTED.md) |
|
|
77
96
|
| **AI coding agent / harness** | [`docs/AGENT_PROTOCOL_SUMMARY.md`](./docs/AGENT_PROTOCOL_SUMMARY.md) → [`AGENTS.md`](./AGENTS.md) → [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) |
|
|
97
|
+
| **Understanding mandatory semantic decisions** | [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md) |
|
|
98
|
+
| **Selecting a model route** | [`docs/MODEL_ROUTING.md`](./docs/MODEL_ROUTING.md) |
|
|
99
|
+
| **Evaluating test utility or pruning** | [`docs/TEST_INTELLIGENCE.md`](./docs/TEST_INTELLIGENCE.md) → [`docs/TEST_PRUNING.md`](./docs/TEST_PRUNING.md) |
|
|
100
|
+
| **Reviewing historical repository evidence** | [`docs/history/README.md`](./docs/history/README.md) |
|
|
78
101
|
| **Technical auditor / Evaluator** | [`poc/README.md`](./poc/README.md) → [`poc/reports/poc-20260826-real-execution-technical-audit-v2.md`](./poc/reports/poc-20260826-real-execution-technical-audit-v2.md) |
|
|
79
102
|
| **Harness integrator** | [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) |
|
|
103
|
+
| **Audit or operator UI integrator** | [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md) |
|
|
80
104
|
| **External runtime / orchestrator integrator** | [`ORCHESTRATOR_INTEGRATION.md`](./ORCHESTRATOR_INTEGRATION.md) |
|
|
81
105
|
| **Resuming another tool / session** | [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md) |
|
|
82
106
|
| **Looking up CLI commands** | [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) |
|
|
@@ -86,6 +110,8 @@ is historical evidence and is not part of the published core package.
|
|
|
86
110
|
| **Looking for quick recipes** | [`docs/RECIPES.md`](./docs/RECIPES.md) |
|
|
87
111
|
| **Configuring structural quality feedback** | [`docs/STRUCTURAL_QUALITY.md`](./docs/STRUCTURAL_QUALITY.md) |
|
|
88
112
|
| **Configuring Ripwire advisory context** | [`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md) |
|
|
113
|
+
| **Configuring OpenSrc advisory context** | [`docs/OPENSRC_ADAPTER.md`](./docs/OPENSRC_ADAPTER.md) |
|
|
114
|
+
| **Understanding provider extensions** | [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) → [`docs/PROVIDERS.md`](./docs/PROVIDERS.md) |
|
|
89
115
|
| **Understanding verification trust** | [`docs/REVISION_PROVIDERS.md`](./docs/REVISION_PROVIDERS.md#differential-verification-scope) |
|
|
90
116
|
| **Understanding attestation trust** | [`docs/CODE_ATTESTATION.md`](./docs/CODE_ATTESTATION.md#trust-levels) |
|
|
91
117
|
| **Maintaining generated diagrams** | [`docs/diagrams/README.md`](./docs/diagrams/README.md) |
|
|
@@ -112,12 +138,17 @@ is historical evidence and is not part of the published core package.
|
|
|
112
138
|
- **Measure structural quality without replacing tests**: [`docs/STRUCTURAL_QUALITY.md`](./docs/STRUCTURAL_QUALITY.md)
|
|
113
139
|
- **Read the normative protocol specification**: [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md)
|
|
114
140
|
- **Integrate a new AI environment**: [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md)
|
|
141
|
+
- **Build a task audit view**: [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md)
|
|
115
142
|
- **Map ForgeLoop state into an external runtime/orchestrator**: [`ORCHESTRATOR_INTEGRATION.md`](./ORCHESTRATOR_INTEGRATION.md)
|
|
116
143
|
- **Edit documentation safely**: [`docs/DOCUMENTATION_GUIDE.md`](./docs/DOCUMENTATION_GUIDE.md)
|
|
117
144
|
- **Audit the npm package boundary**: [`docs/PACKAGE_CONTENTS.md`](./docs/PACKAGE_CONTENTS.md)
|
|
118
145
|
- **Verify source-content attestations**: [`docs/CODE_ATTESTATION.md`](./docs/CODE_ATTESTATION.md)
|
|
119
146
|
- **Understand narrow verification and checker binding**: [`docs/REVISION_PROVIDERS.md`](./docs/REVISION_PROVIDERS.md#differential-verification-scope)
|
|
120
147
|
- **Inspect the governed diagrams**: [`docs/diagrams/README.md`](./docs/diagrams/README.md)
|
|
148
|
+
- **Understand mandatory Jev semantics**: [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md)
|
|
149
|
+
- **Understand model routing**: [`docs/MODEL_ROUTING.md`](./docs/MODEL_ROUTING.md)
|
|
150
|
+
- **Review test utility and pruning safety**: [`docs/TEST_INTELLIGENCE.md`](./docs/TEST_INTELLIGENCE.md) and [`docs/TEST_PRUNING.md`](./docs/TEST_PRUNING.md)
|
|
151
|
+
- **Review historical validation evidence**: [`docs/history/README.md`](./docs/history/README.md)
|
|
121
152
|
|
|
122
153
|
`README.md` is intentionally a catalog and quickstart. Do not copy the full
|
|
123
154
|
process into adapters or README sections; link to the canonical source.
|
|
@@ -125,7 +156,7 @@ process into adapters or README sections; link to the canonical source.
|
|
|
125
156
|
## Lifecycle reading order
|
|
126
157
|
|
|
127
158
|
1. Read [`README.md`](./README.md) for scope and quickstart.
|
|
128
|
-
2. Read [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) for the process gates.
|
|
159
|
+
2. Read [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) for the process gates and [`docs/SEMANTIC_DECISION_PLANE.md`](./docs/SEMANTIC_DECISION_PLANE.md) for mandatory bounded semantic checkpoints.
|
|
129
160
|
3. Read [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md) for the active
|
|
130
161
|
runtime or harness boundary.
|
|
131
162
|
4. Inspect [`PROJECT_PROFILE.md`](./PROJECT_PROFILE.md) and confirm facts from
|
|
@@ -152,8 +183,9 @@ loop, and secret-scanning contracts that have not been migrated to Node. Their
|
|
|
152
183
|
scope, exact commands, and migration boundary are recorded in
|
|
153
184
|
[`scripts/CI_VALIDATORS.md`](./scripts/CI_VALIDATORS.md).
|
|
154
185
|
|
|
155
|
-
The package uses the approved exact
|
|
156
|
-
|
|
186
|
+
The package uses the approved exact `@typesafe-ai/sdk` dependency for the pinned
|
|
187
|
+
semantic decision plane and `smol-toml` for bounded Cargo manifest parsing.
|
|
188
|
+
Development dependencies remain limited to c8, ESLint,
|
|
157
189
|
TypeScript, and YAML and are checked by `npm run dependency:policy`. GitHub
|
|
158
190
|
Actions use `npm ci`, pinned action SHAs, CodeQL, dependency review, and
|
|
159
191
|
generated-release notes; npm publication still uses trusted OIDC publishing
|
|
@@ -596,10 +596,10 @@ Useful primary references include:
|
|
|
596
596
|
[NestJS](https://docs.nestjs.com/), [Koa](https://koajs.com/), and
|
|
597
597
|
[hapi](https://hapi.dev/)
|
|
598
598
|
- [TypeScript handbook](https://www.typescriptlang.org/docs/handbook/intro.html)
|
|
599
|
-
- [OWASP API Security Top 10](https://owasp.org/
|
|
599
|
+
- [OWASP API Security Top 10](https://owasp.org/projects/api-security-project)
|
|
600
600
|
- [OWASP SSRF prevention](https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html)
|
|
601
601
|
- [OWASP Node.js security guidance](https://cheatsheetseries.owasp.org/cheatsheets/Nodejs_Security_Cheat_Sheet.html)
|
|
602
|
-
- [RFC 9110 HTTP semantics](https://
|
|
602
|
+
- [RFC 9110 HTTP semantics](https://datatracker.ietf.org/doc/html/rfc9110)
|
|
603
603
|
|
|
604
604
|
These sources inform implementation decisions; they do not replace the
|
|
605
605
|
repository's pinned runtime, local policy, tests, or ForgeLoop evidence.
|
package/ENG/sec-code-eng.md
CHANGED
|
@@ -677,11 +677,11 @@ data independently of that choice.
|
|
|
677
677
|
|
|
678
678
|
## Sources and References
|
|
679
679
|
|
|
680
|
-
- OWASP ASVS 5.0.0: https://owasp.org/
|
|
680
|
+
- OWASP ASVS 5.0.0: https://owasp.org/projects/asvs
|
|
681
681
|
- Official OWASP ASVS 5.0.0 CSV: https://github.com/OWASP/ASVS/raw/v5.0.0/5.0/docs_en/OWASP_Application_Security_Verification_Standard_5.0.0_en.csv
|
|
682
682
|
- OWASP Top 10:2025 (Web): https://owasp.org/Top10/2025/
|
|
683
683
|
- OWASP Mobile Top 10:2024: https://owasp.org/www-project-mobile-top-10/
|
|
684
|
-
- OWASP Mobile Application Security Verification Standard (MASVS) / MASTG: https://owasp.org/
|
|
684
|
+
- OWASP Mobile Application Security Verification Standard (MASVS) / MASTG: https://owasp.org/projects/mobile-application-security
|
|
685
685
|
- OWASP Cheat Sheet Series: https://cheatsheetseries.owasp.org/
|
|
686
686
|
- OWASP SSRF Prevention: https://cheatsheetseries.owasp.org/cheatsheets/Server_Side_Request_Forgery_Prevention_Cheat_Sheet.html
|
|
687
687
|
- OWASP File Upload: https://cheatsheetseries.owasp.org/cheatsheets/File_Upload_Cheat_Sheet.html
|
|
@@ -700,11 +700,11 @@ data independently of that choice.
|
|
|
700
700
|
- Android Network Security Config and Certificate Transparency: https://developer.android.com/privacy-and-security/security-config
|
|
701
701
|
- Android cryptography and Keystore: https://developer.android.com/privacy-and-security/cryptography
|
|
702
702
|
- Android `EncryptedSharedPreferences` (deprecated): https://developer.android.com/reference/androidx/security/crypto/EncryptedSharedPreferences
|
|
703
|
-
- OAuth 2.0 Security Best Current Practice, RFC 9700: https://
|
|
704
|
-
- JWT Best Current Practices, RFC 8725: https://
|
|
705
|
-
- Web Origin, RFC 6454: https://
|
|
706
|
-
- OAuth 2.0 Token Introspection, RFC 7662: https://
|
|
707
|
-
- ChaCha20-Poly1305, RFC 8439: https://
|
|
703
|
+
- OAuth 2.0 Security Best Current Practice, RFC 9700: https://datatracker.ietf.org/doc/html/rfc9700
|
|
704
|
+
- JWT Best Current Practices, RFC 8725: https://datatracker.ietf.org/doc/html/rfc8725
|
|
705
|
+
- Web Origin, RFC 6454: https://datatracker.ietf.org/doc/html/rfc6454
|
|
706
|
+
- OAuth 2.0 Token Introspection, RFC 7662: https://datatracker.ietf.org/doc/html/rfc7662
|
|
707
|
+
- ChaCha20-Poly1305, RFC 8439: https://datatracker.ietf.org/doc/html/rfc8439
|
|
708
708
|
- GitHub Actions: use full-length commit SHA: https://docs.github.com/en/actions/reference/security/secure-use
|
|
709
709
|
- GitHub artifact attestations: https://docs.github.com/en/actions/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations
|
|
710
710
|
- Apple Platform Security Guide: https://support.apple.com/guide/security/
|
package/EXECUTION_STATE.md
CHANGED
|
@@ -31,6 +31,18 @@ task-bound `COMPLETION_VALIDATED` event and coherent state) is required, and a
|
|
|
31
31
|
forged or unproven COMPLETE state is `INCONSISTENT` with historical claims
|
|
32
32
|
retained.
|
|
33
33
|
|
|
34
|
+
For an intentional active-task stop, use the explicit canonical command:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
forgeloop task-abandon --task <id> --acknowledge-abandonment --json
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
It appends `TASK_ABANDONED`, writes a matching recovery boundary classified
|
|
41
|
+
`ABANDONED`, keeps the current phase unchanged, and resolves ownership to
|
|
42
|
+
`RELEASED_BY_RECOVERY`. It never emits `COMPLETION_VALIDATED` and never grants
|
|
43
|
+
publication authority. `clear-state` only clears a checkpoint and must not be
|
|
44
|
+
used to release claims.
|
|
45
|
+
|
|
34
46
|
The file is local, ignored by Git, schema-versioned, and never a replacement
|
|
35
47
|
for the manifest or the target project profile (installed as
|
|
36
48
|
`.forgeloop/kit/PROJECT_PROFILE.md`). It contains no secrets and is untrusted
|
package/LOOP_ENGINEERING.md
CHANGED
|
@@ -541,6 +541,21 @@ forgeloop preflight
|
|
|
541
541
|
|
|
542
542
|
`preflight` validates local ForgeLoop artifacts only. It does not invoke the model, run project commands, or treat a prose declaration as evidence. A `READY` result is required before `EXECUTING` in standard and strict workflows. A non-empty `current-contract.unresolvedDecisions[]` causes `forgeloop preflight` to return `BLOCKED` with `E_CONTRACT_UNRESOLVED_DECISION`; a valid `current-contract.assumptions[]` list does not block preparation.
|
|
543
543
|
|
|
544
|
+
Required gates are recorded only through `forgeloop gate-record`. The command
|
|
545
|
+
accepts only gates required by the active route or policy, computes artifact
|
|
546
|
+
hashes itself, rejects traversal and symlink escapes, and permits mutation only
|
|
547
|
+
in `ROUTED`, `DESIGNING`, or `PLANNED`. It rejects gate writes after execution
|
|
548
|
+
starts. A satisfied gate requires a meaningful decision and no unknowns.
|
|
549
|
+
Caller-provided evidence remains descriptive local input and cannot assert
|
|
550
|
+
`HOST_ATTESTED`, `FORGELOOP_EXECUTED`, or remote attestation.
|
|
551
|
+
|
|
552
|
+
Built-in contract preset references are limited to the canonical
|
|
553
|
+
`contract-preset:documentation`, `contract-preset:bug`,
|
|
554
|
+
`contract-preset:feature`, and `contract-preset:release` values. These values
|
|
555
|
+
do not require `.forgeloop/sources.json`; mixed contracts still validate every
|
|
556
|
+
non-built-in reference against the source registry, and unknown preset names
|
|
557
|
+
are rejected.
|
|
558
|
+
|
|
544
559
|
### Resumable activation and artifact reconciliation
|
|
545
560
|
|
|
546
561
|
`PREFLIGHT_READY` is a durable checkpoint, not only a status value. A persisted
|
|
@@ -864,6 +879,15 @@ proportional phases, but:
|
|
|
864
879
|
- `REVIEWING` cannot claim independent review when reviewer and implementer
|
|
865
880
|
identities are equal.
|
|
866
881
|
|
|
882
|
+
Immediately after `task-create`, a task may have a valid descriptor and
|
|
883
|
+
hash-linked `TASK_RECEIVED`/transaction history without `work-state.json`.
|
|
884
|
+
ForgeLoop derives `RECEIVED` from that canonical early artifact set. `next`
|
|
885
|
+
returns `DISCOVER`, and `discover` appends the initial discovery milestone
|
|
886
|
+
without creating synthetic work state. `next` then returns `CREATE_CONTRACT`;
|
|
887
|
+
`contract-create` persists and validates the real contract and materializes the
|
|
888
|
+
first work-state checkpoint with its actual contract fingerprint. Invalid,
|
|
889
|
+
contradictory, or unexpected early history remains inconsistent.
|
|
890
|
+
|
|
867
891
|
Resume rules are conservative: revalidate branch, HEAD, contract fingerprint,
|
|
868
892
|
protocol version, and required artifacts before continuing; never rerun a
|
|
869
893
|
completed destructive or publication action automatically; rerun cheap
|
|
@@ -989,8 +1013,10 @@ tooling, the agent must verify the capability boundary before using it:
|
|
|
989
1013
|
3. Reuse an existing callable capability when it is sufficient for the task.
|
|
990
1014
|
4. If the required capability is missing and a keyless Qwen path exists,
|
|
991
1015
|
install only the smallest matching capability, normally
|
|
992
|
-
`qwen-mm-plugins-core` for multimodal reading
|
|
993
|
-
|
|
1016
|
+
`qwen-mm-plugins-core` for multimodal reading, when the host or operator has
|
|
1017
|
+
explicitly granted task-scoped installation authority. Without that
|
|
1018
|
+
authority, keep the capability unavailable and report the limitation. Use
|
|
1019
|
+
the active harness's native installation mechanism or the official
|
|
994
1020
|
[Qwen-MM-Plugins](https://github.com/QwenLM/Qwen-MM-Plugins) instructions.
|
|
995
1021
|
5. If the operation is API-backed, check the required environment variable or
|
|
996
1022
|
configured service endpoint before enabling it. Without that prerequisite,
|
|
@@ -183,7 +183,8 @@ Attestation Chain](./docs/CODE_ATTESTATION.md#completion-flow).
|
|
|
183
183
|
|
|
184
184
|
## Serializable interfaces
|
|
185
185
|
|
|
186
|
-
The following JSON Schemas define
|
|
186
|
+
The following core lifecycle JSON Schemas define boundaries a host may implement;
|
|
187
|
+
the complete current inventory is generated in `docs/ARTIFACT_REFERENCE.md`:
|
|
187
188
|
|
|
188
189
|
- `schemas/routing-input.schema.json` and
|
|
189
190
|
`schemas/routing-result.schema.json` define deterministic guide selection
|
|
@@ -203,6 +204,9 @@ The following JSON Schemas define the boundaries a host may implement:
|
|
|
203
204
|
`schemas/config.schema.json`, `schemas/policy.schema.json`, and
|
|
204
205
|
`schemas/task-bundle.schema.json` define chronology, mode, policy, and
|
|
205
206
|
handoff boundaries.
|
|
207
|
+
- `schemas/semantic-decision.schema.json`, `schemas/context-plan.schema.json`,
|
|
208
|
+
and `schemas/test-utility.schema.json` define bounded semantic inputs and
|
|
209
|
+
test-intelligence projections without lifecycle or evidence authority.
|
|
206
210
|
|
|
207
211
|
`src/core/conformance.js` validates relationships that individual schemas
|
|
208
212
|
cannot express: route/state protocol versions, route/state guide sets,
|
|
@@ -224,10 +228,10 @@ tool objects, credentials, hidden prompts, or remote database references.
|
|
|
224
228
|
## Host responsibilities
|
|
225
229
|
|
|
226
230
|
The compatible harness owns model execution, tool execution, scheduling,
|
|
227
|
-
parallelism,
|
|
228
|
-
|
|
229
|
-
capabilities, and never turn local success into an
|
|
230
|
-
claim.
|
|
231
|
+
parallelism, verification isolation, and any remote services. It must invoke
|
|
232
|
+
lifecycle transitions through ForgeLoop, pass validated inputs, preserve file
|
|
233
|
+
ownership, report unavailable capabilities, and never turn local success into an
|
|
234
|
+
unverified publication claim.
|
|
231
235
|
|
|
232
236
|
## No-runtime boundary
|
|
233
237
|
|
package/PROTOCOL_INTEGRATION.md
CHANGED
|
@@ -181,6 +181,16 @@ authority, provenance, and safety-floor decisions remain unchanged.
|
|
|
181
181
|
validator-backed completion remains unchanged.
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
+
The capability handshake also advertises the versioned, read-only `auditUx`
|
|
185
|
+
resource feature. `task/audit-view` is a bounded presentation projection
|
|
186
|
+
composed from canonical status, audit, report, history, trace, ownership,
|
|
187
|
+
next-action, approval, and recovery resolvers. It exposes no lifecycle,
|
|
188
|
+
evidence, completion, mutation, or external-execution authority; hosts must
|
|
189
|
+
use the canonical command/API path for mutations. Timeline pagination is
|
|
190
|
+
sequence-based and bounded, and the projection omits raw event payloads,
|
|
191
|
+
commands, environment values, credentials, provider output, and absolute
|
|
192
|
+
paths. See [`docs/AUDIT_UX.md`](./docs/AUDIT_UX.md).
|
|
193
|
+
|
|
184
194
|
## Capability negotiation
|
|
185
195
|
|
|
186
196
|
The public capability handshake exposes additive capability families separately
|
|
@@ -190,6 +200,7 @@ from Protocol v1, schema v1, and Integration API v1:
|
|
|
190
200
|
| --- | --- | --- |
|
|
191
201
|
| `canonicalHandoffs` | v2 | Immutable handoff snapshots with ledger-backed exactly-once operational acceptance |
|
|
192
202
|
| `advisoryContextProviders` | v1 | Lazy, opt-in, provider-neutral Integration API injection only |
|
|
203
|
+
| `providerExtensions` | v1 | Experimental provider-neutral capability vocabulary; generic registry remains internal and unexported |
|
|
193
204
|
|
|
194
205
|
`repositoryIndex` v1 is a mandatory provider-neutral discovery capability for
|
|
195
206
|
Git repositories. ForgeLoop currently implements it with a managed, pinned
|
|
@@ -223,6 +234,40 @@ instructions. `protocol-info` may advertise the capability, but advisory
|
|
|
223
234
|
recall remains a programmatic Integration API operation; there is no stock
|
|
224
235
|
`context-recall` CLI command.
|
|
225
236
|
|
|
237
|
+
<a id="FL-PROVIDER-001"></a> **FL-PROVIDER-001 — `providerExtensions` MUST remain provider-neutral and experimental and MUST NOT imply a public generic provider registry API.**
|
|
238
|
+
|
|
239
|
+
<a id="FL-PROVIDER-002"></a> **FL-PROVIDER-002 — Every advertised provider kind MUST deny lifecycle, completion, and evidence authority.**
|
|
240
|
+
|
|
241
|
+
<a id="FL-PROVIDER-003"></a> **FL-PROVIDER-003 — Provider results MUST cross a strict JSON snapshot boundary before consumer use.**
|
|
242
|
+
|
|
243
|
+
<a id="FL-PROVIDER-004"></a> **FL-PROVIDER-004 — The generic provider registry MUST remain absent from public package subpath exports.**
|
|
244
|
+
|
|
245
|
+
`providerExtensions` v1 is provider-neutral and experimental. It advertises
|
|
246
|
+
five provider kinds, strict JSON result normalization, cooperative cancellation,
|
|
247
|
+
and false lifecycle, completion, evidence, and auto-install authority. This
|
|
248
|
+
capability advertisement does not imply a generic public provider registration
|
|
249
|
+
API or a supported `./providers` package subpath. Protocol version remains 1,
|
|
250
|
+
Schema version remains 1, and Integration API version remains 1.
|
|
251
|
+
|
|
252
|
+
The dedicated `browserVerificationProviders` runtime-context option is a
|
|
253
|
+
separate explicit Integration API boundary. It is host-injected, provider
|
|
254
|
+
neutral, lazy, and inert during context construction. `runBrowserVerification`
|
|
255
|
+
is the only public operation; it does not run from lifecycle commands and does
|
|
256
|
+
not persist observations. ForgeLoop owns the shared deadline, cooperative
|
|
257
|
+
cancellation, strict result snapshot, exact origin/redirect validation, and
|
|
258
|
+
overall assertion-status derivation. Browser observations cannot directly
|
|
259
|
+
create evidence, completion authority, claims, receipts, or next actions. The
|
|
260
|
+
origin allowlist is not a network sandbox and no browser vendor is canonical.
|
|
261
|
+
|
|
262
|
+
The dedicated `securityReviewProviders` runtime-context option is another
|
|
263
|
+
explicit, host-injected Integration API boundary. `runSecurityReview` is
|
|
264
|
+
lazy, inert during context construction, and observation-only: it does not
|
|
265
|
+
install or discover scanners, mutate lifecycle artifacts, create evidence,
|
|
266
|
+
authorize completion, or issue commands. ForgeLoop bounds and freezes the
|
|
267
|
+
request, shares one deadline and cooperative abort signal across factory and
|
|
268
|
+
review, and normalizes the result into a strict immutable observation. Findings
|
|
269
|
+
must not be treated as canonical evidence or lifecycle authority.
|
|
270
|
+
|
|
226
271
|
A consumer that understands `canonicalHandoffs` v1 but not v2 may disable the
|
|
227
272
|
handoff-specific UI while keeping Protocol v1 core functionality available.
|
|
228
273
|
Consumers must feature-detect the capability family and must not mark the
|
|
@@ -394,6 +439,12 @@ only a compatibility alias and has identical caller-acknowledgement semantics.
|
|
|
394
439
|
a trusted grant reference through a boundary the active actor cannot mint or
|
|
395
440
|
replace. The standalone CLI does not expose such a self-attestation option.
|
|
396
441
|
|
|
442
|
+
Explicit active-task abandonment is a distinct caller-acknowledged operation:
|
|
443
|
+
`task-abandon --task <id> --acknowledge-abandonment` releases validated claims
|
|
444
|
+
through the same canonical ownership resolver, project/task serialization, and
|
|
445
|
+
append-only recovery history. It does not change the phase or create completion,
|
|
446
|
+
publication, or host authority. `clear-state` is not an abandonment substitute.
|
|
447
|
+
|
|
397
448
|
Claim ownership is a validated relationship, not an artifact preference.
|
|
398
449
|
<a id="FL-CLAIM-001"></a> **FL-CLAIM-001 — Every harness MUST consume the canonical claim-state resolver**
|
|
399
450
|
over the descriptor, work state, recovery artifact, and complete validated
|
|
@@ -488,8 +539,10 @@ installing a package.
|
|
|
488
539
|
|
|
489
540
|
The installed loop directs the active actor to inspect native model and harness
|
|
490
541
|
capabilities. When a task requires a missing capability (e.g. multimodal vision),
|
|
491
|
-
|
|
492
|
-
|
|
542
|
+
a host or operator may provision the smallest task-scoped capability (such as
|
|
543
|
+
`Qwen-MM-Plugins`) only when installation authority has been explicitly
|
|
544
|
+
granted. Use native mechanisms or upstream installers, then verify it before
|
|
545
|
+
use. Without that authority, keep it unavailable and report the limitation.
|
|
493
546
|
|
|
494
547
|
API credentials, system packages, and unrelated environment changes remain
|
|
495
548
|
separately gated.
|
package/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# ForgeLoop — Verifiable Engineering Protocol
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<img src="./docs/assets/
|
|
4
|
+
<img src="./docs/assets/forgeloop-architecture.svg" alt="ForgeLoop Architecture" width="100%">
|
|
5
5
|
</p>
|
|
6
6
|
|
|
7
7
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/codeql.yml)
|
|
@@ -11,10 +11,10 @@
|
|
|
11
11
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/package-smoke.yml)
|
|
12
12
|
[](https://github.com/cassiomc1/forgeloop/actions/workflows/release-notes.yml)
|
|
13
13
|
|
|
14
|
-
ForgeLoop is
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
ForgeLoop is the deterministic governor for AI-assisted engineering. Jev is the
|
|
15
|
+
mandatory bounded System One semantic input; the host coding model is System Two
|
|
16
|
+
implementation. ForgeLoop alone owns lifecycle, claims, gates, evidence,
|
|
17
|
+
completion, recovery, and publication truth.
|
|
18
18
|
|
|
19
19
|
Operational sources are indexed in [`DOCS_INDEX.md`](./DOCS_INDEX.md).
|
|
20
20
|
[`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md) is canonical;
|
|
@@ -29,7 +29,9 @@ Operational sources are indexed in [`DOCS_INDEX.md`](./DOCS_INDEX.md).
|
|
|
29
29
|
- **Full protocol specification** → [`LOOP_ENGINEERING.md`](./LOOP_ENGINEERING.md)
|
|
30
30
|
- **Integrating an AI harness** → [`PROTOCOL_INTEGRATION.md`](./PROTOCOL_INTEGRATION.md)
|
|
31
31
|
- **Optional advisory context providers** → [`docs/ADVISORY_CONTEXT.md`](./docs/ADVISORY_CONTEXT.md)
|
|
32
|
+
- **Provider extension architecture** → [`docs/PROVIDER_ARCHITECTURE.md`](./docs/PROVIDER_ARCHITECTURE.md) and [`docs/PROVIDERS.md`](./docs/PROVIDERS.md)
|
|
32
33
|
- **Agent bootstrap summary** → [`docs/AGENT_PROTOCOL_SUMMARY.md`](./docs/AGENT_PROTOCOL_SUMMARY.md)
|
|
34
|
+
- **Portable ForgeLoop Agent Skill** → [`skills/forgeloop/SKILL.md`](./skills/forgeloop/SKILL.md) and [`docs/AGENT_SKILL.md`](./docs/AGENT_SKILL.md)
|
|
33
35
|
- **Continuing another harness's task** → [`docs/CROSS_HARNESS_CONTINUITY.md`](./docs/CROSS_HARNESS_CONTINUITY.md)
|
|
34
36
|
- **CLI command reference** → [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md)
|
|
35
37
|
- **Artifact & schema reference** → [`docs/ARTIFACT_REFERENCE.md`](./docs/ARTIFACT_REFERENCE.md)
|
|
@@ -113,20 +115,18 @@ npx @cassiomc1/forgeloop doctor
|
|
|
113
115
|
|
|
114
116
|
### 60-second demonstration
|
|
115
117
|
|
|
116
|
-
In a disposable directory, initialize the kit and create an isolated task.
|
|
117
|
-
|
|
118
|
+
In a disposable directory, initialize the kit and create an isolated task.
|
|
119
|
+
Semantic checkpoints require a host-configured `TYPESAFE_API_KEY`; ForgeLoop never persists it.
|
|
118
120
|
|
|
119
121
|
```bash
|
|
120
122
|
npx @cassiomc1/forgeloop init
|
|
121
123
|
forgeloop task-create --task demo --claim src --json
|
|
122
|
-
forgeloop
|
|
124
|
+
forgeloop contract-create --task demo --preset documentation --json
|
|
125
|
+
forgeloop route --task demo --work code --json
|
|
123
126
|
forgeloop preflight --task demo --json
|
|
124
127
|
forgeloop next --task demo --json
|
|
125
128
|
```
|
|
126
129
|
|
|
127
|
-
The last command reports the next safe action; it does not execute code or
|
|
128
|
-
schedule agents.
|
|
129
|
-
|
|
130
130
|
### Optional code attestation
|
|
131
131
|
|
|
132
132
|
Projects may opt into source-content attestation after a valid completion. The
|
|
@@ -152,7 +152,9 @@ results. Provider output is never lifecycle state, evidence, authority,
|
|
|
152
152
|
completion truth, or next-action authority, and it is never executable as a
|
|
153
153
|
protocol command. The optional Ripwire adapter follows the same boundary; see
|
|
154
154
|
[`docs/ADVISORY_CONTEXT.md`](./docs/ADVISORY_CONTEXT.md) and
|
|
155
|
-
[`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md).
|
|
155
|
+
[`docs/RIPWIRE_ADAPTER.md`](./docs/RIPWIRE_ADAPTER.md). The optional OpenSrc
|
|
156
|
+
adapter exposes external package source context through the same boundary; see
|
|
157
|
+
[`docs/OPENSRC_ADAPTER.md`](./docs/OPENSRC_ADAPTER.md).
|
|
156
158
|
|
|
157
159
|
### Optional task boundaries and differential verification
|
|
158
160
|
|
|
@@ -178,8 +180,8 @@ raising `VERIFIED` to `ATTESTED`. See [`docs/REVISION_PROVIDERS.md`](./docs/REVI
|
|
|
178
180
|
|
|
179
181
|
Generic CI provides a platform-neutral revision-range boundary; thin GitHub,
|
|
180
182
|
GitLab, local, or enterprise adapters may translate revisions without adding
|
|
181
|
-
trust rules to the protocol core.
|
|
182
|
-
|
|
183
|
+
trust rules to the protocol core. CLI and Integration API remain cross-platform;
|
|
184
|
+
MCP is optional.
|
|
183
185
|
|
|
184
186
|
### Durable external actions
|
|
185
187
|
|
|
@@ -363,20 +365,20 @@ ForgeLoop supports isolated, concurrent tasks within the same repository via det
|
|
|
363
365
|
# Create an isolated task claiming specific directories
|
|
364
366
|
forgeloop task-create --task auth-feature --claim src/auth --claim tests/auth --json
|
|
365
367
|
|
|
366
|
-
# List active and completed tasks
|
|
367
368
|
forgeloop task-list --json
|
|
368
369
|
|
|
369
|
-
# Ask for deterministic conflict/recovery guidance
|
|
370
370
|
forgeloop next --task auth-feature --json
|
|
371
371
|
|
|
372
|
-
#
|
|
372
|
+
# Release claims only for a STALE or ABANDONED task
|
|
373
373
|
forgeloop task-recover --task auth-feature --acknowledge-recovery --json
|
|
374
374
|
|
|
375
|
-
#
|
|
375
|
+
# Explicitly abandon an active non-terminal task when its objective is no longer valid
|
|
376
|
+
forgeloop task-abandon --task auth-feature --acknowledge-abandonment --json
|
|
377
|
+
|
|
378
|
+
# Reacquire conflict-free claims before mutating a recovered task
|
|
376
379
|
forgeloop task-resume --task auth-feature --json
|
|
377
380
|
|
|
378
|
-
|
|
379
|
-
forgeloop route --task auth-feature --work clean-code --surface backend
|
|
381
|
+
forgeloop route --task auth-feature --work code --surface backend
|
|
380
382
|
forgeloop preflight --task auth-feature --json
|
|
381
383
|
forgeloop advance --task auth-feature --to EXECUTING
|
|
382
384
|
forgeloop complete --task auth-feature --json
|
|
@@ -395,6 +397,12 @@ disabled. The standalone acknowledgement flag is not host-attested authority.
|
|
|
395
397
|
settlement, normal claim-overlap, and clean-checkout checks succeed. Never
|
|
396
398
|
create, edit, or delete `recovery.json` manually.
|
|
397
399
|
|
|
400
|
+
`task-recover` is reserved for canonical `STALE`/`ABANDONED` classification.
|
|
401
|
+
`task-abandon` is the separate explicit path for an active non-terminal task:
|
|
402
|
+
it records `TASK_ABANDONED`, releases claims as `RELEASED_BY_RECOVERY`, keeps
|
|
403
|
+
the phase unchanged, and never implies completion or publication. `clear-state`
|
|
404
|
+
only removes a checkpoint and is not a claim-release or abandonment mechanism.
|
|
405
|
+
|
|
398
406
|
### Executable policy verification & brownfield baselines
|
|
399
407
|
|
|
400
408
|
ForgeLoop enforces automated, non-interactive verification rules (`rules.json`) with zero interactive dependencies:
|
|
@@ -431,12 +439,20 @@ See [`docs/CLI_REFERENCE.md`](./docs/CLI_REFERENCE.md) and [`LOOP_SYSTEM_DESIGN.
|
|
|
431
439
|
|
|
432
440
|
## Architecture flow
|
|
433
441
|
|
|
442
|
+
<a href="./docs/assets/diagrams/forgeloop-engineering-flow.html">
|
|
443
|
+
<img src="./docs/assets/forgeloop-lifecycle-animated.svg" alt="Animated ForgeLoop evidence-first loop: Contract, Route, Preflight, Execute, Evidence, Review, VALID, with an evidence-only correction loop" width="100%">
|
|
444
|
+
</a>
|
|
445
|
+
|
|
446
|
+
*Animation: the rail pulses through each step in order. It loops forever and
|
|
447
|
+
respects reduced-motion settings. Select the image to open the full animated
|
|
448
|
+
interactive explorer.*
|
|
449
|
+
|
|
434
450
|
The canonical source is the typed Archify workflow
|
|
435
451
|
[`docs/diagrams/forgeloop-engineering-flow.workflow.json`](./docs/diagrams/forgeloop-engineering-flow.workflow.json).
|
|
436
452
|
The committed animated interactive explorer is
|
|
437
453
|
[`docs/assets/diagrams/forgeloop-engineering-flow.html`](./docs/assets/diagrams/forgeloop-engineering-flow.html),
|
|
438
454
|
which traces it. The
|
|
439
|
-
|
|
455
|
+
detailed, self-contained SVG fallback is
|
|
440
456
|
[`docs/assets/diagrams/forgeloop-engineering-flow.svg`](./docs/assets/diagrams/forgeloop-engineering-flow.svg),
|
|
441
457
|
and the deterministic hash receipt is
|
|
442
458
|
[`docs/assets/diagrams/forgeloop-engineering-flow.receipt.json`](./docs/assets/diagrams/forgeloop-engineering-flow.receipt.json).
|
|
@@ -449,8 +465,6 @@ The broader architecture and the CLI-only search boundary are in
|
|
|
449
465
|
|
|
450
466
|
[Open the animated ForgeLoop evidence-first engineering flow](./docs/assets/diagrams/forgeloop-engineering-flow.html)
|
|
451
467
|
|
|
452
|
-

|
|
453
|
-
|
|
454
468
|
Two focused, source-bound workflow
|
|
455
469
|
diagrams complement it. The [Verification Trust Flow source](./docs/diagrams/forgeloop-verification-trust-flow.workflow.json),
|
|
456
470
|
[animated explorer](./docs/assets/diagrams/forgeloop-verification-trust-flow.html),
|
|
@@ -516,8 +530,9 @@ it must not infer current ownership from `task.json` or `recovery.json` alone.
|
|
|
516
530
|
|
|
517
531
|
## Security and dependency boundary
|
|
518
532
|
|
|
519
|
-
Runtime uses Node built-ins and approved exact `
|
|
520
|
-
agents, providers, plugins, services,
|
|
533
|
+
Runtime uses Node built-ins and the approved exact `@typesafe-ai/sdk` and
|
|
534
|
+
`smol-toml` dependencies; it installs no agents, providers, plugins, services,
|
|
535
|
+
or telemetry. Paths, symlinks, JSON,
|
|
521
536
|
manifests, schemas, receipts, and secret-like values are bounded or checked.
|
|
522
537
|
Install-capable verification requires trusted host authority; see
|
|
523
538
|
[`THREAT_MODEL.md`](./THREAT_MODEL.md).
|
package/TERMINOLOGY.md
CHANGED
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
| Integration level | The capability tier of an execution environment (`INSTRUCTION_DISCOVERED`, `PROTOCOL_CAPABLE`, `PROTOCOL_LIMITED`, `CONFORMANCE_VERIFIED`). |
|
|
34
34
|
| Recovered task | A non-terminal task whose ordinary mutation authority is suspended and whose effective write claims are released by durable `recovery.json` state. |
|
|
35
35
|
| Recovery acknowledgement | A caller declaration that it intends to recover a task classified `STALE` or `ABANDONED`; it is not a host-attested authority grant. |
|
|
36
|
+
| Active-task abandonment | An explicit caller-acknowledged `task-abandon` operation that releases validated claims for a non-terminal active task without changing its phase or asserting completion. |
|
|
37
|
+
| Abandonment event | The append-only `TASK_ABANDONED` recovery boundary and its transaction witness; it is distinct from automatic stale-task recovery and from completion. |
|
|
36
38
|
| Historical claims | The write claims retained in `task.json` as task history, including while recovery releases their active ownership. |
|
|
37
39
|
| Effective claims | The claims currently enforced for ownership conflicts: descriptor claims for an active task, or an empty set after validator-backed completion or active recovery. |
|
|
38
40
|
| Claim reacquisition | The serialized `task-resume` operation that rechecks conflicts and checkout cleanliness before removing recovery state and restoring mutation authority. |
|