@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
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
"license": "MIT"
|
|
16
16
|
},
|
|
17
17
|
"input": {
|
|
18
|
-
"sha256": "
|
|
19
|
-
"bytes":
|
|
18
|
+
"sha256": "eb8ca8fdfceb9e50cf7cd07be8622dcac127cfee80c8e2929d604c40138cc594",
|
|
19
|
+
"bytes": 9910
|
|
20
20
|
},
|
|
21
21
|
"artifacts": {
|
|
22
22
|
"html": {
|
|
23
|
-
"sha256": "
|
|
24
|
-
"bytes":
|
|
23
|
+
"sha256": "58f12b47996c7e901dadbf60988e0a8aa9b4af3687e3924129e87f62a9a13f89",
|
|
24
|
+
"bytes": 653311
|
|
25
25
|
},
|
|
26
26
|
"svg": {
|
|
27
|
-
"sha256": "
|
|
27
|
+
"sha256": "876c6400a34f9fe9773e61d968ddf773669cc14153933de2b2ceccd4386506a7",
|
|
28
28
|
"bytes": 216543
|
|
29
29
|
}
|
|
30
30
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg data-archify-version="2.15.0" data-forgeloop-source-sha256="
|
|
1
|
+
<svg data-archify-version="2.15.0" data-forgeloop-source-sha256="eb8ca8fdfceb9e50cf7cd07be8622dcac127cfee80c8e2929d604c40138cc594" data-theme="dark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1024" role="img" aria-labelledby="archify-diagram-title archify-diagram-description" data-animation="trace" data-preset="signal-flow" data-quality-profile="showcase">
|
|
2
2
|
<style>
|
|
3
3
|
.c-bg-rect { fill: var(--bg); }
|
|
4
4
|
/* Keep boundary labels clear of the first node in each group. */
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en" data-theme="dark" data-preset="signal-flow" data-present="true">
|
|
3
3
|
<head>
|
|
4
|
-
<meta name="forgeloop-diagram-source-sha256" content="
|
|
4
|
+
<meta name="forgeloop-diagram-source-sha256" content="3eb4ed7dc7566cf786311b230336b88ff214889ec5a86bb8f2cf0b629a50ae95">
|
|
5
5
|
<meta name="forgeloop-diagram-renderer" content="archify@2.15.0 (e1ac748f19cf805e44bf74fb93c796662152e273)">
|
|
6
6
|
<meta charset="UTF-8">
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
@@ -4992,8 +4992,8 @@
|
|
|
4992
4992
|
<path data-edge-from="gates" data-edge-to="preflight" data-edge-key="4" data-edge-id="gates-preflight" data-composition-points="430,269;430,312;500,312;500,277" d="M 430 269 L 430 312 L 500 312 L 500 277" class="a-security" data-animate="edge" style="--step:4" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
4993
4993
|
<path data-edge-from="preflight" data-edge-to="work" data-edge-key="5" data-edge-id="preflight-work" data-composition-points="500,277;500,290;500,290;500,341" d="M 500 277 L 500 290 L 500 290 L 500 341" class="a-emphasis" data-animate="edge" style="--step:5" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
4994
4994
|
<path data-edge-from="work" data-edge-to="evidence" data-edge-key="6" data-edge-id="work-evidence" data-composition-points="500,393;500,414;500,414;500,457" d="M 500 393 L 500 414 L 500 414 L 500 457" class="a-dashed" data-animate="edge" style="--step:6" stroke-width="1.4" marker-end="url(#arrowhead-dashed)"/>
|
|
4995
|
-
<path data-edge-from="evidence" data-edge-to="review" data-edge-key="7" data-edge-id="evidence-review" data-composition-points="
|
|
4996
|
-
<path data-edge-from="review" data-edge-to="valid" data-edge-key="8" data-edge-id="review-valid" data-composition-points="
|
|
4995
|
+
<path data-edge-from="evidence" data-edge-to="review" data-edge-key="7" data-edge-id="evidence-review" data-composition-points="500,525;500,600;500,600;500,713" d="M 500 525 L 500 600 L 500 600 L 500 713" class="a-emphasis" data-animate="edge" style="--step:7" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
4996
|
+
<path data-edge-from="review" data-edge-to="valid" data-edge-key="8" data-edge-id="review-valid" data-composition-points="531,739;594,739" d="M 531 739 L 594 739" class="a-emphasis" data-animate="edge" style="--step:8" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
4997
4997
|
<path data-edge-from="evidence" data-edge-to="diagnose" data-edge-key="9" data-edge-id="evidence-diagnose" data-composition-points="465,491;360,491;360,615;325,615" d="M 465 491 L 360 491 L 360 615 L 325 615" class="a-security" data-animate="edge" style="--step:12" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
4998
4998
|
<path data-edge-from="diagnose" data-edge-to="correct" data-edge-key="10" data-edge-id="diagnose-correct" data-composition-points="275,615;167,615;167,615;245,615" d="M 275 615 L 167 615 L 167 615 L 245 615" class="a-dashed" data-animate="edge" style="--step:12" stroke-width="1.4" marker-end="url(#arrowhead-dashed)"/>
|
|
4999
4999
|
<path data-edge-from="correct" data-edge-to="evidence" data-edge-key="11" data-edge-id="correct-evidence" data-composition-points="195,615;160,615;160,491;465,491" d="M 195 615 L 160 615 L 160 491 L 465 491" class="a-security" data-animate="edge" style="--step:12" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
@@ -5049,16 +5049,16 @@
|
|
|
5049
5049
|
<text data-detail="fine" x="300" y="265" class="t-security" font-size="6.3" text-anchor="middle">fail closed</text>
|
|
5050
5050
|
</g>
|
|
5051
5051
|
|
|
5052
|
-
<g id="node-gates" data-node-id="gates" data-node-label="
|
|
5053
|
-
<title>
|
|
5052
|
+
<g id="node-gates" data-node-id="gates" data-node-label="Gates" tabindex="0" role="button" aria-label="Focus Gates, claims + tasks, Policy Boundary › Contract boundary › Route + authorize" aria-pressed="false" data-node-kind="security" data-node-sublabel="claims + tasks" data-node-context="Policy Boundary › Contract boundary › Route + authorize">
|
|
5053
|
+
<title>Gates · claims + tasks · Policy Boundary › Contract boundary › Route + authorize</title>
|
|
5054
5054
|
<rect x="399" y="217" width="62" height="52" rx="6" class="c-mask"/>
|
|
5055
5055
|
<rect x="399" y="217" width="62" height="52" rx="6" class="c-security" data-animate="node" style="--step:4" stroke-width="1.5"/>
|
|
5056
5056
|
<g aria-hidden="true" data-semantic-sigil="security" class="semantic-sigil s-security" transform="translate(405 223) scale(0.6875)">
|
|
5057
5057
|
<path d="M8 2.2 13 4v3.5c0 3.1-1.8 5.4-5 6.5-3.2-1.1-5-3.4-5-6.5V4Z"/>
|
|
5058
5058
|
<path d="m5.8 8 1.5 1.5 3-3"/>
|
|
5059
5059
|
</g>
|
|
5060
|
-
<text data-detail-anchor x="430" y="238" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">
|
|
5061
|
-
<text data-detail="context" x="430" y="255" class="t-muted" font-size="
|
|
5060
|
+
<text data-detail-anchor x="430" y="238" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">Gates</text>
|
|
5061
|
+
<text data-detail="context" x="430" y="255" class="t-muted" font-size="6.4" text-anchor="middle">claims + tasks</text>
|
|
5062
5062
|
</g>
|
|
5063
5063
|
|
|
5064
5064
|
<g id="node-preflight" data-node-id="preflight" data-node-label="READY" tabindex="0" role="button" aria-label="Focus READY, binding, Policy Boundary › Contract boundary › Route + authorize" aria-pressed="false" data-node-kind="security" data-node-sublabel="binding" data-node-tag="Preflight" data-node-context="Policy Boundary › Contract boundary › Route + authorize">
|
|
@@ -5074,15 +5074,15 @@
|
|
|
5074
5074
|
<text data-detail="fine" x="500" y="265" class="t-security" font-size="7" text-anchor="middle">Preflight</text>
|
|
5075
5075
|
</g>
|
|
5076
5076
|
|
|
5077
|
-
<g id="node-work" data-node-id="work" data-node-label="
|
|
5078
|
-
<title>
|
|
5077
|
+
<g id="node-work" data-node-id="work" data-node-label="Execute" tabindex="0" role="button" aria-label="Focus Execute, run task, Resumable Execution › Route + authorize" aria-pressed="false" data-node-kind="backend" data-node-sublabel="run task" data-node-context="Resumable Execution › Route + authorize">
|
|
5078
|
+
<title>Execute · run task · Resumable Execution › Route + authorize</title>
|
|
5079
5079
|
<rect x="469" y="341" width="62" height="52" rx="6" class="c-mask"/>
|
|
5080
5080
|
<rect x="469" y="341" width="62" height="52" rx="6" class="c-backend" data-animate="node" style="--step:6" stroke-width="1.5"/>
|
|
5081
5081
|
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(475 347) scale(0.6875)">
|
|
5082
5082
|
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
5083
5083
|
</g>
|
|
5084
|
-
<text data-detail-anchor x="500" y="362" class="t-primary" font-size="
|
|
5085
|
-
<text data-detail="context" x="500" y="379" class="t-muted" font-size="8" text-anchor="middle">
|
|
5084
|
+
<text data-detail-anchor x="500" y="362" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">Execute</text>
|
|
5085
|
+
<text data-detail="context" x="500" y="379" class="t-muted" font-size="8" text-anchor="middle">run task</text>
|
|
5086
5086
|
</g>
|
|
5087
5087
|
|
|
5088
5088
|
<g id="node-evidence" data-node-id="evidence" data-node-label="Evidence" tabindex="0" role="button" aria-label="Focus Evidence, run-check, Evidence Ledger › Evidence boundary › Route + authorize" aria-pressed="false" data-node-kind="database" data-node-sublabel="run-check" data-node-tag="observed" data-node-context="Evidence Ledger › Evidence boundary › Route + authorize">
|
|
@@ -5098,28 +5098,28 @@
|
|
|
5098
5098
|
<text data-detail="fine" x="500" y="513" class="t-database" font-size="7" text-anchor="middle">observed</text>
|
|
5099
5099
|
</g>
|
|
5100
5100
|
|
|
5101
|
-
<g id="node-review" data-node-id="review" data-node-label="Review" tabindex="0" role="button" aria-label="Focus Review, drift, Review + Closure ›
|
|
5102
|
-
<title>Review · drift · Review + Closure ›
|
|
5103
|
-
<rect x="
|
|
5104
|
-
<rect x="
|
|
5105
|
-
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(
|
|
5101
|
+
<g id="node-review" data-node-id="review" data-node-label="Review" tabindex="0" role="button" aria-label="Focus Review, check drift, Review + Closure › Route + authorize" aria-pressed="false" data-node-kind="backend" data-node-sublabel="check drift" data-node-context="Review + Closure › Route + authorize">
|
|
5102
|
+
<title>Review · check drift · Review + Closure › Route + authorize</title>
|
|
5103
|
+
<rect x="469" y="713" width="62" height="52" rx="6" class="c-mask"/>
|
|
5104
|
+
<rect x="469" y="713" width="62" height="52" rx="6" class="c-backend" data-animate="node" style="--step:8" stroke-width="1.5"/>
|
|
5105
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(475 719) scale(0.6875)">
|
|
5106
5106
|
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
5107
5107
|
</g>
|
|
5108
|
-
<text data-detail-anchor x="
|
|
5109
|
-
<text data-detail="context" x="
|
|
5108
|
+
<text data-detail-anchor x="500" y="734" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">Review</text>
|
|
5109
|
+
<text data-detail="context" x="500" y="751" class="t-muted" font-size="8" text-anchor="middle">check drift</text>
|
|
5110
5110
|
</g>
|
|
5111
5111
|
|
|
5112
|
-
<g id="node-valid" data-node-id="valid" data-node-label="VALID" tabindex="0" role="button" aria-label="Focus VALID, completion,
|
|
5113
|
-
<title>VALID · completion ·
|
|
5114
|
-
<rect x="
|
|
5115
|
-
<rect x="
|
|
5116
|
-
<g aria-hidden="true" data-semantic-sigil="database" class="semantic-sigil s-database" transform="translate(
|
|
5112
|
+
<g id="node-valid" data-node-id="valid" data-node-label="VALID" tabindex="0" role="button" aria-label="Focus VALID, completion, Review + Closure › Execute + verify" aria-pressed="false" data-node-kind="database" data-node-sublabel="completion" data-node-tag="verified" data-node-context="Review + Closure › Execute + verify">
|
|
5113
|
+
<title>VALID · completion · Review + Closure › Execute + verify · verified</title>
|
|
5114
|
+
<rect x="594" y="705" width="62" height="68" rx="6" class="c-mask"/>
|
|
5115
|
+
<rect x="594" y="705" width="62" height="68" rx="6" class="c-database" data-animate="node" style="--step:9" stroke-width="1.5"/>
|
|
5116
|
+
<g aria-hidden="true" data-semantic-sigil="database" class="semantic-sigil s-database" transform="translate(600 711) scale(0.6875)">
|
|
5117
5117
|
<ellipse cx="8" cy="4" rx="5" ry="2"/>
|
|
5118
5118
|
<path d="M3 4v8c0 1.1 2.2 2 5 2s5-.9 5-2V4M3 8c0 1.1 2.2 2 5 2s5-.9 5-2"/>
|
|
5119
5119
|
</g>
|
|
5120
|
-
<text data-detail-anchor x="625" y="
|
|
5121
|
-
<text data-detail="context" x="625" y="
|
|
5122
|
-
<text data-detail="fine" x="625" y="
|
|
5120
|
+
<text data-detail-anchor x="625" y="726" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">VALID</text>
|
|
5121
|
+
<text data-detail="context" x="625" y="743" class="t-muted" font-size="8" text-anchor="middle">completion</text>
|
|
5122
|
+
<text data-detail="fine" x="625" y="761" class="t-database" font-size="7" text-anchor="middle">verified</text>
|
|
5123
5123
|
</g>
|
|
5124
5124
|
|
|
5125
5125
|
<g id="node-diagnose" data-node-id="diagnose" data-node-label="Diagnose" tabindex="0" role="button" aria-label="Focus Diagnose, failure, Recovery + Stops › Reconcile before retry › Discover + scope" aria-pressed="false" data-node-kind="messagebus" data-node-sublabel="failure" data-node-context="Recovery + Stops › Reconcile before retry › Discover + scope">
|
|
@@ -5391,6 +5391,7 @@
|
|
|
5391
5391
|
<li>• Execution starts only after PREFLIGHT_READY</li>
|
|
5392
5392
|
<li>• Workspace binding is optional but blocks mismatched execution</li>
|
|
5393
5393
|
<li>• Failures return to diagnosis before another claim</li>
|
|
5394
|
+
<li>• Evidence-only completion rejection reopens verification from review</li>
|
|
5394
5395
|
<li>• Completion is validator-backed, not inferred from a screenshot</li>
|
|
5395
5396
|
<li>• Blocked pre-execution refresh requires a valid ledger and revised route</li>
|
|
5396
5397
|
</ul>
|
|
@@ -5423,6 +5424,18 @@
|
|
|
5423
5424
|
</ul>
|
|
5424
5425
|
</div>
|
|
5425
5426
|
|
|
5427
|
+
<div class="card">
|
|
5428
|
+
<div class="card-header">
|
|
5429
|
+
<div class="card-dot violet"></div>
|
|
5430
|
+
<h3>Semantic checkpoint</h3>
|
|
5431
|
+
</div>
|
|
5432
|
+
<ul>
|
|
5433
|
+
<li>• Jev is mandatory at required semantic checkpoints</li>
|
|
5434
|
+
<li>• Typed Jev output is bounded non-authoritative input</li>
|
|
5435
|
+
<li>• Jev cannot advance lifecycle, release claims, create evidence, or complete</li>
|
|
5436
|
+
</ul>
|
|
5437
|
+
</div>
|
|
5438
|
+
|
|
5426
5439
|
<div class="card">
|
|
5427
5440
|
<div class="card-header">
|
|
5428
5441
|
<div class="card-dot emerald"></div>
|
|
@@ -15,17 +15,17 @@
|
|
|
15
15
|
"license": "MIT"
|
|
16
16
|
},
|
|
17
17
|
"input": {
|
|
18
|
-
"sha256": "
|
|
19
|
-
"bytes":
|
|
18
|
+
"sha256": "3eb4ed7dc7566cf786311b230336b88ff214889ec5a86bb8f2cf0b629a50ae95",
|
|
19
|
+
"bytes": 10484
|
|
20
20
|
},
|
|
21
21
|
"artifacts": {
|
|
22
22
|
"html": {
|
|
23
|
-
"sha256": "
|
|
24
|
-
"bytes":
|
|
23
|
+
"sha256": "e56ebf6f1224de3d19dfc318f33c2cbd1c13416a0740007a8a35f07a3f3a76b7",
|
|
24
|
+
"bytes": 649363
|
|
25
25
|
},
|
|
26
26
|
"svg": {
|
|
27
|
-
"sha256": "
|
|
28
|
-
"bytes":
|
|
27
|
+
"sha256": "42571b1a2ffc1a97f6fd11875078603e72b6f0481648d30972381b74b05971e8",
|
|
28
|
+
"bytes": 211291
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
31
|
"staticSvg": {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg data-archify-version="2.15.0" data-forgeloop-source-sha256="
|
|
1
|
+
<svg data-archify-version="2.15.0" data-forgeloop-source-sha256="3eb4ed7dc7566cf786311b230336b88ff214889ec5a86bb8f2cf0b629a50ae95" data-theme="dark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850 900" role="img" aria-labelledby="archify-diagram-title archify-diagram-description" data-animation="trace" data-preset="signal-flow" data-quality-profile="showcase">
|
|
2
2
|
<style>
|
|
3
3
|
.c-bg-rect { fill: var(--bg); }
|
|
4
4
|
/* Keep boundary labels clear of the first node in each group. */
|
|
@@ -4802,8 +4802,8 @@
|
|
|
4802
4802
|
<path data-edge-from="gates" data-edge-to="preflight" data-edge-key="4" data-edge-id="gates-preflight" data-composition-points="430,269;430,312;500,312;500,277" d="M 430 269 L 430 312 L 500 312 L 500 277" class="a-security" data-animate="edge" style="--step:4" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
4803
4803
|
<path data-edge-from="preflight" data-edge-to="work" data-edge-key="5" data-edge-id="preflight-work" data-composition-points="500,277;500,290;500,290;500,341" d="M 500 277 L 500 290 L 500 290 L 500 341" class="a-emphasis" data-animate="edge" style="--step:5" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
4804
4804
|
<path data-edge-from="work" data-edge-to="evidence" data-edge-key="6" data-edge-id="work-evidence" data-composition-points="500,393;500,414;500,414;500,457" d="M 500 393 L 500 414 L 500 414 L 500 457" class="a-dashed" data-animate="edge" style="--step:6" stroke-width="1.4" marker-end="url(#arrowhead-dashed)"/>
|
|
4805
|
-
<path data-edge-from="evidence" data-edge-to="review" data-edge-key="7" data-edge-id="evidence-review" data-composition-points="
|
|
4806
|
-
<path data-edge-from="review" data-edge-to="valid" data-edge-key="8" data-edge-id="review-valid" data-composition-points="
|
|
4805
|
+
<path data-edge-from="evidence" data-edge-to="review" data-edge-key="7" data-edge-id="evidence-review" data-composition-points="500,525;500,600;500,600;500,713" d="M 500 525 L 500 600 L 500 600 L 500 713" class="a-emphasis" data-animate="edge" style="--step:7" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
4806
|
+
<path data-edge-from="review" data-edge-to="valid" data-edge-key="8" data-edge-id="review-valid" data-composition-points="531,739;594,739" d="M 531 739 L 594 739" class="a-emphasis" data-animate="edge" style="--step:8" stroke-width="1.8" marker-end="url(#arrowhead-emphasis)"/>
|
|
4807
4807
|
<path data-edge-from="evidence" data-edge-to="diagnose" data-edge-key="9" data-edge-id="evidence-diagnose" data-composition-points="465,491;360,491;360,615;325,615" d="M 465 491 L 360 491 L 360 615 L 325 615" class="a-security" data-animate="edge" style="--step:12" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
4808
4808
|
<path data-edge-from="diagnose" data-edge-to="correct" data-edge-key="10" data-edge-id="diagnose-correct" data-composition-points="275,615;167,615;167,615;245,615" d="M 275 615 L 167 615 L 167 615 L 245 615" class="a-dashed" data-animate="edge" style="--step:12" stroke-width="1.4" marker-end="url(#arrowhead-dashed)"/>
|
|
4809
4809
|
<path data-edge-from="correct" data-edge-to="evidence" data-edge-key="11" data-edge-id="correct-evidence" data-composition-points="195,615;160,615;160,491;465,491" d="M 195 615 L 160 615 L 160 491 L 465 491" class="a-security" data-animate="edge" style="--step:12" stroke-width="1.4" marker-end="url(#arrowhead-security)"/>
|
|
@@ -4859,16 +4859,16 @@
|
|
|
4859
4859
|
<text data-detail="fine" x="300" y="265" class="t-security" font-size="6.3" text-anchor="middle">fail closed</text>
|
|
4860
4860
|
</g>
|
|
4861
4861
|
|
|
4862
|
-
<g id="node-gates" data-node-id="gates" data-node-label="
|
|
4863
|
-
<title>
|
|
4862
|
+
<g id="node-gates" data-node-id="gates" data-node-label="Gates" tabindex="0" role="button" aria-label="Focus Gates, claims + tasks, Policy Boundary › Contract boundary › Route + authorize" aria-pressed="false" data-node-kind="security" data-node-sublabel="claims + tasks" data-node-context="Policy Boundary › Contract boundary › Route + authorize">
|
|
4863
|
+
<title>Gates · claims + tasks · Policy Boundary › Contract boundary › Route + authorize</title>
|
|
4864
4864
|
<rect x="399" y="217" width="62" height="52" rx="6" class="c-mask"/>
|
|
4865
4865
|
<rect x="399" y="217" width="62" height="52" rx="6" class="c-security" data-animate="node" style="--step:4" stroke-width="1.5"/>
|
|
4866
4866
|
<g aria-hidden="true" data-semantic-sigil="security" class="semantic-sigil s-security" transform="translate(405 223) scale(0.6875)">
|
|
4867
4867
|
<path d="M8 2.2 13 4v3.5c0 3.1-1.8 5.4-5 6.5-3.2-1.1-5-3.4-5-6.5V4Z"/>
|
|
4868
4868
|
<path d="m5.8 8 1.5 1.5 3-3"/>
|
|
4869
4869
|
</g>
|
|
4870
|
-
<text data-detail-anchor="true" x="430" y="238" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">
|
|
4871
|
-
<text data-detail="context" x="430" y="255" class="t-muted" font-size="
|
|
4870
|
+
<text data-detail-anchor="true" x="430" y="238" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">Gates</text>
|
|
4871
|
+
<text data-detail="context" x="430" y="255" class="t-muted" font-size="6.4" text-anchor="middle">claims + tasks</text>
|
|
4872
4872
|
</g>
|
|
4873
4873
|
|
|
4874
4874
|
<g id="node-preflight" data-node-id="preflight" data-node-label="READY" tabindex="0" role="button" aria-label="Focus READY, binding, Policy Boundary › Contract boundary › Route + authorize" aria-pressed="false" data-node-kind="security" data-node-sublabel="binding" data-node-tag="Preflight" data-node-context="Policy Boundary › Contract boundary › Route + authorize">
|
|
@@ -4884,15 +4884,15 @@
|
|
|
4884
4884
|
<text data-detail="fine" x="500" y="265" class="t-security" font-size="7" text-anchor="middle">Preflight</text>
|
|
4885
4885
|
</g>
|
|
4886
4886
|
|
|
4887
|
-
<g id="node-work" data-node-id="work" data-node-label="
|
|
4888
|
-
<title>
|
|
4887
|
+
<g id="node-work" data-node-id="work" data-node-label="Execute" tabindex="0" role="button" aria-label="Focus Execute, run task, Resumable Execution › Route + authorize" aria-pressed="false" data-node-kind="backend" data-node-sublabel="run task" data-node-context="Resumable Execution › Route + authorize">
|
|
4888
|
+
<title>Execute · run task · Resumable Execution › Route + authorize</title>
|
|
4889
4889
|
<rect x="469" y="341" width="62" height="52" rx="6" class="c-mask"/>
|
|
4890
4890
|
<rect x="469" y="341" width="62" height="52" rx="6" class="c-backend" data-animate="node" style="--step:6" stroke-width="1.5"/>
|
|
4891
4891
|
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(475 347) scale(0.6875)">
|
|
4892
4892
|
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
4893
4893
|
</g>
|
|
4894
|
-
<text data-detail-anchor="true" x="500" y="362" class="t-primary" font-size="
|
|
4895
|
-
<text data-detail="context" x="500" y="379" class="t-muted" font-size="8" text-anchor="middle">
|
|
4894
|
+
<text data-detail-anchor="true" x="500" y="362" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">Execute</text>
|
|
4895
|
+
<text data-detail="context" x="500" y="379" class="t-muted" font-size="8" text-anchor="middle">run task</text>
|
|
4896
4896
|
</g>
|
|
4897
4897
|
|
|
4898
4898
|
<g id="node-evidence" data-node-id="evidence" data-node-label="Evidence" tabindex="0" role="button" aria-label="Focus Evidence, run-check, Evidence Ledger › Evidence boundary › Route + authorize" aria-pressed="false" data-node-kind="database" data-node-sublabel="run-check" data-node-tag="observed" data-node-context="Evidence Ledger › Evidence boundary › Route + authorize">
|
|
@@ -4908,28 +4908,28 @@
|
|
|
4908
4908
|
<text data-detail="fine" x="500" y="513" class="t-database" font-size="7" text-anchor="middle">observed</text>
|
|
4909
4909
|
</g>
|
|
4910
4910
|
|
|
4911
|
-
<g id="node-review" data-node-id="review" data-node-label="Review" tabindex="0" role="button" aria-label="Focus Review, drift, Review + Closure ›
|
|
4912
|
-
<title>Review · drift · Review + Closure ›
|
|
4913
|
-
<rect x="
|
|
4914
|
-
<rect x="
|
|
4915
|
-
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(
|
|
4911
|
+
<g id="node-review" data-node-id="review" data-node-label="Review" tabindex="0" role="button" aria-label="Focus Review, check drift, Review + Closure › Route + authorize" aria-pressed="false" data-node-kind="backend" data-node-sublabel="check drift" data-node-context="Review + Closure › Route + authorize">
|
|
4912
|
+
<title>Review · check drift · Review + Closure › Route + authorize</title>
|
|
4913
|
+
<rect x="469" y="713" width="62" height="52" rx="6" class="c-mask"/>
|
|
4914
|
+
<rect x="469" y="713" width="62" height="52" rx="6" class="c-backend" data-animate="node" style="--step:8" stroke-width="1.5"/>
|
|
4915
|
+
<g aria-hidden="true" data-semantic-sigil="backend" class="semantic-sigil s-backend" transform="translate(475 719) scale(0.6875)">
|
|
4916
4916
|
<path d="M6 3 3 8l3 5M10 3l3 5-3 5"/>
|
|
4917
4917
|
</g>
|
|
4918
|
-
<text data-detail-anchor="true" x="
|
|
4919
|
-
<text data-detail="context" x="
|
|
4918
|
+
<text data-detail-anchor="true" x="500" y="734" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">Review</text>
|
|
4919
|
+
<text data-detail="context" x="500" y="751" class="t-muted" font-size="8" text-anchor="middle">check drift</text>
|
|
4920
4920
|
</g>
|
|
4921
4921
|
|
|
4922
|
-
<g id="node-valid" data-node-id="valid" data-node-label="VALID" tabindex="0" role="button" aria-label="Focus VALID, completion,
|
|
4923
|
-
<title>VALID · completion ·
|
|
4924
|
-
<rect x="
|
|
4925
|
-
<rect x="
|
|
4926
|
-
<g aria-hidden="true" data-semantic-sigil="database" class="semantic-sigil s-database" transform="translate(
|
|
4922
|
+
<g id="node-valid" data-node-id="valid" data-node-label="VALID" tabindex="0" role="button" aria-label="Focus VALID, completion, Review + Closure › Execute + verify" aria-pressed="false" data-node-kind="database" data-node-sublabel="completion" data-node-tag="verified" data-node-context="Review + Closure › Execute + verify">
|
|
4923
|
+
<title>VALID · completion · Review + Closure › Execute + verify · verified</title>
|
|
4924
|
+
<rect x="594" y="705" width="62" height="68" rx="6" class="c-mask"/>
|
|
4925
|
+
<rect x="594" y="705" width="62" height="68" rx="6" class="c-database" data-animate="node" style="--step:9" stroke-width="1.5"/>
|
|
4926
|
+
<g aria-hidden="true" data-semantic-sigil="database" class="semantic-sigil s-database" transform="translate(600 711) scale(0.6875)">
|
|
4927
4927
|
<ellipse cx="8" cy="4" rx="5" ry="2"/>
|
|
4928
4928
|
<path d="M3 4v8c0 1.1 2.2 2 5 2s5-.9 5-2V4M3 8c0 1.1 2.2 2 5 2s5-.9 5-2"/>
|
|
4929
4929
|
</g>
|
|
4930
|
-
<text data-detail-anchor="true" x="625" y="
|
|
4931
|
-
<text data-detail="context" x="625" y="
|
|
4932
|
-
<text data-detail="fine" x="625" y="
|
|
4930
|
+
<text data-detail-anchor="true" x="625" y="726" class="t-primary" font-size="11" font-weight="600" text-anchor="middle">VALID</text>
|
|
4931
|
+
<text data-detail="context" x="625" y="743" class="t-muted" font-size="8" text-anchor="middle">completion</text>
|
|
4932
|
+
<text data-detail="fine" x="625" y="761" class="t-database" font-size="7" text-anchor="middle">verified</text>
|
|
4933
4933
|
</g>
|
|
4934
4934
|
|
|
4935
4935
|
<g id="node-diagnose" data-node-id="diagnose" data-node-label="Diagnose" tabindex="0" role="button" aria-label="Focus Diagnose, failure, Recovery + Stops › Reconcile before retry › Discover + scope" aria-pressed="false" data-node-kind="messagebus" data-node-sublabel="failure" data-node-context="Recovery + Stops › Reconcile before retry › Discover + scope">
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!DOCTYPE html>
|
|
2
2
|
<html lang="en" data-theme="dark" data-preset="signal-flow" data-present="true">
|
|
3
3
|
<head>
|
|
4
|
-
<meta name="forgeloop-diagram-source-sha256" content="
|
|
4
|
+
<meta name="forgeloop-diagram-source-sha256" content="86b11945f1ec4325f244c034d81f137646b508ceda5b11fce6729d4242365269">
|
|
5
5
|
<meta name="forgeloop-diagram-renderer" content="archify@2.15.0 (e1ac748f19cf805e44bf74fb93c796662152e273)">
|
|
6
6
|
<meta charset="UTF-8">
|
|
7
7
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
@@ -5375,6 +5375,7 @@
|
|
|
5375
5375
|
</div>
|
|
5376
5376
|
<ul>
|
|
5377
5377
|
<li>• AUTO uses CHANGED or CLAIMED only with a trusted scoped checker</li>
|
|
5378
|
+
<li>• AUTO falls back to CLAIMED when changed paths cannot be safely narrowed and claims are valid; otherwise it falls back to FULL</li>
|
|
5378
5379
|
<li>• Without that capability, AUTO resolves safely to FULL</li>
|
|
5379
5380
|
<li>• Explicit CHANGED or CLAIMED without a checker returns unresolved</li>
|
|
5380
5381
|
<li>• A test name or file filter is not a canonical scope boundary</li>
|
|
@@ -15,16 +15,16 @@
|
|
|
15
15
|
"license": "MIT"
|
|
16
16
|
},
|
|
17
17
|
"input": {
|
|
18
|
-
"sha256": "
|
|
19
|
-
"bytes":
|
|
18
|
+
"sha256": "86b11945f1ec4325f244c034d81f137646b508ceda5b11fce6729d4242365269",
|
|
19
|
+
"bytes": 8930
|
|
20
20
|
},
|
|
21
21
|
"artifacts": {
|
|
22
22
|
"html": {
|
|
23
|
-
"sha256": "
|
|
24
|
-
"bytes":
|
|
23
|
+
"sha256": "3d9fcd1bc6b6757ed88d0e4991913f7b1f746f04e8a649f006a29168960e06b6",
|
|
24
|
+
"bytes": 646999
|
|
25
25
|
},
|
|
26
26
|
"svg": {
|
|
27
|
-
"sha256": "
|
|
27
|
+
"sha256": "9208211a2a7b66baa2c3671e8b6436aabc98f57e9771c33b39ec98c9bd6d8ca3",
|
|
28
28
|
"bytes": 210148
|
|
29
29
|
}
|
|
30
30
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg data-archify-version="2.15.0" data-forgeloop-source-sha256="
|
|
1
|
+
<svg data-archify-version="2.15.0" data-forgeloop-source-sha256="86b11945f1ec4325f244c034d81f137646b508ceda5b11fce6729d4242365269" data-theme="dark" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850 900" role="img" aria-labelledby="archify-diagram-title archify-diagram-description" data-animation="trace" data-preset="signal-flow" data-quality-profile="showcase">
|
|
2
2
|
<style>
|
|
3
3
|
.c-bg-rect { fill: var(--bg); }
|
|
4
4
|
/* Keep boundary labels clear of the first node in each group. */
|
package/docs/diagrams/README.md
CHANGED
|
@@ -39,19 +39,23 @@ dark presentation so it remains legible in repository previews; the adjacent tex
|
|
|
39
39
|
[`README.md`](../../README.md#architecture-flow) carries the same lifecycle
|
|
40
40
|
semantics for text-only readers.
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
is
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
42
|
+
Jev is shown only as a bounded semantic checkpoint outside lifecycle authority.
|
|
43
|
+
Its invocation is mandatory where required, but its typed result cannot advance
|
|
44
|
+
state, release claims, satisfy gates, create evidence, complete a task, or
|
|
45
|
+
authorize publication. Advisory context, including the optional Ripwire adapter,
|
|
46
|
+
is intentionally not drawn as a lifecycle node or transition. It is a
|
|
47
|
+
host-injected, explicit, non-evidence input that can guide inspection while
|
|
48
|
+
remaining outside state, authority, verification, completion, and next-action
|
|
49
|
+
decisions. Its boundary is documented in
|
|
50
|
+
[`ADVISORY_CONTEXT.md`](../ADVISORY_CONTEXT.md) and
|
|
51
|
+
[`RIPWIRE_ADAPTER.md`](../RIPWIRE_ADAPTER.md).
|
|
50
52
|
|
|
51
53
|
Archify is vendored at `vendor/archify/v2.15.0/archify` under its MIT license.
|
|
52
54
|
The exact source commit and cryptographic vendor-tree hash are recorded in
|
|
53
55
|
`vendor/archify/v2.15.0/PIN.json`; generated-file hashes are recorded in the
|
|
54
|
-
receipt
|
|
56
|
+
receipt. A review file binds the current source and SVG fingerprints as a
|
|
57
|
+
review assertion; the checker does not independently authenticate the reviewer
|
|
58
|
+
or prove that a person inspected the rendered artifact.
|
|
55
59
|
|
|
56
60
|
`PIN.json` uses ForgeLoop Archify PIN `schemaVersion: 2`. This version describes
|
|
57
61
|
the metadata and integrity-declaration format and is independent of Archify's
|
|
@@ -422,7 +422,7 @@
|
|
|
422
422
|
"dot": "rose",
|
|
423
423
|
"title": "Trust Levels",
|
|
424
424
|
"items": [
|
|
425
|
-
"PROCESSED
|
|
425
|
+
"PROCESSED is a minimum reported level; MISSING, DISABLED, and INVALID remain separate statuses",
|
|
426
426
|
"VERIFIED means completion, evidence, manifest, and content bindings validate",
|
|
427
427
|
"ATTESTED additionally requires a valid external signature policy",
|
|
428
428
|
"No supplied CI receipt means NOT_VERIFIED, not a trust level"
|
|
@@ -208,8 +208,8 @@
|
|
|
208
208
|
"lane": "policy",
|
|
209
209
|
"col": 3,
|
|
210
210
|
"type": "security",
|
|
211
|
-
"label": "
|
|
212
|
-
"sublabel": "
|
|
211
|
+
"label": "Gates",
|
|
212
|
+
"sublabel": "claims + tasks",
|
|
213
213
|
"width": 62
|
|
214
214
|
},
|
|
215
215
|
{
|
|
@@ -227,8 +227,8 @@
|
|
|
227
227
|
"lane": "execution",
|
|
228
228
|
"col": 4,
|
|
229
229
|
"type": "backend",
|
|
230
|
-
"label": "
|
|
231
|
-
"sublabel": "
|
|
230
|
+
"label": "Execute",
|
|
231
|
+
"sublabel": "run task",
|
|
232
232
|
"width": 62
|
|
233
233
|
},
|
|
234
234
|
{
|
|
@@ -244,21 +244,21 @@
|
|
|
244
244
|
{
|
|
245
245
|
"id": "review",
|
|
246
246
|
"lane": "closure",
|
|
247
|
-
"col":
|
|
247
|
+
"col": 4,
|
|
248
248
|
"type": "backend",
|
|
249
249
|
"label": "Review",
|
|
250
|
-
"sublabel": "drift",
|
|
251
|
-
"width":
|
|
250
|
+
"sublabel": "check drift",
|
|
251
|
+
"width": 62
|
|
252
252
|
},
|
|
253
253
|
{
|
|
254
254
|
"id": "valid",
|
|
255
|
-
"lane": "
|
|
255
|
+
"lane": "closure",
|
|
256
256
|
"col": 5,
|
|
257
257
|
"type": "database",
|
|
258
258
|
"label": "VALID",
|
|
259
259
|
"sublabel": "completion",
|
|
260
|
-
"tag": "
|
|
261
|
-
"width":
|
|
260
|
+
"tag": "verified",
|
|
261
|
+
"width": 62
|
|
262
262
|
},
|
|
263
263
|
{
|
|
264
264
|
"id": "diagnose",
|
|
@@ -349,20 +349,15 @@
|
|
|
349
349
|
"from": "evidence",
|
|
350
350
|
"to": "review",
|
|
351
351
|
"variant": "emphasis",
|
|
352
|
-
"fromSide": "
|
|
353
|
-
"toSide": "
|
|
354
|
-
"route": "
|
|
355
|
-
"channelX": 360
|
|
352
|
+
"fromSide": "bottom",
|
|
353
|
+
"toSide": "top",
|
|
354
|
+
"route": "drop"
|
|
356
355
|
},
|
|
357
356
|
{
|
|
358
357
|
"id": "review-valid",
|
|
359
358
|
"from": "review",
|
|
360
359
|
"to": "valid",
|
|
361
|
-
"variant": "emphasis"
|
|
362
|
-
"fromSide": "right",
|
|
363
|
-
"toSide": "right",
|
|
364
|
-
"route": "outside-right",
|
|
365
|
-
"channelX": 760
|
|
360
|
+
"variant": "emphasis"
|
|
366
361
|
},
|
|
367
362
|
{
|
|
368
363
|
"id": "evidence-diagnose",
|
|
@@ -415,6 +410,7 @@
|
|
|
415
410
|
"Execution starts only after PREFLIGHT_READY",
|
|
416
411
|
"Workspace binding is optional but blocks mismatched execution",
|
|
417
412
|
"Failures return to diagnosis before another claim",
|
|
413
|
+
"Evidence-only completion rejection reopens verification from review",
|
|
418
414
|
"Completion is validator-backed, not inferred from a screenshot",
|
|
419
415
|
"Blocked pre-execution refresh requires a valid ledger and revised route"
|
|
420
416
|
]
|
|
@@ -440,6 +436,15 @@
|
|
|
440
436
|
"Matching task IDs never authorize cross-project transaction reuse"
|
|
441
437
|
]
|
|
442
438
|
},
|
|
439
|
+
{
|
|
440
|
+
"dot": "violet",
|
|
441
|
+
"title": "Semantic checkpoint",
|
|
442
|
+
"items": [
|
|
443
|
+
"Jev is mandatory at required semantic checkpoints",
|
|
444
|
+
"Typed Jev output is bounded non-authoritative input",
|
|
445
|
+
"Jev cannot advance lifecycle, release claims, create evidence, or complete"
|
|
446
|
+
]
|
|
447
|
+
},
|
|
443
448
|
{
|
|
444
449
|
"dot": "emerald",
|
|
445
450
|
"title": "Portable output",
|
|
@@ -369,6 +369,7 @@
|
|
|
369
369
|
"title": "Fail-Closed Narrowing",
|
|
370
370
|
"items": [
|
|
371
371
|
"AUTO uses CHANGED or CLAIMED only with a trusted scoped checker",
|
|
372
|
+
"AUTO falls back to CLAIMED when changed paths cannot be safely narrowed and claims are valid; otherwise it falls back to FULL",
|
|
372
373
|
"Without that capability, AUTO resolves safely to FULL",
|
|
373
374
|
"Explicit CHANGED or CLAIMED without a checker returns unresolved",
|
|
374
375
|
"A test name or file filter is not a canonical scope boundary"
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"diagramId": "forgeloop-code-attestation-flow",
|
|
4
4
|
"status": "approved",
|
|
5
5
|
"binding": {
|
|
6
|
-
"sourceSha256": "
|
|
7
|
-
"svgSha256": "
|
|
6
|
+
"sourceSha256": "eb8ca8fdfceb9e50cf7cd07be8622dcac127cfee80c8e2929d604c40138cc594",
|
|
7
|
+
"svgSha256": "876c6400a34f9fe9773e61d968ddf773669cc14153933de2b2ceccd4386506a7"
|
|
8
8
|
},
|
|
9
9
|
"checks": {
|
|
10
10
|
"darkThemeLegible": true,
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
"textFallbackEquivalent": true,
|
|
16
16
|
"accessibleMetadataPresent": true
|
|
17
17
|
},
|
|
18
|
-
"reviewedBy": "
|
|
19
|
-
"reviewedAt": "2026-09-
|
|
18
|
+
"reviewedBy": "Visual review of desktop and narrow SVG previews",
|
|
19
|
+
"reviewedAt": "2026-09-24"
|
|
20
20
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"diagramId": "forgeloop-engineering-flow",
|
|
4
4
|
"status": "approved",
|
|
5
5
|
"binding": {
|
|
6
|
-
"sourceSha256": "
|
|
7
|
-
"svgSha256": "
|
|
6
|
+
"sourceSha256": "3eb4ed7dc7566cf786311b230336b88ff214889ec5a86bb8f2cf0b629a50ae95",
|
|
7
|
+
"svgSha256": "42571b1a2ffc1a97f6fd11875078603e72b6f0481648d30972381b74b05971e8"
|
|
8
8
|
},
|
|
9
9
|
"checks": {
|
|
10
10
|
"darkThemeLegible": true,
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
"textFallbackEquivalent": true,
|
|
16
16
|
"accessibleMetadataPresent": true
|
|
17
17
|
},
|
|
18
|
-
"reviewedBy": "
|
|
19
|
-
"reviewedAt": "2026-09-
|
|
18
|
+
"reviewedBy": "Visual review of desktop and narrow SVG previews",
|
|
19
|
+
"reviewedAt": "2026-09-24"
|
|
20
20
|
}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
"diagramId": "forgeloop-verification-trust-flow",
|
|
4
4
|
"status": "approved",
|
|
5
5
|
"binding": {
|
|
6
|
-
"sourceSha256": "
|
|
7
|
-
"svgSha256": "
|
|
6
|
+
"sourceSha256": "86b11945f1ec4325f244c034d81f137646b508ceda5b11fce6729d4242365269",
|
|
7
|
+
"svgSha256": "9208211a2a7b66baa2c3671e8b6436aabc98f57e9771c33b39ec98c9bd6d8ca3"
|
|
8
8
|
},
|
|
9
9
|
"checks": {
|
|
10
10
|
"darkThemeLegible": true,
|
|
@@ -15,6 +15,6 @@
|
|
|
15
15
|
"textFallbackEquivalent": true,
|
|
16
16
|
"accessibleMetadataPresent": true
|
|
17
17
|
},
|
|
18
|
-
"reviewedBy": "
|
|
19
|
-
"reviewedAt": "2026-09-
|
|
18
|
+
"reviewedBy": "Visual review of desktop and narrow SVG previews",
|
|
19
|
+
"reviewedAt": "2026-09-24"
|
|
20
20
|
}
|