@quickchatai/pi-quickreview 0.0.0-stage → 1.1.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 +23 -0
- package/README.md +75 -2
- package/assets/agents/pass-abstraction.md +64 -0
- package/assets/agents/pass-ask-human.md +134 -0
- package/assets/agents/pass-backcompat.md +67 -0
- package/assets/agents/pass-baseline.md +61 -0
- package/assets/agents/pass-behaviour-delta.md +64 -0
- package/assets/agents/pass-bounds.md +36 -0
- package/assets/agents/pass-claims.md +31 -0
- package/assets/agents/pass-concurrency.md +168 -0
- package/assets/agents/pass-consistency.md +57 -0
- package/assets/agents/pass-contracts.md +30 -0
- package/assets/agents/pass-data-safety.md +54 -0
- package/assets/agents/pass-deferred.md +35 -0
- package/assets/agents/pass-delivery.md +37 -0
- package/assets/agents/pass-duplication.md +60 -0
- package/assets/agents/pass-intent.md +63 -0
- package/assets/agents/pass-lint-conformance.md +46 -0
- package/assets/agents/pass-maintainability.md +67 -0
- package/assets/agents/pass-placement.md +68 -0
- package/assets/agents/pass-prod-risk.md +24 -0
- package/assets/agents/pass-rollout.md +32 -0
- package/assets/agents/pass-roundtrip.md +46 -0
- package/assets/agents/pass-security.md +31 -0
- package/assets/agents/pass-simplicity.md +68 -0
- package/assets/agents/pass-statelessness.md +27 -0
- package/assets/agents/pass-style.md +37 -0
- package/assets/agents/pass-sweep.md +57 -0
- package/assets/agents/pass-tests.md +58 -0
- package/assets/agents/pass-ui.md +23 -0
- package/assets/agents/pass-validate.md +50 -0
- package/assets/agents/pass-widened.md +46 -0
- package/assets/agents/scan/pass-scan.md +86 -0
- package/assets/config.example.toml +1067 -0
- package/assets/deploy/reviewer/AGENTS.override.md +12 -0
- package/assets/profiles/default/README.md +21 -0
- package/assets/profiles/default/addenda/.gitkeep +0 -0
- package/assets/profiles/default/profile.toml +17 -0
- package/assets/profiles/example-django/README.md +21 -0
- package/assets/profiles/example-django/addenda/10-migration-discipline.md +13 -0
- package/assets/profiles/example-django/addenda/20-new-column-nullability.md +12 -0
- package/assets/profiles/example-django/addenda/30-test-doctrine.md +12 -0
- package/assets/profiles/example-django/addenda/40-orm-usage.md +19 -0
- package/assets/profiles/example-django/addenda/50-declared-shape.md +10 -0
- package/assets/profiles/example-django/addenda/60-config-placement.md +14 -0
- package/assets/profiles/example-django/heuristics.toml +24 -0
- package/assets/profiles/example-django/profile.toml +9 -0
- package/assets/profiles/fast/README.md +24 -0
- package/assets/profiles/fast/profile.toml +59 -0
- package/assets/profiles/minimal/README.md +17 -0
- package/assets/profiles/minimal/addenda/.gitkeep +0 -0
- package/assets/profiles/minimal/profile.toml +8 -0
- package/assets/profiles/snappy/README.md +24 -0
- package/assets/profiles/snappy/addenda/10-race-as-question.md +6 -0
- package/assets/profiles/snappy/profile.toml +46 -0
- package/assets/prompts/companion-day-open.md +46 -0
- package/assets/prompts/companion-first-run.md +104 -0
- package/assets/prompts/companion.md +821 -0
- package/assets/prompts/conversation-system.md +117 -0
- package/assets/prompts/eod-sweep.md +120 -0
- package/assets/prompts/onboarding.md +74 -0
- package/assets/prompts/pass-common.md +52 -0
- package/assets/prompts/pass-quality-common.md +22 -0
- package/assets/prompts/round-first.md +874 -0
- package/assets/prompts/round-follow-up.md +991 -0
- package/assets/prompts/round-re-review.md +889 -0
- package/assets/prompts/round-recheck.md +196 -0
- package/assets/prompts/round-staleness.md +856 -0
- package/assets/schemas/review-result.v1.json +391 -0
- package/assets/schemas/scan-result.v1.json +421 -0
- package/assets/schemas/version.v1.json +57 -0
- package/assets/seed-manifest.json +19 -0
- package/assets/seeds/agents/pass-baseline.md +61 -0
- package/assets/seeds/agents/pass-contracts.md +30 -0
- package/assets/seeds/agents/pass-data-safety.md +54 -0
- package/assets/seeds/agents/pass-delivery.md +37 -0
- package/assets/seeds/agents/pass-prod-risk.md +24 -0
- package/assets/seeds/agents/pass-security.md +31 -0
- package/assets/seeds/agents/pass-statelessness.md +27 -0
- package/assets/seeds/agents/pass-ui.md +23 -0
- package/assets/seeds/agents/pass-validate.md +50 -0
- package/assets/seeds/prompts/conversation-system.md +117 -0
- package/assets/seeds/prompts/eod-sweep.md +120 -0
- package/assets/seeds/prompts/pass-common.md +52 -0
- package/dist/extensions/bash-guard.d.ts +467 -0
- package/dist/extensions/bash-guard.d.ts.map +1 -0
- package/dist/extensions/bash-guard.js +3058 -0
- package/dist/extensions/bash-guard.js.map +1 -0
- package/dist/extensions/finding-clusters.d.ts +33 -0
- package/dist/extensions/finding-clusters.d.ts.map +1 -0
- package/dist/extensions/finding-clusters.js +218 -0
- package/dist/extensions/finding-clusters.js.map +1 -0
- package/dist/extensions/ledger-pin.d.ts +76 -0
- package/dist/extensions/ledger-pin.d.ts.map +1 -0
- package/dist/extensions/ledger-pin.js +331 -0
- package/dist/extensions/ledger-pin.js.map +1 -0
- package/dist/extensions/lens.d.ts +43 -0
- package/dist/extensions/lens.d.ts.map +1 -0
- package/dist/extensions/lens.js +150 -0
- package/dist/extensions/lens.js.map +1 -0
- package/dist/extensions/pi-tool.d.ts +22 -0
- package/dist/extensions/pi-tool.d.ts.map +1 -0
- package/dist/extensions/pi-tool.js +20 -0
- package/dist/extensions/pi-tool.js.map +1 -0
- package/dist/extensions/quickreview.d.ts +21 -0
- package/dist/extensions/quickreview.d.ts.map +1 -0
- package/dist/extensions/quickreview.js +132 -0
- package/dist/extensions/quickreview.js.map +1 -0
- package/dist/src/anchors.d.ts +54 -0
- package/dist/src/anchors.d.ts.map +1 -0
- package/dist/src/anchors.js +127 -0
- package/dist/src/anchors.js.map +1 -0
- package/dist/src/assetroot.d.ts +16 -0
- package/dist/src/assetroot.d.ts.map +1 -0
- package/dist/src/assetroot.js +77 -0
- package/dist/src/assetroot.js.map +1 -0
- package/dist/src/authwatch.d.ts +61 -0
- package/dist/src/authwatch.d.ts.map +1 -0
- package/dist/src/authwatch.js +210 -0
- package/dist/src/authwatch.js.map +1 -0
- package/dist/src/budget.d.ts +15 -0
- package/dist/src/budget.d.ts.map +1 -0
- package/dist/src/budget.js +32 -0
- package/dist/src/budget.js.map +1 -0
- package/dist/src/casebudget.d.ts +3 -0
- package/dist/src/casebudget.d.ts.map +1 -0
- package/dist/src/casebudget.js +3 -0
- package/dist/src/casebudget.js.map +1 -0
- package/dist/src/cigate.d.ts +116 -0
- package/dist/src/cigate.d.ts.map +1 -0
- package/dist/src/cigate.js +176 -0
- package/dist/src/cigate.js.map +1 -0
- package/dist/src/codespan.d.ts +46 -0
- package/dist/src/codespan.d.ts.map +1 -0
- package/dist/src/codespan.js +75 -0
- package/dist/src/codespan.js.map +1 -0
- package/dist/src/contextpack.d.ts +56 -0
- package/dist/src/contextpack.d.ts.map +1 -0
- package/dist/src/contextpack.js +195 -0
- package/dist/src/contextpack.js.map +1 -0
- package/dist/src/contract.d.ts +8 -0
- package/dist/src/contract.d.ts.map +1 -0
- package/dist/src/contract.js +21 -0
- package/dist/src/contract.js.map +1 -0
- package/dist/src/coverage.d.ts +32 -0
- package/dist/src/coverage.d.ts.map +1 -0
- package/dist/src/coverage.js +85 -0
- package/dist/src/coverage.js.map +1 -0
- package/dist/src/datafence.d.ts +19 -0
- package/dist/src/datafence.d.ts.map +1 -0
- package/dist/src/datafence.js +60 -0
- package/dist/src/datafence.js.map +1 -0
- package/dist/src/dedup.d.ts +65 -0
- package/dist/src/dedup.d.ts.map +1 -0
- package/dist/src/dedup.js +459 -0
- package/dist/src/dedup.js.map +1 -0
- package/dist/src/depsources.d.ts +304 -0
- package/dist/src/depsources.d.ts.map +1 -0
- package/dist/src/depsources.js +3367 -0
- package/dist/src/depsources.js.map +1 -0
- package/dist/src/diffinput.d.ts +10 -0
- package/dist/src/diffinput.d.ts.map +1 -0
- package/dist/src/diffinput.js +172 -0
- package/dist/src/diffinput.js.map +1 -0
- package/dist/src/doubtwords.d.ts +10 -0
- package/dist/src/doubtwords.d.ts.map +1 -0
- package/dist/src/doubtwords.js +13 -0
- package/dist/src/doubtwords.js.map +1 -0
- package/dist/src/ecosystem.d.ts +148 -0
- package/dist/src/ecosystem.d.ts.map +1 -0
- package/dist/src/ecosystem.js +338 -0
- package/dist/src/ecosystem.js.map +1 -0
- package/dist/src/engine/agentdir.d.ts +5 -0
- package/dist/src/engine/agentdir.d.ts.map +1 -0
- package/dist/src/engine/agentdir.js +21 -0
- package/dist/src/engine/agentdir.js.map +1 -0
- package/dist/src/engine/auth.d.ts +214 -0
- package/dist/src/engine/auth.d.ts.map +1 -0
- package/dist/src/engine/auth.js +374 -0
- package/dist/src/engine/auth.js.map +1 -0
- package/dist/src/engine/budget.d.ts +60 -0
- package/dist/src/engine/budget.d.ts.map +1 -0
- package/dist/src/engine/budget.js +113 -0
- package/dist/src/engine/budget.js.map +1 -0
- package/dist/src/engine/capfd.d.ts +6 -0
- package/dist/src/engine/capfd.d.ts.map +1 -0
- package/dist/src/engine/capfd.js +21 -0
- package/dist/src/engine/capfd.js.map +1 -0
- package/dist/src/engine/caseout.d.ts +66 -0
- package/dist/src/engine/caseout.d.ts.map +1 -0
- package/dist/src/engine/caseout.js +107 -0
- package/dist/src/engine/caseout.js.map +1 -0
- package/dist/src/engine/context.d.ts +57 -0
- package/dist/src/engine/context.d.ts.map +1 -0
- package/dist/src/engine/context.js +212 -0
- package/dist/src/engine/context.js.map +1 -0
- package/dist/src/engine/envmap.d.ts +13 -0
- package/dist/src/engine/envmap.d.ts.map +1 -0
- package/dist/src/engine/envmap.js +372 -0
- package/dist/src/engine/envmap.js.map +1 -0
- package/dist/src/engine/extfiles.d.ts +7 -0
- package/dist/src/engine/extfiles.d.ts.map +1 -0
- package/dist/src/engine/extfiles.js +23 -0
- package/dist/src/engine/extfiles.js.map +1 -0
- package/dist/src/engine/keyroute.d.ts +21 -0
- package/dist/src/engine/keyroute.d.ts.map +1 -0
- package/dist/src/engine/keyroute.js +58 -0
- package/dist/src/engine/keyroute.js.map +1 -0
- package/dist/src/engine/lens/cache-group.d.ts +20 -0
- package/dist/src/engine/lens/cache-group.d.ts.map +1 -0
- package/dist/src/engine/lens/cache-group.js +31 -0
- package/dist/src/engine/lens/cache-group.js.map +1 -0
- package/dist/src/engine/lens/cache-run.d.ts +65 -0
- package/dist/src/engine/lens/cache-run.d.ts.map +1 -0
- package/dist/src/engine/lens/cache-run.js +159 -0
- package/dist/src/engine/lens/cache-run.js.map +1 -0
- package/dist/src/engine/lens/deadline.d.ts +54 -0
- package/dist/src/engine/lens/deadline.d.ts.map +1 -0
- package/dist/src/engine/lens/deadline.js +111 -0
- package/dist/src/engine/lens/deadline.js.map +1 -0
- package/dist/src/engine/lens/engine-tools.d.ts +13 -0
- package/dist/src/engine/lens/engine-tools.d.ts.map +1 -0
- package/dist/src/engine/lens/engine-tools.js +37 -0
- package/dist/src/engine/lens/engine-tools.js.map +1 -0
- package/dist/src/engine/lens/env.d.ts +23 -0
- package/dist/src/engine/lens/env.d.ts.map +1 -0
- package/dist/src/engine/lens/env.js +42 -0
- package/dist/src/engine/lens/env.js.map +1 -0
- package/dist/src/engine/lens/launch-plan.d.ts +63 -0
- package/dist/src/engine/lens/launch-plan.d.ts.map +1 -0
- package/dist/src/engine/lens/launch-plan.js +203 -0
- package/dist/src/engine/lens/launch-plan.js.map +1 -0
- package/dist/src/engine/lens/leaf-cache.d.ts +22 -0
- package/dist/src/engine/lens/leaf-cache.d.ts.map +1 -0
- package/dist/src/engine/lens/leaf-cache.js +115 -0
- package/dist/src/engine/lens/leaf-cache.js.map +1 -0
- package/dist/src/engine/lens/permits.d.ts +14 -0
- package/dist/src/engine/lens/permits.d.ts.map +1 -0
- package/dist/src/engine/lens/permits.js +18 -0
- package/dist/src/engine/lens/permits.js.map +1 -0
- package/dist/src/engine/lens/registry.d.ts +55 -0
- package/dist/src/engine/lens/registry.d.ts.map +1 -0
- package/dist/src/engine/lens/registry.js +140 -0
- package/dist/src/engine/lens/registry.js.map +1 -0
- package/dist/src/engine/lens/round-lens.d.ts +16 -0
- package/dist/src/engine/lens/round-lens.d.ts.map +1 -0
- package/dist/src/engine/lens/round-lens.js +46 -0
- package/dist/src/engine/lens/round-lens.js.map +1 -0
- package/dist/src/engine/lens/runlens.d.ts +103 -0
- package/dist/src/engine/lens/runlens.d.ts.map +1 -0
- package/dist/src/engine/lens/runlens.js +538 -0
- package/dist/src/engine/lens/runlens.js.map +1 -0
- package/dist/src/engine/lens/section.d.ts +19 -0
- package/dist/src/engine/lens/section.d.ts.map +1 -0
- package/dist/src/engine/lens/section.js +40 -0
- package/dist/src/engine/lens/section.js.map +1 -0
- package/dist/src/engine/lens/semaphore.d.ts +13 -0
- package/dist/src/engine/lens/semaphore.d.ts.map +1 -0
- package/dist/src/engine/lens/semaphore.js +44 -0
- package/dist/src/engine/lens/semaphore.js.map +1 -0
- package/dist/src/engine/lens/tool.d.ts +34 -0
- package/dist/src/engine/lens/tool.d.ts.map +1 -0
- package/dist/src/engine/lens/tool.js +345 -0
- package/dist/src/engine/lens/tool.js.map +1 -0
- package/dist/src/engine/lens/wave.d.ts +63 -0
- package/dist/src/engine/lens/wave.d.ts.map +1 -0
- package/dist/src/engine/lens/wave.js +95 -0
- package/dist/src/engine/lens/wave.js.map +1 -0
- package/dist/src/engine/livesessions.d.ts +21 -0
- package/dist/src/engine/livesessions.d.ts.map +1 -0
- package/dist/src/engine/livesessions.js +57 -0
- package/dist/src/engine/livesessions.js.map +1 -0
- package/dist/src/engine/livewire.d.ts +18 -0
- package/dist/src/engine/livewire.d.ts.map +1 -0
- package/dist/src/engine/livewire.js +31 -0
- package/dist/src/engine/livewire.js.map +1 -0
- package/dist/src/engine/openable.d.ts +37 -0
- package/dist/src/engine/openable.d.ts.map +1 -0
- package/dist/src/engine/openable.js +120 -0
- package/dist/src/engine/openable.js.map +1 -0
- package/dist/src/engine/pisdk.d.ts +226 -0
- package/dist/src/engine/pisdk.d.ts.map +1 -0
- package/dist/src/engine/pisdk.js +552 -0
- package/dist/src/engine/pisdk.js.map +1 -0
- package/dist/src/engine/port.d.ts +144 -0
- package/dist/src/engine/port.d.ts.map +1 -0
- package/dist/src/engine/port.js +16 -0
- package/dist/src/engine/port.js.map +1 -0
- package/dist/src/engine/prompts.d.ts +159 -0
- package/dist/src/engine/prompts.d.ts.map +1 -0
- package/dist/src/engine/prompts.js +339 -0
- package/dist/src/engine/prompts.js.map +1 -0
- package/dist/src/engine/render.d.ts +10 -0
- package/dist/src/engine/render.d.ts.map +1 -0
- package/dist/src/engine/render.js +23 -0
- package/dist/src/engine/render.js.map +1 -0
- package/dist/src/engine/reviewruntime.d.ts +13 -0
- package/dist/src/engine/reviewruntime.d.ts.map +1 -0
- package/dist/src/engine/reviewruntime.js +35 -0
- package/dist/src/engine/reviewruntime.js.map +1 -0
- package/dist/src/engine/reviewsdk.d.ts +75 -0
- package/dist/src/engine/reviewsdk.d.ts.map +1 -0
- package/dist/src/engine/reviewsdk.js +180 -0
- package/dist/src/engine/reviewsdk.js.map +1 -0
- package/dist/src/engine/round.d.ts +166 -0
- package/dist/src/engine/round.d.ts.map +1 -0
- package/dist/src/engine/round.js +543 -0
- package/dist/src/engine/round.js.map +1 -0
- package/dist/src/engine/roundagents.d.ts +17 -0
- package/dist/src/engine/roundagents.d.ts.map +1 -0
- package/dist/src/engine/roundagents.js +49 -0
- package/dist/src/engine/roundagents.js.map +1 -0
- package/dist/src/engine/roundevents.d.ts +110 -0
- package/dist/src/engine/roundevents.d.ts.map +1 -0
- package/dist/src/engine/roundevents.js +276 -0
- package/dist/src/engine/roundevents.js.map +1 -0
- package/dist/src/engine/roundsdk.d.ts +33 -0
- package/dist/src/engine/roundsdk.d.ts.map +1 -0
- package/dist/src/engine/roundsdk.js +76 -0
- package/dist/src/engine/roundsdk.js.map +1 -0
- package/dist/src/engine/sdkruntime.d.ts +23 -0
- package/dist/src/engine/sdkruntime.d.ts.map +1 -0
- package/dist/src/engine/sdkruntime.js +340 -0
- package/dist/src/engine/sdkruntime.js.map +1 -0
- package/dist/src/engine/select.d.ts +16 -0
- package/dist/src/engine/select.d.ts.map +1 -0
- package/dist/src/engine/select.js +32 -0
- package/dist/src/engine/select.js.map +1 -0
- package/dist/src/engine/sessionwrap.d.ts +4 -0
- package/dist/src/engine/sessionwrap.d.ts.map +1 -0
- package/dist/src/engine/sessionwrap.js +31 -0
- package/dist/src/engine/sessionwrap.js.map +1 -0
- package/dist/src/engine/toolfence.d.ts +90 -0
- package/dist/src/engine/toolfence.d.ts.map +1 -0
- package/dist/src/engine/toolfence.js +378 -0
- package/dist/src/engine/toolfence.js.map +1 -0
- package/dist/src/engine/tooluid.d.ts +128 -0
- package/dist/src/engine/tooluid.d.ts.map +1 -0
- package/dist/src/engine/tooluid.js +401 -0
- package/dist/src/engine/tooluid.js.map +1 -0
- package/dist/src/envstrip.d.ts +10 -0
- package/dist/src/envstrip.d.ts.map +1 -0
- package/dist/src/envstrip.js +15 -0
- package/dist/src/envstrip.js.map +1 -0
- package/dist/src/escalationprompt.d.ts +22 -0
- package/dist/src/escalationprompt.d.ts.map +1 -0
- package/dist/src/escalationprompt.js +54 -0
- package/dist/src/escalationprompt.js.map +1 -0
- package/dist/src/execfn.d.ts +29 -0
- package/dist/src/execfn.d.ts.map +1 -0
- package/dist/src/execfn.js +55 -0
- package/dist/src/execfn.js.map +1 -0
- package/dist/src/finding-chain.d.ts +40 -0
- package/dist/src/finding-chain.d.ts.map +1 -0
- package/dist/src/finding-chain.js +76 -0
- package/dist/src/finding-chain.js.map +1 -0
- package/dist/src/finding-row.d.ts +24 -0
- package/dist/src/finding-row.d.ts.map +1 -0
- package/dist/src/finding-row.js +26 -0
- package/dist/src/finding-row.js.map +1 -0
- package/dist/src/findingkey.d.ts +99 -0
- package/dist/src/findingkey.d.ts.map +1 -0
- package/dist/src/findingkey.js +210 -0
- package/dist/src/findingkey.js.map +1 -0
- package/dist/src/findingsrecord.d.ts +175 -0
- package/dist/src/findingsrecord.d.ts.map +1 -0
- package/dist/src/findingsrecord.js +410 -0
- package/dist/src/findingsrecord.js.map +1 -0
- package/dist/src/followup-mode.d.ts +4 -0
- package/dist/src/followup-mode.d.ts.map +1 -0
- package/dist/src/followup-mode.js +6 -0
- package/dist/src/followup-mode.js.map +1 -0
- package/dist/src/gate.d.ts +199 -0
- package/dist/src/gate.d.ts.map +1 -0
- package/dist/src/gate.js +315 -0
- package/dist/src/gate.js.map +1 -0
- package/dist/src/ghcred.d.ts +58 -0
- package/dist/src/ghcred.d.ts.map +1 -0
- package/dist/src/ghcred.js +139 -0
- package/dist/src/ghcred.js.map +1 -0
- package/dist/src/githubAuth.d.ts +32 -0
- package/dist/src/githubAuth.d.ts.map +1 -0
- package/dist/src/githubAuth.js +116 -0
- package/dist/src/githubAuth.js.map +1 -0
- package/dist/src/githubcore.d.ts +20 -0
- package/dist/src/githubcore.d.ts.map +1 -0
- package/dist/src/githubcore.js +20 -0
- package/dist/src/githubcore.js.map +1 -0
- package/dist/src/glob.d.ts +11 -0
- package/dist/src/glob.d.ts.map +1 -0
- package/dist/src/glob.js +69 -0
- package/dist/src/glob.js.map +1 -0
- package/dist/src/guards.d.ts +93 -0
- package/dist/src/guards.d.ts.map +1 -0
- package/dist/src/guards.js +306 -0
- package/dist/src/guards.js.map +1 -0
- package/dist/src/heartbeat.d.ts +29 -0
- package/dist/src/heartbeat.d.ts.map +1 -0
- package/dist/src/heartbeat.js +87 -0
- package/dist/src/heartbeat.js.map +1 -0
- package/dist/src/heuristics.d.ts +247 -0
- package/dist/src/heuristics.d.ts.map +1 -0
- package/dist/src/heuristics.js +927 -0
- package/dist/src/heuristics.js.map +1 -0
- package/dist/src/homes.d.ts +181 -0
- package/dist/src/homes.d.ts.map +1 -0
- package/dist/src/homes.js +242 -0
- package/dist/src/homes.js.map +1 -0
- package/dist/src/hunkheader.d.ts +11 -0
- package/dist/src/hunkheader.d.ts.map +1 -0
- package/dist/src/hunkheader.js +18 -0
- package/dist/src/hunkheader.js.map +1 -0
- package/dist/src/include.d.ts +435 -0
- package/dist/src/include.d.ts.map +1 -0
- package/dist/src/include.js +1692 -0
- package/dist/src/include.js.map +1 -0
- package/dist/src/launchvocab.d.ts +36 -0
- package/dist/src/launchvocab.d.ts.map +1 -0
- package/dist/src/launchvocab.js +59 -0
- package/dist/src/launchvocab.js.map +1 -0
- package/dist/src/ledgercarry.d.ts +24 -0
- package/dist/src/ledgercarry.d.ts.map +1 -0
- package/dist/src/ledgercarry.js +109 -0
- package/dist/src/ledgercarry.js.map +1 -0
- package/dist/src/lensids.d.ts +7 -0
- package/dist/src/lensids.d.ts.map +1 -0
- package/dist/src/lensids.js +53 -0
- package/dist/src/lensids.js.map +1 -0
- package/dist/src/lensplanning.d.ts +8 -0
- package/dist/src/lensplanning.d.ts.map +1 -0
- package/dist/src/lensplanning.js +126 -0
- package/dist/src/lensplanning.js.map +1 -0
- package/dist/src/lensresult.d.ts +94 -0
- package/dist/src/lensresult.d.ts.map +1 -0
- package/dist/src/lensresult.js +162 -0
- package/dist/src/lensresult.js.map +1 -0
- package/dist/src/lenstuning.d.ts +97 -0
- package/dist/src/lenstuning.d.ts.map +1 -0
- package/dist/src/lenstuning.js +326 -0
- package/dist/src/lenstuning.js.map +1 -0
- package/dist/src/lintconfig.d.ts +31 -0
- package/dist/src/lintconfig.d.ts.map +1 -0
- package/dist/src/lintconfig.js +543 -0
- package/dist/src/lintconfig.js.map +1 -0
- package/dist/src/live/events.d.ts +188 -0
- package/dist/src/live/events.d.ts.map +1 -0
- package/dist/src/live/events.js +136 -0
- package/dist/src/live/events.js.map +1 -0
- package/dist/src/live/writer.d.ts +54 -0
- package/dist/src/live/writer.d.ts.map +1 -0
- package/dist/src/live/writer.js +516 -0
- package/dist/src/live/writer.js.map +1 -0
- package/dist/src/localreview.d.ts +128 -0
- package/dist/src/localreview.d.ts.map +1 -0
- package/dist/src/localreview.js +426 -0
- package/dist/src/localreview.js.map +1 -0
- package/dist/src/loosenedtests.d.ts +13 -0
- package/dist/src/loosenedtests.d.ts.map +1 -0
- package/dist/src/loosenedtests.js +188 -0
- package/dist/src/loosenedtests.js.map +1 -0
- package/dist/src/memoryport.d.ts +264 -0
- package/dist/src/memoryport.d.ts.map +1 -0
- package/dist/src/memoryport.js +445 -0
- package/dist/src/memoryport.js.map +1 -0
- package/dist/src/migrations.d.ts +106 -0
- package/dist/src/migrations.d.ts.map +1 -0
- package/dist/src/migrations.js +373 -0
- package/dist/src/migrations.js.map +1 -0
- package/dist/src/oneshot.d.ts +12 -0
- package/dist/src/oneshot.d.ts.map +1 -0
- package/dist/src/oneshot.js +8 -0
- package/dist/src/oneshot.js.map +1 -0
- package/dist/src/packing.d.ts +11 -0
- package/dist/src/packing.d.ts.map +1 -0
- package/dist/src/packing.js +31 -0
- package/dist/src/packing.js.map +1 -0
- package/dist/src/passes.d.ts +16 -0
- package/dist/src/passes.d.ts.map +1 -0
- package/dist/src/passes.js +104 -0
- package/dist/src/passes.js.map +1 -0
- package/dist/src/passtasks.d.ts +68 -0
- package/dist/src/passtasks.d.ts.map +1 -0
- package/dist/src/passtasks.js +360 -0
- package/dist/src/passtasks.js.map +1 -0
- package/dist/src/pathinside.d.ts +5 -0
- package/dist/src/pathinside.d.ts.map +1 -0
- package/dist/src/pathinside.js +9 -0
- package/dist/src/pathinside.js.map +1 -0
- package/dist/src/pibuiltins.d.ts +36 -0
- package/dist/src/pibuiltins.d.ts.map +1 -0
- package/dist/src/pibuiltins.js +83 -0
- package/dist/src/pibuiltins.js.map +1 -0
- package/dist/src/plankey.d.ts +4 -0
- package/dist/src/plankey.d.ts.map +1 -0
- package/dist/src/plankey.js +10 -0
- package/dist/src/plankey.js.map +1 -0
- package/dist/src/planner.d.ts +375 -0
- package/dist/src/planner.d.ts.map +1 -0
- package/dist/src/planner.js +722 -0
- package/dist/src/planner.js.map +1 -0
- package/dist/src/plugin/args.d.ts +19 -0
- package/dist/src/plugin/args.d.ts.map +1 -0
- package/dist/src/plugin/args.js +107 -0
- package/dist/src/plugin/args.js.map +1 -0
- package/dist/src/plugin/index.d.ts +3 -0
- package/dist/src/plugin/index.d.ts.map +1 -0
- package/dist/src/plugin/index.js +14 -0
- package/dist/src/plugin/index.js.map +1 -0
- package/dist/src/plugin/login.d.ts +39 -0
- package/dist/src/plugin/login.d.ts.map +1 -0
- package/dist/src/plugin/login.js +73 -0
- package/dist/src/plugin/login.js.map +1 -0
- package/dist/src/plugin/review.d.ts +27 -0
- package/dist/src/plugin/review.d.ts.map +1 -0
- package/dist/src/plugin/review.js +298 -0
- package/dist/src/plugin/review.js.map +1 -0
- package/dist/src/plugin/runner.d.ts +6 -0
- package/dist/src/plugin/runner.d.ts.map +1 -0
- package/dist/src/plugin/runner.js +65 -0
- package/dist/src/plugin/runner.js.map +1 -0
- package/dist/src/plugin/scan.d.ts +79 -0
- package/dist/src/plugin/scan.d.ts.map +1 -0
- package/dist/src/plugin/scan.js +348 -0
- package/dist/src/plugin/scan.js.map +1 -0
- package/dist/src/plugin/session.d.ts +56 -0
- package/dist/src/plugin/session.d.ts.map +1 -0
- package/dist/src/plugin/session.js +2 -0
- package/dist/src/plugin/session.js.map +1 -0
- package/dist/src/plugin/setup.d.ts +19 -0
- package/dist/src/plugin/setup.d.ts.map +1 -0
- package/dist/src/plugin/setup.js +142 -0
- package/dist/src/plugin/setup.js.map +1 -0
- package/dist/src/plugin/versiongate.d.ts +26 -0
- package/dist/src/plugin/versiongate.d.ts.map +1 -0
- package/dist/src/plugin/versiongate.js +83 -0
- package/dist/src/plugin/versiongate.js.map +1 -0
- package/dist/src/postingkey.d.ts +8 -0
- package/dist/src/postingkey.d.ts.map +1 -0
- package/dist/src/postingkey.js +25 -0
- package/dist/src/postingkey.js.map +1 -0
- package/dist/src/postingpolicy.d.ts +108 -0
- package/dist/src/postingpolicy.d.ts.map +1 -0
- package/dist/src/postingpolicy.js +341 -0
- package/dist/src/postingpolicy.js.map +1 -0
- package/dist/src/pr-identity.d.ts +3 -0
- package/dist/src/pr-identity.d.ts.map +1 -0
- package/dist/src/pr-identity.js +9 -0
- package/dist/src/pr-identity.js.map +1 -0
- package/dist/src/prdelta.d.ts +181 -0
- package/dist/src/prdelta.d.ts.map +1 -0
- package/dist/src/prdelta.js +501 -0
- package/dist/src/prdelta.js.map +1 -0
- package/dist/src/pricing.d.ts +94 -0
- package/dist/src/pricing.d.ts.map +1 -0
- package/dist/src/pricing.js +209 -0
- package/dist/src/pricing.js.map +1 -0
- package/dist/src/priorfindings.d.ts +167 -0
- package/dist/src/priorfindings.d.ts.map +1 -0
- package/dist/src/priorfindings.js +445 -0
- package/dist/src/priorfindings.js.map +1 -0
- package/dist/src/priortasks.d.ts +31 -0
- package/dist/src/priortasks.d.ts.map +1 -0
- package/dist/src/priortasks.js +119 -0
- package/dist/src/priortasks.js.map +1 -0
- package/dist/src/profilelookup.d.ts +59 -0
- package/dist/src/profilelookup.d.ts.map +1 -0
- package/dist/src/profilelookup.js +98 -0
- package/dist/src/profilelookup.js.map +1 -0
- package/dist/src/profileoverrides.d.ts +91 -0
- package/dist/src/profileoverrides.d.ts.map +1 -0
- package/dist/src/profileoverrides.js +313 -0
- package/dist/src/profileoverrides.js.map +1 -0
- package/dist/src/profiles.d.ts +144 -0
- package/dist/src/profiles.d.ts.map +1 -0
- package/dist/src/profiles.js +604 -0
- package/dist/src/profiles.js.map +1 -0
- package/dist/src/promptdoc.d.ts +3 -0
- package/dist/src/promptdoc.d.ts.map +1 -0
- package/dist/src/promptdoc.js +18 -0
- package/dist/src/promptdoc.js.map +1 -0
- package/dist/src/prtarget.d.ts +70 -0
- package/dist/src/prtarget.d.ts.map +1 -0
- package/dist/src/prtarget.js +181 -0
- package/dist/src/prtarget.js.map +1 -0
- package/dist/src/recheckorder.d.ts +32 -0
- package/dist/src/recheckorder.d.ts.map +1 -0
- package/dist/src/recheckorder.js +5 -0
- package/dist/src/recheckorder.js.map +1 -0
- package/dist/src/reviewapi.d.ts +207 -0
- package/dist/src/reviewapi.d.ts.map +1 -0
- package/dist/src/reviewapi.js +939 -0
- package/dist/src/reviewapi.js.map +1 -0
- package/dist/src/reviewbotfindings.d.ts +33 -0
- package/dist/src/reviewbotfindings.d.ts.map +1 -0
- package/dist/src/reviewbotfindings.js +80 -0
- package/dist/src/reviewbotfindings.js.map +1 -0
- package/dist/src/reviewconfig.d.ts +741 -0
- package/dist/src/reviewconfig.d.ts.map +1 -0
- package/dist/src/reviewconfig.js +797 -0
- package/dist/src/reviewconfig.js.map +1 -0
- package/dist/src/reviewdelta.d.ts +51 -0
- package/dist/src/reviewdelta.d.ts.map +1 -0
- package/dist/src/reviewdelta.js +119 -0
- package/dist/src/reviewdelta.js.map +1 -0
- package/dist/src/reviewdest.d.ts +86 -0
- package/dist/src/reviewdest.d.ts.map +1 -0
- package/dist/src/reviewdest.js +142 -0
- package/dist/src/reviewdest.js.map +1 -0
- package/dist/src/reviewerstub.d.ts +12 -0
- package/dist/src/reviewerstub.d.ts.map +1 -0
- package/dist/src/reviewerstub.js +28 -0
- package/dist/src/reviewerstub.js.map +1 -0
- package/dist/src/reviewhost.d.ts +58 -0
- package/dist/src/reviewhost.d.ts.map +1 -0
- package/dist/src/reviewhost.js +135 -0
- package/dist/src/reviewhost.js.map +1 -0
- package/dist/src/reviewpost.d.ts +79 -0
- package/dist/src/reviewpost.d.ts.map +1 -0
- package/dist/src/reviewpost.js +233 -0
- package/dist/src/reviewpost.js.map +1 -0
- package/dist/src/reviewrender.d.ts +154 -0
- package/dist/src/reviewrender.d.ts.map +1 -0
- package/dist/src/reviewrender.js +480 -0
- package/dist/src/reviewrender.js.map +1 -0
- package/dist/src/reviewstate.d.ts +62 -0
- package/dist/src/reviewstate.d.ts.map +1 -0
- package/dist/src/reviewstate.js +167 -0
- package/dist/src/reviewstate.js.map +1 -0
- package/dist/src/reviewstore.d.ts +17 -0
- package/dist/src/reviewstore.d.ts.map +1 -0
- package/dist/src/reviewstore.js +105 -0
- package/dist/src/reviewstore.js.map +1 -0
- package/dist/src/round-progress.d.ts +120 -0
- package/dist/src/round-progress.d.ts.map +1 -0
- package/dist/src/round-progress.js +172 -0
- package/dist/src/round-progress.js.map +1 -0
- package/dist/src/round-stage-deadlines.d.ts +12 -0
- package/dist/src/round-stage-deadlines.d.ts.map +1 -0
- package/dist/src/round-stage-deadlines.js +10 -0
- package/dist/src/round-stage-deadlines.js.map +1 -0
- package/dist/src/session-command.d.ts +19 -0
- package/dist/src/session-command.d.ts.map +1 -0
- package/dist/src/session-command.js +20 -0
- package/dist/src/session-command.js.map +1 -0
- package/dist/src/settledread.d.ts +61 -0
- package/dist/src/settledread.d.ts.map +1 -0
- package/dist/src/settledread.js +135 -0
- package/dist/src/settledread.js.map +1 -0
- package/dist/src/severity.d.ts +167 -0
- package/dist/src/severity.d.ts.map +1 -0
- package/dist/src/severity.js +364 -0
- package/dist/src/severity.js.map +1 -0
- package/dist/src/severityrank.d.ts +8 -0
- package/dist/src/severityrank.d.ts.map +1 -0
- package/dist/src/severityrank.js +16 -0
- package/dist/src/severityrank.js.map +1 -0
- package/dist/src/standing-review.d.ts +45 -0
- package/dist/src/standing-review.d.ts.map +1 -0
- package/dist/src/standing-review.js +43 -0
- package/dist/src/standing-review.js.map +1 -0
- package/dist/src/storerows.d.ts +225 -0
- package/dist/src/storerows.d.ts.map +1 -0
- package/dist/src/storerows.js +7 -0
- package/dist/src/storerows.js.map +1 -0
- package/dist/src/styleguide.d.ts +25 -0
- package/dist/src/styleguide.d.ts.map +1 -0
- package/dist/src/styleguide.js +272 -0
- package/dist/src/styleguide.js.map +1 -0
- package/dist/src/sweepstatus.d.ts +42 -0
- package/dist/src/sweepstatus.d.ts.map +1 -0
- package/dist/src/sweepstatus.js +97 -0
- package/dist/src/sweepstatus.js.map +1 -0
- package/dist/src/templates.d.ts +243 -0
- package/dist/src/templates.d.ts.map +1 -0
- package/dist/src/templates.js +847 -0
- package/dist/src/templates.js.map +1 -0
- package/dist/src/types.d.ts +639 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +90 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/unifieddiff.d.ts +22 -0
- package/dist/src/unifieddiff.d.ts.map +1 -0
- package/dist/src/unifieddiff.js +176 -0
- package/dist/src/unifieddiff.js.map +1 -0
- package/dist/src/yieldloop.d.ts +2 -0
- package/dist/src/yieldloop.d.ts.map +1 -0
- package/dist/src/yieldloop.js +14 -0
- package/dist/src/yieldloop.js.map +1 -0
- package/package.json +60 -4
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "scan-result.v1.json",
|
|
4
|
+
"title": "qcr scan --json, version 1",
|
|
5
|
+
"description": "One JSON object per `qcr scan <verb> --json`. schema_version leads every payload; ok says whether the call succeeded. Fields beyond those named may appear without a version change; a caller ignores what it does not know and refuses a schema_version it does not know. A refusal is {ok:false, errors:[\u2026]}. Verbs not named here (stage2, units, doctor, dismiss, match, suggestions) carry their own fields beside ok and schema_version.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["schema_version", "ok"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": {
|
|
10
|
+
"const": 1,
|
|
11
|
+
"description": "This schema's version."
|
|
12
|
+
},
|
|
13
|
+
"ok": {
|
|
14
|
+
"type": "boolean"
|
|
15
|
+
},
|
|
16
|
+
"errors": {
|
|
17
|
+
"type": "array",
|
|
18
|
+
"items": {
|
|
19
|
+
"type": "string"
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"preview": {
|
|
23
|
+
"$ref": "#/$defs/preview"
|
|
24
|
+
},
|
|
25
|
+
"start": {
|
|
26
|
+
"type": ["array", "null"],
|
|
27
|
+
"items": {
|
|
28
|
+
"type": "string"
|
|
29
|
+
},
|
|
30
|
+
"description": "preview: the arguments that start this exact scan; null when a blocker stands in the way."
|
|
31
|
+
},
|
|
32
|
+
"run": {
|
|
33
|
+
"description": "status, start --foreground: the run, or null when none has run. A detached start: a summary {id, mode, sha, cases (a count), cap_usd}. stop: the stopped run's id.",
|
|
34
|
+
"anyOf": [
|
|
35
|
+
{ "type": "null" },
|
|
36
|
+
{ "type": "string" },
|
|
37
|
+
{ "$ref": "#/$defs/runStatus" },
|
|
38
|
+
{ "$ref": "#/$defs/runStarted" }
|
|
39
|
+
]
|
|
40
|
+
},
|
|
41
|
+
"problems": {
|
|
42
|
+
"type": "array",
|
|
43
|
+
"items": {
|
|
44
|
+
"type": "string"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"active": {
|
|
48
|
+
"type": "boolean"
|
|
49
|
+
},
|
|
50
|
+
"history": {
|
|
51
|
+
"type": "array"
|
|
52
|
+
},
|
|
53
|
+
"ledger": {
|
|
54
|
+
"type": "object"
|
|
55
|
+
},
|
|
56
|
+
"timed_out": {
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"description": "status --wait gave up after --timeout; the scan is still going."
|
|
59
|
+
},
|
|
60
|
+
"total": {
|
|
61
|
+
"type": "integer",
|
|
62
|
+
"minimum": 0,
|
|
63
|
+
"description": "findings: how many match, before --limit."
|
|
64
|
+
},
|
|
65
|
+
"validity": {
|
|
66
|
+
"type": "object",
|
|
67
|
+
"description": "findings: the matching findings counted by validity."
|
|
68
|
+
},
|
|
69
|
+
"findings": {
|
|
70
|
+
"type": "array",
|
|
71
|
+
"items": {
|
|
72
|
+
"$ref": "#/$defs/finding"
|
|
73
|
+
}
|
|
74
|
+
},
|
|
75
|
+
"question": {
|
|
76
|
+
"type": ["object", "null"]
|
|
77
|
+
},
|
|
78
|
+
"log": {
|
|
79
|
+
"type": "string"
|
|
80
|
+
},
|
|
81
|
+
"container": {
|
|
82
|
+
"type": "string"
|
|
83
|
+
},
|
|
84
|
+
"image": {
|
|
85
|
+
"type": "string"
|
|
86
|
+
},
|
|
87
|
+
"stamp": {
|
|
88
|
+
"type": "string"
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
"$defs": {
|
|
92
|
+
"runStatus": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"required": [
|
|
95
|
+
"id",
|
|
96
|
+
"mode",
|
|
97
|
+
"sha",
|
|
98
|
+
"state",
|
|
99
|
+
"display",
|
|
100
|
+
"started_at",
|
|
101
|
+
"cases_total",
|
|
102
|
+
"cases_done",
|
|
103
|
+
"cases_failed",
|
|
104
|
+
"findings",
|
|
105
|
+
"doubted",
|
|
106
|
+
"cases"
|
|
107
|
+
],
|
|
108
|
+
"properties": {
|
|
109
|
+
"id": {
|
|
110
|
+
"type": "string"
|
|
111
|
+
},
|
|
112
|
+
"mode": {
|
|
113
|
+
"type": "string"
|
|
114
|
+
},
|
|
115
|
+
"sha": {
|
|
116
|
+
"type": "string"
|
|
117
|
+
},
|
|
118
|
+
"state": {
|
|
119
|
+
"type": "string"
|
|
120
|
+
},
|
|
121
|
+
"display": {
|
|
122
|
+
"type": "string"
|
|
123
|
+
},
|
|
124
|
+
"depth": {
|
|
125
|
+
"type": "string"
|
|
126
|
+
},
|
|
127
|
+
"started_at": {
|
|
128
|
+
"type": "string"
|
|
129
|
+
},
|
|
130
|
+
"finished_at": {
|
|
131
|
+
"type": ["string", "null"]
|
|
132
|
+
},
|
|
133
|
+
"cap_usd": {
|
|
134
|
+
"type": ["number", "null"]
|
|
135
|
+
},
|
|
136
|
+
"estimate_usd": {
|
|
137
|
+
"type": ["number", "null"]
|
|
138
|
+
},
|
|
139
|
+
"spent_usd": {
|
|
140
|
+
"type": ["number", "null"]
|
|
141
|
+
},
|
|
142
|
+
"unpriced_cases": {
|
|
143
|
+
"type": "integer"
|
|
144
|
+
},
|
|
145
|
+
"cases_total": {
|
|
146
|
+
"type": "integer"
|
|
147
|
+
},
|
|
148
|
+
"cases_done": {
|
|
149
|
+
"type": "integer"
|
|
150
|
+
},
|
|
151
|
+
"cases_failed": {
|
|
152
|
+
"type": "integer"
|
|
153
|
+
},
|
|
154
|
+
"findings": {
|
|
155
|
+
"type": "integer"
|
|
156
|
+
},
|
|
157
|
+
"doubted": {
|
|
158
|
+
"type": "integer"
|
|
159
|
+
},
|
|
160
|
+
"matching": {
|
|
161
|
+
"type": ["object", "null"]
|
|
162
|
+
},
|
|
163
|
+
"tickets_closed": {
|
|
164
|
+
"type": "integer"
|
|
165
|
+
},
|
|
166
|
+
"problems": {
|
|
167
|
+
"type": "array",
|
|
168
|
+
"items": {
|
|
169
|
+
"type": "string"
|
|
170
|
+
}
|
|
171
|
+
},
|
|
172
|
+
"cases": {
|
|
173
|
+
"type": "array",
|
|
174
|
+
"items": {
|
|
175
|
+
"type": "object",
|
|
176
|
+
"required": ["id", "unit", "status", "findings", "doubted", "cost_usd", "error"],
|
|
177
|
+
"properties": {
|
|
178
|
+
"id": {
|
|
179
|
+
"type": "string"
|
|
180
|
+
},
|
|
181
|
+
"unit": {
|
|
182
|
+
"type": "string"
|
|
183
|
+
},
|
|
184
|
+
"status": {
|
|
185
|
+
"type": "string"
|
|
186
|
+
},
|
|
187
|
+
"findings": {
|
|
188
|
+
"type": "integer"
|
|
189
|
+
},
|
|
190
|
+
"doubted": {
|
|
191
|
+
"type": "integer"
|
|
192
|
+
},
|
|
193
|
+
"cost_usd": {
|
|
194
|
+
"type": ["number", "null"]
|
|
195
|
+
},
|
|
196
|
+
"error": {
|
|
197
|
+
"type": ["string", "null"]
|
|
198
|
+
},
|
|
199
|
+
"lens": {
|
|
200
|
+
"type": "string"
|
|
201
|
+
},
|
|
202
|
+
"tier": {
|
|
203
|
+
"type": ["string", "null"]
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
"runStarted": {
|
|
211
|
+
"type": "object",
|
|
212
|
+
"required": ["id", "mode", "sha", "cases", "cap_usd"],
|
|
213
|
+
"properties": {
|
|
214
|
+
"id": { "type": "string" },
|
|
215
|
+
"mode": { "type": "string" },
|
|
216
|
+
"sha": { "type": "string" },
|
|
217
|
+
"cases": { "type": "integer" },
|
|
218
|
+
"cap_usd": { "type": "number" }
|
|
219
|
+
}
|
|
220
|
+
},
|
|
221
|
+
"seen": {
|
|
222
|
+
"type": "object",
|
|
223
|
+
"required": ["run", "sha"],
|
|
224
|
+
"properties": {
|
|
225
|
+
"run": {
|
|
226
|
+
"type": "string"
|
|
227
|
+
},
|
|
228
|
+
"sha": {
|
|
229
|
+
"type": "string"
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
},
|
|
233
|
+
"finding": {
|
|
234
|
+
"type": "object",
|
|
235
|
+
"required": [
|
|
236
|
+
"fingerprint",
|
|
237
|
+
"file",
|
|
238
|
+
"range",
|
|
239
|
+
"lens",
|
|
240
|
+
"lenses",
|
|
241
|
+
"unit",
|
|
242
|
+
"kind",
|
|
243
|
+
"severity",
|
|
244
|
+
"validity",
|
|
245
|
+
"state",
|
|
246
|
+
"claim",
|
|
247
|
+
"doubted",
|
|
248
|
+
"doubt",
|
|
249
|
+
"looks_like_dismissed",
|
|
250
|
+
"dismissal_reason",
|
|
251
|
+
"ticket",
|
|
252
|
+
"first_seen",
|
|
253
|
+
"last_seen"
|
|
254
|
+
],
|
|
255
|
+
"properties": {
|
|
256
|
+
"fingerprint": {
|
|
257
|
+
"type": "string"
|
|
258
|
+
},
|
|
259
|
+
"file": {
|
|
260
|
+
"type": "string"
|
|
261
|
+
},
|
|
262
|
+
"range": {
|
|
263
|
+
"type": "object",
|
|
264
|
+
"required": ["start", "end"],
|
|
265
|
+
"properties": {
|
|
266
|
+
"start": {
|
|
267
|
+
"type": "integer"
|
|
268
|
+
},
|
|
269
|
+
"end": {
|
|
270
|
+
"type": "integer"
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
},
|
|
274
|
+
"lens": {
|
|
275
|
+
"type": "string"
|
|
276
|
+
},
|
|
277
|
+
"lenses": {
|
|
278
|
+
"type": "array",
|
|
279
|
+
"items": {
|
|
280
|
+
"type": "string"
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
"unit": {
|
|
284
|
+
"type": "string"
|
|
285
|
+
},
|
|
286
|
+
"kind": {
|
|
287
|
+
"type": "string"
|
|
288
|
+
},
|
|
289
|
+
"severity": {
|
|
290
|
+
"type": "string"
|
|
291
|
+
},
|
|
292
|
+
"validity": {
|
|
293
|
+
"type": "string"
|
|
294
|
+
},
|
|
295
|
+
"state": {
|
|
296
|
+
"type": "string"
|
|
297
|
+
},
|
|
298
|
+
"claim": {
|
|
299
|
+
"type": "string"
|
|
300
|
+
},
|
|
301
|
+
"doubted": {
|
|
302
|
+
"type": "boolean"
|
|
303
|
+
},
|
|
304
|
+
"doubt": {
|
|
305
|
+
"type": ["object", "null"],
|
|
306
|
+
"properties": {
|
|
307
|
+
"word": {
|
|
308
|
+
"type": "string"
|
|
309
|
+
},
|
|
310
|
+
"reason": {
|
|
311
|
+
"type": "string"
|
|
312
|
+
},
|
|
313
|
+
"class": {
|
|
314
|
+
"type": ["string", "null"]
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
},
|
|
318
|
+
"looks_like_dismissed": {
|
|
319
|
+
"type": ["object", "null"],
|
|
320
|
+
"properties": {
|
|
321
|
+
"fingerprint": {
|
|
322
|
+
"type": "string"
|
|
323
|
+
},
|
|
324
|
+
"reason": {
|
|
325
|
+
"type": "string"
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
},
|
|
329
|
+
"dismissal_reason": {
|
|
330
|
+
"type": ["string", "null"]
|
|
331
|
+
},
|
|
332
|
+
"ticket": {
|
|
333
|
+
"type": ["string", "null"]
|
|
334
|
+
},
|
|
335
|
+
"first_seen": {
|
|
336
|
+
"$ref": "#/$defs/seen"
|
|
337
|
+
},
|
|
338
|
+
"last_seen": {
|
|
339
|
+
"$ref": "#/$defs/seen"
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
},
|
|
343
|
+
"preview": {
|
|
344
|
+
"type": "object",
|
|
345
|
+
"required": [
|
|
346
|
+
"key",
|
|
347
|
+
"mode",
|
|
348
|
+
"sha",
|
|
349
|
+
"cases",
|
|
350
|
+
"files",
|
|
351
|
+
"lines",
|
|
352
|
+
"estimate_usd",
|
|
353
|
+
"cap_usd",
|
|
354
|
+
"depth",
|
|
355
|
+
"blockers"
|
|
356
|
+
],
|
|
357
|
+
"properties": {
|
|
358
|
+
"key": {
|
|
359
|
+
"type": "string",
|
|
360
|
+
"description": "Quote it with start --key to confirm exactly this scan."
|
|
361
|
+
},
|
|
362
|
+
"mode": {
|
|
363
|
+
"type": "string"
|
|
364
|
+
},
|
|
365
|
+
"sha": {
|
|
366
|
+
"type": "string"
|
|
367
|
+
},
|
|
368
|
+
"cases": {
|
|
369
|
+
"type": "array",
|
|
370
|
+
"items": {
|
|
371
|
+
"type": "object",
|
|
372
|
+
"required": ["id", "files", "lines", "estimate_usd"],
|
|
373
|
+
"properties": {
|
|
374
|
+
"id": {
|
|
375
|
+
"type": "string"
|
|
376
|
+
},
|
|
377
|
+
"files": {
|
|
378
|
+
"type": "integer"
|
|
379
|
+
},
|
|
380
|
+
"lines": {
|
|
381
|
+
"type": "integer"
|
|
382
|
+
},
|
|
383
|
+
"estimate_usd": {
|
|
384
|
+
"type": ["number", "null"]
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
},
|
|
389
|
+
"files": {
|
|
390
|
+
"type": "integer",
|
|
391
|
+
"minimum": 0
|
|
392
|
+
},
|
|
393
|
+
"lines": {
|
|
394
|
+
"type": "integer",
|
|
395
|
+
"minimum": 0
|
|
396
|
+
},
|
|
397
|
+
"estimate_usd": {
|
|
398
|
+
"type": ["number", "null"]
|
|
399
|
+
},
|
|
400
|
+
"cap_usd": {
|
|
401
|
+
"type": ["number", "null"]
|
|
402
|
+
},
|
|
403
|
+
"depth": {
|
|
404
|
+
"type": "string"
|
|
405
|
+
},
|
|
406
|
+
"blockers": {
|
|
407
|
+
"type": "array",
|
|
408
|
+
"items": {
|
|
409
|
+
"type": "string"
|
|
410
|
+
}
|
|
411
|
+
},
|
|
412
|
+
"settings": {
|
|
413
|
+
"type": "object"
|
|
414
|
+
},
|
|
415
|
+
"delta": {
|
|
416
|
+
"type": ["object", "null"]
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "version.v1.json",
|
|
4
|
+
"title": "qcr version --json, version 1",
|
|
5
|
+
"description": "What a plugin checks before it talks to this install: the image's version, the schema versions of the review and scan payloads, and the pi pin.",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"required": ["schema_version", "image", "schemas", "pi"],
|
|
8
|
+
"properties": {
|
|
9
|
+
"schema_version": {
|
|
10
|
+
"const": 1,
|
|
11
|
+
"description": "This schema's version."
|
|
12
|
+
},
|
|
13
|
+
"image": {
|
|
14
|
+
"type": "object",
|
|
15
|
+
"required": ["version", "build_sha"],
|
|
16
|
+
"properties": {
|
|
17
|
+
"version": {
|
|
18
|
+
"type": "string",
|
|
19
|
+
"description": "package.json's version."
|
|
20
|
+
},
|
|
21
|
+
"build_sha": {
|
|
22
|
+
"type": ["string", "null"],
|
|
23
|
+
"description": "The stamp baked into a rebuilt image; null on a bare checkout."
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"schemas": {
|
|
28
|
+
"type": "object",
|
|
29
|
+
"required": ["review", "scan"],
|
|
30
|
+
"properties": {
|
|
31
|
+
"review": {
|
|
32
|
+
"type": "integer",
|
|
33
|
+
"minimum": 1,
|
|
34
|
+
"description": "schema_version of review-result payloads."
|
|
35
|
+
},
|
|
36
|
+
"scan": {
|
|
37
|
+
"type": "integer",
|
|
38
|
+
"minimum": 1,
|
|
39
|
+
"description": "schema_version of scan-result payloads."
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"pi": {
|
|
44
|
+
"type": ["object", "null"],
|
|
45
|
+
"required": ["package", "version"],
|
|
46
|
+
"properties": {
|
|
47
|
+
"package": {
|
|
48
|
+
"type": "string"
|
|
49
|
+
},
|
|
50
|
+
"version": {
|
|
51
|
+
"type": "string"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"description": "The pinned pi; null when no pin is found."
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_comment": "AGENTS.md invariant 3: these files are SEEDED and canonical - byte-identical to the in-repo canonical copies under seeds/ (which carry the seeding lineage). Never edit them; per-pass model overrides go through the repo profile's [lenses.<pass>] effort / min_tier. Regenerate this manifest ONLY alongside a ratified reseed that refreshes seeds/ in the same commit.",
|
|
3
|
+
"source": "seeds/ (in-repo canonical copies; lineage: the seeding)",
|
|
4
|
+
"algorithm": "sha256",
|
|
5
|
+
"files": {
|
|
6
|
+
"agents/pass-baseline.md": "192ceadfed2096ce5f003b862c9942d7382110586d46adb04909784e180b7376",
|
|
7
|
+
"agents/pass-contracts.md": "f1cc07a83d5e694469c6a118ddaa3597e69fa783fc146073d200562f8bfe70a9",
|
|
8
|
+
"agents/pass-data-safety.md": "a6975823ca134fc7563fe0d68bade4da9d235bcaefa2ddd4168e87f43957e59e",
|
|
9
|
+
"agents/pass-delivery.md": "7ed59d92860a7e8d502a144b3e2784905695ff98675325ab540c7761029bab9c",
|
|
10
|
+
"agents/pass-prod-risk.md": "268daaa232d4a52fad1256c0a4407c6c19da39fd4e8797c603b24daed5033d9d",
|
|
11
|
+
"agents/pass-security.md": "b37dfb0f72297f868be4e741687241592a47ef8c197641df797810414ba6458b",
|
|
12
|
+
"agents/pass-statelessness.md": "089aca3cb3c818da6f3231eb3938d1ec7315b5a5158fa2ce6843b527b5e87451",
|
|
13
|
+
"agents/pass-ui.md": "7fe99149cc1f174f3b035911f86d93dad96ba493401495443a205e889a09eea6",
|
|
14
|
+
"agents/pass-validate.md": "cf28b7b2dd26b63265a4330c538ce3993dd03bda778810c2c199937195e4bb67",
|
|
15
|
+
"prompts/conversation-system.md": "28ee082e24caaf58c611b210663a81557199471724ba1a8ec0458480b91abfa1",
|
|
16
|
+
"prompts/eod-sweep.md": "9df21d94327f2f4475e95cd4337174d81efbe5dd8f5d6589d3c7788ff1d375f1",
|
|
17
|
+
"prompts/pass-common.md": "02e8a25d958f92745513474519b571e03205ddb1a50493146483447108689450"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pass-baseline
|
|
3
|
+
description: Always-on review pass — claimed invariants, correctness, tests, conventions, sibling PRs.
|
|
4
|
+
tools: read, bash, grep, glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
{{include:prompts/pass-common.md}}
|
|
8
|
+
|
|
9
|
+
# Lens: baseline (every PR)
|
|
10
|
+
|
|
11
|
+
**Claimed invariant — review the claim, not just the diff.** The PR's
|
|
12
|
+
title/body claim defines the review scope. If it claims a property
|
|
13
|
+
("retry-safe", "no message is dropped", "silences X", "fixes Y"), verify the
|
|
14
|
+
property holds across the *whole mechanism*, not just the changed lines:
|
|
15
|
+
enumerate the cases the claim covers and check each against the code. Two hard
|
|
16
|
+
rules: (a) **"pre-existing" is not a valid demotion** for a failure inside the
|
|
17
|
+
claimed failure class — a known drop path in a "nothing is dropped" PR is
|
|
18
|
+
in-scope by definition and is P1; (b) verify **efficacy**, not just safety —
|
|
19
|
+
confirm the mechanism can actually produce the claimed effect (trace the
|
|
20
|
+
arithmetic, the log levels, the control flow to the promised outcome). For
|
|
21
|
+
heuristic/fallback fixes, ask the root-cause question: *what upstream bug
|
|
22
|
+
creates this state, and where is it fixed?* — P3 question if the PR only
|
|
23
|
+
papers over it.
|
|
24
|
+
|
|
25
|
+
**Correctness** — Does the code do what it claims? Trace the logic. Edge cases
|
|
26
|
+
(empty/null/missing keys, concurrency)? Asynchronous code correct (no missing
|
|
27
|
+
awaits, no blocking calls on async paths)? Database access free of N+1
|
|
28
|
+
queries (a query per row where one query or a join would do)? When the diff
|
|
29
|
+
assembles text from fragments (LLM prompts, templates, user-facing messages),
|
|
30
|
+
**assemble a sample of the final string by reading** (join the literals
|
|
31
|
+
and format calls by hand) and inspect the seams —
|
|
32
|
+
whitespace, newlines, separators. No literal placeholder token may be
|
|
33
|
+
reachable in an outbound message without a guaranteed fallback (remember a
|
|
34
|
+
truthiness check is false on an empty string).
|
|
35
|
+
|
|
36
|
+
**Tests** — New features must have tests, in the shape the repo's existing
|
|
37
|
+
tests already use. Missing tests for a real feature is **P1**. Verify the
|
|
38
|
+
headline regression test actually **exercises the guarded branch**, by
|
|
39
|
+
reading: what value does the assertion compare, and is that value still
|
|
40
|
+
produced when the bug is present? (A helper that returns the key itself for a
|
|
41
|
+
missing translation makes `contains(key)` hold for any broken key.) Say which
|
|
42
|
+
value and why in `evidence`; whether the suite passes comes from CI. If the PR
|
|
43
|
+
edits a prompt, fallback template, or other string that a test pins verbatim
|
|
44
|
+
(an expected-value constant, a golden file, a snapshot), the pinned copy must
|
|
45
|
+
be updated in the same PR.
|
|
46
|
+
|
|
47
|
+
**Conventions** (from the repo's own agent-directive files — AGENTS.md,
|
|
48
|
+
CLAUDE.md and kin — and its contributing guide) — flag violations as **nit**
|
|
49
|
+
unless they cause a bug. Judge against the conventions the repo writes down,
|
|
50
|
+
never against another codebase's habits.
|
|
51
|
+
|
|
52
|
+
**Sibling / template PRs** — If the PR is part of a series ("Phase 2/3",
|
|
53
|
+
"Follow-up to …", or the same template applied to a different integration),
|
|
54
|
+
read the sibling PR's diff and compare. Any divergence in the security or
|
|
55
|
+
correctness contract is suspicious: either the sibling has a bug this PR fixes
|
|
56
|
+
(call it out so the sibling gets patched too), or this PR is regressing a
|
|
57
|
+
check the sibling intentionally got right.
|
|
58
|
+
|
|
59
|
+
**Re-review duty** — when the task string lists prior findings to verify,
|
|
60
|
+
check each **mechanically at the current head** first and report its true
|
|
61
|
+
state (`fixed@sha` with evidence, or still-open) before hunting new findings.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pass-contracts
|
|
3
|
+
description: External-contracts review pass — provider payloads verified field-by-field, acceptance semantics, caveat owners.
|
|
4
|
+
tools: read, bash, grep, glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
{{include:prompts/pass-common.md}}
|
|
8
|
+
|
|
9
|
+
# Lens: external contracts
|
|
10
|
+
|
|
11
|
+
Apply to: new/changed payloads to external providers (third-party APIs,
|
|
12
|
+
payment, messaging, analytics and model services).
|
|
13
|
+
|
|
14
|
+
For any new or changed payload to an external provider: (a) verify the
|
|
15
|
+
contract **field by field against the provider's docs** — endpoint, id
|
|
16
|
+
formats, timestamp format, required fields including consent/privacy fields;
|
|
17
|
+
(b) any "unverified / provisional / TODO-confirm before go-live" marker
|
|
18
|
+
shipping into a live credentialed path is P1 — require a live probe or hard
|
|
19
|
+
dormancy with a tracked activation step; (c) any **intra-PR contradiction**
|
|
20
|
+
about the contract (code vs docs vs tests vs PR body disagreeing on an id
|
|
21
|
+
format or field meaning) is P1 on its own; (d) **HTTP 2xx is transport, not
|
|
22
|
+
acceptance** — fire-and-forget sends must parse the response body's acceptance
|
|
23
|
+
semantics (`accepted_events`, `errors[]`) and log/alert on shortfall; (e) a
|
|
24
|
+
new ad/analytics sink is not "verified" until the *platform side* shows a
|
|
25
|
+
credited event — require that evidence or an explicit post-deploy verification
|
|
26
|
+
step with an owner. **Caveats need owners**: every acknowledged
|
|
27
|
+
gap/limitation/follow-up in the PR body must map to a tracked artifact
|
|
28
|
+
(ticket, monitor, TODO with an owner) — raise a P2 question listing any that
|
|
29
|
+
don't; a risk that lives only in merged-PR prose is a production defect on a
|
|
30
|
+
timer.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pass-data-safety
|
|
3
|
+
description: Data-safety review pass — migrations DDL, blast radius, backfills; carries the migration gate.
|
|
4
|
+
tools: read, bash, grep, glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
{{include:prompts/pass-common.md}}
|
|
8
|
+
|
|
9
|
+
# Lens: data safety (assume the repo's hot tables hold millions of rows)
|
|
10
|
+
|
|
11
|
+
Apply to: migrations, backfills, bulk writes, scheduled jobs that fan out per
|
|
12
|
+
row.
|
|
13
|
+
|
|
14
|
+
- **Migrations** — judge from the migration file and the model diff: the
|
|
15
|
+
operation types, `NOT NULL` adds, `DROP COLUMN`, added defaults, data-step
|
|
16
|
+
and raw-SQL bodies, index adds on large tables. Does the operation change
|
|
17
|
+
metadata only, scan the table, or rebuild it while holding a write lock? A
|
|
18
|
+
metadata-only change is deploy-safe; a scan still costs; a rebuild
|
|
19
|
+
write-locks for its whole run. Where the real DDL decides it and cannot be
|
|
20
|
+
read off the operation, ask the author for the rendered DDL in a
|
|
21
|
+
`[question]` — never a blocker asserting a hazard nobody rendered. Check
|
|
22
|
+
rolling-deploy ordering for DROP COLUMN / NOT NULL adds (old pods still run
|
|
23
|
+
the old schema mid-rollout).
|
|
24
|
+
**Migration naming/order — P1 ONLY when out of order with the base
|
|
25
|
+
branch**: if the PR adds a migration that the repo's migration tool orders
|
|
26
|
+
(by a sequence number, a timestamp, or a declared parent), verify it against
|
|
27
|
+
the **base branch**: its number must not already exist there, and its
|
|
28
|
+
declared parent must be the base branch's current head for that migration
|
|
29
|
+
set — out of sequence with the base branch (the migration tool would break
|
|
30
|
+
on merge) is P1. Number overlaps with other still-open PRs are **NOT
|
|
31
|
+
findings** — at most one `nit` note listing the PR numbers (whoever merges
|
|
32
|
+
second renumbers; that is routine).
|
|
33
|
+
- **Blast radius sizing** — judge fan-out against **production row counts, not
|
|
34
|
+
the diff**. Any new/changed scheduled job, recovery cron, backfill, or
|
|
35
|
+
redispatch that does work per matching row needs a per-run cap with
|
|
36
|
+
deterministic ordering and a kill switch, and a predicate that is bounded;
|
|
37
|
+
missing any of these is P1. The current production count of rows matching
|
|
38
|
+
the trigger predicate is the author's to state: when the PR body does not,
|
|
39
|
+
ask for it in a `[question]` (an accumulated backlog is the payload of the
|
|
40
|
+
first tick). Review the **first tick over the accumulated backlog**, not the
|
|
41
|
+
steady state.
|
|
42
|
+
- **Backfill-vs-validator proof** — any migration/backfill copying legacy data
|
|
43
|
+
into a newly validated field needs the count of nonconforming source rows;
|
|
44
|
+
"the data will fit the new pattern" is a claim. When the PR does not state
|
|
45
|
+
the count, ask the author for it in a `[question]`.
|
|
46
|
+
|
|
47
|
+
## MIGRATION GATE (when the task string flags it)
|
|
48
|
+
|
|
49
|
+
Judge on the same readable evidence. The ONLY ordering blocker is being out of
|
|
50
|
+
order with the **base branch**. Report `gate: unproven` in your findings block,
|
|
51
|
+
with the `[question]` that would settle it, unless the migration is readably
|
|
52
|
+
metadata-only on a small table, in sequence with the base branch,
|
|
53
|
+
backfill-free, and rolling-deploy ordering-safe — only in that narrow case
|
|
54
|
+
report `gate: self-verdict-ok`.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: pass-delivery
|
|
3
|
+
description: Delivery-semantics review pass — at-least-once handlers, redelivery, drop paths, fetch windows.
|
|
4
|
+
tools: read, bash, grep, glob
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
{{include:prompts/pass-common.md}}
|
|
8
|
+
|
|
9
|
+
# Lens: delivery semantics (at-least-once)
|
|
10
|
+
|
|
11
|
+
Apply to: webhook handlers, background tasks, message-queue and task-queue
|
|
12
|
+
consumers, crons, retries.
|
|
13
|
+
|
|
14
|
+
Queues, task services, webhooks, and crons deliver at least once; review
|
|
15
|
+
handlers **resume-point-by-resume-point, not statement-by-statement**.
|
|
16
|
+
|
|
17
|
+
- **Redelivery sweep**: enumerate every database, index or external write reachable
|
|
18
|
+
from the task entrypoint and ask for each: *process killed immediately after
|
|
19
|
+
this statement, task redelivered from the top — does it raise, duplicate, or
|
|
20
|
+
converge?* Every insert into a unique/OneToOne-constrained table must be
|
|
21
|
+
conflict-safe (`ignore_conflicts`, upsert, `get_or_create`) or
|
|
22
|
+
transactionally grouped. If the PR claims "retry-safe", the sweep covers the
|
|
23
|
+
**whole task**, not only the statement that last crashed.
|
|
24
|
+
- **Drop-path enumeration**: wherever a handler consumes its only delivery (a
|
|
25
|
+
`cache.add` dedup key, an ACK, a cursor advance), list every exit path
|
|
26
|
+
(`return`, `raise`, early guard) between that consumption and durable
|
|
27
|
+
completion of the work — each one is a permanent message-loss path requiring
|
|
28
|
+
individual justification, or the consumption must move after completion.
|
|
29
|
+
Converting an error exit into a silent success (`raise` → `return`, NACK →
|
|
30
|
+
ACK) demands a line-level trace of what durable state was already consumed
|
|
31
|
+
at that point; verify any claimed compensating read by its **position in the
|
|
32
|
+
control flow**, not by plausibility.
|
|
33
|
+
- **Fetch-window completeness**: when post-race correctness relies on a later
|
|
34
|
+
read "covering" earlier events, check the read's window semantics under
|
|
35
|
+
every ordering of {event arrival, boundary-advancing write, read} — a window
|
|
36
|
+
keyed to a moving boundary structurally cannot return events that land
|
|
37
|
+
behind it.
|