From 5e8c6c3eae46724497c13840b0615a3e33444616 Mon Sep 17 00:00:00 2001 From: Magnus Hedemark Date: Wed, 7 Oct 2026 13:24:22 -0400 Subject: [PATCH] chore: pin read-only pilot to reviewed follow-up and report fixes --- .github/workflows/slopsearx-pilot.yml | 4 ++-- docs/BOUNDED-PRODUCTION-REVIEW.md | 4 ++-- scripts/central_pilot_admission.py | 2 +- tests/test_pilot_workflow.py | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/slopsearx-pilot.yml b/.github/workflows/slopsearx-pilot.yml index aef38d3..25a281b 100644 --- a/.github/workflows/slopsearx-pilot.yml +++ b/.github/workflows/slopsearx-pilot.yml @@ -121,10 +121,10 @@ jobs: checks: read pull-requests: read actions: read - uses: groktopus/codereview/.github/workflows/pr-analysis.yml@0379e2001eebc07981aa99553e832ea342d781a7 + uses: groktopus/codereview/.github/workflows/pr-analysis.yml@a451acc2796ace9e3535a56c07684cc0be213c03 with: harness_repository: groktopus/codereview - harness_sha: 0379e2001eebc07981aa99553e832ea342d781a7 + harness_sha: a451acc2796ace9e3535a56c07684cc0be213c03 target_repository: magnus919/SlopSearX pull_request_number: ${{ fromJSON(inputs.pull_request_number) }} base_ref: ${{ needs.resolve-target.outputs.base_ref }} diff --git a/docs/BOUNDED-PRODUCTION-REVIEW.md b/docs/BOUNDED-PRODUCTION-REVIEW.md index a4c443a..299b5d6 100644 --- a/docs/BOUNDED-PRODUCTION-REVIEW.md +++ b/docs/BOUNDED-PRODUCTION-REVIEW.md @@ -4,11 +4,11 @@ The v16 profile is a separately selected capacity candidate for the v3 source-wi ## Capacity contract -`profiles/ordinary-review-limits-v3.json` sets 32 provider-call slots, a 2.5 MB aggregate input ceiling, 96 KB per task, 512 KB aggregate output, and 16 KB per task. Deadline, retry, concurrency, retrieval, follow-up, and output-token defaults remain unchanged. The explicit 600 KB snapshot cap preserves the prior capture ceiling; the larger aggregate input allowance applies to the later provider task ledger, not snapshot collection. +`profiles/ordinary-review-limits-v3.json` sets 32 provider-call slots, a 2.5 MB aggregate input ceiling, 96 KB per task, 512 KB aggregate output, and 16 KB per task. The aggregate input ceiling covers provider requests, local context-retrieval bytes, and local-check inputs; all three draw from the same cap. Deadline, retry, concurrency, retrieval, follow-up, and output-token defaults remain unchanged. The explicit 600 KB snapshot cap preserves the prior capture ceiling, while the separately bounded snapshot context remains distinct from this aggregate-input ledger. On the frozen PR305 source pair (`base 00accc58`, `head 90165dd`), a provider-free prepare pass with merged v3 source and the 600 KB snapshot cap produced 42 required obligations, 15 primary request quotes totaling 1,115,718 bytes, and a largest primary request of 89,903 bytes. This includes four required security obligations overall: two for changed engine modules plus the existing capabilities/configuration obligations. No required source gaps or skipped tasks remained. Two deterministic check tasks add roughly 10.8 KB of local invocation input each and consume no provider calls. Their external check evidence was absent, so their check outcomes remain unknown. The snapshot retained 12 optional gap rows: six truncated base/head context records and six paths not bound by the selector. -The required stage plan reserves 26 task outputs: 15 primary tasks, four semantic-adjudication-provider assessments, four native TypeSafe Choice assessments, one System 1 advisory summary assessment, and two local checks. The final task calls `decision_provider.assess` for an advisory risk/context summary; it is not another primary LLM synthesis. At 16 KB per task, these stages reserve 416 KB. Six additional task slots bring the full reservation to 512 KB. The 2,449,283-byte aggregate is a ceiling projection, not an exact future quote: measured primary bytes (1,115,718) + measured local-check invocation bytes (21,565) + four semantic tasks at 96 KB + four native tasks at 64 KB + one advisory summary task at 96 KB + six optional provider tasks at 96 KB each. These bounds yield 30 provider calls and leave 50,717 input bytes. Two provider-call slots remain, while the output reservation cap is full. Local checks do not charge provider calls but do consume output reservations. Runtime quote estimators must admit the actual candidate-specific requests before dispatch. Final disposition remains with the deterministic reducer; the advisory assessment does not clear findings or decide disposition. +The required stage plan reserves 26 task outputs: 15 primary tasks, four semantic-adjudication-provider assessments, four native TypeSafe Choice assessments, one System 1 advisory summary assessment, and two local checks. The final task calls `decision_provider.assess` for an advisory risk/context summary; it is not another primary LLM synthesis. At 16 KB per task, these stages reserve 416 KB. Six additional task slots bring the full reservation to 512 KB. The 2,449,283-byte aggregate is a conditional stage ceiling projection, not an exact future quote or complete-workload guarantee: measured primary bytes (1,115,718) + measured local-check invocation bytes (21,565) + four semantic tasks at 96 KB + four native tasks at 64 KB + one advisory summary task at 96 KB + six optional provider tasks at 96 KB each. This projection excludes local context-retrieval bytes, which also consume the 2.5 MB aggregate-input cap; the observed PR305 run reserved 112,000 bytes for seven retrievals. Any retrievals or actual future quotes reduce the nominal 50,717-byte stage-projection headroom and can exhaust the shared cap; runtime quote estimators must admit actual requests before dispatch and preserve explicit incomplete outcomes when capacity is insufficient. The projection uses 30 provider-call slots and leaves two slots unused, while the output reservation cap is full. Local checks do not charge provider calls but do consume aggregate input and output reservations. Final disposition remains with the deterministic reducer; the advisory assessment does not clear findings or decide disposition. Native Choice is an advisory classification stage separate from the LLM semantic-adjudication provider. Each native request has a 64 KB intrinsic request bound. The native quote estimator applies the 16 KB caller output ceiling even when the transport's configured response ceiling is 64 KB. A quote above the caller ceiling is rejected before dispatch. The focused test exercises this clamp through the real estimator without making an HTTP request. Candidate-specific input sizes still depend on future primary results and must be admitted by the same estimator at runtime. diff --git a/scripts/central_pilot_admission.py b/scripts/central_pilot_admission.py index 91a2c0a..c819859 100644 --- a/scripts/central_pilot_admission.py +++ b/scripts/central_pilot_admission.py @@ -37,7 +37,7 @@ TARGET = "magnus919/SlopSearX" BASE_REF = "main" REUSABLE_PATH = ".github/workflows/pr-analysis.yml" -REUSABLE_SHA = "0379e2001eebc07981aa99553e832ea342d781a7" +REUSABLE_SHA = "a451acc2796ace9e3535a56c07684cc0be213c03" MAX_EVENT_BYTES = 64 * 1024 SHA1 = re.compile(r"^[0-9a-f]{40}$") RUN_ID = re.compile(r"^[1-9][0-9]{0,19}$") diff --git a/tests/test_pilot_workflow.py b/tests/test_pilot_workflow.py index a5d5bab..2436cf8 100644 --- a/tests/test_pilot_workflow.py +++ b/tests/test_pilot_workflow.py @@ -9,7 +9,7 @@ import pytest WORKFLOW = Path(__file__).parents[1] / ".github/workflows/slopsearx-pilot.yml" -PIN = "0379e2001eebc07981aa99553e832ea342d781a7" +PIN = "a451acc2796ace9e3535a56c07684cc0be213c03" SECRETS = ( "LLM_BASE_URL", "LLM_MODEL",