CodeSnuffler Forgejo End-to-End historical review range codesnuffler-forgejo-live-20260630T024007740Z-2fdcb4d5-b11 #48
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "change_forgejo_end_to_end"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Exercise the live Forgejo webhook review pipeline against a stable historical CodeSnuffler diff.
Run marker: codesnuffler-forgejo-live-20260630T024007740Z-2fdcb4d5-b11.
Run started at: 2026-06-30T02:40:07.740Z.
Fixture range: f9d210eccd0075b6b39b606cea9b1376719aa062..d8a3fc420b055e04df1d203706b89b1f1261a9c1.
This two-commit AI Harness range stops before
404b386cremoved stale persona and old-shape compatibility, so the review is expected to produce actionable findings.CodeSnuffler Review Findings
Findings
1. Dev shell auth still sends the old query parameter
app/dev_shell.py:320Details for this finding were posted as an inline review comment on the changed line.
Open finding in CodeSnuffler
Fix via CodeSnuffler
2. Old persona API shape remains exposed
app/settings/ai_review_policy/schemas.py:76The PR standardizes tool auth identity on
instance_id, but the AI review policy choice response still exposespersona_id, and generated frontend types still containpersona_id. This violates the repository's no-compatibility-shims policy for removed/standardized fields and leaves clients on the old shape.Open finding in CodeSnuffler
Fix via CodeSnuffler
Suggested fix: Replace this response field and related service/frontend usage with
instance_id, regenerate API types, and keep only negative tests for rejectedpersona_idpayloads where useful.3. Compatibility alias still backs runtime storage paths
app/ai_tools/instances.py:226-227AiToolInstanceConfig.persona_idremains as an alias forinstance_id, and runtime paths still call it through storage/workspace code. Because this PR is removing the persona-shaped identity, keeping the alias preserves the old model and makes future cleanup easy to miss.Open finding in CodeSnuffler
Fix via CodeSnuffler
Suggested fix: Remove the
persona_idproperty and update remaining runtime callers, such asapp/runners/ai_workspace.pyandapp/ai_tools/service.py, to useinstance_iddirectly.CodeSnuffler Review Findings
Findings
1. Dev shell auth websocket still sends removed persona_id query
frontend/src/dev-shell/components/DevShellTerminal.vue:155dev_shell_websocketnow readsinstance_id, but the frontend still writespersona_id. Selecting a non-primary plugin instance for a runner auth command will be ignored and the backend will fall back toprimary, mounting or mutating the wrong auth storage.Open finding in CodeSnuffler
Fix via CodeSnuffler
Suggested fix: Send
instance_idinstead ofpersona_idand update the prop/name plumbing so selected plugin instances reach/api/dev-shell/ws.2. AI review policy API still exposes old persona_id shape
app/settings/ai_review_policy/schemas.py:72-77The PR removes
persona_idfrom AI tool instance/status contracts, but the AI review policy choice schema still requirespersona_idand the service populates it frominstance_id. This leaves a public API and generated frontend type on the old shape, contrary to the cleanup policy and likely to keep clients depending on the removed field.Open finding in CodeSnuffler
Fix via CodeSnuffler
Suggested fix: Replace this response field with
plugin_id,instance_id, anddriver_idas needed, updateAiToolInstanceChoice, regenerate frontend API types, and update Vue consumers to useinstance_idterminology.3. Compatibility persona_id alias remains in the core instance model
app/ai_tools/instances.py:225-227AiToolInstanceConfig.persona_idremains as a compatibility alias forinstance_id, and live code still calls it. The repository instructions explicitly require removing runtime reads, fallbacks, adapters, and compatibility paths when standardizing a field; keeping this property hides stale callers and allows old-shape naming to continue spreading.Open finding in CodeSnuffler
Fix via CodeSnuffler
Suggested fix: Remove the
persona_idproperty and update remaining callers such asapp/runners/ai_workspace.pyandapp/ai_tools/service.pyto useconfig.instance_iddirectly. Keep only tests that assert externalpersona_idpayloads are rejected.@ -316,3 +318,3 @@async def dev_shell_websocket(websocket: WebSocket) -> None:command_id = websocket.query_params.get("command", "bash")persona_id = websocket.query_params.get("persona_id")instance_id = websocket.query_params.get("instance_id")CodeSnuffler finding: Dev shell auth still sends the old query parameter
Severity: Medium Category: Correctness
dev_shell_websocketnow readsinstance_id, but the existing frontend terminal URL still sendspersona_idfromDevShellTerminal.vue. For non-primary plugin instances, the backend ignores that value and_proxy_runner_auth_sessionfalls back toprimary, so interactive auth can write or read the wrong instance storage.Commit: Open commit
d8a3fc420b05Open finding in CodeSnuffler
Fix via CodeSnuffler
Suggested fix: Rename the frontend prop/query plumbing to
instance_idas part of this API change, includingDevShellTerminal.vueand its call sites, and add coverage for a non-primary auth shell URL.Pull request closed