@quickchatai/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 +385 -2
- package/THIRD-PARTY-NOTICES.md +134 -0
- package/agents/pass-abstraction.md +64 -0
- package/agents/pass-ask-human.md +134 -0
- package/agents/pass-backcompat.md +67 -0
- package/agents/pass-baseline.md +61 -0
- package/agents/pass-behaviour-delta.md +64 -0
- package/agents/pass-bounds.md +36 -0
- package/agents/pass-claims.md +31 -0
- package/agents/pass-concurrency.md +168 -0
- package/agents/pass-consistency.md +57 -0
- package/agents/pass-contracts.md +30 -0
- package/agents/pass-data-safety.md +54 -0
- package/agents/pass-deferred.md +35 -0
- package/agents/pass-delivery.md +37 -0
- package/agents/pass-duplication.md +60 -0
- package/agents/pass-intent.md +63 -0
- package/agents/pass-lint-conformance.md +46 -0
- package/agents/pass-maintainability.md +67 -0
- package/agents/pass-placement.md +68 -0
- package/agents/pass-prod-risk.md +24 -0
- package/agents/pass-rollout.md +32 -0
- package/agents/pass-roundtrip.md +46 -0
- package/agents/pass-security.md +31 -0
- package/agents/pass-simplicity.md +68 -0
- package/agents/pass-statelessness.md +27 -0
- package/agents/pass-style.md +37 -0
- package/agents/pass-sweep.md +57 -0
- package/agents/pass-tests.md +58 -0
- package/agents/pass-ui.md +23 -0
- package/agents/pass-validate.md +50 -0
- package/agents/pass-widened.md +46 -0
- package/agents/scan/pass-scan.md +86 -0
- package/bin/qcr.js +11 -0
- package/config.example.toml +1067 -0
- package/deploy/ansible/README.md +356 -0
- package/deploy/ansible/group_vars/all.yml +212 -0
- package/deploy/ansible/inventory.example.ini +25 -0
- package/deploy/ansible/playbook.yml +360 -0
- package/deploy/collect-secrets.sh +289 -0
- package/deploy/collect-slack-secrets.mjs +1190 -0
- package/deploy/github-app-manifest.json +31 -0
- package/deploy/manifest.schema.json +75 -0
- package/deploy/qcr-update.sh +803 -0
- package/deploy/reviewer/AGENTS.override.md +12 -0
- package/dist/extensions/cli/bash-guard-ambient.js +42 -0
- package/dist/extensions/cli/bash-guard-ambient.js.map +1 -0
- package/dist/extensions/cli/bash-guard.js +5 -0
- package/dist/extensions/cli/bash-guard.js.map +1 -0
- package/dist/extensions/cli/companion-guard.js +5 -0
- package/dist/extensions/cli/companion-guard.js.map +1 -0
- package/dist/extensions/cli/debug-round.js +8 -0
- package/dist/extensions/cli/debug-round.js.map +1 -0
- package/dist/extensions/cli/inject-bridge.js +5 -0
- package/dist/extensions/cli/inject-bridge.js.map +1 -0
- package/dist/extensions/cli/ledger-pin.js +5 -0
- package/dist/extensions/cli/ledger-pin.js.map +1 -0
- package/dist/extensions/cli/lens.js +13 -0
- package/dist/extensions/cli/lens.js.map +1 -0
- package/dist/extensions/cli/muted-theme.js +5 -0
- package/dist/extensions/cli/muted-theme.js.map +1 -0
- package/dist/extensions/cli/onboarding.js +5 -0
- package/dist/extensions/cli/onboarding.js.map +1 -0
- package/dist/extensions/cli/setup.js +5 -0
- package/dist/extensions/cli/setup.js.map +1 -0
- package/dist/extensions/cli/tui-view.js +5 -0
- package/dist/extensions/cli/tui-view.js.map +1 -0
- package/dist/extensions/companion-guard.js +361 -0
- package/dist/extensions/companion-guard.js.map +1 -0
- package/dist/extensions/debug-round.js +204 -0
- package/dist/extensions/debug-round.js.map +1 -0
- package/dist/extensions/inject-bridge.js +603 -0
- package/dist/extensions/inject-bridge.js.map +1 -0
- package/dist/extensions/muted-theme.js +12 -0
- package/dist/extensions/muted-theme.js.map +1 -0
- package/dist/extensions/onboarding.js +175 -0
- package/dist/extensions/onboarding.js.map +1 -0
- package/dist/extensions/setup-replay.js +269 -0
- package/dist/extensions/setup-replay.js.map +1 -0
- package/dist/extensions/setup-scan.js +998 -0
- package/dist/extensions/setup-scan.js.map +1 -0
- package/dist/extensions/setup-triage.js +175 -0
- package/dist/extensions/setup-triage.js.map +1 -0
- package/dist/extensions/setup.js +1160 -0
- package/dist/extensions/setup.js.map +1 -0
- package/dist/extensions/tui-view.js +389 -0
- package/dist/extensions/tui-view.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/client.js +376 -0
- package/dist/extensions/vendor/openviking-pi/client.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/config.js +189 -0
- package/dist/extensions/vendor/openviking-pi/config.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/index.js +421 -0
- package/dist/extensions/vendor/openviking-pi/index.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/lib/capture-adapter.mjs +86 -0
- package/dist/extensions/vendor/openviking-pi/lib/capture-adapter.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/lib/takeover-core.mjs +408 -0
- package/dist/extensions/vendor/openviking-pi/lib/takeover-core.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/lib/uri-guard-adapter.mjs +41 -0
- package/dist/extensions/vendor/openviking-pi/lib/uri-guard-adapter.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hint.js +290 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hint.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-honest.js +148 -0
- package/dist/extensions/vendor/openviking-pi/qcr-honest.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hooks.js +68 -0
- package/dist/extensions/vendor/openviking-pi/qcr-hooks.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-leaf.js +77 -0
- package/dist/extensions/vendor/openviking-pi/qcr-leaf.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-lesson.js +216 -0
- package/dist/extensions/vendor/openviking-pi/qcr-lesson.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-namespaces.js +154 -0
- package/dist/extensions/vendor/openviking-pi/qcr-namespaces.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-recall.js +254 -0
- package/dist/extensions/vendor/openviking-pi/qcr-recall.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-shim.js +94 -0
- package/dist/extensions/vendor/openviking-pi/qcr-shim.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/qcr-write.js +333 -0
- package/dist/extensions/vendor/openviking-pi/qcr-write.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/recall.js +108 -0
- package/dist/extensions/vendor/openviking-pi/recall.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/capture-utils.mjs +529 -0
- package/dist/extensions/vendor/openviking-pi/shared/capture-utils.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/credentials.mjs +205 -0
- package/dist/extensions/vendor/openviking-pi/shared/credentials.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/pending-queue.mjs +442 -0
- package/dist/extensions/vendor/openviking-pi/shared/pending-queue.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/profile-inject.mjs +286 -0
- package/dist/extensions/vendor/openviking-pi/shared/profile-inject.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-compress-core.mjs +189 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-compress-core.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-core.mjs +580 -0
- package/dist/extensions/vendor/openviking-pi/shared/recall-core.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/retryable.mjs +11 -0
- package/dist/extensions/vendor/openviking-pi/shared/retryable.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/session-model.mjs +63 -0
- package/dist/extensions/vendor/openviking-pi/shared/session-model.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/uri-guard.mjs +58 -0
- package/dist/extensions/vendor/openviking-pi/shared/uri-guard.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/shared/workspace-peer.mjs +16 -0
- package/dist/extensions/vendor/openviking-pi/shared/workspace-peer.mjs.map +1 -0
- package/dist/extensions/vendor/openviking-pi/sync.js +127 -0
- package/dist/extensions/vendor/openviking-pi/sync.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/takeover.js +25 -0
- package/dist/extensions/vendor/openviking-pi/takeover.js.map +1 -0
- package/dist/extensions/vendor/openviking-pi/tools.js +417 -0
- package/dist/extensions/vendor/openviking-pi/tools.js.map +1 -0
- package/dist/src/anomalies.js +483 -0
- package/dist/src/anomalies.js.map +1 -0
- package/dist/src/answerworker.js +180 -0
- package/dist/src/answerworker.js.map +1 -0
- package/dist/src/appstamp.js +68 -0
- package/dist/src/appstamp.js.map +1 -0
- package/dist/src/archive/admission.js +3 -0
- package/dist/src/archive/admission.js.map +1 -0
- package/dist/src/archive/archivedb.js +474 -0
- package/dist/src/archive/archivedb.js.map +1 -0
- package/dist/src/archive/archiver.js +1770 -0
- package/dist/src/archive/archiver.js.map +1 -0
- package/dist/src/archive/archivewrite.js +198 -0
- package/dist/src/archive/archivewrite.js.map +1 -0
- package/dist/src/archive/bundle.js +266 -0
- package/dist/src/archive/bundle.js.map +1 -0
- package/dist/src/archive/dbmove.js +638 -0
- package/dist/src/archive/dbmove.js.map +1 -0
- package/dist/src/archive/duplicatecounts.js +80 -0
- package/dist/src/archive/duplicatecounts.js.map +1 -0
- package/dist/src/archive/eligibility.js +113 -0
- package/dist/src/archive/eligibility.js.map +1 -0
- package/dist/src/archive/extract.js +288 -0
- package/dist/src/archive/extract.js.map +1 -0
- package/dist/src/archive/fsutil.js +330 -0
- package/dist/src/archive/fsutil.js.map +1 -0
- package/dist/src/archive/gzfile.js +277 -0
- package/dist/src/archive/gzfile.js.map +1 -0
- package/dist/src/archive/kinds.js +22 -0
- package/dist/src/archive/kinds.js.map +1 -0
- package/dist/src/archive/livecheckpoint.js +178 -0
- package/dist/src/archive/livecheckpoint.js.map +1 -0
- package/dist/src/archive/liveretention.js +145 -0
- package/dist/src/archive/liveretention.js.map +1 -0
- package/dist/src/archive/manifest.js +284 -0
- package/dist/src/archive/manifest.js.map +1 -0
- package/dist/src/archive/overseer.js +283 -0
- package/dist/src/archive/overseer.js.map +1 -0
- package/dist/src/archive/piglobal.js +129 -0
- package/dist/src/archive/piglobal.js.map +1 -0
- package/dist/src/archive/plan.js +398 -0
- package/dist/src/archive/plan.js.map +1 -0
- package/dist/src/archive/prarchive.js +831 -0
- package/dist/src/archive/prarchive.js.map +1 -0
- package/dist/src/archive/prfiles.js +303 -0
- package/dist/src/archive/prfiles.js.map +1 -0
- package/dist/src/archive/report.js +169 -0
- package/dist/src/archive/report.js.map +1 -0
- package/dist/src/archive/restore.js +276 -0
- package/dist/src/archive/restore.js.map +1 -0
- package/dist/src/archive/rows.js +106 -0
- package/dist/src/archive/rows.js.map +1 -0
- package/dist/src/archive/seal.js +480 -0
- package/dist/src/archive/seal.js.map +1 -0
- package/dist/src/archive/status.js +528 -0
- package/dist/src/archive/status.js.map +1 -0
- package/dist/src/archive/storepass.js +409 -0
- package/dist/src/archive/storepass.js.map +1 -0
- package/dist/src/backfill.js +217 -0
- package/dist/src/backfill.js.map +1 -0
- package/dist/src/bench/cost.js +87 -0
- package/dist/src/bench/exec.js +76 -0
- package/dist/src/bench/values.js +14 -0
- package/dist/src/botcontrol.js +127 -0
- package/dist/src/botcontrol.js.map +1 -0
- package/dist/src/botworker.js +805 -0
- package/dist/src/botworker.js.map +1 -0
- package/dist/src/capture.js +234 -0
- package/dist/src/capture.js.map +1 -0
- package/dist/src/cases.js +1491 -0
- package/dist/src/cases.js.map +1 -0
- package/dist/src/channelfs.js +27 -0
- package/dist/src/channelfs.js.map +1 -0
- package/dist/src/checklist.js +312 -0
- package/dist/src/checklist.js.map +1 -0
- package/dist/src/ciretry.js +91 -0
- package/dist/src/ciretry.js.map +1 -0
- package/dist/src/cli.js +1916 -0
- package/dist/src/cli.js.map +1 -0
- package/dist/src/cliops.js +333 -0
- package/dist/src/cliops.js.map +1 -0
- package/dist/src/clonedir.js +15 -0
- package/dist/src/clonedir.js.map +1 -0
- package/dist/src/commandeffects.js +43 -0
- package/dist/src/commandeffects.js.map +1 -0
- package/dist/src/commands.js +1312 -0
- package/dist/src/commands.js.map +1 -0
- package/dist/src/companioninbox.js +203 -0
- package/dist/src/companioninbox.js.map +1 -0
- package/dist/src/compare.js +673 -0
- package/dist/src/compare.js.map +1 -0
- package/dist/src/config.js +1027 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/configcheck.js +111 -0
- package/dist/src/configcheck.js.map +1 -0
- package/dist/src/coreext.js +43 -0
- package/dist/src/coreext.js.map +1 -0
- package/dist/src/daemon.js +929 -0
- package/dist/src/daemon.js.map +1 -0
- package/dist/src/debuground.js +731 -0
- package/dist/src/debuground.js.map +1 -0
- package/dist/src/debugroundpi.js +219 -0
- package/dist/src/debugroundpi.js.map +1 -0
- package/dist/src/diagnostics.js +14 -0
- package/dist/src/diagnostics.js.map +1 -0
- package/dist/src/digest.js +139 -0
- package/dist/src/digest.js.map +1 -0
- package/dist/src/dispatch.js +1726 -0
- package/dist/src/dispatch.js.map +1 -0
- package/dist/src/engine/answerguard.js +18 -0
- package/dist/src/engine/answerguard.js.map +1 -0
- package/dist/src/engine/botsdk.js +262 -0
- package/dist/src/engine/botsdk.js.map +1 -0
- package/dist/src/engine/caserunner-sdk.js +332 -0
- package/dist/src/engine/caserunner-sdk.js.map +1 -0
- package/dist/src/engine/debugpi.js +194 -0
- package/dist/src/engine/debugpi.js.map +1 -0
- package/dist/src/eod.js +473 -0
- package/dist/src/eod.js.map +1 -0
- package/dist/src/eodpinwatch.js +391 -0
- package/dist/src/eodpinwatch.js.map +1 -0
- package/dist/src/escalation.js +1009 -0
- package/dist/src/escalation.js.map +1 -0
- package/dist/src/eventloop.js +779 -0
- package/dist/src/eventloop.js.map +1 -0
- package/dist/src/execboundary.js +430 -0
- package/dist/src/execboundary.js.map +1 -0
- package/dist/src/feedback.js +915 -0
- package/dist/src/feedback.js.map +1 -0
- package/dist/src/findingscheck.js +200 -0
- package/dist/src/findingscheck.js.map +1 -0
- package/dist/src/fsdenied.js +26 -0
- package/dist/src/fsdenied.js.map +1 -0
- package/dist/src/ghread.js +181 -0
- package/dist/src/ghread.js.map +1 -0
- package/dist/src/github.js +1063 -0
- package/dist/src/github.js.map +1 -0
- package/dist/src/homes.js +103 -0
- package/dist/src/homes.js.map +1 -0
- package/dist/src/hostroute.js +24 -0
- package/dist/src/hostroute.js.map +1 -0
- package/dist/src/improvements.js +625 -0
- package/dist/src/improvements.js.map +1 -0
- package/dist/src/install.js +946 -0
- package/dist/src/install.js.map +1 -0
- package/dist/src/installkind.js +40 -0
- package/dist/src/installkind.js.map +1 -0
- package/dist/src/ipc/capability.js +286 -0
- package/dist/src/ipc/capability.js.map +1 -0
- package/dist/src/ipc/client.js +226 -0
- package/dist/src/ipc/client.js.map +1 -0
- package/dist/src/ipc/control.js +70 -0
- package/dist/src/ipc/control.js.map +1 -0
- package/dist/src/ipc/ghreadshim.js +77 -0
- package/dist/src/ipc/ghreadshim.js.map +1 -0
- package/dist/src/ipc/launcher.js +65 -0
- package/dist/src/ipc/launcher.js.map +1 -0
- package/dist/src/ipc/permits.js +293 -0
- package/dist/src/ipc/permits.js.map +1 -0
- package/dist/src/ipc/postshim.js +137 -0
- package/dist/src/ipc/postshim.js.map +1 -0
- package/dist/src/ipc/protocol.js +239 -0
- package/dist/src/ipc/protocol.js.map +1 -0
- package/dist/src/ipc/server.js +312 -0
- package/dist/src/ipc/server.js.map +1 -0
- package/dist/src/ipc/workerspec.js +148 -0
- package/dist/src/ipc/workerspec.js.map +1 -0
- package/dist/src/learner/learner.js +1272 -0
- package/dist/src/learner/learner.js.map +1 -0
- package/dist/src/learner/miner.js +948 -0
- package/dist/src/learner/miner.js.map +1 -0
- package/dist/src/learner/packet.js +216 -0
- package/dist/src/learner/packet.js.map +1 -0
- package/dist/src/learner/receipt.js +135 -0
- package/dist/src/learner/receipt.js.map +1 -0
- package/dist/src/learner/status.js +38 -0
- package/dist/src/learner/status.js.map +1 -0
- package/dist/src/ledgercheck.js +120 -0
- package/dist/src/ledgercheck.js.map +1 -0
- package/dist/src/lessonledger.js +451 -0
- package/dist/src/lessonledger.js.map +1 -0
- package/dist/src/lessonselect.js +639 -0
- package/dist/src/lessonselect.js.map +1 -0
- package/dist/src/lessonshadow.js +540 -0
- package/dist/src/lessonshadow.js.map +1 -0
- package/dist/src/levers.js +302 -0
- package/dist/src/levers.js.map +1 -0
- package/dist/src/live/projection.js +450 -0
- package/dist/src/live/projection.js.map +1 -0
- package/dist/src/live/publish.js +83 -0
- package/dist/src/live/publish.js.map +1 -0
- package/dist/src/live/read.js +60 -0
- package/dist/src/live/read.js.map +1 -0
- package/dist/src/livecli.js +288 -0
- package/dist/src/livecli.js.map +1 -0
- package/dist/src/loginhint.js +42 -0
- package/dist/src/loginhint.js.map +1 -0
- package/dist/src/loginrefresh/atomic.js +66 -0
- package/dist/src/loginrefresh/atomic.js.map +1 -0
- package/dist/src/loginrefresh/lock.js +93 -0
- package/dist/src/loginrefresh/lock.js.map +1 -0
- package/dist/src/loginrefresh/main.js +58 -0
- package/dist/src/loginrefresh/main.js.map +1 -0
- package/dist/src/loginrefresh/pirefresh.js +49 -0
- package/dist/src/loginrefresh/pirefresh.js.map +1 -0
- package/dist/src/loginrefresh/refresher.js +286 -0
- package/dist/src/loginrefresh/refresher.js.map +1 -0
- package/dist/src/loginrefresh/supervisor.js +253 -0
- package/dist/src/loginrefresh/supervisor.js.map +1 -0
- package/dist/src/loginrefresh/types.js +4 -0
- package/dist/src/loginrefresh/types.js.map +1 -0
- package/dist/src/memory/context.js +251 -0
- package/dist/src/memory/context.js.map +1 -0
- package/dist/src/memory/datafence.js +5 -0
- package/dist/src/memory/datafence.js.map +1 -0
- package/dist/src/memory/delivery.js +131 -0
- package/dist/src/memory/delivery.js.map +1 -0
- package/dist/src/memory/eventtags.js +81 -0
- package/dist/src/memory/eventtags.js.map +1 -0
- package/dist/src/memory/health.js +713 -0
- package/dist/src/memory/health.js.map +1 -0
- package/dist/src/memory/import.js +504 -0
- package/dist/src/memory/import.js.map +1 -0
- package/dist/src/memory/layout.js +252 -0
- package/dist/src/memory/layout.js.map +1 -0
- package/dist/src/memory/legacy-file.js +100 -0
- package/dist/src/memory/legacy-file.js.map +1 -0
- package/dist/src/memory/lessons.js +370 -0
- package/dist/src/memory/lessons.js.map +1 -0
- package/dist/src/memory/ovsession.js +449 -0
- package/dist/src/memory/ovsession.js.map +1 -0
- package/dist/src/memory/relayout.js +259 -0
- package/dist/src/memory/relayout.js.map +1 -0
- package/dist/src/memory/roundactivity.js +180 -0
- package/dist/src/memory/roundactivity.js.map +1 -0
- package/dist/src/memory/selection.js +690 -0
- package/dist/src/memory/selection.js.map +1 -0
- package/dist/src/memory/shadowstatus.js +69 -0
- package/dist/src/memory/shadowstatus.js.map +1 -0
- package/dist/src/memory/store.js +83 -0
- package/dist/src/memory/store.js.map +1 -0
- package/dist/src/memory/textidentity.js +8 -0
- package/dist/src/memory/textidentity.js.map +1 -0
- package/dist/src/metrics.js +773 -0
- package/dist/src/metrics.js.map +1 -0
- package/dist/src/missingconfig.js +8 -0
- package/dist/src/missingconfig.js.map +1 -0
- package/dist/src/npmverbs.js +226 -0
- package/dist/src/npmverbs.js.map +1 -0
- package/dist/src/onboard/choices.js +191 -0
- package/dist/src/onboard/choices.js.map +1 -0
- package/dist/src/onboard/engine.js +344 -0
- package/dist/src/onboard/engine.js.map +1 -0
- package/dist/src/onboard/launch.js +83 -0
- package/dist/src/onboard/launch.js.map +1 -0
- package/dist/src/onboard/steps/appslug.js +211 -0
- package/dist/src/onboard/steps/appslug.js.map +1 -0
- package/dist/src/onboard/steps/bringup.js +408 -0
- package/dist/src/onboard/steps/bringup.js.map +1 -0
- package/dist/src/onboard/steps/compose.js +343 -0
- package/dist/src/onboard/steps/compose.js.map +1 -0
- package/dist/src/onboard/steps/configdelivery.js +50 -0
- package/dist/src/onboard/steps/configdelivery.js.map +1 -0
- package/dist/src/onboard/steps/configfill.js +1148 -0
- package/dist/src/onboard/steps/configfill.js.map +1 -0
- package/dist/src/onboard/steps/deploysh.js +80 -0
- package/dist/src/onboard/steps/deploysh.js.map +1 -0
- package/dist/src/onboard/steps/embeddings.js +472 -0
- package/dist/src/onboard/steps/embeddings.js.map +1 -0
- package/dist/src/onboard/steps/escalation.js +571 -0
- package/dist/src/onboard/steps/escalation.js.map +1 -0
- package/dist/src/onboard/steps/githubapp.js +1092 -0
- package/dist/src/onboard/steps/githubapp.js.map +1 -0
- package/dist/src/onboard/steps/golive.js +506 -0
- package/dist/src/onboard/steps/golive.js.map +1 -0
- package/dist/src/onboard/steps/index.js +67 -0
- package/dist/src/onboard/steps/index.js.map +1 -0
- package/dist/src/onboard/steps/ingress.js +762 -0
- package/dist/src/onboard/steps/ingress.js.map +1 -0
- package/dist/src/onboard/steps/inventory.js +420 -0
- package/dist/src/onboard/steps/inventory.js.map +1 -0
- package/dist/src/onboard/steps/llmauth.js +893 -0
- package/dist/src/onboard/steps/llmauth.js.map +1 -0
- package/dist/src/onboard/steps/memory.js +1060 -0
- package/dist/src/onboard/steps/memory.js.map +1 -0
- package/dist/src/onboard/steps/memorykeys.js +43 -0
- package/dist/src/onboard/steps/memorykeys.js.map +1 -0
- package/dist/src/onboard/steps/preflight.js +172 -0
- package/dist/src/onboard/steps/preflight.js.map +1 -0
- package/dist/src/onboard/steps/proof.js +502 -0
- package/dist/src/onboard/steps/proof.js.map +1 -0
- package/dist/src/onboard/steps/ssh.js +300 -0
- package/dist/src/onboard/steps/ssh.js.map +1 -0
- package/dist/src/onboard/steps/topology.js +291 -0
- package/dist/src/onboard/steps/topology.js.map +1 -0
- package/dist/src/onboard/steps/transport.js +511 -0
- package/dist/src/onboard/steps/transport.js.map +1 -0
- package/dist/src/onboard/steps/verifyup.js +362 -0
- package/dist/src/onboard/steps/verifyup.js.map +1 -0
- package/dist/src/onboard/steps/vmdeploy.js +368 -0
- package/dist/src/onboard/steps/vmdeploy.js.map +1 -0
- package/dist/src/onboard/toml.js +53 -0
- package/dist/src/onboard/toml.js.map +1 -0
- package/dist/src/opencli.js +508 -0
- package/dist/src/opencli.js.map +1 -0
- package/dist/src/openpr.js +457 -0
- package/dist/src/openpr.js.map +1 -0
- package/dist/src/openviking/client.js +821 -0
- package/dist/src/openviking/client.js.map +1 -0
- package/dist/src/openviking/context.js +218 -0
- package/dist/src/openviking/context.js.map +1 -0
- package/dist/src/openviking/embedder.js +457 -0
- package/dist/src/openviking/embedder.js.map +1 -0
- package/dist/src/openviking/gapsink.js +38 -0
- package/dist/src/openviking/gapsink.js.map +1 -0
- package/dist/src/openviking/health.js +69 -0
- package/dist/src/openviking/health.js.map +1 -0
- package/dist/src/openviking/index.js +24 -0
- package/dist/src/openviking/index.js.map +1 -0
- package/dist/src/openviking/lessonfind.js +54 -0
- package/dist/src/openviking/lessonfind.js.map +1 -0
- package/dist/src/openviking/probe.js +89 -0
- package/dist/src/openviking/probe.js.map +1 -0
- package/dist/src/openviking/proc.js +95 -0
- package/dist/src/openviking/proc.js.map +1 -0
- package/dist/src/openviking/provisionreport.js +144 -0
- package/dist/src/openviking/provisionreport.js.map +1 -0
- package/dist/src/openviking/reembed.js +317 -0
- package/dist/src/openviking/reembed.js.map +1 -0
- package/dist/src/openviking/relayout.js +153 -0
- package/dist/src/openviking/relayout.js.map +1 -0
- package/dist/src/openviking/sidecar-main.js +39 -0
- package/dist/src/openviking/sidecar-main.js.map +1 -0
- package/dist/src/openviking/sidecar.js +79 -0
- package/dist/src/openviking/sidecar.js.map +1 -0
- package/dist/src/openviking/store.js +1758 -0
- package/dist/src/openviking/store.js.map +1 -0
- package/dist/src/openviking/supervisor.js +422 -0
- package/dist/src/openviking/supervisor.js.map +1 -0
- package/dist/src/openviking/types.js +5 -0
- package/dist/src/openviking/types.js.map +1 -0
- package/dist/src/operator-recovery.js +172 -0
- package/dist/src/operator-recovery.js.map +1 -0
- package/dist/src/operatormessage.js +44 -0
- package/dist/src/operatormessage.js.map +1 -0
- package/dist/src/outcomes.js +1361 -0
- package/dist/src/outcomes.js.map +1 -0
- package/dist/src/piauthcopy.js +5 -0
- package/dist/src/piauthcopy.js.map +1 -0
- package/dist/src/picli.js +45 -0
- package/dist/src/picli.js.map +1 -0
- package/dist/src/picwd.js +25 -0
- package/dist/src/picwd.js.map +1 -0
- package/dist/src/pilogin.js +35 -0
- package/dist/src/pilogin.js.map +1 -0
- package/dist/src/pingpong.js +1028 -0
- package/dist/src/pingpong.js.map +1 -0
- package/dist/src/posting-journal.js +441 -0
- package/dist/src/posting-journal.js.map +1 -0
- package/dist/src/posting-outbox.js +662 -0
- package/dist/src/posting-outbox.js.map +1 -0
- package/dist/src/posting-receipt.js +203 -0
- package/dist/src/posting-receipt.js.map +1 -0
- package/dist/src/posting.js +348 -0
- package/dist/src/posting.js.map +1 -0
- package/dist/src/postops.js +637 -0
- package/dist/src/postops.js.map +1 -0
- package/dist/src/pr-activity.js +11 -0
- package/dist/src/pr-activity.js.map +1 -0
- package/dist/src/pr-author.js +5 -0
- package/dist/src/pr-author.js.map +1 -0
- package/dist/src/pr-conversation.js +355 -0
- package/dist/src/pr-conversation.js.map +1 -0
- package/dist/src/pr-session-lifecycle.js +542 -0
- package/dist/src/pr-session-lifecycle.js.map +1 -0
- package/dist/src/preflight.js +341 -0
- package/dist/src/preflight.js.map +1 -0
- package/dist/src/priorresolve.js +275 -0
- package/dist/src/priorresolve.js.map +1 -0
- package/dist/src/qcrbin.js +180 -0
- package/dist/src/qcrbin.js.map +1 -0
- package/dist/src/recheck.js +1398 -0
- package/dist/src/recheck.js.map +1 -0
- package/dist/src/reconcile.js +820 -0
- package/dist/src/reconcile.js.map +1 -0
- package/dist/src/recordedfindings.js +15 -0
- package/dist/src/recordedfindings.js.map +1 -0
- package/dist/src/regression.js +546 -0
- package/dist/src/regression.js.map +1 -0
- package/dist/src/replay.js +598 -0
- package/dist/src/replay.js.map +1 -0
- package/dist/src/requiredpasses.js +113 -0
- package/dist/src/requiredpasses.js.map +1 -0
- package/dist/src/resumecheck.js +168 -0
- package/dist/src/resumecheck.js.map +1 -0
- package/dist/src/reviewcli.js +671 -0
- package/dist/src/reviewcli.js.map +1 -0
- package/dist/src/reviewcontext.js +22 -0
- package/dist/src/reviewcontext.js.map +1 -0
- package/dist/src/reviewdetach.js +574 -0
- package/dist/src/reviewdetach.js.map +1 -0
- package/dist/src/reviewhistory.js +284 -0
- package/dist/src/reviewhistory.js.map +1 -0
- package/dist/src/reviewhome.js +26 -0
- package/dist/src/reviewhome.js.map +1 -0
- package/dist/src/reviewmemory.js +110 -0
- package/dist/src/reviewmemory.js.map +1 -0
- package/dist/src/reviewrendercli.js +104 -0
- package/dist/src/reviewrendercli.js.map +1 -0
- package/dist/src/round-work.js +20 -0
- package/dist/src/round-work.js.map +1 -0
- package/dist/src/runhost.js +72 -0
- package/dist/src/runhost.js.map +1 -0
- package/dist/src/scanauth.js +25 -0
- package/dist/src/scanauth.js.map +1 -0
- package/dist/src/scanbox.js +846 -0
- package/dist/src/scanbox.js.map +1 -0
- package/dist/src/scancli.js +1074 -0
- package/dist/src/scancli.js.map +1 -0
- package/dist/src/scandriverlog.js +30 -0
- package/dist/src/scandriverlog.js.map +1 -0
- package/dist/src/session-bridge.js +75 -0
- package/dist/src/session-bridge.js.map +1 -0
- package/dist/src/session-command-payload.js +29 -0
- package/dist/src/session-command-payload.js.map +1 -0
- package/dist/src/session-command-supervisor.js +939 -0
- package/dist/src/session-command-supervisor.js.map +1 -0
- package/dist/src/sessionjsonl.js +85 -0
- package/dist/src/sessionjsonl.js.map +1 -0
- package/dist/src/sessions.js +541 -0
- package/dist/src/sessions.js.map +1 -0
- package/dist/src/setup/adapters.js +330 -0
- package/dist/src/setup/adapters.js.map +1 -0
- package/dist/src/setup/baselines.js +64 -0
- package/dist/src/setup/baselines.js.map +1 -0
- package/dist/src/setup/caserunner.js +554 -0
- package/dist/src/setup/caserunner.js.map +1 -0
- package/dist/src/setup/configcommit.js +358 -0
- package/dist/src/setup/configcommit.js.map +1 -0
- package/dist/src/setup/engine.js +672 -0
- package/dist/src/setup/engine.js.map +1 -0
- package/dist/src/setup/facts.js +593 -0
- package/dist/src/setup/facts.js.map +1 -0
- package/dist/src/setup/findings.js +948 -0
- package/dist/src/setup/findings.js.map +1 -0
- package/dist/src/setup/history.js +338 -0
- package/dist/src/setup/history.js.map +1 -0
- package/dist/src/setup/interview.js +185 -0
- package/dist/src/setup/interview.js.map +1 -0
- package/dist/src/setup/ledger.js +207 -0
- package/dist/src/setup/ledger.js.map +1 -0
- package/dist/src/setup/pins.js +43 -0
- package/dist/src/setup/pins.js.map +1 -0
- package/dist/src/setup/portrait.js +432 -0
- package/dist/src/setup/portrait.js.map +1 -0
- package/dist/src/setup/presentation.js +9 -0
- package/dist/src/setup/presentation.js.map +1 -0
- package/dist/src/setup/profile.js +417 -0
- package/dist/src/setup/profile.js.map +1 -0
- package/dist/src/setup/replay.js +240 -0
- package/dist/src/setup/replay.js.map +1 -0
- package/dist/src/setup/replaybuild.js +311 -0
- package/dist/src/setup/replaybuild.js.map +1 -0
- package/dist/src/setup/replayrun.js +806 -0
- package/dist/src/setup/replayrun.js.map +1 -0
- package/dist/src/setup/replaysource.js +169 -0
- package/dist/src/setup/replaysource.js.map +1 -0
- package/dist/src/setup/retune.js +333 -0
- package/dist/src/setup/retune.js.map +1 -0
- package/dist/src/setup/retunelog.js +51 -0
- package/dist/src/setup/retunelog.js.map +1 -0
- package/dist/src/setup/scan.js +725 -0
- package/dist/src/setup/scan.js.map +1 -0
- package/dist/src/setup/scanbuild.js +133 -0
- package/dist/src/setup/scanbuild.js.map +1 -0
- package/dist/src/setup/scanfacts.js +96 -0
- package/dist/src/setup/scanfacts.js.map +1 -0
- package/dist/src/setup/scanlease.js +251 -0
- package/dist/src/setup/scanlease.js.map +1 -0
- package/dist/src/setup/scanreport.js +289 -0
- package/dist/src/setup/scanreport.js.map +1 -0
- package/dist/src/setup/scanrun.js +1733 -0
- package/dist/src/setup/scanrun.js.map +1 -0
- package/dist/src/setup/scantree.js +257 -0
- package/dist/src/setup/scantree.js.map +1 -0
- package/dist/src/setup/stage2.js +617 -0
- package/dist/src/setup/stage2.js.map +1 -0
- package/dist/src/setup/stage2request.js +259 -0
- package/dist/src/setup/stage2request.js.map +1 -0
- package/dist/src/setup/survey.js +307 -0
- package/dist/src/setup/survey.js.map +1 -0
- package/dist/src/setup/surveyrun.js +549 -0
- package/dist/src/setup/surveyrun.js.map +1 -0
- package/dist/src/setup/textsniff.js +89 -0
- package/dist/src/setup/textsniff.js.map +1 -0
- package/dist/src/setup/trackersink.js +395 -0
- package/dist/src/setup/trackersink.js.map +1 -0
- package/dist/src/setup/triage.js +636 -0
- package/dist/src/setup/triage.js.map +1 -0
- package/dist/src/setup/tuning.js +585 -0
- package/dist/src/setup/tuning.js.map +1 -0
- package/dist/src/setup/unitcut.js +437 -0
- package/dist/src/setup/unitcut.js.map +1 -0
- package/dist/src/singleflight.js +72 -0
- package/dist/src/singleflight.js.map +1 -0
- package/dist/src/slack/announce.js +725 -0
- package/dist/src/slack/announce.js.map +1 -0
- package/dist/src/slack/api.js +227 -0
- package/dist/src/slack/api.js.map +1 -0
- package/dist/src/slack/messages.js +158 -0
- package/dist/src/slack/messages.js.map +1 -0
- package/dist/src/slack/origin.js +550 -0
- package/dist/src/slack/origin.js.map +1 -0
- package/dist/src/slack/policy.js +225 -0
- package/dist/src/slack/policy.js.map +1 -0
- package/dist/src/slack/reply.js +153 -0
- package/dist/src/slack/reply.js.map +1 -0
- package/dist/src/slack/router.js +189 -0
- package/dist/src/slack/router.js.map +1 -0
- package/dist/src/slack/socket.js +323 -0
- package/dist/src/slack/socket.js.map +1 -0
- package/dist/src/slack/types.js +11 -0
- package/dist/src/slack/types.js.map +1 -0
- package/dist/src/sqlitehint.js +30 -0
- package/dist/src/sqlitehint.js.map +1 -0
- package/dist/src/ssh-observation.js +25 -0
- package/dist/src/ssh-observation.js.map +1 -0
- package/dist/src/state.js +5869 -0
- package/dist/src/state.js.map +1 -0
- package/dist/src/statemachine.js +220 -0
- package/dist/src/statemachine.js.map +1 -0
- package/dist/src/stubs.js +52 -0
- package/dist/src/stubs.js.map +1 -0
- package/dist/src/takeover.js +506 -0
- package/dist/src/takeover.js.map +1 -0
- package/dist/src/takeoverpi.js +249 -0
- package/dist/src/takeoverpi.js.map +1 -0
- package/dist/src/terminal-failure.js +26 -0
- package/dist/src/terminal-failure.js.map +1 -0
- package/dist/src/thread-resolution-refusal.js +4 -0
- package/dist/src/thread-resolution-refusal.js.map +1 -0
- package/dist/src/tmux.js +126 -0
- package/dist/src/tmux.js.map +1 -0
- package/dist/src/trackerid.js +43 -0
- package/dist/src/trackerid.js.map +1 -0
- package/dist/src/transcriptindex.js +512 -0
- package/dist/src/transcriptindex.js.map +1 -0
- package/dist/src/tui/actions.js +404 -0
- package/dist/src/tui/actions.js.map +1 -0
- package/dist/src/tui/alerts.js +523 -0
- package/dist/src/tui/alerts.js.map +1 -0
- package/dist/src/tui/app.js +1835 -0
- package/dist/src/tui/app.js.map +1 -0
- package/dist/src/tui/archiveops.js +164 -0
- package/dist/src/tui/archiveops.js.map +1 -0
- package/dist/src/tui/autofile.js +191 -0
- package/dist/src/tui/autofile.js.map +1 -0
- package/dist/src/tui/board.js +1143 -0
- package/dist/src/tui/board.js.map +1 -0
- package/dist/src/tui/candidates.js +699 -0
- package/dist/src/tui/candidates.js.map +1 -0
- package/dist/src/tui/cellwidth.js +151 -0
- package/dist/src/tui/cellwidth.js.map +1 -0
- package/dist/src/tui/changelog-store.js +404 -0
- package/dist/src/tui/changelog-store.js.map +1 -0
- package/dist/src/tui/chord.js +26 -0
- package/dist/src/tui/chord.js.map +1 -0
- package/dist/src/tui/clipboard.js +81 -0
- package/dist/src/tui/clipboard.js.map +1 -0
- package/dist/src/tui/cmdbar.js +253 -0
- package/dist/src/tui/cmdbar.js.map +1 -0
- package/dist/src/tui/companion.js +1275 -0
- package/dist/src/tui/companion.js.map +1 -0
- package/dist/src/tui/companionplan.js +200 -0
- package/dist/src/tui/companionplan.js.map +1 -0
- package/dist/src/tui/companiontab.js +61 -0
- package/dist/src/tui/companiontab.js.map +1 -0
- package/dist/src/tui/confighome.js +105 -0
- package/dist/src/tui/confighome.js.map +1 -0
- package/dist/src/tui/connect.js +44 -0
- package/dist/src/tui/connect.js.map +1 -0
- package/dist/src/tui/deploy-ceremony.js +75 -0
- package/dist/src/tui/deploy-ceremony.js.map +1 -0
- package/dist/src/tui/deploy-drain.js +93 -0
- package/dist/src/tui/deploy-drain.js.map +1 -0
- package/dist/src/tui/deploy-process.js +234 -0
- package/dist/src/tui/deploy-process.js.map +1 -0
- package/dist/src/tui/deploytab.js +1263 -0
- package/dist/src/tui/deploytab.js.map +1 -0
- package/dist/src/tui/design.js +111 -0
- package/dist/src/tui/design.js.map +1 -0
- package/dist/src/tui/digesttab.js +148 -0
- package/dist/src/tui/digesttab.js.map +1 -0
- package/dist/src/tui/emptystate.js +32 -0
- package/dist/src/tui/emptystate.js.map +1 -0
- package/dist/src/tui/evidence.js +790 -0
- package/dist/src/tui/evidence.js.map +1 -0
- package/dist/src/tui/feed.js +415 -0
- package/dist/src/tui/feed.js.map +1 -0
- package/dist/src/tui/feedbacktab.js +907 -0
- package/dist/src/tui/feedbacktab.js.map +1 -0
- package/dist/src/tui/filters.js +72 -0
- package/dist/src/tui/filters.js.map +1 -0
- package/dist/src/tui/ghread.js +272 -0
- package/dist/src/tui/ghread.js.map +1 -0
- package/dist/src/tui/historypull.js +61 -0
- package/dist/src/tui/historypull.js.map +1 -0
- package/dist/src/tui/inboxpull.js +197 -0
- package/dist/src/tui/inboxpull.js.map +1 -0
- package/dist/src/tui/index.js +1425 -0
- package/dist/src/tui/index.js.map +1 -0
- package/dist/src/tui/issuesink.js +206 -0
- package/dist/src/tui/issuesink.js.map +1 -0
- package/dist/src/tui/jsonfile.js +32 -0
- package/dist/src/tui/jsonfile.js.map +1 -0
- package/dist/src/tui/keys.js +97 -0
- package/dist/src/tui/keys.js.map +1 -0
- package/dist/src/tui/layout.js +70 -0
- package/dist/src/tui/layout.js.map +1 -0
- package/dist/src/tui/learning.js +469 -0
- package/dist/src/tui/learning.js.map +1 -0
- package/dist/src/tui/lessonswitch.js +103 -0
- package/dist/src/tui/lessonswitch.js.map +1 -0
- package/dist/src/tui/livecontrol.js +167 -0
- package/dist/src/tui/livecontrol.js.map +1 -0
- package/dist/src/tui/memforward.js +310 -0
- package/dist/src/tui/memforward.js.map +1 -0
- package/dist/src/tui/memincident.js +287 -0
- package/dist/src/tui/memincident.js.map +1 -0
- package/dist/src/tui/memory.js +485 -0
- package/dist/src/tui/memory.js.map +1 -0
- package/dist/src/tui/memtab.js +513 -0
- package/dist/src/tui/memtab.js.map +1 -0
- package/dist/src/tui/metricstab.js +979 -0
- package/dist/src/tui/metricstab.js.map +1 -0
- package/dist/src/tui/model.js +104 -0
- package/dist/src/tui/model.js.map +1 -0
- package/dist/src/tui/mouse.js +83 -0
- package/dist/src/tui/mouse.js.map +1 -0
- package/dist/src/tui/msg.js +196 -0
- package/dist/src/tui/msg.js.map +1 -0
- package/dist/src/tui/nativecompanion.js +321 -0
- package/dist/src/tui/nativecompanion.js.map +1 -0
- package/dist/src/tui/openurl.js +17 -0
- package/dist/src/tui/openurl.js.map +1 -0
- package/dist/src/tui/paint.js +501 -0
- package/dist/src/tui/paint.js.map +1 -0
- package/dist/src/tui/panes.js +74 -0
- package/dist/src/tui/panes.js.map +1 -0
- package/dist/src/tui/pipane.js +166 -0
- package/dist/src/tui/pipane.js.map +1 -0
- package/dist/src/tui/poll-hooks.js +11 -0
- package/dist/src/tui/poll-hooks.js.map +1 -0
- package/dist/src/tui/poll.js +113 -0
- package/dist/src/tui/poll.js.map +1 -0
- package/dist/src/tui/proposals.js +715 -0
- package/dist/src/tui/proposals.js.map +1 -0
- package/dist/src/tui/prpause.js +132 -0
- package/dist/src/tui/prpause.js.map +1 -0
- package/dist/src/tui/reload.js +351 -0
- package/dist/src/tui/reload.js.map +1 -0
- package/dist/src/tui/remote.js +312 -0
- package/dist/src/tui/remote.js.map +1 -0
- package/dist/src/tui/rollover.js +767 -0
- package/dist/src/tui/rollover.js.map +1 -0
- package/dist/src/tui/scantab.js +1053 -0
- package/dist/src/tui/scantab.js.map +1 -0
- package/dist/src/tui/setupentry.js +81 -0
- package/dist/src/tui/setupentry.js.map +1 -0
- package/dist/src/tui/sidebar.js +602 -0
- package/dist/src/tui/sidebar.js.map +1 -0
- package/dist/src/tui/sshtriage.js +393 -0
- package/dist/src/tui/sshtriage.js.map +1 -0
- package/dist/src/tui/startup.js +172 -0
- package/dist/src/tui/startup.js.map +1 -0
- package/dist/src/tui/tabs.js +41 -0
- package/dist/src/tui/tabs.js.map +1 -0
- package/dist/src/tui/termmirror.js +217 -0
- package/dist/src/tui/termmirror.js.map +1 -0
- package/dist/src/tui/theme.js +95 -0
- package/dist/src/tui/theme.js.map +1 -0
- package/dist/src/tui/ticketstab.js +224 -0
- package/dist/src/tui/ticketstab.js.map +1 -0
- package/dist/src/tui/tmuxsocket.js +101 -0
- package/dist/src/tui/tmuxsocket.js.map +1 -0
- package/dist/src/tui/trackertickets.js +77 -0
- package/dist/src/tui/trackertickets.js.map +1 -0
- package/dist/src/tui/unwedge.js +245 -0
- package/dist/src/tui/unwedge.js.map +1 -0
- package/dist/src/tui/viewer.js +479 -0
- package/dist/src/tui/viewer.js.map +1 -0
- package/dist/src/tui/viewerinput.js +125 -0
- package/dist/src/tui/viewerinput.js.map +1 -0
- package/dist/src/updatenotice.js +143 -0
- package/dist/src/updatenotice.js.map +1 -0
- package/dist/src/usage.js +1007 -0
- package/dist/src/usage.js.map +1 -0
- package/dist/src/verdicts.js +3848 -0
- package/dist/src/verdicts.js.map +1 -0
- package/dist/src/version.js +58 -0
- package/dist/src/version.js.map +1 -0
- package/dist/src/wakes.js +411 -0
- package/dist/src/wakes.js.map +1 -0
- package/dist/src/webhook.js +725 -0
- package/dist/src/webhook.js.map +1 -0
- package/dist/src/webhookheal.js +238 -0
- package/dist/src/webhookheal.js.map +1 -0
- package/dist/src/wire.js +1801 -0
- package/dist/src/wire.js.map +1 -0
- package/dist/src/worker-session-host.js +531 -0
- package/dist/src/worker-session-host.js.map +1 -0
- package/dist/src/workerbreaker.js +112 -0
- package/dist/src/workerbreaker.js.map +1 -0
- package/dist/src/workercontrol.js +49 -0
- package/dist/src/workercontrol.js.map +1 -0
- package/dist/src/workerlease.js +351 -0
- package/dist/src/workerlease.js.map +1 -0
- package/dist/src/workerliveness.js +84 -0
- package/dist/src/workerliveness.js.map +1 -0
- package/dist/src/workerlog.js +65 -0
- package/dist/src/workerlog.js.map +1 -0
- package/dist/src/workerruntime.js +10 -0
- package/dist/src/workerruntime.js.map +1 -0
- package/dist/src/workersupervisor.js +1206 -0
- package/dist/src/workersupervisor.js.map +1 -0
- package/dist/src/workerusage.js +23 -0
- package/dist/src/workerusage.js.map +1 -0
- package/dist/src/workerworld.js +332 -0
- package/dist/src/workerworld.js.map +1 -0
- package/dist/src/worktrees.js +984 -0
- package/dist/src/worktrees.js.map +1 -0
- package/docker/Dockerfile +284 -0
- package/docker/Dockerfile.dockerignore +35 -0
- package/docker/README.md +221 -0
- package/docker/companion/Dockerfile +139 -0
- package/docker/companion/agents/evidence.md +34 -0
- package/docker/companion/agents/explore.md +26 -0
- package/docker/companion/agents/pass-survey.md +49 -0
- package/docker/companion/agents/study.md +26 -0
- package/docker/companion/entrypoint.sh +343 -0
- package/docker/companion/memory-health.mjs +269 -0
- package/docker/entrypoint.sh +782 -0
- package/docker/memory/Dockerfile +191 -0
- package/docker/memory/Dockerfile.dockerignore +20 -0
- package/docker/memory/README.md +60 -0
- package/docker/memory/entrypoint.sh +163 -0
- package/docker/setid/qcr-setid.c +109 -0
- package/docker/tunnel/Dockerfile.cloudflared +51 -0
- package/docker/tunnel/Dockerfile.ngrok +40 -0
- package/docker/tunnel/sidecar.mjs +411 -0
- package/docker/vm/tmux.conf +26 -0
- package/docker-compose.yml +348 -0
- package/extensions/cli/bash-guard-ambient.ts +71 -0
- package/extensions/cli/bash-guard.ts +12 -0
- package/extensions/cli/companion-guard.ts +8 -0
- package/extensions/cli/debug-round.ts +9 -0
- package/extensions/cli/inject-bridge.ts +8 -0
- package/extensions/cli/ledger-pin.ts +13 -0
- package/extensions/cli/lens.ts +22 -0
- package/extensions/cli/muted-theme.ts +9 -0
- package/extensions/cli/onboarding.ts +8 -0
- package/extensions/cli/setup.ts +8 -0
- package/extensions/cli/tui-view.ts +8 -0
- package/extensions/companion-guard.ts +411 -0
- package/extensions/debug-round.ts +281 -0
- package/extensions/inject-bridge.ts +630 -0
- package/extensions/inline-bash.ts +102 -0
- package/extensions/muted-theme.json +68 -0
- package/extensions/muted-theme.ts +23 -0
- package/extensions/onboarding.ts +233 -0
- package/extensions/setup-replay.ts +336 -0
- package/extensions/setup-scan.ts +1236 -0
- package/extensions/setup-triage.ts +190 -0
- package/extensions/setup.ts +1428 -0
- package/extensions/tui-view.ts +489 -0
- package/extensions/vendor/openviking-pi/LICENSE +201 -0
- package/extensions/vendor/openviking-pi/NOTICE +68 -0
- package/extensions/vendor/openviking-pi/README.md +550 -0
- package/extensions/vendor/openviking-pi/client.ts +588 -0
- package/extensions/vendor/openviking-pi/config.json +28 -0
- package/extensions/vendor/openviking-pi/config.ts +271 -0
- package/extensions/vendor/openviking-pi/index.ts +523 -0
- package/extensions/vendor/openviking-pi/lib/capture-adapter.d.mts +10 -0
- package/extensions/vendor/openviking-pi/lib/capture-adapter.mjs +88 -0
- package/extensions/vendor/openviking-pi/lib/takeover-core.d.mts +80 -0
- package/extensions/vendor/openviking-pi/lib/takeover-core.mjs +406 -0
- package/extensions/vendor/openviking-pi/lib/uri-guard-adapter.d.mts +1 -0
- package/extensions/vendor/openviking-pi/lib/uri-guard-adapter.mjs +42 -0
- package/extensions/vendor/openviking-pi/patches/0000-vendoring-and-build-conformance.patch +726 -0
- package/extensions/vendor/openviking-pi/patches/0001-remove-session-before-compact-handler.patch +101 -0
- package/extensions/vendor/openviking-pi/patches/0002-no-ambient-work-in-subagent-leaves.patch +202 -0
- package/extensions/vendor/openviking-pi/patches/0003-never-auto-create-openviking-sessions.patch +120 -0
- package/extensions/vendor/openviking-pi/patches/0004-viking-write-durable-batch-write.patch +521 -0
- package/extensions/vendor/openviking-pi/patches/0005-second-memory-namespace.patch +786 -0
- package/extensions/vendor/openviking-pi/patches/0006-writes-that-stick-and-honest-errors.patch +996 -0
- package/extensions/vendor/openviking-pi/patches/0007-bounded-recall-no-commit.patch +794 -0
- package/extensions/vendor/openviking-pi/patches/0008-pr-derived-recall.patch +379 -0
- package/extensions/vendor/openviking-pi/patches/0009-pr-session-tools-in-round-areas.patch +375 -0
- package/extensions/vendor/openviking-pi/patches/0010-typed-lessons.patch +448 -0
- package/extensions/vendor/openviking-pi/patches/0011-review-session-memory-boundary.patch +382 -0
- package/extensions/vendor/openviking-pi/patches/0012-typecheck-against-the-real-pi.patch +129 -0
- package/extensions/vendor/openviking-pi/patches/0013-createopenviking-factory.patch +1168 -0
- package/extensions/vendor/openviking-pi/qcr-hint.ts +313 -0
- package/extensions/vendor/openviking-pi/qcr-honest.ts +183 -0
- package/extensions/vendor/openviking-pi/qcr-hooks.ts +87 -0
- package/extensions/vendor/openviking-pi/qcr-leaf.ts +78 -0
- package/extensions/vendor/openviking-pi/qcr-lesson.ts +231 -0
- package/extensions/vendor/openviking-pi/qcr-namespaces.ts +198 -0
- package/extensions/vendor/openviking-pi/qcr-recall.ts +288 -0
- package/extensions/vendor/openviking-pi/qcr-shim.ts +142 -0
- package/extensions/vendor/openviking-pi/qcr-write.ts +427 -0
- package/extensions/vendor/openviking-pi/recall.ts +149 -0
- package/extensions/vendor/openviking-pi/shared/capture-utils.d.mts +9 -0
- package/extensions/vendor/openviking-pi/shared/capture-utils.mjs +515 -0
- package/extensions/vendor/openviking-pi/shared/credentials.d.mts +14 -0
- package/extensions/vendor/openviking-pi/shared/credentials.mjs +228 -0
- package/extensions/vendor/openviking-pi/shared/pending-queue.d.mts +19 -0
- package/extensions/vendor/openviking-pi/shared/pending-queue.mjs +458 -0
- package/extensions/vendor/openviking-pi/shared/profile-inject.d.mts +17 -0
- package/extensions/vendor/openviking-pi/shared/profile-inject.mjs +294 -0
- package/extensions/vendor/openviking-pi/shared/recall-compress-core.mjs +195 -0
- package/extensions/vendor/openviking-pi/shared/recall-core.d.mts +13 -0
- package/extensions/vendor/openviking-pi/shared/recall-core.mjs +609 -0
- package/extensions/vendor/openviking-pi/shared/retryable.mjs +9 -0
- package/extensions/vendor/openviking-pi/shared/session-model.d.mts +3 -0
- package/extensions/vendor/openviking-pi/shared/session-model.mjs +57 -0
- package/extensions/vendor/openviking-pi/shared/uri-guard.mjs +56 -0
- package/extensions/vendor/openviking-pi/shared/workspace-peer.d.mts +5 -0
- package/extensions/vendor/openviking-pi/shared/workspace-peer.mjs +16 -0
- package/extensions/vendor/openviking-pi/sync.ts +163 -0
- package/extensions/vendor/openviking-pi/takeover.ts +36 -0
- package/extensions/vendor/openviking-pi/tools.ts +479 -0
- package/extensions/vendor/openviking-pi/upstream.json +48 -0
- package/package.json +138 -4
- package/profiles/default/README.md +21 -0
- package/profiles/default/addenda/.gitkeep +0 -0
- package/profiles/default/profile.toml +17 -0
- package/profiles/example-django/README.md +21 -0
- package/profiles/example-django/addenda/10-migration-discipline.md +13 -0
- package/profiles/example-django/addenda/20-new-column-nullability.md +12 -0
- package/profiles/example-django/addenda/30-test-doctrine.md +12 -0
- package/profiles/example-django/addenda/40-orm-usage.md +19 -0
- package/profiles/example-django/addenda/50-declared-shape.md +10 -0
- package/profiles/example-django/addenda/60-config-placement.md +14 -0
- package/profiles/example-django/heuristics.toml +24 -0
- package/profiles/example-django/profile.toml +9 -0
- package/profiles/fast/README.md +24 -0
- package/profiles/fast/profile.toml +59 -0
- package/profiles/minimal/README.md +17 -0
- package/profiles/minimal/addenda/.gitkeep +0 -0
- package/profiles/minimal/profile.toml +8 -0
- package/profiles/snappy/README.md +24 -0
- package/profiles/snappy/addenda/10-race-as-question.md +6 -0
- package/profiles/snappy/profile.toml +46 -0
- package/prompts/companion-day-open.md +46 -0
- package/prompts/companion-first-run.md +104 -0
- package/prompts/companion.md +821 -0
- package/prompts/conversation-system.md +117 -0
- package/prompts/eod-sweep.md +120 -0
- package/prompts/onboarding.md +74 -0
- package/prompts/pass-common.md +52 -0
- package/prompts/pass-quality-common.md +22 -0
- package/prompts/round-first.md +874 -0
- package/prompts/round-follow-up.md +991 -0
- package/prompts/round-re-review.md +889 -0
- package/prompts/round-recheck.md +196 -0
- package/prompts/round-staleness.md +856 -0
- package/schemas/review-result.v1.json +391 -0
- package/schemas/scan-result.v1.json +421 -0
- package/schemas/version.v1.json +57 -0
- package/scripts/approve-pr.sh +16 -0
- package/scripts/build-stamp.mjs +67 -0
- package/scripts/commit-verdict.sh +155 -0
- package/scripts/companion-e2e.sh +250 -0
- package/scripts/companion-memory-forward.mjs +1966 -0
- package/scripts/config-fingerprint.sh +28 -0
- package/scripts/deploy-manifest.mjs +141 -0
- package/scripts/deploy.sh +1435 -0
- package/scripts/directory-lock.mjs +193 -0
- package/scripts/heartbeat-fresh.mjs +54 -0
- package/scripts/install-locator.sh +328 -0
- package/scripts/install-wrapper.sh +76 -0
- package/scripts/memory-search-check.mjs +98 -0
- package/scripts/mint-token.sh +212 -0
- package/scripts/openviking-embedder.py +392 -0
- package/scripts/openviking-ov-conf.mjs +161 -0
- package/scripts/openviking-provision.mjs +1122 -0
- package/scripts/openviking-reembed.mjs +1154 -0
- package/scripts/post-review.sh +16 -0
- package/scripts/pr-checks.sh +256 -0
- package/scripts/pr-context.py +174 -0
- package/scripts/pr-context.sh +63 -0
- package/scripts/pr-self.sh +144 -0
- package/scripts/pr-threads.sh +145 -0
- package/scripts/qcr +15 -0
- package/scripts/qcr-host.sh +769 -0
- package/scripts/render-review.sh +24 -0
- package/scripts/reply-thread.sh +16 -0
- package/scripts/required-passes.py +112 -0
- package/scripts/smoke-companion.sh +211 -0
- package/scripts/tui-deploy-runner.mjs +61 -0
- package/scripts/verify-dist.mjs +201 -0
- package/scripts/vm-ghcr-login.sh +188 -0
- package/seeds/agents/pass-baseline.md +61 -0
- package/seeds/agents/pass-contracts.md +30 -0
- package/seeds/agents/pass-data-safety.md +54 -0
- package/seeds/agents/pass-delivery.md +37 -0
- package/seeds/agents/pass-prod-risk.md +24 -0
- package/seeds/agents/pass-security.md +31 -0
- package/seeds/agents/pass-statelessness.md +27 -0
- package/seeds/agents/pass-ui.md +23 -0
- package/seeds/agents/pass-validate.md +50 -0
- package/seeds/prompts/conversation-system.md +117 -0
- package/seeds/prompts/eod-sweep.md +120 -0
- package/seeds/prompts/pass-common.md +52 -0
- package/skills/companion/adjudicate/SKILL.md +247 -0
- package/skills/companion/evidence/SKILL.md +150 -0
- package/skills/companion/land/SKILL.md +200 -0
- package/skills/companion/replay/SKILL.md +138 -0
- package/skills/companion/setup/SKILL.md +167 -0
- package/skills/companion/survey/SKILL.md +160 -0
- package/skills/selfimprove/README.md +34 -0
- package/skills/selfimprove/SKILL.md +127 -0
- package/skills/selfimprove/agents/openai.yaml +2 -0
- package/skills/selfimprove/commands/selfimprove.md +6 -0
- package/skills/selfimprove/references/fix-loop.md +49 -0
- package/skills/selfimprove/references/ledger.md +20 -0
- package/skills/selfimprove/references/setup.md +40 -0
- package/src/anomalies.ts +566 -0
- package/src/answerworker.ts +251 -0
- package/src/appstamp.ts +65 -0
- package/src/archive/admission.ts +3 -0
- package/src/archive/archivedb.ts +548 -0
- package/src/archive/archiver.ts +1963 -0
- package/src/archive/archivewrite.ts +279 -0
- package/src/archive/bundle.ts +333 -0
- package/src/archive/dbmove.ts +911 -0
- package/src/archive/duplicatecounts.ts +98 -0
- package/src/archive/eligibility.ts +181 -0
- package/src/archive/extract.ts +342 -0
- package/src/archive/fsutil.ts +415 -0
- package/src/archive/gzfile.ts +370 -0
- package/src/archive/kinds.ts +21 -0
- package/src/archive/livecheckpoint.ts +217 -0
- package/src/archive/liveretention.ts +180 -0
- package/src/archive/manifest.ts +519 -0
- package/src/archive/overseer.ts +336 -0
- package/src/archive/piglobal.ts +174 -0
- package/src/archive/plan.ts +612 -0
- package/src/archive/prarchive.ts +984 -0
- package/src/archive/prfiles.ts +406 -0
- package/src/archive/report.ts +252 -0
- package/src/archive/restore.ts +330 -0
- package/src/archive/rows.ts +187 -0
- package/src/archive/seal.ts +630 -0
- package/src/archive/status.ts +719 -0
- package/src/archive/storepass.ts +581 -0
- package/src/backfill.ts +362 -0
- package/src/bench/cost.ts +113 -0
- package/src/bench/exec.ts +90 -0
- package/src/bench/values.ts +13 -0
- package/src/botcontrol.ts +176 -0
- package/src/botworker.ts +953 -0
- package/src/capture.ts +321 -0
- package/src/cases.ts +1789 -0
- package/src/channelfs.ts +26 -0
- package/src/checklist.ts +506 -0
- package/src/ciretry.ts +141 -0
- package/src/cli.ts +2271 -0
- package/src/cliops.ts +384 -0
- package/src/clonedir.ts +15 -0
- package/src/commandeffects.ts +57 -0
- package/src/commands.ts +1678 -0
- package/src/companioninbox.ts +239 -0
- package/src/compare.ts +957 -0
- package/src/config.ts +2050 -0
- package/src/configcheck.ts +133 -0
- package/src/coreext.ts +47 -0
- package/src/daemon.ts +1302 -0
- package/src/debuground.ts +927 -0
- package/src/debugroundpi.ts +262 -0
- package/src/diagnostics.ts +14 -0
- package/src/digest.ts +183 -0
- package/src/dispatch.ts +2250 -0
- package/src/engine/answerguard.ts +27 -0
- package/src/engine/botsdk.ts +336 -0
- package/src/engine/caserunner-sdk.ts +423 -0
- package/src/engine/debugpi.ts +235 -0
- package/src/eod.ts +669 -0
- package/src/eodpinwatch.ts +556 -0
- package/src/escalation.ts +1253 -0
- package/src/eventloop.ts +1045 -0
- package/src/execboundary.ts +633 -0
- package/src/feedback.ts +1162 -0
- package/src/findingscheck.ts +298 -0
- package/src/fsdenied.ts +24 -0
- package/src/ghread.ts +242 -0
- package/src/github.ts +1497 -0
- package/src/homes.ts +175 -0
- package/src/hostroute.ts +53 -0
- package/src/improvements.ts +787 -0
- package/src/install.ts +1103 -0
- package/src/installkind.ts +50 -0
- package/src/ipc/capability.ts +333 -0
- package/src/ipc/client.ts +269 -0
- package/src/ipc/control.ts +90 -0
- package/src/ipc/ghreadshim.ts +94 -0
- package/src/ipc/launcher.ts +65 -0
- package/src/ipc/permits.ts +362 -0
- package/src/ipc/postshim.ts +164 -0
- package/src/ipc/protocol.ts +342 -0
- package/src/ipc/server.ts +371 -0
- package/src/ipc/workerspec.ts +218 -0
- package/src/learner/learner.ts +1655 -0
- package/src/learner/miner.ts +1290 -0
- package/src/learner/packet.ts +340 -0
- package/src/learner/receipt.ts +168 -0
- package/src/learner/status.ts +107 -0
- package/src/ledgercheck.ts +157 -0
- package/src/lessonledger.ts +703 -0
- package/src/lessonselect.ts +888 -0
- package/src/lessonshadow.ts +810 -0
- package/src/levers.ts +393 -0
- package/src/live/projection.ts +491 -0
- package/src/live/publish.ts +92 -0
- package/src/live/read.ts +86 -0
- package/src/livecli.ts +336 -0
- package/src/loginhint.ts +56 -0
- package/src/loginrefresh/atomic.ts +76 -0
- package/src/loginrefresh/lock.ts +104 -0
- package/src/loginrefresh/main.ts +59 -0
- package/src/loginrefresh/pirefresh.ts +57 -0
- package/src/loginrefresh/refresher.ts +326 -0
- package/src/loginrefresh/supervisor.ts +273 -0
- package/src/loginrefresh/types.ts +35 -0
- package/src/memory/context.ts +385 -0
- package/src/memory/datafence.ts +9 -0
- package/src/memory/delivery.ts +171 -0
- package/src/memory/eventtags.ts +80 -0
- package/src/memory/health.ts +953 -0
- package/src/memory/import.ts +664 -0
- package/src/memory/layout.ts +261 -0
- package/src/memory/legacy-file.ts +104 -0
- package/src/memory/lessons.ts +447 -0
- package/src/memory/ovsession.ts +601 -0
- package/src/memory/relayout.ts +335 -0
- package/src/memory/roundactivity.ts +209 -0
- package/src/memory/selection.ts +989 -0
- package/src/memory/shadowstatus.ts +125 -0
- package/src/memory/store.ts +275 -0
- package/src/memory/textidentity.ts +8 -0
- package/src/metrics.ts +1056 -0
- package/src/missingconfig.ts +7 -0
- package/src/npmverbs.ts +264 -0
- package/src/onboard/choices.ts +222 -0
- package/src/onboard/engine.ts +518 -0
- package/src/onboard/launch.ts +115 -0
- package/src/onboard/steps/appslug.ts +265 -0
- package/src/onboard/steps/bringup.ts +482 -0
- package/src/onboard/steps/compose.ts +459 -0
- package/src/onboard/steps/configdelivery.ts +58 -0
- package/src/onboard/steps/configfill.ts +1352 -0
- package/src/onboard/steps/deploysh.ts +105 -0
- package/src/onboard/steps/embeddings.ts +550 -0
- package/src/onboard/steps/escalation.ts +640 -0
- package/src/onboard/steps/githubapp.ts +1414 -0
- package/src/onboard/steps/golive.ts +577 -0
- package/src/onboard/steps/index.ts +71 -0
- package/src/onboard/steps/ingress.ts +907 -0
- package/src/onboard/steps/inventory.ts +526 -0
- package/src/onboard/steps/llmauth.ts +1095 -0
- package/src/onboard/steps/memory.ts +1290 -0
- package/src/onboard/steps/memorykeys.ts +85 -0
- package/src/onboard/steps/preflight.ts +191 -0
- package/src/onboard/steps/proof.ts +624 -0
- package/src/onboard/steps/ssh.ts +377 -0
- package/src/onboard/steps/topology.ts +337 -0
- package/src/onboard/steps/transport.ts +665 -0
- package/src/onboard/steps/verifyup.ts +448 -0
- package/src/onboard/steps/vmdeploy.ts +442 -0
- package/src/onboard/toml.ts +50 -0
- package/src/opencli.ts +591 -0
- package/src/openpr.ts +568 -0
- package/src/openviking/client.ts +1131 -0
- package/src/openviking/context.ts +263 -0
- package/src/openviking/embedder.ts +516 -0
- package/src/openviking/gapsink.ts +63 -0
- package/src/openviking/health.ts +83 -0
- package/src/openviking/index.ts +119 -0
- package/src/openviking/lessonfind.ts +92 -0
- package/src/openviking/probe.ts +129 -0
- package/src/openviking/proc.ts +110 -0
- package/src/openviking/provisionreport.ts +160 -0
- package/src/openviking/reembed.ts +412 -0
- package/src/openviking/relayout.ts +177 -0
- package/src/openviking/sidecar-main.ts +38 -0
- package/src/openviking/sidecar.ts +106 -0
- package/src/openviking/store.ts +2025 -0
- package/src/openviking/supervisor.ts +474 -0
- package/src/openviking/types.ts +174 -0
- package/src/operator-recovery.ts +237 -0
- package/src/operatormessage.ts +52 -0
- package/src/outcomes.ts +1670 -0
- package/src/piauthcopy.ts +12 -0
- package/src/picli.ts +49 -0
- package/src/picwd.ts +25 -0
- package/src/pilogin.ts +37 -0
- package/src/pingpong.ts +1339 -0
- package/src/posting-journal.ts +549 -0
- package/src/posting-outbox.ts +802 -0
- package/src/posting-receipt.ts +324 -0
- package/src/posting.ts +603 -0
- package/src/postops.ts +832 -0
- package/src/pr-activity.ts +20 -0
- package/src/pr-author.ts +6 -0
- package/src/pr-conversation.ts +432 -0
- package/src/pr-session-lifecycle.ts +631 -0
- package/src/preflight.ts +391 -0
- package/src/priorresolve.ts +343 -0
- package/src/qcrbin.ts +186 -0
- package/src/recheck.ts +1775 -0
- package/src/reconcile.ts +1030 -0
- package/src/recordedfindings.ts +27 -0
- package/src/regression.ts +833 -0
- package/src/replay.ts +816 -0
- package/src/requiredpasses.ts +148 -0
- package/src/resumecheck.ts +246 -0
- package/src/reviewcli.ts +787 -0
- package/src/reviewcontext.ts +35 -0
- package/src/reviewdetach.ts +734 -0
- package/src/reviewhistory.ts +427 -0
- package/src/reviewhome.ts +36 -0
- package/src/reviewmemory.ts +133 -0
- package/src/reviewrendercli.ts +139 -0
- package/src/round-work.ts +42 -0
- package/src/runhost.ts +108 -0
- package/src/scanauth.ts +36 -0
- package/src/scanbox.ts +1081 -0
- package/src/scancli.ts +1296 -0
- package/src/scandriverlog.ts +32 -0
- package/src/session-bridge.ts +139 -0
- package/src/session-command-payload.ts +35 -0
- package/src/session-command-supervisor.ts +1142 -0
- package/src/sessionjsonl.ts +88 -0
- package/src/sessions.ts +659 -0
- package/src/setup/adapters.ts +335 -0
- package/src/setup/baselines.ts +110 -0
- package/src/setup/caserunner.ts +611 -0
- package/src/setup/configcommit.ts +443 -0
- package/src/setup/engine.ts +1001 -0
- package/src/setup/facts.ts +627 -0
- package/src/setup/findings.ts +1264 -0
- package/src/setup/history.ts +443 -0
- package/src/setup/interview.ts +243 -0
- package/src/setup/ledger.ts +324 -0
- package/src/setup/pins.ts +66 -0
- package/src/setup/portrait.ts +635 -0
- package/src/setup/presentation.ts +18 -0
- package/src/setup/profile.ts +508 -0
- package/src/setup/replay.ts +370 -0
- package/src/setup/replaybuild.ts +392 -0
- package/src/setup/replayrun.ts +1096 -0
- package/src/setup/replaysource.ts +198 -0
- package/src/setup/retune.ts +415 -0
- package/src/setup/retunelog.ts +95 -0
- package/src/setup/scan.ts +1033 -0
- package/src/setup/scanbuild.ts +168 -0
- package/src/setup/scanfacts.ts +107 -0
- package/src/setup/scanlease.ts +297 -0
- package/src/setup/scanreport.ts +373 -0
- package/src/setup/scanrun.ts +2268 -0
- package/src/setup/scantree.ts +259 -0
- package/src/setup/stage2.ts +926 -0
- package/src/setup/stage2request.ts +347 -0
- package/src/setup/survey.ts +458 -0
- package/src/setup/surveyrun.ts +758 -0
- package/src/setup/textsniff.ts +95 -0
- package/src/setup/trackersink.ts +433 -0
- package/src/setup/triage.ts +768 -0
- package/src/setup/tuning.ts +766 -0
- package/src/setup/unitcut.ts +523 -0
- package/src/singleflight.ts +86 -0
- package/src/slack/announce.ts +911 -0
- package/src/slack/api.ts +303 -0
- package/src/slack/messages.ts +288 -0
- package/src/slack/origin.ts +599 -0
- package/src/slack/policy.ts +354 -0
- package/src/slack/reply.ts +201 -0
- package/src/slack/router.ts +285 -0
- package/src/slack/socket.ts +384 -0
- package/src/slack/types.ts +108 -0
- package/src/sqlitehint.ts +32 -0
- package/src/ssh-observation.ts +30 -0
- package/src/state.ts +8243 -0
- package/src/statemachine.ts +369 -0
- package/src/stubs.ts +68 -0
- package/src/takeover.ts +634 -0
- package/src/takeoverpi.ts +293 -0
- package/src/terminal-failure.ts +41 -0
- package/src/thread-resolution-refusal.ts +2 -0
- package/src/tmux.ts +153 -0
- package/src/trackerid.ts +41 -0
- package/src/transcriptindex.ts +665 -0
- package/src/tui/actions.ts +484 -0
- package/src/tui/alerts.ts +666 -0
- package/src/tui/app.ts +1979 -0
- package/src/tui/archiveops.ts +192 -0
- package/src/tui/autofile.ts +233 -0
- package/src/tui/board.ts +1432 -0
- package/src/tui/candidates.ts +889 -0
- package/src/tui/cellwidth.ts +148 -0
- package/src/tui/changelog-store.ts +503 -0
- package/src/tui/chord.ts +25 -0
- package/src/tui/clipboard.ts +92 -0
- package/src/tui/cmdbar.ts +296 -0
- package/src/tui/companion.ts +1427 -0
- package/src/tui/companionplan.ts +247 -0
- package/src/tui/companiontab.ts +83 -0
- package/src/tui/confighome.ts +155 -0
- package/src/tui/connect.ts +68 -0
- package/src/tui/deploy-ceremony.ts +104 -0
- package/src/tui/deploy-drain.ts +129 -0
- package/src/tui/deploy-process.ts +265 -0
- package/src/tui/deploytab.ts +1523 -0
- package/src/tui/design.ts +125 -0
- package/src/tui/digesttab.ts +214 -0
- package/src/tui/emptystate.ts +39 -0
- package/src/tui/evidence.ts +999 -0
- package/src/tui/feed.ts +604 -0
- package/src/tui/feedbacktab.ts +1077 -0
- package/src/tui/filters.ts +90 -0
- package/src/tui/ghread.ts +321 -0
- package/src/tui/historypull.ts +81 -0
- package/src/tui/inboxpull.ts +236 -0
- package/src/tui/index.ts +1565 -0
- package/src/tui/issuesink.ts +238 -0
- package/src/tui/jsonfile.ts +42 -0
- package/src/tui/keys.ts +109 -0
- package/src/tui/layout.ts +108 -0
- package/src/tui/learning.ts +627 -0
- package/src/tui/lessonswitch.ts +118 -0
- package/src/tui/livecontrol.ts +228 -0
- package/src/tui/memforward.ts +443 -0
- package/src/tui/memincident.ts +363 -0
- package/src/tui/memory.ts +620 -0
- package/src/tui/memtab.ts +606 -0
- package/src/tui/metricstab.ts +1177 -0
- package/src/tui/model.ts +131 -0
- package/src/tui/mouse.ts +98 -0
- package/src/tui/msg.ts +268 -0
- package/src/tui/nativecompanion.ts +417 -0
- package/src/tui/openurl.ts +21 -0
- package/src/tui/paint.ts +511 -0
- package/src/tui/panes.ts +98 -0
- package/src/tui/pipane.ts +219 -0
- package/src/tui/poll-hooks.ts +12 -0
- package/src/tui/poll.ts +147 -0
- package/src/tui/proposals.ts +838 -0
- package/src/tui/prpause.ts +150 -0
- package/src/tui/reload.ts +436 -0
- package/src/tui/remote.ts +413 -0
- package/src/tui/rollover.ts +969 -0
- package/src/tui/scantab.ts +1290 -0
- package/src/tui/setupentry.ts +93 -0
- package/src/tui/sidebar.ts +749 -0
- package/src/tui/sshtriage.ts +510 -0
- package/src/tui/startup.ts +231 -0
- package/src/tui/tabs.ts +45 -0
- package/src/tui/termmirror.ts +224 -0
- package/src/tui/theme.ts +95 -0
- package/src/tui/ticketstab.ts +310 -0
- package/src/tui/tmuxsocket.ts +129 -0
- package/src/tui/trackertickets.ts +84 -0
- package/src/tui/unwedge.ts +286 -0
- package/src/tui/viewer.ts +575 -0
- package/src/tui/viewerinput.ts +173 -0
- package/src/updatenotice.ts +178 -0
- package/src/usage.ts +1154 -0
- package/src/verdicts.ts +4689 -0
- package/src/version.ts +80 -0
- package/src/wakes.ts +476 -0
- package/src/webhook.ts +942 -0
- package/src/webhookheal.ts +276 -0
- package/src/wire.ts +2153 -0
- package/src/worker-session-host.ts +602 -0
- package/src/workerbreaker.ts +156 -0
- package/src/workercontrol.ts +104 -0
- package/src/workerlease.ts +441 -0
- package/src/workerliveness.ts +103 -0
- package/src/workerlog.ts +79 -0
- package/src/workerruntime.ts +30 -0
- package/src/workersupervisor.ts +1538 -0
- package/src/workerusage.ts +42 -0
- package/src/workerworld.ts +427 -0
- package/src/worktrees.ts +1138 -0
- package/tests/fixtures/regression-cases.json +795 -0
- package/tests/fixtures/seed-manifest.json +19 -0
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: land
|
|
3
|
+
description: Get an already-decided change into the repo on the right surface — which of the three routes it takes, and the ratifying turn it needs first. Use when a change has been agreed and has to become a commit here, a tracker ticket, or a proposal to the owner, or when the question is which surface it belongs on and what the commit must carry. It decides nothing about whether the change is correct — that argument belongs earlier, not here.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Landing a change
|
|
7
|
+
|
|
8
|
+
This file **is** the doctrine: the routes and the authority they run under
|
|
9
|
+
were decided with the owner. If the doctrine changes, it changes here.
|
|
10
|
+
|
|
11
|
+
## The gate before any route: the ratifying turn
|
|
12
|
+
|
|
13
|
+
Nothing below fires until this passes. It is not a formality — **the entire
|
|
14
|
+
authority to commit rests on it**, because the boundary that used to stop you is
|
|
15
|
+
now prose plus this turn and nothing else.
|
|
16
|
+
|
|
17
|
+
- **Commit only after the owner approves THAT change, in this session, in words.**
|
|
18
|
+
Not inferred from them reading your verdict. Not from "they asked me to look at
|
|
19
|
+
the feedback". Not from a standing instruction to improve the reviewer. Not
|
|
20
|
+
from their silence.
|
|
21
|
+
- **The approval is per batch.** One "yes, all three" covers the three changes
|
|
22
|
+
just discussed and nothing else. A fourth change you noticed while committing
|
|
23
|
+
the third is not covered — ask.
|
|
24
|
+
- **It is void at session end.** After a compaction, a day rollover, or a
|
|
25
|
+
restart, a previous yes is history, not permission. Ask again. If you cannot
|
|
26
|
+
point at their approving words *in the conversation you are currently in*, you
|
|
27
|
+
do not have one.
|
|
28
|
+
- **Ambiguous is not approved.** "Sounds right" about an argument is not
|
|
29
|
+
approval of a diff. If you are constructing an argument for why it counts, it
|
|
30
|
+
does not.
|
|
31
|
+
|
|
32
|
+
**The load-bearing sentence, and the first thing to check if this ever goes
|
|
33
|
+
wrong:** *if a change ever lands without a ratifying turn — implicitly, by
|
|
34
|
+
inference, or from a prior session — the widening is void, not merely
|
|
35
|
+
violated.*
|
|
36
|
+
|
|
37
|
+
## Which route: three surfaces, three answers
|
|
38
|
+
|
|
39
|
+
Decide the surface first. It is almost always obvious, and picking wrong is the
|
|
40
|
+
one way to turn a good change into a bad one.
|
|
41
|
+
|
|
42
|
+
### 1. Review-side — how the reviewer judges (`prompts/`, `agents/`)
|
|
43
|
+
|
|
44
|
+
Round templates, lens bodies, the addendum registry's effect on what a pass
|
|
45
|
+
says. **This is yours now**, through the conversation, under the ratifying turn.
|
|
46
|
+
The old producer — the EOD curator writing `state/rubric/<slug>/` on the VM —
|
|
47
|
+
is **retired**: the curator flags candidates in the digest and
|
|
48
|
+
authors nothing, and never ask the overseer to draft one. The proposal
|
|
49
|
+
*surface* lives on, and **you are its producer now**: when a review-side
|
|
50
|
+
change needs the owner's ratification rather than a ratifying turn, you author
|
|
51
|
+
a proposal directory and their accept click in the TUI ratifies it.
|
|
52
|
+
|
|
53
|
+
#### Authoring a rubric proposal (the TUI-accept route)
|
|
54
|
+
|
|
55
|
+
- **Where**: `state/rubric/<lens>-<topic>-<YYYY-MM-DD>/` under `/workspace` —
|
|
56
|
+
the LOCAL repo's state dir, the same tree the TUI's `[7] feedback` tab
|
|
57
|
+
reads (`src/tui/proposals.ts` lists it from the repo root; there is no VM
|
|
58
|
+
path in this loop). Slug charset `[A-Za-z0-9._-]`, no leading dot, or the
|
|
59
|
+
TUI never lists it.
|
|
60
|
+
- **What it contains**, exactly two files:
|
|
61
|
+
- `PROPOSAL.md` — the pitch: rationale, evidence PRs, expected effect on
|
|
62
|
+
false-positive/miss rates. First three non-blank lines are the card the
|
|
63
|
+
TUI shows; make them carry the argument.
|
|
64
|
+
- `changes.patch` — ONE unified diff against the current `agents/` /
|
|
65
|
+
`prompts/` files, paths repo-relative with `a/` `b/` prefixes
|
|
66
|
+
(`git diff` output is the right shape).
|
|
67
|
+
- **Targets: `agents/` and `prompts/` only.** The TUI refuses anything else —
|
|
68
|
+
both diff sides plus rename/copy headers are checked, so a deletion or
|
|
69
|
+
rename cannot smuggle a path in. It equally refuses a patch that touches
|
|
70
|
+
lines inside a `<!-- RATIFIED … -->` fence or adds a fence marker of its
|
|
71
|
+
own: a proposal can argue against a ratified passage, never carry one in.
|
|
72
|
+
- **You NEVER apply the patch yourself.** the owner's accept click in the TUI
|
|
73
|
+
IS the ratification (accept = apply + auto-ratify + local commit; the
|
|
74
|
+
divergence fixture and seed manifest are re-pinned by that path, not by
|
|
75
|
+
you). Reject removes the dir and records a `#rejected-proposal` memory
|
|
76
|
+
entry — never re-propose one of those. Until they click, the directory is
|
|
77
|
+
inert prose; writing it needs no ratifying turn, precisely because it
|
|
78
|
+
changes nothing.
|
|
79
|
+
|
|
80
|
+
Two things travel with a review-side commit:
|
|
81
|
+
|
|
82
|
+
- **`tests/seed-integrity.test.ts` is the map of what is frozen.** Seeded content
|
|
83
|
+
(`pass-common.md`, `conversation-system.md`, `eod-sweep.md`,
|
|
84
|
+
the seeded `agents/pass-*.md`) is frozen (`docs/ownership.md`) —
|
|
85
|
+
a reseed is the owner's ratification, not yours. Ours to edit: the round
|
|
86
|
+
templates, `companion.md`, `companion-day-open.md`, the Slack appendix. The
|
|
87
|
+
test's own `NON_SEEDED` list is the authority; check it, do not remember it.
|
|
88
|
+
- **Pass behaviour changes go through `PASS_ADDENDA` in `src/include.ts`**,
|
|
89
|
+
composed onto BUILT bodies — never through a seed edit. That is a system-side
|
|
90
|
+
commit that happens to change review behaviour, and it is the sanctioned path.
|
|
91
|
+
- If a ratified reseed *is* what the owner asked for, the ratification is recorded
|
|
92
|
+
the way the machinery already does it: `recordRatification()` in
|
|
93
|
+
`src/tui/proposals.ts` appends to `tests/fixtures/ratified-divergence.json`
|
|
94
|
+
and re-pins `tests/fixtures/seed-manifest.json`. Same commit as the edit, or
|
|
95
|
+
the suite is red. Do not hand-edit either fixture around it.
|
|
96
|
+
|
|
97
|
+
### 2. System-side — daemon behaviour (`src/`, `tests/`, `scripts/`, `docs/`)
|
|
98
|
+
|
|
99
|
+
Severity mapping, dispatch, webhook routing, the TUI, yourself. **One rule for
|
|
100
|
+
all of it**: after a ratifying turn, you edit it and commit it. There is
|
|
101
|
+
deliberately **no carve-out** — not for the mutation gate, not for the posting
|
|
102
|
+
guards, not for "anything structural". The owner rejected both carve-outs
|
|
103
|
+
explicitly, and the recorded consequence is that the safety story for a gate
|
|
104
|
+
edit is the ratifying turn plus a one-key revert, with no second structural
|
|
105
|
+
barrier. Weigh that when you ask.
|
|
106
|
+
|
|
107
|
+
What does *not* move: the gate's shape. Every GitHub mutation still goes through
|
|
108
|
+
the one `MutationGate`; you may edit the gate, you may never add a path around
|
|
109
|
+
it, and `dry_run` is the owner's alone in either direction.
|
|
110
|
+
|
|
111
|
+
### 3. Author-side — how the code gets written in the first place
|
|
112
|
+
|
|
113
|
+
The highest-yield surface in the corpus, and the one you touch least directly.
|
|
114
|
+
**It becomes a tracker ticket, and the owner acts on it.** Nothing reaches
|
|
115
|
+
the reviewed repo until they move.
|
|
116
|
+
|
|
117
|
+
- Write the ticket on the issue tracker at `/tracker`, as actor `companion`,
|
|
118
|
+
under the concurrency protocol (`/tracker-docs/issue-tracker.md`).
|
|
119
|
+
- Carry the argument: the episode, the verdict, the counter-case, and what a
|
|
120
|
+
change to the team's practice would be.
|
|
121
|
+
- The daemon's improvement-PR machinery (caps ≤50 lines / ≤3 files, 1/day,
|
|
122
|
+
3/week, enforced in daemon code) remains the **only** path to a bot-filed PR
|
|
123
|
+
and is untouched — you do not feed it, and you never file one yourself. This
|
|
124
|
+
is a deliberate narrowing: changes from feedback are never automatic, and a
|
|
125
|
+
human step is the accepted price.
|
|
126
|
+
|
|
127
|
+
## Ratified invariants: propose only, never edit
|
|
128
|
+
|
|
129
|
+
Some passages are the owner's, wherever they live. In the files we own they are
|
|
130
|
+
**fenced**:
|
|
131
|
+
|
|
132
|
+
```
|
|
133
|
+
<!-- RATIFIED ci-gate — do not edit; owner only -->
|
|
134
|
+
…the ratified text, byte for byte…
|
|
135
|
+
<!-- /RATIFIED ci-gate -->
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Edit freely *around* a fence; never *inside* one. `tests/invariant-fences.test.ts`
|
|
139
|
+
hashes each fence's contents and fails just as loudly when a marker goes missing
|
|
140
|
+
— deleting the fence is not a way around the pin. The same holds for the
|
|
141
|
+
invariants living in `src/` that have no fence yet (the CI gate in
|
|
142
|
+
`cigate.ts`, reachability in `severity.ts`, the one-way transition in
|
|
143
|
+
`recheck.ts`, `validatorTier` in `dispatch.ts`, the migration COMMENT rule):
|
|
144
|
+
**their being unfenced is a gap, not permission.**
|
|
145
|
+
|
|
146
|
+
Arguing for a change to one is allowed and welcome. Making it is not. A verdict
|
|
147
|
+
that requires changing a ratified invariant lands as an argument in the column
|
|
148
|
+
and, where the invariant lives in a prompt or lens, as a rubric proposal
|
|
149
|
+
directory (route 1 above — PROPOSAL.md making the case, and a patch the TUI
|
|
150
|
+
will accept only for the *unfenced* text around it; the fence itself stays
|
|
151
|
+
theirs) — never as a commit you write first and mention after.
|
|
152
|
+
|
|
153
|
+
## The commit
|
|
154
|
+
|
|
155
|
+
- **One purpose per commit.** Touch only what this change justified. If you
|
|
156
|
+
notice something else while you are in the file, note it and leave it.
|
|
157
|
+
- **`master` in the real checkout, never a worktree.** That is
|
|
158
|
+
yours alone and it is deliberate: the owner is watching the TUI you are editing,
|
|
159
|
+
and the hot reload watches the main checkout's `dist/`. The tree is shared
|
|
160
|
+
with worktree agents who are under orders never to stash your work — so commit
|
|
161
|
+
coherent work promptly rather than sitting on a wide diff.
|
|
162
|
+
- **Green before committing, always**: `timeout 900 npm test` with zero
|
|
163
|
+
failures, then `npm run build` clean. Never commit with a red suite. The build
|
|
164
|
+
is also how the change reaches the running TUI — say what you are about to
|
|
165
|
+
rebuild before you do it, so a screen blink is never a surprise.
|
|
166
|
+
- **Message**: `[companion]` prefix and a plain body that says what changed
|
|
167
|
+
and why. No trailers (no `Feedback-PR:`, `Adjudication:` or
|
|
168
|
+
`Ratified-in-session:` line), no quote of the owner's words, no session or
|
|
169
|
+
ticket id: the history is public, and the approval lives in the session.
|
|
170
|
+
- **Tell them what you changed, in one line**, naming the surface.
|
|
171
|
+
|
|
172
|
+
## Did it actually reach the reviewer?
|
|
173
|
+
|
|
174
|
+
A committed review-side or system-side change is not live until the VM has it,
|
|
175
|
+
and **you may never deploy** — `deploy.sh` in any mode is outside the boundary,
|
|
176
|
+
in every direction, permanently.
|
|
177
|
+
|
|
178
|
+
The answer is already on the owner's screen: the deploy tab shows the VM's
|
|
179
|
+
`BUILD_SHA`, local `HEAD`, the pending commit list with diffstat, and
|
|
180
|
+
`deploy.sh --dry-run`'s plan verbatim. So the honest report is: *"committed; it
|
|
181
|
+
shows as pending on the deploy tab; it reaches the reviewer when you deploy."*
|
|
182
|
+
Never say a change is live because you committed it, and never press the deploy
|
|
183
|
+
tab's button on your own judgment — that verb is their finger, not yours.
|
|
184
|
+
|
|
185
|
+
## Never
|
|
186
|
+
|
|
187
|
+
- Never commit without a ratifying turn in the current session, for that
|
|
188
|
+
specific change.
|
|
189
|
+
- Never treat a prior session's approval, a general instruction, or your own
|
|
190
|
+
confidence as one.
|
|
191
|
+
- Never edit inside a `RATIFIED` fence, or delete a fence marker.
|
|
192
|
+
- Never touch a frozen seed without a ratification recorded in the same commit.
|
|
193
|
+
- Never batch two purposes into one commit, and never commit with a red suite.
|
|
194
|
+
- Never call GitHub — no `gh`, no API, no token, no branch, no PR, no issue.
|
|
195
|
+
Author-side is a tracker ticket, and that is the whole of it.
|
|
196
|
+
- Never run `deploy.sh`, never write to the VM, never hold a VM credential.
|
|
197
|
+
- Never push anything anywhere: the sandbox has no remote, and the reviewed repo
|
|
198
|
+
is mounted `:ro`.
|
|
199
|
+
- Never land a change you have not argued for. Deciding is `adjudicate`;
|
|
200
|
+
understanding is `evidence`; trying it against the past is `replay`.
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: replay
|
|
3
|
+
description: "Re-run a past episode offline against the committed regression case set — real human findings on closed PRs — to see how a proposed change to the reviewer would have behaved. Use when asked whether a tweak would still catch what humans caught, to calibrate against the pre-bot corpus, or to try a change before it lands. Strictly offline: it never labels a PR, never wakes a session, and never posts anything."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Replaying a past episode
|
|
7
|
+
|
|
8
|
+
This file **is** the doctrine; the case set was decided with the owner. The
|
|
9
|
+
instrument itself is `src/regression.ts`, and where this file
|
|
10
|
+
and that module disagree, **the module wins** — its assertions run, this prose
|
|
11
|
+
does not.
|
|
12
|
+
|
|
13
|
+
## The safety point, first, because it is the one that can do damage
|
|
14
|
+
|
|
15
|
+
**A replay must never become a posting path.**
|
|
16
|
+
|
|
17
|
+
There is an obvious way to "re-run a review": put the trigger label on the PR
|
|
18
|
+
and let the live daemon dispatch a round. That is how the old cutover comparison
|
|
19
|
+
harness worked, and **it is forbidden here** — a live round posts a real review
|
|
20
|
+
to a real author on a real PR. The same applies to every disguised version of
|
|
21
|
+
it:
|
|
22
|
+
|
|
23
|
+
- Never label, re-label, or ask anyone to label a PR.
|
|
24
|
+
- Never write an overseer inject asking for a re-review, a rerun, or a fresh
|
|
25
|
+
round on any PR. Your one lever is not a replay mechanism.
|
|
26
|
+
- Never touch `dry_run`. It is the owner's alone in both directions (`docs/ownership.md`),
|
|
27
|
+
and a replay that needs it flipped is a replay you must not run.
|
|
28
|
+
- Never replay an **open** PR at all, whatever the mechanism.
|
|
29
|
+
|
|
30
|
+
`src/regression.ts` enforces the same thing in code rather than in prose, and it
|
|
31
|
+
is worth knowing exactly what it checks, because those checks are your floor and
|
|
32
|
+
not your ceiling. `assertReplaySafe(cases, gate)` refuses to start unless:
|
|
33
|
+
|
|
34
|
+
1. the gate it was **handed** reports dry-run — read from the object, never from
|
|
35
|
+
`config.toml`, never inherited, never a printed sentence (see
|
|
36
|
+
`src/compare.ts`'s `attestDryRun` for what that mistake looked like);
|
|
37
|
+
2. no case is a still-open PR;
|
|
38
|
+
3. no case is at or after the contamination cutoff (`2026-03-01`) — rows from
|
|
39
|
+
then on are the old `/auto-review` loop's own output or suspected
|
|
40
|
+
AI-assisted, so scoring against them scores the reviewer against itself.
|
|
41
|
+
|
|
42
|
+
`runRegression` calls it regardless of whether you did. And the `replay` seam in
|
|
43
|
+
`RegressionDeps` carries the rule in its own doc comment: it **must build its
|
|
44
|
+
own round in a scratch root against `case.headSha`**, and it **must not** label
|
|
45
|
+
a PR and let the live daemon dispatch. Nothing in that module imports the
|
|
46
|
+
daemon, `wire.ts`, or a GitHub adapter — if you find yourself adding such an
|
|
47
|
+
import to make a replay work, stop: that is the boundary, and you have just
|
|
48
|
+
reached it.
|
|
49
|
+
|
|
50
|
+
## What the set is, and what it deliberately is not
|
|
51
|
+
|
|
52
|
+
The cases are real findings by human reviewers on **closed** PRs
|
|
53
|
+
(`tests/fixtures/regression-cases.json`, built by
|
|
54
|
+
`scripts/build-regression-set.mjs` from the corpus export — by hand,
|
|
55
|
+
never by a test and never by the daemon).
|
|
56
|
+
|
|
57
|
+
Three properties decide how you read a run:
|
|
58
|
+
|
|
59
|
+
1. **Selection is by SUBSTANCE, not by verdict.** `selectCases` never reads the
|
|
60
|
+
GitHub verdict — blocking measures the reviewer, not the finding, and 82% of
|
|
61
|
+
blocking findings carry no correctness vocabulary at all. A finding is
|
|
62
|
+
admitted only if it states a reason or proposes a concrete alternative
|
|
63
|
+
(rung ≥ L3), is in English, is not bot-authored, and does not rest on
|
|
64
|
+
evidence off the PR. Do not "improve" a run by widening that bar.
|
|
65
|
+
2. **A failure is an INVESTIGATION, not a veto and not a bug.** Every finding
|
|
66
|
+
carries an expectation label — `expected-catch` (the reviewer should reach
|
|
67
|
+
it), `out-of-remit` (ratified design puts it outside the reviewer, so a miss
|
|
68
|
+
is *correct*), `expected-divergence` (the human was argued down; either
|
|
69
|
+
answer is defensible). Two of the three make a divergence the expected
|
|
70
|
+
outcome. `runRegression` never returns a blocking verdict and its `exitCode`
|
|
71
|
+
is always `0`.
|
|
72
|
+
3. **There is deliberately no score to maximize.** A set that could be optimized
|
|
73
|
+
would ratchet the reviewer toward imitating one person's habits, and one
|
|
74
|
+
reviewer is 43% of the corpus. If you catch yourself tuning a change until
|
|
75
|
+
the numbers go up, you are doing the thing the set exists to prevent.
|
|
76
|
+
|
|
77
|
+
## Running one
|
|
78
|
+
|
|
79
|
+
1. **Name the change under test** — pass it as `changeUnderTest`. A run whose
|
|
80
|
+
header cannot say what was tried is a run nobody can act on later.
|
|
81
|
+
2. **Load and parse the set** with `parseCaseSet`. It refuses an empty or
|
|
82
|
+
half-parsed set on purpose: a clean score out of nothing is the one result
|
|
83
|
+
this whole module exists to make impossible.
|
|
84
|
+
3. **Supply a `replay` implementation that satisfies the rule above**, plus the
|
|
85
|
+
real gate object. If no offline replay implementation exists yet, **say so
|
|
86
|
+
and stop.** "I could not run it offline" is a correct and complete answer;
|
|
87
|
+
reaching for the live daemon to fill the gap is not. There is no
|
|
88
|
+
almost-offline route.
|
|
89
|
+
4. **Run it serially.** You have no subagents — cases run one after another, and
|
|
90
|
+
`runRegression` already loops that way. Do not fake parallelism and never
|
|
91
|
+
claim a run you did not do.
|
|
92
|
+
5. **Read `renderInvestigation`'s output as written.** It opens by saying what
|
|
93
|
+
it is not, because the one way this set can do harm is by being read as a
|
|
94
|
+
pass/fail gate the reviewer is then tuned to satisfy.
|
|
95
|
+
|
|
96
|
+
## Reading the result honestly
|
|
97
|
+
|
|
98
|
+
- **`not-reached`** is the only column worth investigating, and the question it
|
|
99
|
+
asks is not "is this a regression?" but "is this in the reviewer's remit at
|
|
100
|
+
all — and if it is, was it ever reached before this change?" A finding
|
|
101
|
+
unreached both before and after is not evidence about the change.
|
|
102
|
+
- **`vacuous` cases** — the replay produced nothing at all for a case that has
|
|
103
|
+
findings. **Suspect the harness before the reviewer.** A vacuous PASS from an
|
|
104
|
+
extractor that matched nothing was the old comparison harness's failure mode; when
|
|
105
|
+
half the cases are vacuous, `runRegression` says `ask-owner` and it means
|
|
106
|
+
it.
|
|
107
|
+
- **Reviewer skew above 40%** means the run is partly measuring one person's
|
|
108
|
+
habits. Widen the set before acting on a pattern in it.
|
|
109
|
+
- **`sandbox-only` findings are not failures.** The reviewer reads things humans
|
|
110
|
+
skipped, and that is what it is for.
|
|
111
|
+
- **A label may be wrong.** If the honest answer is that we do not want a
|
|
112
|
+
finding raised, re-label the case `out-of-remit` with a note — but that is a
|
|
113
|
+
change to the instrument, so it lands like any other change: through the
|
|
114
|
+
ratifying turn, via `land`.
|
|
115
|
+
|
|
116
|
+
## After the run
|
|
117
|
+
|
|
118
|
+
Report the recommendation (`no-action`, `look-at-these`, `ask-owner`), the
|
|
119
|
+
headline, and the unreached findings — in the column, in the owner's own terms. A
|
|
120
|
+
run **never** decides whether the change lands. It is one input to the argument
|
|
121
|
+
that happens before `land` is ever loaded, and it does not replace it.
|
|
122
|
+
|
|
123
|
+
Do not write a memory entry for a run. The investigation markdown is the
|
|
124
|
+
artefact; a run is a measurement, not a conclusion.
|
|
125
|
+
|
|
126
|
+
## Never
|
|
127
|
+
|
|
128
|
+
- Never label a PR, ask for a round, or nudge a session to produce a replay.
|
|
129
|
+
- Never replay an open PR, or a case at or after the contamination cutoff.
|
|
130
|
+
- Never run against a gate that is not dry-run, and never change `dry_run`.
|
|
131
|
+
- Never treat a run as a gate, a score, or permission to land — it has no
|
|
132
|
+
blocking verdict by design.
|
|
133
|
+
- Never widen the substance bar, drop the per-reviewer cap, or re-label a case
|
|
134
|
+
to make a run come out better.
|
|
135
|
+
- Never report a run you did not complete, and never present a vacuous run as a
|
|
136
|
+
clean one.
|
|
137
|
+
- Never call GitHub, the mutation gate, `deploy.sh`, or the VM. The corpus, the
|
|
138
|
+
case set and the reviewed code are all local files.
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: setup
|
|
3
|
+
description: Set up the reviewed repo so the reviewer knows its codebase — facts and unit cut, review history themes, the setup survey, the portrait, then an interview on goals, merge-blocking concerns, risk areas, style and tests whose answers become the repo profile, plus memory pins proposed to the owner. Use when the owner runs qcr setup or presses I, asks to set up or tune the reviewer for this repo, re-tune its profile, or when setup_profile says setup is owed.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Setting up a repo
|
|
7
|
+
|
|
8
|
+
This file **is** the doctrine, decided with the owner. The instruments
|
|
9
|
+
are the `setup_*` tools and `src/setup/` behind them, and where this file and
|
|
10
|
+
that code disagree, **the code wins** — its refusals run, this prose does not.
|
|
11
|
+
|
|
12
|
+
## What setup is, and what it is not
|
|
13
|
+
|
|
14
|
+
Setup teaches the reviewer one repo: what it is, what it already holds itself
|
|
15
|
+
to, and what its owner cares about. It ends in three things — the **repo
|
|
16
|
+
profile** (the per-lens tuning), the **repo portrait**, and **seeded memory**.
|
|
17
|
+
It hunts no bugs: that is the scan, which comes after setup, on a set-up repo.
|
|
18
|
+
|
|
19
|
+
**You judge; the tools act.** You read the repo, condense, ask and propose.
|
|
20
|
+
Every write goes through a tool that validates it — you never hand-write a
|
|
21
|
+
file the tools own, and you never write `config.toml` (it is mounted
|
|
22
|
+
read-only, on purpose).
|
|
23
|
+
|
|
24
|
+
## Always start with `setup_profile`
|
|
25
|
+
|
|
26
|
+
It says where setup stands: which profile the live config names, whether it
|
|
27
|
+
loads, whether setup is **owed**, what the interview has answered so far and
|
|
28
|
+
what became of each commit. Setup is resumable: pick up at the first step
|
|
29
|
+
not yet done, and say which one that is.
|
|
30
|
+
|
|
31
|
+
**The nudge.** When `setup_profile` says setup is owed and the owner did not
|
|
32
|
+
ask for it, mention it **once** in a conversation — one sentence, what it
|
|
33
|
+
buys, `qcr setup` or `I` on the board — and drop it. Never start setup on
|
|
34
|
+
your own initiative.
|
|
35
|
+
|
|
36
|
+
## The order
|
|
37
|
+
|
|
38
|
+
1. **Facts and the unit cut.** `setup_repo_facts`, then propose a cut
|
|
39
|
+
(`setup_unit_cut_propose`), let the owner correct it
|
|
40
|
+
(`setup_unit_cut_adjust`), and save it only when they agree. A saved cut is
|
|
41
|
+
reused: re-cut only when they ask.
|
|
42
|
+
2. **Review history.** `setup_review_history`. If there is no digest, ask them
|
|
43
|
+
to run `qcr history pull` — you cannot fetch it. Condense it into themes
|
|
44
|
+
(`setup_review_history_themes`): your words, never a quote, never a name.
|
|
45
|
+
An empty history is normal for a repo new to the reviewer.
|
|
46
|
+
3. **The survey.** `setup_survey_preview`; tell them the price; start it with
|
|
47
|
+
the preview's key only when they agree. It runs in the background — keep
|
|
48
|
+
going with them; check `setup_survey_status` when it matters.
|
|
49
|
+
4. **The portrait.** `setup_portrait_assemble`, then write them your reading
|
|
50
|
+
of it (`setup_portrait_narrative`): what kind of repo this is, what it
|
|
51
|
+
already enforces, what reviewers keep asking for, and what the facts leave
|
|
52
|
+
open — those open questions are where the interview starts.
|
|
53
|
+
5. **The interview** (below).
|
|
54
|
+
6. **The profile** — previewed, shown, written (below).
|
|
55
|
+
7. **The replay** — optional, offered once, cost first (below).
|
|
56
|
+
8. **Pins** — proposed, never pinned (below).
|
|
57
|
+
9. **What it takes to go live** (below).
|
|
58
|
+
|
|
59
|
+
## The interview
|
|
60
|
+
|
|
61
|
+
`setup_interview` shows its fixed frame: four points, a list of concerns, and
|
|
62
|
+
the table that turns a priority into lens settings. Read it first.
|
|
63
|
+
|
|
64
|
+
- **Adaptive, from the portrait.** Ask about what THIS repo makes
|
|
65
|
+
interesting. A backend with no frontend gets one line on `frontend`, not a
|
|
66
|
+
conversation. A payments service gets a real one on `money`.
|
|
67
|
+
- **Four points, always:** the project's **goals**, what must **block a
|
|
68
|
+
merge**, the **risk areas** (security, data, money, compliance), and
|
|
69
|
+
**style & tests**. The profile cannot be written until every concern has a
|
|
70
|
+
priority and the goals are recorded — the tool refuses, and names what is
|
|
71
|
+
missing.
|
|
72
|
+
- **A priority per concern:** `critical`, `important`, `normal`, `ignore`.
|
|
73
|
+
Offer yours with the evidence behind it ("reviews here keep asking about
|
|
74
|
+
migrations — I'd say data is critical"), and take their answer. `normal` is
|
|
75
|
+
the reviewer as shipped; say so, so they know what they are choosing against.
|
|
76
|
+
`ignore` switches the concern's lenses off — say what they stop paying for,
|
|
77
|
+
and what they stop getting.
|
|
78
|
+
- **The goals in their words.** Short. They are recorded as `goals`, and what
|
|
79
|
+
a lens should watch for because of them becomes that lens's `emphasis`.
|
|
80
|
+
- **One question at a time**, plainly worded. This is a conversation, not a
|
|
81
|
+
form; the tool, not the owner, keeps track of what is left.
|
|
82
|
+
|
|
83
|
+
## The profile: preview, show, write
|
|
84
|
+
|
|
85
|
+
- **`setup_profile_apply` without `write` previews**: the diff and what the
|
|
86
|
+
table decided, with the concern behind each lens. Show them the diff — not
|
|
87
|
+
a summary of it. Nothing is written.
|
|
88
|
+
- **Emphasis**: a few sentences per lens they care about, only where there is
|
|
89
|
+
something to say. Your words, from their goals and the portrait; never a raw
|
|
90
|
+
review comment, never a colleague's name.
|
|
91
|
+
- **A style guide**: only when style matters to them (`important` or
|
|
92
|
+
`critical`) AND the repo writes none of its own — no style guide, no style
|
|
93
|
+
section in its agent-directive files (the facts say which). Draft it from
|
|
94
|
+
the conventions the survey observed and their answers, as rules a reviewer
|
|
95
|
+
can cite, and pass it as `style_guide`. A guide the repo writes always
|
|
96
|
+
wins over yours; if it has one, draft nothing.
|
|
97
|
+
- **`write: true` only after they agreed to the diff.** The write is validated
|
|
98
|
+
with the daemon's own loaders first — a profile that would not boot is
|
|
99
|
+
refused and nothing changes. When it lands, a commit is asked for; their
|
|
100
|
+
machine carries it out if the config home is a git repo. `setup_profile`
|
|
101
|
+
shows what became of it.
|
|
102
|
+
- **Direct edits are their right.** If they edit the profile themselves, check it
|
|
103
|
+
with `setup_profile_validate` (they can run `qcr setup validate`), and say
|
|
104
|
+
plainly whether the daemon would boot with it.
|
|
105
|
+
|
|
106
|
+
## The replay: old against new, cost first
|
|
107
|
+
|
|
108
|
+
Once a write has landed, offer ONCE to replay one or two recent PRs with the
|
|
109
|
+
profile as it was before the write and as it is now — the tuning's effect,
|
|
110
|
+
seen before it goes live. It is optional: if they decline, move on.
|
|
111
|
+
|
|
112
|
+
- Pick PRs the change should show on — ones touching the lenses the
|
|
113
|
+
interview moved — and say why.
|
|
114
|
+
- `setup_replay_preview` shows both sides' plans and the price. **Tell them
|
|
115
|
+
the cost and the hard cap first**; start (`setup_replay_start`, the
|
|
116
|
+
preview's key) only when they agree.
|
|
117
|
+
- It runs in the background; keep going with them. `setup_replay_status`
|
|
118
|
+
shows the two reviews side by side when it is done. Read it FOR them: what
|
|
119
|
+
the new profile catches that the old missed, what it no longer raises,
|
|
120
|
+
what moved in severity, what it cost — and whether that is what their goals
|
|
121
|
+
asked for. One or two PRs are a sample: say so, and never re-tune on one
|
|
122
|
+
finding alone.
|
|
123
|
+
- A difference they do not want is a reason to re-tune (the same interview,
|
|
124
|
+
shorter), then replay again only if they ask.
|
|
125
|
+
|
|
126
|
+
## Pins: propose, they decide
|
|
127
|
+
|
|
128
|
+
Pinned memory heads every PR round, and the head is small. Propose a
|
|
129
|
+
handful of the survey's and history's most important entries with
|
|
130
|
+
`setup_pin_propose`, each with one line of why — conventions a round must
|
|
131
|
+
never miss, not trivia. **You do not pin.** They appear marked ☆ on the
|
|
132
|
+
TUI's memory tab; they pin with `p`. The tool prices the pinned head: if the
|
|
133
|
+
proposals would push it past its budget, propose fewer.
|
|
134
|
+
|
|
135
|
+
## What it takes to go live
|
|
136
|
+
|
|
137
|
+
Tell them, plainly, what is still theirs:
|
|
138
|
+
|
|
139
|
+
- **Name the profile.** If the live config does not name it, PR rounds do
|
|
140
|
+
not use it: they set `[review] profile = "<name>"` in their `config.toml`.
|
|
141
|
+
- **Deploy.** Nothing reaches PR reviews until they deploy; the deploy tab
|
|
142
|
+
says "profile changed, not deployed" until then. You never deploy.
|
|
143
|
+
|
|
144
|
+
## Re-tuning later
|
|
145
|
+
|
|
146
|
+
The same interview, shorter: `setup_profile` shows the recorded answers;
|
|
147
|
+
ask only about what changed, and write only the difference — a write keeps
|
|
148
|
+
every answer it was not given. Moving a concern back to `normal` clears what
|
|
149
|
+
the table wrote for it. The same preview-then-write discipline applies.
|
|
150
|
+
|
|
151
|
+
**After a scan** the re-tune is yours: `setup_retune`, not the
|
|
152
|
+
interview. Change only what the scan gives grounds for, give every change
|
|
153
|
+
its reason from what it found, preview, write, then report to them what
|
|
154
|
+
changed and why. Refresh the portrait (`setup_portrait_assemble`, then your
|
|
155
|
+
narrative) so the next re-tune reads this scan. It reaches PR reviews only
|
|
156
|
+
on their deploy — the deploy tab shows the re-tune pending until then.
|
|
157
|
+
|
|
158
|
+
## Never
|
|
159
|
+
|
|
160
|
+
- Never write `config.toml`, and never a file the setup tools own by hand.
|
|
161
|
+
- Never pin — propose, and let them pin.
|
|
162
|
+
- Never start a survey, a re-survey or a replay they did not agree to, and
|
|
163
|
+
never spend before they have seen the cost.
|
|
164
|
+
- Never quote a raw review comment or name its author anywhere outside the
|
|
165
|
+
state home.
|
|
166
|
+
- Never call `deploy.sh`, the mutation gate, or the VM, and never write to
|
|
167
|
+
GitHub: a profile reaches PR reviews only when they deploy it.
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: survey
|
|
3
|
+
description: Sweep the standing candidate list for reviews that departed from the good path, and report them grouped by family, worst first — repeat blocks, dead rounds, repeat approvals, dismissals, disagreements, explicit [feedback]. Use when asked whether there is anything worth looking at, what is on the backlog, or where to start today, and when an honest "nothing found, here is what I checked" is the likely answer. It only surveys — it settles nothing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Surveying for candidates
|
|
7
|
+
|
|
8
|
+
This file **is** the doctrine, decided with the owner. If the doctrine
|
|
9
|
+
changes, it changes here. The instrument is `src/tui/candidates.ts`, and where this file and that
|
|
10
|
+
module disagree, **the module wins** — its code runs, this prose does not.
|
|
11
|
+
|
|
12
|
+
## What this is, and what it is not
|
|
13
|
+
|
|
14
|
+
You are answering *"anything worth looking at?"* — and answering it honestly
|
|
15
|
+
when the answer is no.
|
|
16
|
+
|
|
17
|
+
**You survey; you do not judge.** Nothing here decides whether a review was
|
|
18
|
+
right, attributes a fault, or writes a verdict. The moment the question turns
|
|
19
|
+
into *"was the reviewer wrong on that one?"*, you are done here: hand the item
|
|
20
|
+
to **`adjudicate`**, which will pull the evidence and reach a verdict under its
|
|
21
|
+
own doctrine. Presenting a candidate as a defect is the one way this skill can
|
|
22
|
+
do damage, because a candidate is a **shape**, not a fault: 27 of 29 live
|
|
23
|
+
reviews departed from the good path, and most of those departures are fine.
|
|
24
|
+
|
|
25
|
+
## The one good path, and what counts as leaving it
|
|
26
|
+
|
|
27
|
+
Perfect is: **triggered → APPROVE in one round → merged.** Everything else is a
|
|
28
|
+
departure, and departures are the *space* the survey works in, not a filter that
|
|
29
|
+
narrows it — measured on the live corpus, exactly 2 of 29 PRs took the perfect
|
|
30
|
+
path.
|
|
31
|
+
|
|
32
|
+
**One carve-out, and it is the owner's, stated in their own terms: a block the
|
|
33
|
+
author accepted and fixed is the review WORKING.** Block → fix → approve is not
|
|
34
|
+
a candidate and must never be offered as one. It becomes one only if the block
|
|
35
|
+
turned out to be wrong, or was withdrawn. `REPEAT_BLOCK_ROUNDS = 3` in the
|
|
36
|
+
module is that carve-out in code: one fix cycle is the review doing its job,
|
|
37
|
+
three blocks in a row is a treadmill.
|
|
38
|
+
|
|
39
|
+
## The seven families
|
|
40
|
+
|
|
41
|
+
Groups come out in this order — **highest-signal and rarest first** — and
|
|
42
|
+
worst-first inside each group. The ordering is the whole usability of the list:
|
|
43
|
+
with ~93% of reviews departing, a flat worst-first list buries a rare
|
|
44
|
+
disagreement under a pile of long re-blocks, and the rare ones are the
|
|
45
|
+
informative ones.
|
|
46
|
+
|
|
47
|
+
1. **Explicit `[feedback]`** — a human said so, in words, on the PR. The
|
|
48
|
+
highest-confidence family and still the emptiest: zero comments in 1,125
|
|
49
|
+
deliveries at last count.
|
|
50
|
+
2. **Human/bot disagreement, in BOTH directions** — a human approving where the
|
|
51
|
+
bot blocked, *and* a human requesting changes where the bot approved. The
|
|
52
|
+
second is the false-negative direction nothing else in the system measures.
|
|
53
|
+
3. **The review was dismissed** — the author threw it away rather than
|
|
54
|
+
answering it.
|
|
55
|
+
4. **Rounds that produced no verdict** — overdue, malformed, orphaned,
|
|
56
|
+
cancelled. Silent failures; nothing consumed these before.
|
|
57
|
+
5. **Blocked round after round** — the shape: ten rounds, all
|
|
58
|
+
REQUEST_CHANGES, nine of them `staleness` re-runs.
|
|
59
|
+
6. **Repeat approvals** — approved, then approved again. Already diagnosed:
|
|
60
|
+
the recheck forbids re-approval, so this family should shrink to
|
|
61
|
+
nothing once it deploys. Detected precisely so we can watch it die — if it
|
|
62
|
+
is still growing after a deploy, that is the finding.
|
|
63
|
+
7. **Sheer length** — ten rounds or more, whatever the pattern.
|
|
64
|
+
|
|
65
|
+
## Where the list lives
|
|
66
|
+
|
|
67
|
+
**`/evidence/candidates.json`** — read-only, written by the TUI on its poll.
|
|
68
|
+
Read it; do not recompute it, and do not build your own list beside it.
|
|
69
|
+
|
|
70
|
+
- `candidates[]` — every candidate ever seen, with `family`, `severity`,
|
|
71
|
+
`headline`, `detail`, `first_seen`, `last_seen`, `signature`, and `judged`.
|
|
72
|
+
- `families[]` — **every family, on every sweep**, with what it scanned, what it
|
|
73
|
+
found, and a named `gap` when its source is not reachable. This is what you
|
|
74
|
+
read out when there is nothing to report.
|
|
75
|
+
- `coverage` — PRs scanned, and how many rounds have a local record against how
|
|
76
|
+
many the daemon says exist.
|
|
77
|
+
|
|
78
|
+
**The list does not expire, and that is deliberate.** The event feed's horizon
|
|
79
|
+
is about a day; the reviews worth adjudicating are usually older. A candidate
|
|
80
|
+
not worked today is still there next week, with its original `first_seen`. Do
|
|
81
|
+
not treat an old `first_seen` as staleness — an item that has sat for three
|
|
82
|
+
weeks is an item nobody has answered, which is a reason to raise it, not to drop
|
|
83
|
+
it.
|
|
84
|
+
|
|
85
|
+
If the file is absent, say so: the TUI has not swept yet, or the mount is
|
|
86
|
+
missing. Never substitute `/feed/events.jsonl` for it — that is the horizon this
|
|
87
|
+
list exists to outlive.
|
|
88
|
+
|
|
89
|
+
## Judged items return only if the PR moved
|
|
90
|
+
|
|
91
|
+
An item leaves the open list when an `#adjudication` memory entry for its PR is
|
|
92
|
+
observed — the entry `adjudicate` Step 7 already writes. Nothing else marks
|
|
93
|
+
anything judged, and **you never edit the list**: `/evidence` is `:ro`, and the
|
|
94
|
+
one-directional flow (adjudicate writes memory → the sweep observes it → the row
|
|
95
|
+
goes quiet) is the design, not an inconvenience.
|
|
96
|
+
|
|
97
|
+
A row comes back marked **`returned: true`** when the PR's signature has changed
|
|
98
|
+
since it was judged — new rounds, a new head, a new verdict. Say so when you
|
|
99
|
+
offer it: *"#1234 is back — you judged it on the 22nd and it has taken four
|
|
100
|
+
rounds since"* is a different offer from a fresh candidate, and the owner should
|
|
101
|
+
be able to tell them apart.
|
|
102
|
+
|
|
103
|
+
## Reporting
|
|
104
|
+
|
|
105
|
+
Short, grouped, worst-first. One line per candidate; the detail lines only for
|
|
106
|
+
the ones you are actually recommending.
|
|
107
|
+
|
|
108
|
+
- Lead with the count and the shape: *"Nine open, mostly long re-blocks — but
|
|
109
|
+
there is one disagreement, and it is the interesting one."*
|
|
110
|
+
- **Name the rare family out loud** even when its severity is low. That is what
|
|
111
|
+
the grouping is for.
|
|
112
|
+
- **Recommend one**, and say why it is the one. A list of nine with no
|
|
113
|
+
recommendation makes the owner do the sorting the survey was supposed to do.
|
|
114
|
+
- Never editorialise on whether the review was wrong. *"Ten blocking rounds"* is
|
|
115
|
+
a fact; *"the reviewer was too harsh here"* is a verdict you have not earned.
|
|
116
|
+
|
|
117
|
+
## The empty answer
|
|
118
|
+
|
|
119
|
+
**Report what you checked. Never silence, never a consolation candidate.**
|
|
120
|
+
|
|
121
|
+
> Nothing worth adjudicating. Checked all seven families across 14 PRs: no
|
|
122
|
+
> `[feedback]` comments, no dismissals, no rounds without a verdict, longest
|
|
123
|
+
> blocking run 2 (one fix cycle — the review working), no repeat approvals,
|
|
124
|
+
> nothing at ten rounds. Two families are dark: disagreement and dismissal both
|
|
125
|
+
> need the `feedback_signals` ledger, which has no local copy.
|
|
126
|
+
|
|
127
|
+
The owner's reasoning, recorded: they have to be able to tell it actually looked. An
|
|
128
|
+
empty survey that says "nothing" is indistinguishable from a survey that failed,
|
|
129
|
+
and inventing a marginal candidate to have something to say is worse than both.
|
|
130
|
+
|
|
131
|
+
**Read the `gap` fields and pass them on.** A family with a gap was not checked
|
|
132
|
+
clean — it could not be checked at all, and saying "no explicit feedback" when
|
|
133
|
+
the comment transport does not exist is a false negative you authored.
|
|
134
|
+
|
|
135
|
+
## Handing off
|
|
136
|
+
|
|
137
|
+
- The item needs judging → **`adjudicate`**.
|
|
138
|
+
- You need the record of what actually happened first → **`evidence`**.
|
|
139
|
+
- Something has already been decided and has to move → **`land`**.
|
|
140
|
+
- The question is whether a proposed change would have behaved better →
|
|
141
|
+
**`replay`**.
|
|
142
|
+
|
|
143
|
+
You have **no `Skill` tool** — invoke one by name, or read
|
|
144
|
+
`/workspace/skills/companion/<name>/SKILL.md` directly. You have **no
|
|
145
|
+
subagents**: survey one family at a time, yourself, and never pretend a
|
|
146
|
+
fan-out ran.
|
|
147
|
+
|
|
148
|
+
## Never
|
|
149
|
+
|
|
150
|
+
- Never judge here. A candidate is a shape; the verdict is `adjudicate`'s.
|
|
151
|
+
- Never offer a block the author accepted and fixed as a candidate.
|
|
152
|
+
- Never answer an empty survey with silence, and never invent a candidate so
|
|
153
|
+
there is something to say.
|
|
154
|
+
- Never drop an old candidate for being old, and never add a TTL, a rolling
|
|
155
|
+
window or a top-N cut to the list — the durability is the feature.
|
|
156
|
+
- Never report a family as clean when its `gap` says it has no source.
|
|
157
|
+
- Never write to `/evidence` — it is `:ro`, and judged-ness flows back through
|
|
158
|
+
memory, never through a second write path.
|
|
159
|
+
- Never call GitHub, the mutation gate, `deploy.sh`, or the VM. The list, the
|
|
160
|
+
manifests and the feed are all local files.
|