approval-md 0.0.1 → 0.2.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/LICENSE +176 -0
- package/NOTICE +5 -0
- package/README.md +940 -4
- package/SPEC.md +476 -34
- package/cli.js +29 -3
- package/dist/src/adapters/agentmail.d.ts +426 -0
- package/dist/src/adapters/agentmail.js +1200 -0
- package/dist/src/adapters/agentmail.js.map +1 -0
- package/dist/src/adapters/conformance.d.ts +149 -0
- package/dist/src/adapters/conformance.js +461 -0
- package/dist/src/adapters/conformance.js.map +1 -0
- package/dist/src/adapters/contract.d.ts +628 -0
- package/dist/src/adapters/contract.js +1035 -0
- package/dist/src/adapters/contract.js.map +1 -0
- package/dist/src/adapters/email.d.ts +324 -0
- package/dist/src/adapters/email.js +749 -0
- package/dist/src/adapters/email.js.map +1 -0
- package/dist/src/adapters/env-passphrase.d.ts +93 -0
- package/dist/src/adapters/env-passphrase.js +132 -0
- package/dist/src/adapters/env-passphrase.js.map +1 -0
- package/dist/src/adapters/public.d.ts +11 -0
- package/dist/src/adapters/public.js +11 -0
- package/dist/src/adapters/public.js.map +1 -0
- package/dist/src/adapters/registry.d.ts +59 -0
- package/dist/src/adapters/registry.js +77 -0
- package/dist/src/adapters/registry.js.map +1 -0
- package/dist/src/adapters/smtp.d.ts +213 -0
- package/dist/src/adapters/smtp.js +499 -0
- package/dist/src/adapters/smtp.js.map +1 -0
- package/dist/src/adapters/vault-provider.d.ts +114 -0
- package/dist/src/adapters/vault-provider.js +161 -0
- package/dist/src/adapters/vault-provider.js.map +1 -0
- package/dist/src/adapters/zzz.d.ts +66 -0
- package/dist/src/adapters/zzz.js +299 -0
- package/dist/src/adapters/zzz.js.map +1 -0
- package/dist/src/channels/batch.d.ts +109 -0
- package/dist/src/channels/batch.js +121 -0
- package/dist/src/channels/batch.js.map +1 -0
- package/dist/src/channels/cli.d.ts +193 -0
- package/dist/src/channels/cli.js +468 -0
- package/dist/src/channels/cli.js.map +1 -0
- package/dist/src/channels/conformance.d.ts +92 -0
- package/dist/src/channels/conformance.js +445 -0
- package/dist/src/channels/conformance.js.map +1 -0
- package/dist/src/channels/contract.d.ts +623 -0
- package/dist/src/channels/contract.js +494 -0
- package/dist/src/channels/contract.js.map +1 -0
- package/dist/src/channels/payload-view.d.ts +35 -0
- package/dist/src/channels/payload-view.js +43 -0
- package/dist/src/channels/payload-view.js.map +1 -0
- package/dist/src/channels/render-queue.d.ts +149 -0
- package/dist/src/channels/render-queue.js +564 -0
- package/dist/src/channels/render-queue.js.map +1 -0
- package/dist/src/channels/tagging.d.ts +196 -0
- package/dist/src/channels/tagging.js +723 -0
- package/dist/src/channels/tagging.js.map +1 -0
- package/dist/src/channels/telegram.d.ts +1832 -0
- package/dist/src/channels/telegram.js +3190 -0
- package/dist/src/channels/telegram.js.map +1 -0
- package/dist/src/channels/web.d.ts +341 -0
- package/dist/src/channels/web.js +903 -0
- package/dist/src/channels/web.js.map +1 -0
- package/dist/src/cli/adapter.d.ts +90 -0
- package/dist/src/cli/adapter.js +288 -0
- package/dist/src/cli/adapter.js.map +1 -0
- package/dist/src/cli/amend.d.ts +59 -0
- package/dist/src/cli/amend.js +2171 -0
- package/dist/src/cli/amend.js.map +1 -0
- package/dist/src/cli/args.d.ts +43 -0
- package/dist/src/cli/args.js +86 -0
- package/dist/src/cli/args.js.map +1 -0
- package/dist/src/cli/attest.d.ts +41 -0
- package/dist/src/cli/attest.js +307 -0
- package/dist/src/cli/attest.js.map +1 -0
- package/dist/src/cli/audit-card.d.ts +62 -0
- package/dist/src/cli/audit-card.js +201 -0
- package/dist/src/cli/audit-card.js.map +1 -0
- package/dist/src/cli/audit.d.ts +59 -0
- package/dist/src/cli/audit.js +460 -0
- package/dist/src/cli/audit.js.map +1 -0
- package/dist/src/cli/channel-telegram.d.ts +806 -0
- package/dist/src/cli/channel-telegram.js +2063 -0
- package/dist/src/cli/channel-telegram.js.map +1 -0
- package/dist/src/cli/channel-web.d.ts +131 -0
- package/dist/src/cli/channel-web.js +357 -0
- package/dist/src/cli/channel-web.js.map +1 -0
- package/dist/src/cli/channel.d.ts +71 -0
- package/dist/src/cli/channel.js +438 -0
- package/dist/src/cli/channel.js.map +1 -0
- package/dist/src/cli/checkpoint-tap.d.ts +169 -0
- package/dist/src/cli/checkpoint-tap.js +238 -0
- package/dist/src/cli/checkpoint-tap.js.map +1 -0
- package/dist/src/cli/codex.d.ts +2 -0
- package/dist/src/cli/codex.js +172 -0
- package/dist/src/cli/codex.js.map +1 -0
- package/dist/src/cli/coverage.d.ts +61 -0
- package/dist/src/cli/coverage.js +343 -0
- package/dist/src/cli/coverage.js.map +1 -0
- package/dist/src/cli/daemon.d.ts +120 -0
- package/dist/src/cli/daemon.js +631 -0
- package/dist/src/cli/daemon.js.map +1 -0
- package/dist/src/cli/doctor.d.ts +129 -0
- package/dist/src/cli/doctor.js +2762 -0
- package/dist/src/cli/doctor.js.map +1 -0
- package/dist/src/cli/env.d.ts +65 -0
- package/dist/src/cli/env.js +302 -0
- package/dist/src/cli/env.js.map +1 -0
- package/dist/src/cli/execute.d.ts +202 -0
- package/dist/src/cli/execute.js +1682 -0
- package/dist/src/cli/execute.js.map +1 -0
- package/dist/src/cli/exit-codes.d.ts +73 -0
- package/dist/src/cli/exit-codes.js +82 -0
- package/dist/src/cli/exit-codes.js.map +1 -0
- package/dist/src/cli/feedback.d.ts +60 -0
- package/dist/src/cli/feedback.js +205 -0
- package/dist/src/cli/feedback.js.map +1 -0
- package/dist/src/cli/gate-window.d.ts +40 -0
- package/dist/src/cli/gate-window.js +294 -0
- package/dist/src/cli/gate-window.js.map +1 -0
- package/dist/src/cli/gate.d.ts +68 -0
- package/dist/src/cli/gate.js +557 -0
- package/dist/src/cli/gate.js.map +1 -0
- package/dist/src/cli/git-scope.d.ts +190 -0
- package/dist/src/cli/git-scope.js +295 -0
- package/dist/src/cli/git-scope.js.map +1 -0
- package/dist/src/cli/gloss-attach.d.ts +85 -0
- package/dist/src/cli/gloss-attach.js +107 -0
- package/dist/src/cli/gloss-attach.js.map +1 -0
- package/dist/src/cli/gloss-codex-child.d.ts +9 -0
- package/dist/src/cli/gloss-codex-child.js +149 -0
- package/dist/src/cli/gloss-codex-child.js.map +1 -0
- package/dist/src/cli/gloss-codex.d.ts +24 -0
- package/dist/src/cli/gloss-codex.js +255 -0
- package/dist/src/cli/gloss-codex.js.map +1 -0
- package/dist/src/cli/gloss-options.d.ts +42 -0
- package/dist/src/cli/gloss-options.js +79 -0
- package/dist/src/cli/gloss-options.js.map +1 -0
- package/dist/src/cli/gloss.d.ts +265 -0
- package/dist/src/cli/gloss.js +362 -0
- package/dist/src/cli/gloss.js.map +1 -0
- package/dist/src/cli/help.d.ts +103 -0
- package/dist/src/cli/help.js +2339 -0
- package/dist/src/cli/help.js.map +1 -0
- package/dist/src/cli/hook-codex.d.ts +78 -0
- package/dist/src/cli/hook-codex.js +167 -0
- package/dist/src/cli/hook-codex.js.map +1 -0
- package/dist/src/cli/hook.d.ts +331 -0
- package/dist/src/cli/hook.js +2849 -0
- package/dist/src/cli/hook.js.map +1 -0
- package/dist/src/cli/import.d.ts +35 -0
- package/dist/src/cli/import.js +175 -0
- package/dist/src/cli/import.js.map +1 -0
- package/dist/src/cli/init.d.ts +84 -0
- package/dist/src/cli/init.js +336 -0
- package/dist/src/cli/init.js.map +1 -0
- package/dist/src/cli/instructions.d.ts +23 -0
- package/dist/src/cli/instructions.js +262 -0
- package/dist/src/cli/instructions.js.map +1 -0
- package/dist/src/cli/journal.d.ts +41 -0
- package/dist/src/cli/journal.js +238 -0
- package/dist/src/cli/journal.js.map +1 -0
- package/dist/src/cli/log-advance.d.ts +287 -0
- package/dist/src/cli/log-advance.js +840 -0
- package/dist/src/cli/log-advance.js.map +1 -0
- package/dist/src/cli/log-anchor.d.ts +176 -0
- package/dist/src/cli/log-anchor.js +387 -0
- package/dist/src/cli/log-anchor.js.map +1 -0
- package/dist/src/cli/log-checkpoint.d.ts +22 -0
- package/dist/src/cli/log-checkpoint.js +128 -0
- package/dist/src/cli/log-checkpoint.js.map +1 -0
- package/dist/src/cli/log-sync.d.ts +243 -0
- package/dist/src/cli/log-sync.js +849 -0
- package/dist/src/cli/log-sync.js.map +1 -0
- package/dist/src/cli/log-verbs.d.ts +16 -0
- package/dist/src/cli/log-verbs.js +360 -0
- package/dist/src/cli/log-verbs.js.map +1 -0
- package/dist/src/cli/long-help.d.ts +70 -0
- package/dist/src/cli/long-help.js +148 -0
- package/dist/src/cli/long-help.js.map +1 -0
- package/dist/src/cli/main.d.ts +77 -0
- package/dist/src/cli/main.js +1206 -0
- package/dist/src/cli/main.js.map +1 -0
- package/dist/src/cli/mcp.d.ts +52 -0
- package/dist/src/cli/mcp.js +306 -0
- package/dist/src/cli/mcp.js.map +1 -0
- package/dist/src/cli/paths.d.ts +56 -0
- package/dist/src/cli/paths.js +79 -0
- package/dist/src/cli/paths.js.map +1 -0
- package/dist/src/cli/payload.d.ts +58 -0
- package/dist/src/cli/payload.js +253 -0
- package/dist/src/cli/payload.js.map +1 -0
- package/dist/src/cli/policy.d.ts +43 -0
- package/dist/src/cli/policy.js +229 -0
- package/dist/src/cli/policy.js.map +1 -0
- package/dist/src/cli/preflight.d.ts +363 -0
- package/dist/src/cli/preflight.js +1175 -0
- package/dist/src/cli/preflight.js.map +1 -0
- package/dist/src/cli/progress.d.ts +78 -0
- package/dist/src/cli/progress.js +112 -0
- package/dist/src/cli/progress.js.map +1 -0
- package/dist/src/cli/prompt.d.ts +209 -0
- package/dist/src/cli/prompt.js +312 -0
- package/dist/src/cli/prompt.js.map +1 -0
- package/dist/src/cli/quickstart.d.ts +46 -0
- package/dist/src/cli/quickstart.js +297 -0
- package/dist/src/cli/quickstart.js.map +1 -0
- package/dist/src/cli/records.d.ts +34 -0
- package/dist/src/cli/records.js +66 -0
- package/dist/src/cli/records.js.map +1 -0
- package/dist/src/cli/render.d.ts +22 -0
- package/dist/src/cli/render.js +132 -0
- package/dist/src/cli/render.js.map +1 -0
- package/dist/src/cli/sandbox.d.ts +51 -0
- package/dist/src/cli/sandbox.js +150 -0
- package/dist/src/cli/sandbox.js.map +1 -0
- package/dist/src/cli/scaffold.d.ts +79 -0
- package/dist/src/cli/scaffold.js +137 -0
- package/dist/src/cli/scaffold.js.map +1 -0
- package/dist/src/cli/setup-adapter.d.ts +137 -0
- package/dist/src/cli/setup-adapter.js +509 -0
- package/dist/src/cli/setup-adapter.js.map +1 -0
- package/dist/src/cli/setup-channel.d.ts +117 -0
- package/dist/src/cli/setup-channel.js +635 -0
- package/dist/src/cli/setup-channel.js.map +1 -0
- package/dist/src/cli/setup-checkpoint.d.ts +57 -0
- package/dist/src/cli/setup-checkpoint.js +196 -0
- package/dist/src/cli/setup-checkpoint.js.map +1 -0
- package/dist/src/cli/setup-common.d.ts +275 -0
- package/dist/src/cli/setup-common.js +376 -0
- package/dist/src/cli/setup-common.js.map +1 -0
- package/dist/src/cli/setup-flow.d.ts +287 -0
- package/dist/src/cli/setup-flow.js +476 -0
- package/dist/src/cli/setup-flow.js.map +1 -0
- package/dist/src/cli/setup-service.d.ts +96 -0
- package/dist/src/cli/setup-service.js +308 -0
- package/dist/src/cli/setup-service.js.map +1 -0
- package/dist/src/cli/setup.d.ts +202 -0
- package/dist/src/cli/setup.js +473 -0
- package/dist/src/cli/setup.js.map +1 -0
- package/dist/src/cli/style.d.ts +320 -0
- package/dist/src/cli/style.js +469 -0
- package/dist/src/cli/style.js.map +1 -0
- package/dist/src/cli/token.d.ts +39 -0
- package/dist/src/cli/token.js +274 -0
- package/dist/src/cli/token.js.map +1 -0
- package/dist/src/cli/up.d.ts +155 -0
- package/dist/src/cli/up.js +849 -0
- package/dist/src/cli/up.js.map +1 -0
- package/dist/src/cli/usage.d.ts +37 -0
- package/dist/src/cli/usage.js +91 -0
- package/dist/src/cli/usage.js.map +1 -0
- package/dist/src/cli/values.d.ts +40 -0
- package/dist/src/cli/values.js +189 -0
- package/dist/src/cli/values.js.map +1 -0
- package/dist/src/cli/vault.d.ts +59 -0
- package/dist/src/cli/vault.js +362 -0
- package/dist/src/cli/vault.js.map +1 -0
- package/dist/src/cli/verb-registry.d.ts +76 -0
- package/dist/src/cli/verb-registry.js +2341 -0
- package/dist/src/cli/verb-registry.js.map +1 -0
- package/dist/src/cli/wordmark.d.ts +31 -0
- package/dist/src/cli/wordmark.js +52 -0
- package/dist/src/cli/wordmark.js.map +1 -0
- package/dist/src/codex/doctor.d.ts +13 -0
- package/dist/src/codex/doctor.js +41 -0
- package/dist/src/codex/doctor.js.map +1 -0
- package/dist/src/codex/manifest.d.ts +49 -0
- package/dist/src/codex/manifest.js +103 -0
- package/dist/src/codex/manifest.js.map +1 -0
- package/dist/src/codex/templates.d.ts +41 -0
- package/dist/src/codex/templates.js +319 -0
- package/dist/src/codex/templates.js.map +1 -0
- package/dist/src/codex/trust.d.ts +19 -0
- package/dist/src/codex/trust.js +183 -0
- package/dist/src/codex/trust.js.map +1 -0
- package/dist/src/codex/workspace-plan.d.ts +131 -0
- package/dist/src/codex/workspace-plan.js +561 -0
- package/dist/src/codex/workspace-plan.js.map +1 -0
- package/dist/src/core/actor.d.ts +2 -0
- package/dist/src/core/actor.js +5 -0
- package/dist/src/core/actor.js.map +1 -0
- package/dist/src/core/advance-cycle.d.ts +170 -0
- package/dist/src/core/advance-cycle.js +200 -0
- package/dist/src/core/advance-cycle.js.map +1 -0
- package/dist/src/core/agents-md.d.ts +276 -0
- package/dist/src/core/agents-md.js +747 -0
- package/dist/src/core/agents-md.js.map +1 -0
- package/dist/src/core/apply-patch.d.ts +49 -0
- package/dist/src/core/apply-patch.js +266 -0
- package/dist/src/core/apply-patch.js.map +1 -0
- package/dist/src/core/attest.d.ts +420 -0
- package/dist/src/core/attest.js +589 -0
- package/dist/src/core/attest.js.map +1 -0
- package/dist/src/core/audit.d.ts +492 -0
- package/dist/src/core/audit.js +882 -0
- package/dist/src/core/audit.js.map +1 -0
- package/dist/src/core/budgets.d.ts +238 -0
- package/dist/src/core/budgets.js +449 -0
- package/dist/src/core/budgets.js.map +1 -0
- package/dist/src/core/checkpoint.d.ts +500 -0
- package/dist/src/core/checkpoint.js +738 -0
- package/dist/src/core/checkpoint.js.map +1 -0
- package/dist/src/core/child-env.d.ts +88 -0
- package/dist/src/core/child-env.js +86 -0
- package/dist/src/core/child-env.js.map +1 -0
- package/dist/src/core/clock.d.ts +52 -0
- package/dist/src/core/clock.js +43 -0
- package/dist/src/core/clock.js.map +1 -0
- package/dist/src/core/command-class.d.ts +543 -0
- package/dist/src/core/command-class.js +2356 -0
- package/dist/src/core/command-class.js.map +1 -0
- package/dist/src/core/coverage-sources/adapter.d.ts +40 -0
- package/dist/src/core/coverage-sources/adapter.js +71 -0
- package/dist/src/core/coverage-sources/adapter.js.map +1 -0
- package/dist/src/core/coverage-sources/gh.d.ts +48 -0
- package/dist/src/core/coverage-sources/gh.js +136 -0
- package/dist/src/core/coverage-sources/gh.js.map +1 -0
- package/dist/src/core/coverage-sources/git.d.ts +101 -0
- package/dist/src/core/coverage-sources/git.js +269 -0
- package/dist/src/core/coverage-sources/git.js.map +1 -0
- package/dist/src/core/coverage.d.ts +217 -0
- package/dist/src/core/coverage.js +337 -0
- package/dist/src/core/coverage.js.map +1 -0
- package/dist/src/core/credential-spec.d.ts +72 -0
- package/dist/src/core/credential-spec.js +23 -0
- package/dist/src/core/credential-spec.js.map +1 -0
- package/dist/src/core/dark-session.d.ts +331 -0
- package/dist/src/core/dark-session.js +714 -0
- package/dist/src/core/dark-session.js.map +1 -0
- package/dist/src/core/decision-refusal.d.ts +185 -0
- package/dist/src/core/decision-refusal.js +265 -0
- package/dist/src/core/decision-refusal.js.map +1 -0
- package/dist/src/core/env-file.d.ts +450 -0
- package/dist/src/core/env-file.js +837 -0
- package/dist/src/core/env-file.js.map +1 -0
- package/dist/src/core/execute.d.ts +858 -0
- package/dist/src/core/execute.js +1271 -0
- package/dist/src/core/execute.js.map +1 -0
- package/dist/src/core/frontmatter.d.ts +78 -0
- package/dist/src/core/frontmatter.js +100 -0
- package/dist/src/core/frontmatter.js.map +1 -0
- package/dist/src/core/gate-window.d.ts +312 -0
- package/dist/src/core/gate-window.js +506 -0
- package/dist/src/core/gate-window.js.map +1 -0
- package/dist/src/core/gate.d.ts +1364 -0
- package/dist/src/core/gate.js +3002 -0
- package/dist/src/core/gate.js.map +1 -0
- package/dist/src/core/git-run.d.ts +73 -0
- package/dist/src/core/git-run.js +93 -0
- package/dist/src/core/git-run.js.map +1 -0
- package/dist/src/core/harness-version.d.ts +157 -0
- package/dist/src/core/harness-version.js +211 -0
- package/dist/src/core/harness-version.js.map +1 -0
- package/dist/src/core/harness-wait.d.ts +55 -0
- package/dist/src/core/harness-wait.js +58 -0
- package/dist/src/core/harness-wait.js.map +1 -0
- package/dist/src/core/head-retry.d.ts +107 -0
- package/dist/src/core/head-retry.js +121 -0
- package/dist/src/core/head-retry.js.map +1 -0
- package/dist/src/core/instance.d.ts +253 -0
- package/dist/src/core/instance.js +319 -0
- package/dist/src/core/instance.js.map +1 -0
- package/dist/src/core/intake-limits.d.ts +247 -0
- package/dist/src/core/intake-limits.js +350 -0
- package/dist/src/core/intake-limits.js.map +1 -0
- package/dist/src/core/jcs.d.ts +52 -0
- package/dist/src/core/jcs.js +132 -0
- package/dist/src/core/jcs.js.map +1 -0
- package/dist/src/core/journal.d.ts +144 -0
- package/dist/src/core/journal.js +200 -0
- package/dist/src/core/journal.js.map +1 -0
- package/dist/src/core/live-draw.d.ts +436 -0
- package/dist/src/core/live-draw.js +703 -0
- package/dist/src/core/live-draw.js.map +1 -0
- package/dist/src/core/log-reconcile.d.ts +89 -0
- package/dist/src/core/log-reconcile.js +136 -0
- package/dist/src/core/log-reconcile.js.map +1 -0
- package/dist/src/core/log-subscribe.d.ts +36 -0
- package/dist/src/core/log-subscribe.js +162 -0
- package/dist/src/core/log-subscribe.js.map +1 -0
- package/dist/src/core/log.d.ts +278 -0
- package/dist/src/core/log.js +546 -0
- package/dist/src/core/log.js.map +1 -0
- package/dist/src/core/loop.d.ts +274 -0
- package/dist/src/core/loop.js +487 -0
- package/dist/src/core/loop.js.map +1 -0
- package/dist/src/core/md-fence.d.ts +41 -0
- package/dist/src/core/md-fence.js +74 -0
- package/dist/src/core/md-fence.js.map +1 -0
- package/dist/src/core/money.d.ts +147 -0
- package/dist/src/core/money.js +195 -0
- package/dist/src/core/money.js.map +1 -0
- package/dist/src/core/payload-census.d.ts +74 -0
- package/dist/src/core/payload-census.js +146 -0
- package/dist/src/core/payload-census.js.map +1 -0
- package/dist/src/core/payload-store.d.ts +175 -0
- package/dist/src/core/payload-store.js +340 -0
- package/dist/src/core/payload-store.js.map +1 -0
- package/dist/src/core/payload.d.ts +71 -0
- package/dist/src/core/payload.js +80 -0
- package/dist/src/core/payload.js.map +1 -0
- package/dist/src/core/policy-diff.d.ts +292 -0
- package/dist/src/core/policy-diff.js +588 -0
- package/dist/src/core/policy-diff.js.map +1 -0
- package/dist/src/core/policy-expectations.d.ts +199 -0
- package/dist/src/core/policy-expectations.js +394 -0
- package/dist/src/core/policy-expectations.js.map +1 -0
- package/dist/src/core/policy-explain.d.ts +150 -0
- package/dist/src/core/policy-explain.js +258 -0
- package/dist/src/core/policy-explain.js.map +1 -0
- package/dist/src/core/policy-load.d.ts +527 -0
- package/dist/src/core/policy-load.js +536 -0
- package/dist/src/core/policy-load.js.map +1 -0
- package/dist/src/core/policy-match.d.ts +281 -0
- package/dist/src/core/policy-match.js +478 -0
- package/dist/src/core/policy-match.js.map +1 -0
- package/dist/src/core/policy-proposal.d.ts +265 -0
- package/dist/src/core/policy-proposal.js +458 -0
- package/dist/src/core/policy-proposal.js.map +1 -0
- package/dist/src/core/prompt-layout.d.ts +221 -0
- package/dist/src/core/prompt-layout.js +422 -0
- package/dist/src/core/prompt-layout.js.map +1 -0
- package/dist/src/core/protected-path-guard.d.ts +453 -0
- package/dist/src/core/protected-path-guard.js +1566 -0
- package/dist/src/core/protected-path-guard.js.map +1 -0
- package/dist/src/core/registration.d.ts +25 -0
- package/dist/src/core/registration.js +39 -0
- package/dist/src/core/registration.js.map +1 -0
- package/dist/src/core/reindex.d.ts +99 -0
- package/dist/src/core/reindex.js +336 -0
- package/dist/src/core/reindex.js.map +1 -0
- package/dist/src/core/sampler.d.ts +313 -0
- package/dist/src/core/sampler.js +388 -0
- package/dist/src/core/sampler.js.map +1 -0
- package/dist/src/core/sandbox.d.ts +290 -0
- package/dist/src/core/sandbox.js +424 -0
- package/dist/src/core/sandbox.js.map +1 -0
- package/dist/src/core/seal.d.ts +165 -0
- package/dist/src/core/seal.js +290 -0
- package/dist/src/core/seal.js.map +1 -0
- package/dist/src/core/state.d.ts +505 -0
- package/dist/src/core/state.js +1009 -0
- package/dist/src/core/state.js.map +1 -0
- package/dist/src/core/task-file.d.ts +185 -0
- package/dist/src/core/task-file.js +464 -0
- package/dist/src/core/task-file.js.map +1 -0
- package/dist/src/core/telegram-config.d.ts +93 -0
- package/dist/src/core/telegram-config.js +114 -0
- package/dist/src/core/telegram-config.js.map +1 -0
- package/dist/src/core/token.d.ts +409 -0
- package/dist/src/core/token.js +561 -0
- package/dist/src/core/token.js.map +1 -0
- package/dist/src/core/validate.d.ts +138 -0
- package/dist/src/core/validate.js +0 -0
- package/dist/src/core/validate.js.map +1 -0
- package/dist/src/core/values.d.ts +137 -0
- package/dist/src/core/values.js +153 -0
- package/dist/src/core/values.js.map +1 -0
- package/dist/src/core/vault.d.ts +291 -0
- package/dist/src/core/vault.js +612 -0
- package/dist/src/core/vault.js.map +1 -0
- package/dist/src/core/verified-snapshot.d.ts +204 -0
- package/dist/src/core/verified-snapshot.js +506 -0
- package/dist/src/core/verified-snapshot.js.map +1 -0
- package/dist/src/core/verify.d.ts +336 -0
- package/dist/src/core/verify.js +549 -0
- package/dist/src/core/verify.js.map +1 -0
- package/dist/src/core/version.d.ts +8 -0
- package/dist/src/core/version.js +9 -0
- package/dist/src/core/version.js.map +1 -0
- package/dist/src/core/wysiwys.d.ts +370 -0
- package/dist/src/core/wysiwys.js +728 -0
- package/dist/src/core/wysiwys.js.map +1 -0
- package/dist/src/daemon/advance-child.d.ts +39 -0
- package/dist/src/daemon/advance-child.js +78 -0
- package/dist/src/daemon/advance-child.js.map +1 -0
- package/dist/src/daemon/advance.d.ts +466 -0
- package/dist/src/daemon/advance.js +849 -0
- package/dist/src/daemon/advance.js.map +1 -0
- package/dist/src/daemon/audit.d.ts +87 -0
- package/dist/src/daemon/audit.js +90 -0
- package/dist/src/daemon/audit.js.map +1 -0
- package/dist/src/daemon/daemon.d.ts +1180 -0
- package/dist/src/daemon/daemon.js +1988 -0
- package/dist/src/daemon/daemon.js.map +1 -0
- package/dist/src/daemon/dark-session.d.ts +64 -0
- package/dist/src/daemon/dark-session.js +119 -0
- package/dist/src/daemon/dark-session.js.map +1 -0
- package/dist/src/daemon/draw-child.d.ts +36 -0
- package/dist/src/daemon/draw-child.js +132 -0
- package/dist/src/daemon/draw-child.js.map +1 -0
- package/dist/src/daemon/draw.d.ts +154 -0
- package/dist/src/daemon/draw.js +458 -0
- package/dist/src/daemon/draw.js.map +1 -0
- package/dist/src/daemon/git-evidence.d.ts +173 -0
- package/dist/src/daemon/git-evidence.js +345 -0
- package/dist/src/daemon/git-evidence.js.map +1 -0
- package/dist/src/daemon/projection.d.ts +180 -0
- package/dist/src/daemon/projection.js +233 -0
- package/dist/src/daemon/projection.js.map +1 -0
- package/dist/src/daemon/prune.d.ts +207 -0
- package/dist/src/daemon/prune.js +376 -0
- package/dist/src/daemon/prune.js.map +1 -0
- package/dist/src/mcp/http.d.ts +113 -0
- package/dist/src/mcp/http.js +343 -0
- package/dist/src/mcp/http.js.map +1 -0
- package/dist/src/mcp/server.d.ts +265 -0
- package/dist/src/mcp/server.js +602 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/docs/adapter-api.md +106 -0
- package/docs/cli-reference.md +5716 -0
- package/docs/codex-enforced-session.md +30 -0
- package/package.json +53 -4
- package/schema/.gitkeep +0 -0
- package/schema/LICENSE +117 -0
- package/schema/codex-instance.schema.json +82 -0
- package/schema/envelope.schema.json +137 -0
- package/schema/event.schema.json +1811 -0
- package/schema/fixtures/codex-instance/invalid/unpinned-codex-version.json +40 -0
- package/schema/fixtures/codex-instance/valid/canonical.json +40 -0
- package/schema/fixtures/envelope/invalid/action-missing-idempotency-key.json +15 -0
- package/schema/fixtures/envelope/invalid/action-unknown-class-format.json +14 -0
- package/schema/fixtures/envelope/invalid/confidence-out-of-range.json +11 -0
- package/schema/fixtures/envelope/invalid/est-cost-bare-number.json +14 -0
- package/schema/fixtures/envelope/invalid/est-cost-noncanonical-string.json +14 -0
- package/schema/fixtures/envelope/invalid/malformed-assignee.json +10 -0
- package/schema/fixtures/envelope/invalid/malformed-created-by.json +7 -0
- package/schema/fixtures/envelope/invalid/malformed-max-latency.json +11 -0
- package/schema/fixtures/envelope/invalid/malformed-payload-hash.json +14 -0
- package/schema/fixtures/envelope/invalid/max-cost-bare-number.json +11 -0
- package/schema/fixtures/envelope/invalid/missing-origin.json +3 -0
- package/schema/fixtures/envelope/invalid/negative-est-cost.json +14 -0
- package/schema/fixtures/envelope/invalid/unknown-state.json +7 -0
- package/schema/fixtures/envelope/invalid/unknown-top-level-field.json +8 -0
- package/schema/fixtures/envelope/valid/action-payload-hash.json +17 -0
- package/schema/fixtures/envelope/valid/actions-without-budget.json +18 -0
- package/schema/fixtures/envelope/valid/canonical.json +25 -0
- package/schema/fixtures/envelope/valid/minimal.json +7 -0
- package/schema/fixtures/envelope/valid/multi-action-executed.json +30 -0
- package/schema/fixtures/envelope/valid/record-write-stage.json +22 -0
- package/schema/fixtures/event/invalid/approval-granted-agent-actor.json +15 -0
- package/schema/fixtures/event/invalid/approval-granted-empty-batch-delivery-id.json +17 -0
- package/schema/fixtures/event/invalid/approval-granted-fifth-reaction.json +16 -0
- package/schema/fixtures/event/invalid/approval-granted-missing-actor.json +14 -0
- package/schema/fixtures/event/invalid/approval-requested-missing-action-key.json +14 -0
- package/schema/fixtures/event/invalid/approval-withdrawn-agent-policy-drift.json +15 -0
- package/schema/fixtures/event/invalid/approval-withdrawn-missing-reason.json +15 -0
- package/schema/fixtures/event/invalid/approval-withdrawn-system-actor.json +15 -0
- package/schema/fixtures/event/invalid/audit-decision-refused-human-actor.json +17 -0
- package/schema/fixtures/event/invalid/audit-decision-refused-missing-code.json +16 -0
- package/schema/fixtures/event/invalid/audit-reviewed-agent-actor.json +15 -0
- package/schema/fixtures/event/invalid/audit-reviewed-loved-no-note.json +16 -0
- package/schema/fixtures/event/invalid/audit-reviewed-system-actor.json +15 -0
- package/schema/fixtures/event/invalid/bad-actor-prefix.json +15 -0
- package/schema/fixtures/event/invalid/est-cost-bare-number.json +17 -0
- package/schema/fixtures/event/invalid/execution-completed-fabricated-exit-code.json +16 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-empty-id.json +18 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-extra-field.json +19 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-id-not-string.json +18 -0
- package/schema/fixtures/event/invalid/execution-completed-provider-ref-missing-adapter.json +17 -0
- package/schema/fixtures/event/invalid/execution-failed-open-reported-by.json +16 -0
- package/schema/fixtures/event/invalid/execution-indeterminate-open-reason.json +14 -0
- package/schema/fixtures/event/invalid/execution-reconciled-agent-actor.json +17 -0
- package/schema/fixtures/event/invalid/execution-started-negative-env-stripped.json +16 -0
- package/schema/fixtures/event/invalid/gate-bypassed-missing-opened-seq.json +15 -0
- package/schema/fixtures/event/invalid/gate-closed-non-integer-opened-seq.json +13 -0
- package/schema/fixtures/event/invalid/gate-opened-agent-actor.json +16 -0
- package/schema/fixtures/event/invalid/gate-organ-attested-absolute-path.json +14 -0
- package/schema/fixtures/event/invalid/gate-organ-attested-agent-actor.json +14 -0
- package/schema/fixtures/event/invalid/gate-organ-attested-missing-organ-path.json +13 -0
- package/schema/fixtures/event/invalid/harness-unknown-kind.json +18 -0
- package/schema/fixtures/event/invalid/harness-version-multiline.json +16 -0
- package/schema/fixtures/event/invalid/log-checkpoint-agent-actor.json +17 -0
- package/schema/fixtures/event/invalid/log-checkpoint-missing-signature.json +16 -0
- package/schema/fixtures/event/invalid/log-checkpoint-short-signed-hash.json +17 -0
- package/schema/fixtures/event/invalid/log-checkpoint-unknown-signature-alg.json +17 -0
- package/schema/fixtures/event/invalid/malformed-ts.json +15 -0
- package/schema/fixtures/event/invalid/missing-alg.json +14 -0
- package/schema/fixtures/event/invalid/missing-hash.json +14 -0
- package/schema/fixtures/event/invalid/non-integer-seq.json +15 -0
- package/schema/fixtures/event/invalid/payload-pruned-human-actor.json +14 -0
- package/schema/fixtures/event/invalid/payload-pruned-missing-hash.json +14 -0
- package/schema/fixtures/event/invalid/policy-declined-agent-actor.json +15 -0
- package/schema/fixtures/event/invalid/policy-proposed-missing-diff.json +19 -0
- package/schema/fixtures/event/invalid/policy-proposed-system-actor.json +26 -0
- package/schema/fixtures/event/invalid/short-hash.json +15 -0
- package/schema/fixtures/event/invalid/unknown-alg.json +15 -0
- package/schema/fixtures/event/invalid/unknown-event-type.json +15 -0
- package/schema/fixtures/event/invalid/unknown-top-level-field.json +16 -0
- package/schema/fixtures/event/valid/approval-expired.json +15 -0
- package/schema/fixtures/event/valid/approval-granted-batch.json +19 -0
- package/schema/fixtures/event/valid/approval-granted-reaction.json +16 -0
- package/schema/fixtures/event/valid/approval-granted.json +15 -0
- package/schema/fixtures/event/valid/approval-rejected.json +15 -0
- package/schema/fixtures/event/valid/approval-requested.json +19 -0
- package/schema/fixtures/event/valid/approval-revoked.json +15 -0
- package/schema/fixtures/event/valid/approval-withdrawn-policy-drift.json +17 -0
- package/schema/fixtures/event/valid/approval-withdrawn.json +16 -0
- package/schema/fixtures/event/valid/audit-decision-refused.json +20 -0
- package/schema/fixtures/event/valid/audit-reviewed-reaction.json +17 -0
- package/schema/fixtures/event/valid/audit-reviewed.json +15 -0
- package/schema/fixtures/event/valid/audit-sampled.json +14 -0
- package/schema/fixtures/event/valid/budget-exceeded.json +21 -0
- package/schema/fixtures/event/valid/envelope-drift.json +16 -0
- package/schema/fixtures/event/valid/execution-completed-harness-report.json +16 -0
- package/schema/fixtures/event/valid/execution-completed-provider-ref.json +18 -0
- package/schema/fixtures/event/valid/execution-completed.json +15 -0
- package/schema/fixtures/event/valid/execution-failed-harness-report.json +16 -0
- package/schema/fixtures/event/valid/execution-failed.json +15 -0
- package/schema/fixtures/event/valid/execution-indeterminate.json +15 -0
- package/schema/fixtures/event/valid/execution-reconciled.json +17 -0
- package/schema/fixtures/event/valid/execution-started-env-stripped.json +17 -0
- package/schema/fixtures/event/valid/execution-started.json +14 -0
- package/schema/fixtures/event/valid/gate-bypassed-harness-version.json +18 -0
- package/schema/fixtures/event/valid/gate-bypassed.json +19 -0
- package/schema/fixtures/event/valid/gate-closed.json +14 -0
- package/schema/fixtures/event/valid/gate-opened.json +16 -0
- package/schema/fixtures/event/valid/gate-organ-attested.json +14 -0
- package/schema/fixtures/event/valid/genesis-null-prev.json +14 -0
- package/schema/fixtures/event/valid/log-checkpoint.json +17 -0
- package/schema/fixtures/event/valid/payload-pruned-orphan.json +13 -0
- package/schema/fixtures/event/valid/payload-pruned.json +17 -0
- package/schema/fixtures/event/valid/policy-declined.json +16 -0
- package/schema/fixtures/event/valid/policy-proposed.json +35 -0
- package/schema/fixtures/event/valid/policy-updated.json +14 -0
- package/schema/fixtures/event/valid/reconciliation-required.json +18 -0
- package/schema/fixtures/event/valid/reconciliation-satisfied.json +17 -0
- package/schema/fixtures/event/valid/route-accepted.json +15 -0
- package/schema/fixtures/event/valid/route-proposed.json +16 -0
- package/schema/fixtures/event/valid/spec-example.json +15 -0
- package/schema/fixtures/event/valid/task-registered-harness-version.json +23 -0
- package/schema/fixtures/event/valid/task-registered.json +14 -0
- package/schema/fixtures/hash/known-answer-pre-121.json +74 -0
- package/schema/fixtures/hash/known-answer.json +74 -0
- package/schema/fixtures/policy/invalid/bad-approval-ttl.json +7 -0
- package/schema/fixtures/policy/invalid/bad-web-port.json +4 -0
- package/schema/fixtures/policy/invalid/checkpoint-key-not-base64.json +6 -0
- package/schema/fixtures/policy/invalid/class-rule-missing-autonomy.json +9 -0
- package/schema/fixtures/policy/invalid/empty-class-key.json +6 -0
- package/schema/fixtures/policy/invalid/live-rate-on-human-only.json +7 -0
- package/schema/fixtures/policy/invalid/malformed-class-key.json +6 -0
- package/schema/fixtures/policy/invalid/missing-version.json +8 -0
- package/schema/fixtures/policy/invalid/negative-limit.json +9 -0
- package/schema/fixtures/policy/invalid/non-numeric-limit.json +9 -0
- package/schema/fixtures/policy/invalid/non-positive-max-pending.json +9 -0
- package/schema/fixtures/policy/invalid/on-expiry-grant.json +8 -0
- package/schema/fixtures/policy/invalid/payload-retention-bare-number.json +4 -0
- package/schema/fixtures/policy/invalid/payload-retention-compound.json +4 -0
- package/schema/fixtures/policy/invalid/payload-retention-fractional.json +4 -0
- package/schema/fixtures/policy/invalid/payload-retention-zero.json +4 -0
- package/schema/fixtures/policy/invalid/protected-paths-escape.json +4 -0
- package/schema/fixtures/policy/invalid/protected-paths-glob.json +4 -0
- package/schema/fixtures/policy/invalid/retro-rate-on-human-only.json +7 -0
- package/schema/fixtures/policy/invalid/retro-rate-on-manual.json +7 -0
- package/schema/fixtures/policy/invalid/retro-rate-zero.json +7 -0
- package/schema/fixtures/policy/invalid/sample-rate-too-high.json +5 -0
- package/schema/fixtures/policy/invalid/sampling-secret-env-empty.json +7 -0
- package/schema/fixtures/policy/invalid/sampling-secret-env-not-string.json +6 -0
- package/schema/fixtures/policy/invalid/skew-tolerance-compound.json +6 -0
- package/schema/fixtures/policy/invalid/unknown-autonomy.json +7 -0
- package/schema/fixtures/policy/invalid/unknown-class-rule-key.json +6 -0
- package/schema/fixtures/policy/invalid/unknown-top-level-key.json +7 -0
- package/schema/fixtures/policy/invalid/vault-passphrase-env-empty.json +6 -0
- package/schema/fixtures/policy/invalid/vault-passphrase-literal.json +6 -0
- package/schema/fixtures/policy/invalid/version-not-string.json +4 -0
- package/schema/fixtures/policy/valid/canonical.json +47 -0
- package/schema/fixtures/policy/valid/checkpoint-keys.json +18 -0
- package/schema/fixtures/policy/valid/class-approvers-limits.json +25 -0
- package/schema/fixtures/policy/valid/class-retro-rate.json +17 -0
- package/schema/fixtures/policy/valid/global-budgets.json +19 -0
- package/schema/fixtures/policy/valid/human-only.json +9 -0
- package/schema/fixtures/policy/valid/minimal.json +6 -0
- package/schema/fixtures/policy/valid/protected-paths.json +10 -0
- package/schema/fixtures/policy/valid/record-namespace.json +13 -0
- package/schema/fixtures/policy/valid/request-volume-limits.json +26 -0
- package/schema/fixtures/policy/valid/retention-and-sampling-secret.json +16 -0
- package/schema/fixtures/policy/valid/skew-tolerance.json +15 -0
- package/schema/fixtures/policy/valid/vault-passphrase-env.json +14 -0
- package/schema/fixtures/policy/valid/wildcards.json +15 -0
- package/schema/fixtures/policy-md/invalid/alias-bomb.md +15 -0
- package/schema/fixtures/policy-md/invalid/no-fence.md +7 -0
- package/schema/fixtures/policy-md/invalid/protected-route-not-a-subclass.md +16 -0
- package/schema/fixtures/policy-md/invalid/schema-invalid-autonomy.md +16 -0
- package/schema/fixtures/policy-md/invalid/schema-invalid-read-proof.md +17 -0
- package/schema/fixtures/policy-md/invalid/two-fences.md +19 -0
- package/schema/fixtures/policy-md/invalid/unclosed-fence.md +11 -0
- package/schema/fixtures/policy-md/invalid/wrong-info-string.md +11 -0
- package/schema/fixtures/policy-md/invalid/yaml-syntax-error.md +13 -0
- package/schema/fixtures/policy-md/precedence/both/APPROVAL.md +7 -0
- package/schema/fixtures/policy-md/precedence/both/APPROVALS.md +7 -0
- package/schema/fixtures/policy-md/precedence/fallback-only/APPROVALS.md +7 -0
- package/schema/fixtures/policy-md/valid/canonical.md +50 -0
- package/schema/fixtures/policy-md/valid/daemon-read-proof.md +18 -0
- package/schema/fixtures/policy-md/valid/minimal.md +3 -0
- package/schema/fixtures/policy-md/valid/prose-lookalikes.md +54 -0
- package/schema/fixtures/policy-md/valid/routed-protected-paths.md +49 -0
- package/schema/fixtures/policy-md/valid/with-values.md +79 -0
- package/schema/fixtures/sample-record/invalid/bad-date-time.json +4 -0
- package/schema/fixtures/sample-record/invalid/missing-required-field.json +3 -0
- package/schema/fixtures/sample-record/invalid/unknown-top-level-field.json +5 -0
- package/schema/fixtures/sample-record/invalid/wrong-type.json +4 -0
- package/schema/fixtures/sample-record/valid/minimal.json +4 -0
- package/schema/fixtures/sample-record/valid/with-note.json +5 -0
- package/schema/fixtures/values/invalid/class-shaped.json +9 -0
- package/schema/fixtures/values/invalid/duplicate-entry.json +4 -0
- package/schema/fixtures/values/invalid/non-string-item.json +4 -0
- package/schema/fixtures/values/invalid/over-cap.json +26 -0
- package/schema/fixtures/values/invalid/unknown-key.json +5 -0
- package/schema/fixtures/values/invalid/version-string.json +1 -0
- package/schema/fixtures/values/valid/empty-lists.json +7 -0
- package/schema/fixtures/values/valid/full.json +20 -0
- package/schema/fixtures/values/valid/minimal.json +1 -0
- package/schema/fixtures/values-md/invalid/schema-invalid.md +62 -0
- package/schema/fixtures/values-md/invalid/two-blocks.md +69 -0
- package/schema/fixtures/values-md/invalid/unterminated.md +61 -0
- package/schema/fixtures/values-md/invalid/yaml-error.md +63 -0
- package/schema/fixtures/values-md/valid/absent.md +50 -0
- package/schema/fixtures/values-md/valid/with-values.md +79 -0
- package/schema/policy.schema.json +501 -0
- package/schema/sample-record.schema.json +26 -0
- package/schema/values.schema.json +55 -0
- package/templates/codex/README.md +9 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-advance.js","sourceRoot":"","sources":["../../../src/cli/log-advance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The committed log as an external witness (APRV-219).
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* The chain in `.approval/log/events.jsonl` is unkeyed. `docs/proposals/
|
|
7
|
+
* incremental-prefix-proof.md` §3 states the consequence plainly: a process
|
|
8
|
+
* with write access to that file can truncate it and recompute a chain that is
|
|
9
|
+
* self-consistent from genesis, and no cold walk of the file will ever say
|
|
10
|
+
* otherwise, because nothing INSIDE the file contradicts it. The conformance
|
|
11
|
+
* suite says the same thing from the other side — `chain-verification/
|
|
12
|
+
* truncation-unanchored` is a boundary vector: records dropped off the tail with
|
|
13
|
+
* no external anchor leave a valid chain, and an implementation that reports
|
|
14
|
+
* corruption there is wrong.
|
|
15
|
+
*
|
|
16
|
+
* The word in that vector's name is the whole design of this module. What the
|
|
17
|
+
* same-user process cannot rewrite is the copy of the log that is already
|
|
18
|
+
* COMMITTED: a records branch pushed by the advance cadence (APRV-204), a log
|
|
19
|
+
* sync's fast-forward (APRV-125), the trunk behind a protected branch on
|
|
20
|
+
* GitHub. Those bytes are an anchor. Comparing the working log's prefix against
|
|
21
|
+
* them turns "the chain is self-consistent" into "the chain is self-consistent
|
|
22
|
+
* AND it still carries the records somebody else has a copy of".
|
|
23
|
+
*
|
|
24
|
+
* ## What this module does and does not do
|
|
25
|
+
*
|
|
26
|
+
* It READS git. `git rev-parse <rev>:<path>` for a blob id and `git show` for
|
|
27
|
+
* its bytes, both run from the checkout root, never a fetch and never a write.
|
|
28
|
+
* Fetching is the advance verb's job (APRV-203); a verification path that went
|
|
29
|
+
* to the network would be a verification path that fails when the network does.
|
|
30
|
+
*
|
|
31
|
+
* It writes nothing: not the log, not the anchor, not a cache file. The only
|
|
32
|
+
* state it keeps is a process-local map from a git blob id to the facts about
|
|
33
|
+
* that blob, which is safe precisely because a blob id IS the hash of the bytes:
|
|
34
|
+
* two repositories cannot disagree about what one oid holds.
|
|
35
|
+
*
|
|
36
|
+
* A missing anchor is a SKIP with a reason and never a pass. A repository with
|
|
37
|
+
* no committed copy of the log has not proved the working log is honest; it has
|
|
38
|
+
* failed to say anything about it, and those are different answers.
|
|
39
|
+
*/
|
|
40
|
+
import type { EventRecord } from "../core/log.js";
|
|
41
|
+
import type { LogHead } from "../core/verify.js";
|
|
42
|
+
/**
|
|
43
|
+
* The refusal this check can produce. A closed union, per SPEC.md §11.1
|
|
44
|
+
* invariant 6, frozen the way every other union in this runtime is frozen:
|
|
45
|
+
* callers branch on the string.
|
|
46
|
+
*
|
|
47
|
+
* One code, deliberately. Everything else this check can conclude is a state
|
|
48
|
+
* rather than a refusal: no anchor at all is a skip, a working log that is a
|
|
49
|
+
* strict prefix of the anchor is `behind` (the ordinary state of a checkout
|
|
50
|
+
* that has just pulled), and only a working log whose bytes CONTRADICT the
|
|
51
|
+
* anchored ones is a refusal.
|
|
52
|
+
*/
|
|
53
|
+
export declare const ANCHOR_REFUSAL_CODES: readonly ["anchor-diverged"];
|
|
54
|
+
export type AnchorRefusalCode = (typeof ANCHOR_REFUSAL_CODES)[number];
|
|
55
|
+
/** `YYYY-MM-DD`, the shape the default records branch name carries. */
|
|
56
|
+
export declare function defaultRecordsBranch(today: string): string;
|
|
57
|
+
/** Every local anchor a previous advance left behind. Order is irrelevant. */
|
|
58
|
+
export declare function advanceAnchors(root: string): string[];
|
|
59
|
+
/** Where an anchor may be looked for. */
|
|
60
|
+
export interface AnchorWhere {
|
|
61
|
+
remote?: string;
|
|
62
|
+
base?: string | null;
|
|
63
|
+
/** An ISO timestamp; only its date half is read, for the day's records branch. */
|
|
64
|
+
today?: string;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* The revs a committed copy of the log may live at, newest evidence first.
|
|
68
|
+
*
|
|
69
|
+
* This is `cli/log-advance.ts`'s `publishedState` resolution, lifted here so
|
|
70
|
+
* that the anchor check and the "what is not yet published" count read the same
|
|
71
|
+
* list. Two lists would be two chances to disagree about which copies of the log
|
|
72
|
+
* this repository can see, and the doctor prints both answers on adjacent rows.
|
|
73
|
+
*
|
|
74
|
+
* `HEAD` is last and is still a candidate: a checkout whose current commit
|
|
75
|
+
* carries the log HAS a committed copy of it, and a check that ignored that
|
|
76
|
+
* would report "never committed" about a log with thousands of committed
|
|
77
|
+
* records — which is exactly the misread APRV-210 recorded.
|
|
78
|
+
*/
|
|
79
|
+
export declare function anchorRevs(root: string, where?: AnchorWhere): string[];
|
|
80
|
+
/** One committed copy of the log, and everything a comparison needs from it. */
|
|
81
|
+
export interface Anchor {
|
|
82
|
+
/** The rev it was read at, as the check names it in its own messages. */
|
|
83
|
+
rev: string;
|
|
84
|
+
/** Git's object id for the blob. Content-addressed, so it is also the cache key. */
|
|
85
|
+
oid: string;
|
|
86
|
+
/** Byte length of the anchored copy. */
|
|
87
|
+
byteLength: number;
|
|
88
|
+
/** SHA-256 of those bytes, hex. Not a chain hash: a digest of the file. */
|
|
89
|
+
digest: string;
|
|
90
|
+
/** The anchored chain's head. Never null — an empty copy anchors nothing. */
|
|
91
|
+
head: LogHead;
|
|
92
|
+
/** How many records the anchored copy carries. */
|
|
93
|
+
records: number;
|
|
94
|
+
}
|
|
95
|
+
/** Drop the cache. Exported for tests, which build a new repository per case. */
|
|
96
|
+
export declare function forgetAnchorBlobs(): void;
|
|
97
|
+
/** What {@link resolveAnchor} found. A skip carries the reason, always. */
|
|
98
|
+
export type AnchorResolution = {
|
|
99
|
+
ok: true;
|
|
100
|
+
anchor: Anchor;
|
|
101
|
+
} | {
|
|
102
|
+
ok: false;
|
|
103
|
+
reason: string;
|
|
104
|
+
revs: readonly string[];
|
|
105
|
+
};
|
|
106
|
+
/**
|
|
107
|
+
* The newest committed copy of the log this repository can see.
|
|
108
|
+
*
|
|
109
|
+
* "Newest" is the highest chain head among the candidate revs, not the newest
|
|
110
|
+
* commit: the question is how much of the log somebody else already holds, and
|
|
111
|
+
* a records branch that is one commit older but carries more records is the
|
|
112
|
+
* better witness. Ties keep the first rev in {@link anchorRevs} order, which
|
|
113
|
+
* puts an advance anchor ahead of the trunk ahead of `HEAD`.
|
|
114
|
+
*/
|
|
115
|
+
export declare function resolveAnchor(root: string, logPath: string, options?: {
|
|
116
|
+
rev?: string;
|
|
117
|
+
schemaDir?: string;
|
|
118
|
+
} & AnchorWhere): AnchorResolution;
|
|
119
|
+
/** How the working log stands against the anchor. */
|
|
120
|
+
export type AnchorCheck = {
|
|
121
|
+
status: "pass";
|
|
122
|
+
anchor: Anchor;
|
|
123
|
+
/** Working records beyond the anchored head. Zero when the two are equal. */
|
|
124
|
+
ahead: number;
|
|
125
|
+
workingBytes: number;
|
|
126
|
+
detail: string;
|
|
127
|
+
} | {
|
|
128
|
+
status: "behind";
|
|
129
|
+
anchor: Anchor;
|
|
130
|
+
/** Anchored records the working log does not carry. Always above zero. */
|
|
131
|
+
behind: number;
|
|
132
|
+
workingBytes: number;
|
|
133
|
+
detail: string;
|
|
134
|
+
} | {
|
|
135
|
+
status: "skip";
|
|
136
|
+
reason: string;
|
|
137
|
+
} | {
|
|
138
|
+
status: "diverged";
|
|
139
|
+
code: AnchorRefusalCode;
|
|
140
|
+
anchor: Anchor;
|
|
141
|
+
workingBytes: number;
|
|
142
|
+
message: string;
|
|
143
|
+
};
|
|
144
|
+
/** What {@link checkLogAnchor} is asked. `records` is the VERIFIED working log. */
|
|
145
|
+
export interface AnchorCheckOptions extends AnchorWhere {
|
|
146
|
+
logPath: string;
|
|
147
|
+
/**
|
|
148
|
+
* The working log's records, already verified by the caller.
|
|
149
|
+
*
|
|
150
|
+
* Required rather than re-derived, for SPEC.md §11.1 invariant 1: this check
|
|
151
|
+
* reads only verified records, and a check that walked the chain itself would
|
|
152
|
+
* be a second opinion about a question its caller has already answered.
|
|
153
|
+
*/
|
|
154
|
+
records: readonly EventRecord[];
|
|
155
|
+
/** An explicit rev, instead of the default resolution. */
|
|
156
|
+
rev?: string;
|
|
157
|
+
schemaDir?: string;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Compare the working log's prefix against the newest committed copy of it.
|
|
161
|
+
*
|
|
162
|
+
* Two facts are checked, and they are checked separately on purpose:
|
|
163
|
+
*
|
|
164
|
+
* 1. **The bytes.** The working log's first `anchor.byteLength` bytes must hash
|
|
165
|
+
* to the anchor's digest. This is a claim about the FILE, stricter than any
|
|
166
|
+
* claim about the chain: a rewrite that preserves every record hash while
|
|
167
|
+
* changing the bytes around them (whitespace, key order in a re-serialized
|
|
168
|
+
* line) still fails here.
|
|
169
|
+
* 2. **The head.** The working log's record at the anchor's head seq must carry
|
|
170
|
+
* the anchor's hash. Implied by (1) whenever (1) holds, and stated anyway,
|
|
171
|
+
* because it is the fact a human reads in the message and the one that names
|
|
172
|
+
* which record the two copies stopped agreeing at.
|
|
173
|
+
*/
|
|
174
|
+
export declare function checkLogAnchor(options: AnchorCheckOptions): AnchorCheck;
|
|
175
|
+
/** One anchor, as messages and rows spell one. */
|
|
176
|
+
export declare function describeAnchor(anchor: Anchor): string;
|
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The committed log as an external witness (APRV-219).
|
|
3
|
+
*
|
|
4
|
+
* ## Why this exists
|
|
5
|
+
*
|
|
6
|
+
* The chain in `.approval/log/events.jsonl` is unkeyed. `docs/proposals/
|
|
7
|
+
* incremental-prefix-proof.md` §3 states the consequence plainly: a process
|
|
8
|
+
* with write access to that file can truncate it and recompute a chain that is
|
|
9
|
+
* self-consistent from genesis, and no cold walk of the file will ever say
|
|
10
|
+
* otherwise, because nothing INSIDE the file contradicts it. The conformance
|
|
11
|
+
* suite says the same thing from the other side — `chain-verification/
|
|
12
|
+
* truncation-unanchored` is a boundary vector: records dropped off the tail with
|
|
13
|
+
* no external anchor leave a valid chain, and an implementation that reports
|
|
14
|
+
* corruption there is wrong.
|
|
15
|
+
*
|
|
16
|
+
* The word in that vector's name is the whole design of this module. What the
|
|
17
|
+
* same-user process cannot rewrite is the copy of the log that is already
|
|
18
|
+
* COMMITTED: a records branch pushed by the advance cadence (APRV-204), a log
|
|
19
|
+
* sync's fast-forward (APRV-125), the trunk behind a protected branch on
|
|
20
|
+
* GitHub. Those bytes are an anchor. Comparing the working log's prefix against
|
|
21
|
+
* them turns "the chain is self-consistent" into "the chain is self-consistent
|
|
22
|
+
* AND it still carries the records somebody else has a copy of".
|
|
23
|
+
*
|
|
24
|
+
* ## What this module does and does not do
|
|
25
|
+
*
|
|
26
|
+
* It READS git. `git rev-parse <rev>:<path>` for a blob id and `git show` for
|
|
27
|
+
* its bytes, both run from the checkout root, never a fetch and never a write.
|
|
28
|
+
* Fetching is the advance verb's job (APRV-203); a verification path that went
|
|
29
|
+
* to the network would be a verification path that fails when the network does.
|
|
30
|
+
*
|
|
31
|
+
* It writes nothing: not the log, not the anchor, not a cache file. The only
|
|
32
|
+
* state it keeps is a process-local map from a git blob id to the facts about
|
|
33
|
+
* that blob, which is safe precisely because a blob id IS the hash of the bytes:
|
|
34
|
+
* two repositories cannot disagree about what one oid holds.
|
|
35
|
+
*
|
|
36
|
+
* A missing anchor is a SKIP with a reason and never a pass. A repository with
|
|
37
|
+
* no committed copy of the log has not proved the working log is honest; it has
|
|
38
|
+
* failed to say anything about it, and those are different answers.
|
|
39
|
+
*/
|
|
40
|
+
import { createHash } from "node:crypto";
|
|
41
|
+
import { readFileSync } from "node:fs";
|
|
42
|
+
import { dirname } from "node:path";
|
|
43
|
+
import { verifyText } from "../core/verify.js";
|
|
44
|
+
import { compareChains, describeDrift } from "../core/log-reconcile.js";
|
|
45
|
+
import { git, readBlob, repoPath, repoRoot } from "./git-scope.js";
|
|
46
|
+
/**
|
|
47
|
+
* The refusal this check can produce. A closed union, per SPEC.md §11.1
|
|
48
|
+
* invariant 6, frozen the way every other union in this runtime is frozen:
|
|
49
|
+
* callers branch on the string.
|
|
50
|
+
*
|
|
51
|
+
* One code, deliberately. Everything else this check can conclude is a state
|
|
52
|
+
* rather than a refusal: no anchor at all is a skip, a working log that is a
|
|
53
|
+
* strict prefix of the anchor is `behind` (the ordinary state of a checkout
|
|
54
|
+
* that has just pulled), and only a working log whose bytes CONTRADICT the
|
|
55
|
+
* anchored ones is a refusal.
|
|
56
|
+
*/
|
|
57
|
+
export const ANCHOR_REFUSAL_CODES = ["anchor-diverged"];
|
|
58
|
+
/** `YYYY-MM-DD`, the shape the default records branch name carries. */
|
|
59
|
+
export function defaultRecordsBranch(today) {
|
|
60
|
+
return `records-log-${today.slice(0, 10)}`;
|
|
61
|
+
}
|
|
62
|
+
/** Every local anchor a previous advance left behind. Order is irrelevant. */
|
|
63
|
+
export function advanceAnchors(root) {
|
|
64
|
+
const listed = git(["for-each-ref", "--format=%(refname)", "refs/approval/advance/"], root);
|
|
65
|
+
if (!listed.ok)
|
|
66
|
+
return [];
|
|
67
|
+
return listed.stdout
|
|
68
|
+
.split("\n")
|
|
69
|
+
.map((line) => line.trim())
|
|
70
|
+
.filter((line) => line.length > 0);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* The revs a committed copy of the log may live at, newest evidence first.
|
|
74
|
+
*
|
|
75
|
+
* This is `cli/log-advance.ts`'s `publishedState` resolution, lifted here so
|
|
76
|
+
* that the anchor check and the "what is not yet published" count read the same
|
|
77
|
+
* list. Two lists would be two chances to disagree about which copies of the log
|
|
78
|
+
* this repository can see, and the doctor prints both answers on adjacent rows.
|
|
79
|
+
*
|
|
80
|
+
* `HEAD` is last and is still a candidate: a checkout whose current commit
|
|
81
|
+
* carries the log HAS a committed copy of it, and a check that ignored that
|
|
82
|
+
* would report "never committed" about a log with thousands of committed
|
|
83
|
+
* records — which is exactly the misread APRV-210 recorded.
|
|
84
|
+
*/
|
|
85
|
+
export function anchorRevs(root, where = {}) {
|
|
86
|
+
const remote = where.remote ?? "origin";
|
|
87
|
+
const base = where.base ?? "main";
|
|
88
|
+
const today = where.today ?? new Date().toISOString();
|
|
89
|
+
return [
|
|
90
|
+
...advanceAnchors(root),
|
|
91
|
+
`refs/remotes/${remote}/${base}`,
|
|
92
|
+
`refs/remotes/${remote}/${defaultRecordsBranch(today)}`,
|
|
93
|
+
"HEAD",
|
|
94
|
+
];
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Blob id → the facts about that blob, or `null` for "not usable as an anchor".
|
|
98
|
+
*
|
|
99
|
+
* Process-local and keyed by content, which is what makes it safe to share
|
|
100
|
+
* across repositories and across every caller in one process: a git blob id is
|
|
101
|
+
* the hash of the bytes, so an entry can never describe the wrong file. The
|
|
102
|
+
* daemon is the reason it exists — under `read_proof: full` the anchor check
|
|
103
|
+
* runs on every tick, and a full chain walk of the committed copy every thirty
|
|
104
|
+
* seconds to re-learn an answer that cannot have changed is work spent on
|
|
105
|
+
* nothing.
|
|
106
|
+
*/
|
|
107
|
+
const BLOBS = new Map();
|
|
108
|
+
/** How many blobs the cache keeps before it starts over. Bounded, not clever. */
|
|
109
|
+
const BLOB_CACHE_LIMIT = 8;
|
|
110
|
+
/** Drop the cache. Exported for tests, which build a new repository per case. */
|
|
111
|
+
export function forgetAnchorBlobs() {
|
|
112
|
+
BLOBS.clear();
|
|
113
|
+
}
|
|
114
|
+
function sha256(bytes) {
|
|
115
|
+
return createHash("sha256").update(bytes).digest("hex");
|
|
116
|
+
}
|
|
117
|
+
/** One attempt, folded onto one line. Skip reasons are single-line by contract. */
|
|
118
|
+
function describeAttempt(attempt) {
|
|
119
|
+
return `\`${attempt.command}\` ${attempt.detail}`;
|
|
120
|
+
}
|
|
121
|
+
/** The blob id of `<rev>:<relative>`, or the attempt that failed to name one. */
|
|
122
|
+
function blobOid(root, rev, relative) {
|
|
123
|
+
const spec = `${rev}:${relative}`;
|
|
124
|
+
const command = `git rev-parse --verify --quiet ${spec}`;
|
|
125
|
+
const result = git(["rev-parse", "--verify", "--quiet", spec], root);
|
|
126
|
+
const said = result.stderr
|
|
127
|
+
.split("\n")
|
|
128
|
+
.map((line) => line.trim())
|
|
129
|
+
.filter((line) => line.length > 0)
|
|
130
|
+
.join(" | ");
|
|
131
|
+
if (!result.ok) {
|
|
132
|
+
return {
|
|
133
|
+
oid: null,
|
|
134
|
+
attempt: {
|
|
135
|
+
command,
|
|
136
|
+
detail: `${result.status === null ? "did not complete" : `exited ${String(result.status)}`}${said.length === 0 ? " and printed nothing" : `: ${said}`}`,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
const oid = result.stdout.trim();
|
|
141
|
+
if (oid.length === 0) {
|
|
142
|
+
return { oid: null, attempt: { command, detail: "exited 0 and named no blob" } };
|
|
143
|
+
}
|
|
144
|
+
return { oid };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* The anchored copy at one rev, or `null` with the reason it is not an anchor.
|
|
148
|
+
*
|
|
149
|
+
* A committed copy that does not itself verify is NOT an anchor. It is evidence
|
|
150
|
+
* of something else, and this check says so in the skip reason rather than
|
|
151
|
+
* comparing the working log against bytes nobody has proved anything about —
|
|
152
|
+
* SPEC.md §11.1 invariant 1, enforcement paths read only verified records,
|
|
153
|
+
* binds the committed side too.
|
|
154
|
+
*/
|
|
155
|
+
function anchoredCopy(root, rev, relative, options) {
|
|
156
|
+
const found = blobOid(root, rev, relative);
|
|
157
|
+
if (found.oid === null)
|
|
158
|
+
return { ok: false, reason: null, attempt: found.attempt };
|
|
159
|
+
const oid = found.oid;
|
|
160
|
+
const cached = BLOBS.get(oid);
|
|
161
|
+
if (cached !== undefined) {
|
|
162
|
+
return cached === null
|
|
163
|
+
? {
|
|
164
|
+
ok: false,
|
|
165
|
+
reason: `${rev} carries a copy of the log that does not verify or is empty`,
|
|
166
|
+
attempt: null,
|
|
167
|
+
}
|
|
168
|
+
: { ok: true, copy: cached, oid };
|
|
169
|
+
}
|
|
170
|
+
const read = readBlob(root, rev, relative);
|
|
171
|
+
if (!read.ok) {
|
|
172
|
+
// `git rev-parse` named a blob and `git show` could not hand it over. That
|
|
173
|
+
// is never "this rev has no committed copy" — the object store says it
|
|
174
|
+
// does — so it must not be reported as a rev with nothing to say.
|
|
175
|
+
return {
|
|
176
|
+
ok: false,
|
|
177
|
+
reason: `${rev} names a blob for ${relative} that could not be read`,
|
|
178
|
+
attempt: { command: read.command, detail: read.detail },
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
const bytes = read.bytes;
|
|
182
|
+
const verified = verifyText(`${rev}:${relative}`, bytes.toString("utf8"), options.schemaDir === undefined ? {} : { schemaDir: options.schemaDir }, null);
|
|
183
|
+
const last = verified.records[verified.records.length - 1];
|
|
184
|
+
if (verified.result.status !== "clean" || last === undefined) {
|
|
185
|
+
if (BLOBS.size >= BLOB_CACHE_LIMIT)
|
|
186
|
+
BLOBS.clear();
|
|
187
|
+
BLOBS.set(oid, null);
|
|
188
|
+
return {
|
|
189
|
+
ok: false,
|
|
190
|
+
reason: verified.result.status === "clean"
|
|
191
|
+
? `${rev} carries an empty copy of the log, which anchors nothing`
|
|
192
|
+
: `${rev} carries a copy of the log that does not verify (${verified.result.status})`,
|
|
193
|
+
attempt: null,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
const copy = {
|
|
197
|
+
bytes,
|
|
198
|
+
byteLength: bytes.length,
|
|
199
|
+
digest: sha256(bytes),
|
|
200
|
+
head: { seq: last.seq, hash: last.hash },
|
|
201
|
+
records: verified.records.length,
|
|
202
|
+
};
|
|
203
|
+
if (BLOBS.size >= BLOB_CACHE_LIMIT)
|
|
204
|
+
BLOBS.clear();
|
|
205
|
+
BLOBS.set(oid, copy);
|
|
206
|
+
return { ok: true, copy, oid };
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* The newest committed copy of the log this repository can see.
|
|
210
|
+
*
|
|
211
|
+
* "Newest" is the highest chain head among the candidate revs, not the newest
|
|
212
|
+
* commit: the question is how much of the log somebody else already holds, and
|
|
213
|
+
* a records branch that is one commit older but carries more records is the
|
|
214
|
+
* better witness. Ties keep the first rev in {@link anchorRevs} order, which
|
|
215
|
+
* puts an advance anchor ahead of the trunk ahead of `HEAD`.
|
|
216
|
+
*/
|
|
217
|
+
export function resolveAnchor(root, logPath, options = {}) {
|
|
218
|
+
const relative = repoPath(root, logPath);
|
|
219
|
+
const revs = options.rev === undefined ? anchorRevs(root, options) : [options.rev];
|
|
220
|
+
const explicit = options.rev !== undefined;
|
|
221
|
+
let best = null;
|
|
222
|
+
const notes = [];
|
|
223
|
+
const attempts = [];
|
|
224
|
+
for (const rev of revs) {
|
|
225
|
+
const found = anchoredCopy(root, rev, relative, options);
|
|
226
|
+
if (!found.ok) {
|
|
227
|
+
if (found.reason !== null)
|
|
228
|
+
notes.push(found.reason);
|
|
229
|
+
if (found.attempt !== null)
|
|
230
|
+
attempts.push(describeAttempt(found.attempt));
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (best !== null && found.copy.head.seq <= best.head.seq)
|
|
234
|
+
continue;
|
|
235
|
+
best = {
|
|
236
|
+
rev,
|
|
237
|
+
oid: found.oid,
|
|
238
|
+
byteLength: found.copy.byteLength,
|
|
239
|
+
digest: found.copy.digest,
|
|
240
|
+
head: found.copy.head,
|
|
241
|
+
records: found.copy.records,
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
if (best !== null)
|
|
245
|
+
return { ok: true, anchor: best };
|
|
246
|
+
const where = explicit
|
|
247
|
+
? `${revs[0] ?? "the requested rev"} has no ${relative} blob`
|
|
248
|
+
: `no rev this checkout can see carries a committed copy of ${relative} (tried ${revs.join(", ")})`;
|
|
249
|
+
/**
|
|
250
|
+
* What git was actually asked, and what it answered, for every rev.
|
|
251
|
+
*
|
|
252
|
+
* Printed only when NOTHING resolved, which is the one state where a reader
|
|
253
|
+
* has to distinguish "this repository has never committed the log" from "the
|
|
254
|
+
* lookup is broken". Those two produced the same sentence until this was
|
|
255
|
+
* added, and the second one shipped: `approval log verify --anchor` named
|
|
256
|
+
* four revs and no reason in a checkout where `git show refs/remotes/origin/
|
|
257
|
+
* main:.approval/log/events.jsonl` printed the log, because the read was
|
|
258
|
+
* outrunning the runner's output buffer and the failure had nowhere to go.
|
|
259
|
+
* A skip that lists revs without saying how each lookup failed is a skip a
|
|
260
|
+
* person cannot act on.
|
|
261
|
+
*/
|
|
262
|
+
const said = [...notes, ...attempts];
|
|
263
|
+
return {
|
|
264
|
+
ok: false,
|
|
265
|
+
reason: said.length === 0
|
|
266
|
+
? `${where}, so there is no external witness to compare the working log against`
|
|
267
|
+
: `${where}. ${said.join("; ")}`,
|
|
268
|
+
revs,
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Compare the working log's prefix against the newest committed copy of it.
|
|
273
|
+
*
|
|
274
|
+
* Two facts are checked, and they are checked separately on purpose:
|
|
275
|
+
*
|
|
276
|
+
* 1. **The bytes.** The working log's first `anchor.byteLength` bytes must hash
|
|
277
|
+
* to the anchor's digest. This is a claim about the FILE, stricter than any
|
|
278
|
+
* claim about the chain: a rewrite that preserves every record hash while
|
|
279
|
+
* changing the bytes around them (whitespace, key order in a re-serialized
|
|
280
|
+
* line) still fails here.
|
|
281
|
+
* 2. **The head.** The working log's record at the anchor's head seq must carry
|
|
282
|
+
* the anchor's hash. Implied by (1) whenever (1) holds, and stated anyway,
|
|
283
|
+
* because it is the fact a human reads in the message and the one that names
|
|
284
|
+
* which record the two copies stopped agreeing at.
|
|
285
|
+
*/
|
|
286
|
+
export function checkLogAnchor(options) {
|
|
287
|
+
const root = repoRoot(dirname(options.logPath));
|
|
288
|
+
if (root === null) {
|
|
289
|
+
return {
|
|
290
|
+
status: "skip",
|
|
291
|
+
reason: `${options.logPath} is not inside a git repository, so there is no committed copy to anchor it against`,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
const resolution = resolveAnchor(root, options.logPath, options);
|
|
295
|
+
if (!resolution.ok)
|
|
296
|
+
return { status: "skip", reason: resolution.reason };
|
|
297
|
+
const anchor = resolution.anchor;
|
|
298
|
+
const found = anchoredCopy(root, anchor.rev, repoPath(root, options.logPath), options);
|
|
299
|
+
if (!found.ok) {
|
|
300
|
+
return {
|
|
301
|
+
status: "skip",
|
|
302
|
+
reason: `${anchor.rev} stopped being readable while it was being compared; nothing was decided from it`,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
let working;
|
|
306
|
+
try {
|
|
307
|
+
working = readFileSync(options.logPath);
|
|
308
|
+
}
|
|
309
|
+
catch (cause) {
|
|
310
|
+
return {
|
|
311
|
+
status: "skip",
|
|
312
|
+
reason: `${options.logPath} could not be read as bytes (${cause instanceof Error ? cause.message : String(cause)}), so it could not be compared against ${anchor.rev}`,
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
const workingHead = options.records[options.records.length - 1] ?? null;
|
|
316
|
+
/**
|
|
317
|
+
* Where the two chains stop agreeing, in `core/log-reconcile.ts`'s words.
|
|
318
|
+
*
|
|
319
|
+
* Computed only on the refusal path, and through the SHARED comparison rather
|
|
320
|
+
* than a second one written here: a divergence ends with a person deciding
|
|
321
|
+
* which of two chains is the log, and the sentence they read has to name the
|
|
322
|
+
* seq. Re-walking the committed copy costs a chain walk, which is the right
|
|
323
|
+
* price on a path that is about to stop a daemon.
|
|
324
|
+
*/
|
|
325
|
+
const divergence = () => {
|
|
326
|
+
const compared = compareChains({ label: `the working log ${options.logPath}`, text: working.toString("utf8") }, { label: anchor.rev, text: found.copy.bytes.toString("utf8") }, options.schemaDir === undefined ? {} : { schemaDir: options.schemaDir });
|
|
327
|
+
return compared.ok ? ` ${describeDrift(compared.drift)}.` : "";
|
|
328
|
+
};
|
|
329
|
+
// The working log is shorter than the anchored copy. That is either the
|
|
330
|
+
// ordinary state of a checkout that has just pulled (a strict prefix), or the
|
|
331
|
+
// truncation this whole check exists for.
|
|
332
|
+
if (working.length < anchor.byteLength) {
|
|
333
|
+
if (found.copy.bytes.subarray(0, working.length).equals(working)) {
|
|
334
|
+
return {
|
|
335
|
+
status: "behind",
|
|
336
|
+
anchor,
|
|
337
|
+
behind: anchor.head.seq - (workingHead?.seq ?? 0),
|
|
338
|
+
workingBytes: working.length,
|
|
339
|
+
detail: `the working log is a prefix of ${anchor.rev}: the committed copy carries ${String(anchor.head.seq - (workingHead?.seq ?? 0))} record(s) this file does not, through seq ${String(anchor.head.seq)}`,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
342
|
+
return {
|
|
343
|
+
status: "diverged",
|
|
344
|
+
code: "anchor-diverged",
|
|
345
|
+
anchor,
|
|
346
|
+
workingBytes: working.length,
|
|
347
|
+
message: `the working log ${options.logPath} is ${String(working.length)} bytes and ${anchor.rev} anchors ${String(anchor.byteLength)} bytes through seq ${String(anchor.head.seq)}, and the shorter file is not a prefix of the longer one. A committed copy of the log is the one witness a process with write access to this file cannot rewrite; these two are not the same chain.${divergence()}`,
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
const prefix = working.subarray(0, anchor.byteLength);
|
|
351
|
+
if (sha256(prefix) !== anchor.digest) {
|
|
352
|
+
return {
|
|
353
|
+
status: "diverged",
|
|
354
|
+
code: "anchor-diverged",
|
|
355
|
+
anchor,
|
|
356
|
+
workingBytes: working.length,
|
|
357
|
+
message: `the first ${String(anchor.byteLength)} bytes of ${options.logPath} do not hash to the copy committed at ${anchor.rev} (anchored through seq ${String(anchor.head.seq)} ${anchor.head.hash}). The anchored prefix has been rewritten in this working file; a chain that re-verifies from genesis proves only that whoever rewrote it recomputed the hashes.${divergence()}`,
|
|
358
|
+
};
|
|
359
|
+
}
|
|
360
|
+
const at = options.records.find((record) => record.seq === anchor.head.seq);
|
|
361
|
+
if (at === undefined || at.hash !== anchor.head.hash) {
|
|
362
|
+
return {
|
|
363
|
+
status: "diverged",
|
|
364
|
+
code: "anchor-diverged",
|
|
365
|
+
anchor,
|
|
366
|
+
workingBytes: working.length,
|
|
367
|
+
message: `${anchor.rev} anchors seq ${String(anchor.head.seq)} at ${anchor.head.hash} and the working log ${at === undefined
|
|
368
|
+
? "carries no record at that seq"
|
|
369
|
+
: `carries ${at.hash} there`}. These are two chains, not one.${divergence()}`,
|
|
370
|
+
};
|
|
371
|
+
}
|
|
372
|
+
const ahead = (workingHead?.seq ?? 0) - anchor.head.seq;
|
|
373
|
+
return {
|
|
374
|
+
status: "pass",
|
|
375
|
+
anchor,
|
|
376
|
+
ahead,
|
|
377
|
+
workingBytes: working.length,
|
|
378
|
+
detail: ahead === 0
|
|
379
|
+
? `the working log is byte-identical to the copy committed at ${anchor.rev} (${describeAnchor(anchor)})`
|
|
380
|
+
: `the working log carries the copy committed at ${anchor.rev} (${describeAnchor(anchor)}) byte for byte and is ahead by ${String(ahead)} record(s)`,
|
|
381
|
+
};
|
|
382
|
+
}
|
|
383
|
+
/** One anchor, as messages and rows spell one. */
|
|
384
|
+
export function describeAnchor(anchor) {
|
|
385
|
+
return `seq ${String(anchor.head.seq)} ${anchor.head.hash}, ${String(anchor.byteLength)} bytes`;
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=log-anchor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-anchor.js","sourceRoot":"","sources":["../../../src/cli/log-anchor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The CLI edge of `approval log checkpoint` (APRV-220).
|
|
3
|
+
*
|
|
4
|
+
* As everywhere else in this CLI, no logic lives here: `core/checkpoint.ts`
|
|
5
|
+
* signs and appends, and this file splits argv, decides WHERE the private key
|
|
6
|
+
* may come from, maps the result onto the frozen exit table, and decides what a
|
|
7
|
+
* terminal sees.
|
|
8
|
+
*
|
|
9
|
+
* ## Where the key may come from, and why that decision is NOT here any more
|
|
10
|
+
*
|
|
11
|
+
* `core/checkpoint.ts` takes the private key as a value and reads it from
|
|
12
|
+
* nowhere. That is deliberate: custody is a policy question, and answering it in
|
|
13
|
+
* one place means there is one file to read to learn every way a checkpoint key
|
|
14
|
+
* can reach a signature. Until APRV-257 that file was this one, because a
|
|
15
|
+
* terminal was the only place a checkpoint could be signed. The channel tap
|
|
16
|
+
* added two more callers, so the decision MOVED to `cli/checkpoint-tap.ts`
|
|
17
|
+
* rather than being copied into them, and this verb resolves its key with
|
|
18
|
+
* everyone else's function. The property is unchanged; the file holding it is
|
|
19
|
+
* not.
|
|
20
|
+
*/
|
|
21
|
+
import type { Streams } from "./main.js";
|
|
22
|
+
export declare function commandLogCheckpoint(argv: string[], streams: Streams, cwd: string): number;
|