@cassiomc1/forgeloop 1.13.0 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENT_COMPATIBILITY.md +8 -0
- package/CONTRIBUTING.md +11 -7
- package/DOCS_INDEX.md +37 -4
- package/ENG/c-development-eng.md +2 -2
- package/ENG/cpp-development-eng.md +2 -2
- package/ENG/dotnet-aspnetcore-development-eng.md +7 -1
- package/ENG/flutter-development-eng.md +4 -2
- package/ENG/go-development-eng.md +2 -2
- package/ENG/java-development-eng.md +3 -3
- package/ENG/nodejs-backend-development-eng.md +10 -6
- package/ENG/php-development-eng.md +3 -3
- package/ENG/python-development-eng.md +205 -0
- package/ENG/rust-development-eng.md +42 -1
- package/ENG/sec-code-eng.md +7 -7
- package/ENG/sql-development-eng.md +4 -4
- package/ENG/swift-development-eng.md +5 -4
- package/ENG/test-code-eng.md +1 -1
- package/ENG/typescript-development-eng.md +4 -4
- package/EXECUTION_STATE.md +12 -0
- package/GUIDE_ROUTER.md +6 -0
- package/LICENSE +133 -21
- package/LOOP_ENGINEERING.md +28 -2
- package/LOOP_SYSTEM_DESIGN.md +10 -10
- package/ORCHESTRATOR_INTEGRATION.md +9 -5
- package/PROTOCOL_INTEGRATION.md +55 -2
- package/README.md +63 -59
- package/TERMINOLOGY.md +2 -0
- package/THIRD_PARTY_NOTICES.md +3 -4
- package/THREAT_MODEL.md +140 -1
- package/completions/_forgeloop +29 -3
- package/completions/forgeloop.bash +55 -3
- package/completions/forgeloop.fish +183 -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 +74 -39
- package/docs/AGENT_SKILL.md +66 -0
- package/docs/ARTIFACT_REFERENCE.md +171 -35
- package/docs/AUDIT_UX.md +46 -0
- package/docs/BROWSER_VERIFICATION.md +136 -0
- package/docs/CLI_REFERENCE.md +512 -8
- package/docs/CODE_ATTESTATION.md +2 -2
- package/docs/DOCUMENTATION_GUIDE.md +34 -11
- package/docs/GETTING_STARTED.md +3 -3
- 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 +46 -18
- package/docs/PROVIDERS.md +126 -0
- package/docs/PROVIDER_ARCHITECTURE.md +199 -0
- package/docs/RECIPES.md +9 -0
- package/docs/RELEASE_CHECKLIST.md +116 -12
- package/docs/SECURITY_REVIEW.md +71 -0
- package/docs/SELF_HOSTED_TESTS.md +121 -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 +774 -16
- package/docs/protocol-requirements.json +24 -0
- package/package.json +43 -11
- 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/task-bundle.schema.json +7 -2
- 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 +6 -3
- package/scripts/generate-forgeloop-skill.mjs +133 -0
- package/scripts/jev-smoke.mjs +19 -0
- package/scripts/run-mcp-clean-tests.mjs +30 -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 +316 -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 +289 -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/temporary-paths.js +18 -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 +218 -174
- package/src/commands/action-show.js +5 -2
- package/src/commands/advance.js +5 -1
- package/src/commands/baseline.js +13 -11
- package/src/commands/checkpoint-revalidate.js +192 -0
- package/src/commands/complete.js +19 -3
- package/src/commands/context-plan.js +38 -0
- package/src/commands/contract-create.js +266 -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 +51 -13
- package/src/commands/gate-record.js +194 -0
- package/src/commands/gate-revalidate.js +135 -0
- package/src/commands/handoff-list.js +6 -1
- package/src/commands/handoff-show.js +6 -1
- package/src/commands/migrate-protocol.js +2 -2
- package/src/commands/model-route.js +40 -0
- package/src/commands/next.js +7 -1
- package/src/commands/policy-diff.js +25 -4
- package/src/commands/progress.js +17 -11
- package/src/commands/record-diagnosis.js +3 -0
- package/src/commands/route.js +146 -18
- package/src/commands/semantic-plan.js +41 -0
- package/src/commands/status.js +6 -1
- package/src/commands/storage-backup.js +15 -0
- package/src/commands/storage-migrate.js +5 -0
- package/src/commands/storage-migration-resume.js +5 -0
- package/src/commands/storage-migration-status.js +44 -0
- package/src/commands/storage-restore-resume.js +7 -0
- package/src/commands/storage-restore.js +8 -0
- package/src/commands/task-abandon.js +224 -0
- package/src/commands/task-list.js +8 -43
- package/src/commands/task-migrate-contract-bootstrap-repair.js +288 -0
- package/src/commands/task-migrate.js +3 -3
- package/src/commands/task-recover.js +10 -2
- package/src/commands/task-repair-contract-bootstrap.js +263 -0
- package/src/commands/task-scope.js +18 -2
- package/src/commands/task-show.js +16 -2
- 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 +39 -15
- package/src/commands/validate-receipt.js +8 -1
- package/src/config/guides.json +4 -0
- package/src/core/action-ledger-projection.js +10 -3
- package/src/core/actions.js +38 -75
- package/src/core/activation.js +11 -3
- package/src/core/approvals.js +17 -51
- package/src/core/artifact-registry.js +83 -2
- package/src/core/artifacts.js +81 -27
- package/src/core/attachment-paths.js +45 -0
- package/src/core/attestation-coverage.js +6 -1
- package/src/core/attestation-verifier.js +21 -2
- package/src/core/attestation.js +17 -6
- package/src/core/audit-ux.js +514 -0
- package/src/core/audit.js +6 -1
- 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/bundles.js +160 -66
- package/src/core/checkpoint-revalidation.js +321 -0
- package/src/core/cli-command-definitions.js +350 -7
- package/src/core/code-manifest.js +9 -3
- package/src/core/command-executors.js +274 -108
- package/src/core/command-input.js +136 -44
- package/src/core/completion-artifacts.js +85 -34
- package/src/core/completion-ownership.js +19 -8
- package/src/core/completion-recovery-rebind.js +11 -1
- package/src/core/completion.js +64 -15
- package/src/core/config.js +3 -0
- package/src/core/conformance.js +2 -1
- 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/continuity-lint.js +13 -2
- package/src/core/continuity-reconciliation.js +16 -3
- package/src/core/continuity.js +16 -8
- package/src/core/contract-bootstrap-recovery.js +656 -0
- package/src/core/contract-revision.js +209 -0
- package/src/core/decision/artifact.js +70 -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 +104 -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 +138 -0
- package/src/core/decision/result.js +58 -0
- package/src/core/decision/service.js +181 -0
- package/src/core/decision/state-builder.js +65 -0
- package/src/core/decision/task-bindings.js +35 -0
- package/src/core/decision/test-provider.js +32 -0
- package/src/core/decision/thresholds.js +15 -0
- package/src/core/diagnosis-model.js +11 -0
- package/src/core/diagnosis.js +10 -1
- package/src/core/diagnostic-projection.js +29 -12
- package/src/core/diagnostic-record.js +28 -3
- package/src/core/efficiency.js +6 -1
- package/src/core/error-codes.js +278 -0
- package/src/core/events.js +535 -147
- package/src/core/evidence-readiness.js +9 -0
- package/src/core/execution-prerequisites.js +36 -13
- package/src/core/execution-profile.js +63 -38
- package/src/core/execution.js +26 -40
- package/src/core/filesystem.js +11 -0
- package/src/core/gate-artifact.js +105 -19
- package/src/core/gate-provenance.js +125 -0
- package/src/core/handoff.js +26 -14
- package/src/core/history.js +39 -35
- package/src/core/hypothesis-projection.js +32 -0
- package/src/core/information-gain-projection.js +104 -100
- package/src/core/inspect.js +12 -3
- package/src/core/integration-invocation-policy.js +37 -4
- package/src/core/integration-resources.js +119 -87
- package/src/core/ledger-event-collection.js +189 -0
- package/src/core/ledger-relations.js +23 -0
- 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/native-storage.js +12 -0
- package/src/core/next-action-continuity.js +31 -9
- package/src/core/next-action-model.js +58 -0
- package/src/core/next-action-phases.js +131 -43
- package/src/core/next-action-refresh.js +43 -9
- package/src/core/next-action-review-phase.js +9 -4
- package/src/core/next-action-verification-phase.js +2 -1
- package/src/core/next-action.js +56 -9
- package/src/core/phase.js +266 -103
- package/src/core/policy-engine.js +12 -13
- package/src/core/preflight-consistency.js +89 -62
- package/src/core/preflight-loaders.js +48 -9
- package/src/core/preflight-model.js +6 -1
- package/src/core/preflight.js +29 -12
- package/src/core/progress.js +21 -10
- package/src/core/protocol-info.js +68 -0
- package/src/core/protocol-migration.js +7 -6
- package/src/core/protocol.js +20 -0
- package/src/core/reconcile-closure.js +281 -67
- package/src/core/recovery-history.js +67 -47
- package/src/core/reflection.js +72 -77
- package/src/core/responsibility.js +25 -13
- package/src/core/resumability.js +154 -44
- package/src/core/route-artifact.js +28 -4
- package/src/core/router.js +67 -1
- package/src/core/runtime-context.js +123 -61
- package/src/core/schema-validation.js +11 -3
- 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/settlement.js +12 -1
- package/src/core/signing/bundle-file.js +53 -0
- package/src/core/signing/bundle-reference.js +15 -0
- package/src/core/signing/sigstore.js +60 -33
- package/src/core/signing/statement-file.js +27 -0
- package/src/core/sources.js +37 -0
- package/src/core/storage-runtime-registry.js +41 -0
- package/src/core/structural-quality/artifacts.js +20 -14
- package/src/core/structural-quality/service.js +81 -56
- package/src/core/target-layout.js +1 -1
- package/src/core/task-claim-state.js +249 -15
- package/src/core/task-command.js +21 -1
- package/src/core/task-conflict-inspection.js +133 -102
- package/src/core/task-descriptor.js +29 -22
- package/src/core/task-discovery.js +288 -90
- package/src/core/task-lock.js +66 -306
- package/src/core/task-migration-validation.js +5 -5
- package/src/core/task-migration.js +17 -287
- package/src/core/task-paths.js +13 -0
- package/src/core/task-recovery.js +1 -0
- package/src/core/task-snapshot.js +51 -8
- package/src/core/task-storage-migration.js +18 -0
- package/src/core/templates.js +23 -8
- 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 +94 -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 +164 -105
- package/src/core/trajectory-evaluation.js +15 -3
- package/src/core/trajectory-metrics.js +47 -32
- package/src/core/transaction.js +16 -287
- package/src/core/verification-scope.js +20 -12
- package/src/core/work-state.js +100 -59
- 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/src/repository-index/binary-manager.js +7 -5
- package/src/storage/artifact-bytes.js +22 -0
- package/src/storage/attachment-binding.js +11 -0
- package/src/storage/attachment-files.js +82 -0
- package/src/storage/attachment-references.js +36 -0
- package/src/storage/backup.js +53 -0
- package/src/storage/capabilities.js +31 -0
- package/src/storage/connection-owner.js +119 -0
- package/src/storage/connection.js +376 -0
- package/src/storage/existing-project-scope.js +45 -0
- package/src/storage/export-destination.js +44 -0
- package/src/storage/exporter.js +284 -0
- package/src/storage/file-durability.js +46 -0
- package/src/storage/importer.js +461 -0
- package/src/storage/index.js +74 -0
- package/src/storage/leases.js +63 -0
- package/src/storage/ledger-event-snapshot.js +150 -0
- package/src/storage/ledger-relations.js +220 -0
- package/src/storage/legacy-maintenance-boundary.js +18 -0
- package/src/storage/legacy-signature.js +115 -0
- package/src/storage/maintenance-handoff.js +129 -0
- package/src/storage/maintenance-owner.js +42 -0
- package/src/storage/maintenance.js +310 -0
- package/src/storage/metadata-json.js +35 -0
- package/src/storage/migration-activate.js +59 -0
- package/src/storage/migration-archive.js +57 -0
- package/src/storage/migration-attachment-root.js +61 -0
- package/src/storage/migration-candidate.js +398 -0
- package/src/storage/migration-publication.js +143 -0
- package/src/storage/migration-rollback-admission.js +54 -0
- package/src/storage/migration-rollback-preparation.js +132 -0
- package/src/storage/migration-rollback-publication.js +183 -0
- package/src/storage/migration-rollback-release.js +66 -0
- package/src/storage/migration-rollback-source-stage.js +103 -0
- package/src/storage/migration-rollback.js +43 -0
- package/src/storage/migration-source-partition.js +56 -0
- package/src/storage/migration-source.js +255 -0
- package/src/storage/migration-terminal.js +39 -0
- package/src/storage/migration-validation.js +75 -0
- package/src/storage/migration.js +43 -0
- package/src/storage/operational-attachments.js +49 -0
- package/src/storage/operational-context.js +50 -0
- package/src/storage/project-backup.js +98 -0
- package/src/storage/project-bootstrap.js +24 -0
- package/src/storage/project-boundary.js +79 -0
- package/src/storage/project-read-snapshot.js +18 -0
- package/src/storage/project-replacement.js +137 -0
- package/src/storage/project-restore.js +203 -0
- package/src/storage/record-definitions.js +45 -0
- package/src/storage/repository.js +507 -0
- package/src/storage/restore-journal.js +62 -0
- package/src/storage/restore-layout.js +30 -0
- package/src/storage/restore-preparation.js +84 -0
- package/src/storage/restore-replacement-archive.js +162 -0
- package/src/storage/restore-replacement-owner.js +31 -0
- package/src/storage/restore-replacement-preparation.js +128 -0
- package/src/storage/restore-replacement.js +142 -0
- package/src/storage/restore-terminal.js +32 -0
- package/src/storage/runtime.js +31 -0
- package/src/storage/schema.js +214 -0
- package/src/storage/singleton-import.js +84 -0
- package/src/storage/snapshot-continuity.js +16 -0
- package/src/storage/snapshot.js +36 -0
- package/src/storage/storage-marker.js +79 -0
- package/src/storage/task-guards.js +107 -0
- package/src/storage/topology.js +42 -0
- package/src/storage/transaction.js +179 -0
- package/src/storage/unit-of-work.js +663 -0
- package/src/storage/windows-process-incarnation.js +206 -0
- package/.forgeloop/forgeloop.gitignore +0 -4
- package/LICENSE-DOCS.md +0 -13
- package/src/core/transaction-maintenance.js +0 -70
|
@@ -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
|
}
|