[2087 by GPT-5.6 Sol] Handle pre-desktop 401 cleanly and prove manual remote browser pairing end to end - #2089
Conversation
…ve manual re Implemented by ProPR AI using gpt-5.6-sol model. Implementation completed successfully.
|
CI failed: Validate unsigned linux-arm64 package Please investigate and fix this CI failure.
Failure evidence
|
|
CI failed: Validate unsigned linux-x64 package Please investigate and fix this CI failure.
Failure evidence
|
|
CI failed: Native Windows durability (x64) Please investigate and fix this CI failure.
Failure evidence
|
|
/ultrafix goal=9 max=3 Mac/Linux/shared-only correction scope for #2089. Windows publication/work is explicitly deferred; do not change or chase Windows-only lanes. F1 — Replace the synthetic-only proof with an actual assembled API route-order integration. Exercise the real Express registration/middleware order and prove GET /api/desktop/discovery plus the bounded pairing bootstrap endpoints are reachable without authentication before the generic /api ensureAuthenticated/authorization guard, while an operational protected REST endpoint still returns 401 without a credential. Do not merely invoke status/auth handlers directly. F2 — Add a real macOS/Linux packaged desktop integration journey (or the repository's existing packaged Electron harness) through manual remote URL → strict public discovery → browser approval → start/poll/activate → OS-backed persistence/reprobe → authenticated REST AND Socket.IO using the same scoped endpoint → renderer/dashboard connected state. Assert cancellation/approval expiry, malformed/oversized discovery, no bearer before identity, no secret in renderer contracts/logs, and no stale socket/credential reuse. A mocked DesktopCredentialService fetch callback alone is not acceptance evidence. F3 — Compose correctly with strict identity PR #2086 before this PR may merge. First let #2086 land into 1953-epic-desktop-transport-api, then /merge latest base here and resolve semantically. The strict client currently reports non-OK discovery (including 401) as ProprClientError kind=invalid_response, so the present kind=http check will not execute after composition. Preserve a narrow, explicit signal for an unauthenticated request to the exact public discovery endpoint returning 401 and map only that legacy/misconfigured protocol condition to honest incompatible/configuration-or-upgrade UX. Do not broadly turn unrelated 401s, malformed identity, redirects, HTML, or authenticated REST failures into “upgrade required,” and do not read/echo an untrusted response body. Supported strict discovery/pairing must remain functional. F4 — Update strict discovery fixtures to the #2086 schema (schemaVersion, canonicalEndpoint, publicInstanceIdentity) and retain identity-before-bearer, origin/generation/scope binding, rotation invalidation and fail-closed mismatch behavior. Update the exact native durability credential/derived total assertions for the composed test count without weakening/excluding tests. Acceptance: focused client/desktop/API integration tests, full shared suite, and all four macOS/Linux packaged Connect lanes plus unsigned macOS/Linux package validation green. No workflow, package-lock, signing/publish profile, or Windows-specific changes. Do not merge. |
|
🔄 Ultrafix loop started (goal: 9/10, max cycles: 3) First action:
|
|
/review Review only the Mac/Linux/shared F1-F4 scope in my immediately preceding /ultrafix comment. Treat missing real Express route-order integration, missing packaged REST+Socket.IO-to-dashboard journey, and incompatibility with #2086 strict discovery error semantics as blockers. Ignore Windows-only CI/work. Do not merge. |
|
✅ AI Code Review Complete requested by @integry Posted 1 review: |
|
CI failed: Validate unsigned win32-x64 package Please investigate and fix this CI failure.
Failure evidence
|
🔍 AI Code Review — codex:gpt-5.6-solOverall EvaluationThe PR correctly targets legacy discovery ✅ Credential-free regression coverage — The unit test verifies exactly one discovery request, no bearer header, and no leakage of the legacy response body. ✅ Sensitive token containment — The pairing test verifies that the instance token is used for authenticated reprobe without appearing in returned connection results. Merge blockersEvery finding below was introduced by this PR and must be resolved before merging. F1: 🔴 Route order remains untested
F2: 🔴 Packaged connection journey is missing
F3: 🔴 Every discovery 401 becomes legacy
SuggestionsThese are optional follow-ups and are not sent to No suggestions. ScoreThe focused unit assertions are useful, but two required real-integration layers are missing and the production classification is overly broad. Together with the scoped Linux validation failures, this PR is not close to merge-ready. Score: 3/10 🤖 Review Details
🤖 Review by ProPR |
|
ℹ️ Analyzed the follow-up request by @propr-dev[bot] Analysis SummaryI’ll trace the failing validation job at the referenced commit, reproduce the package check locally if possible, and make the narrowest change needed for that CI lane. I’ll keep this scoped to the new unsigned win32-x64 validation failure and won’t take on the broader F1–F4 review items. No code changes were necessary based on the current state of the branch. 🤖 Analysis Details
💡 ProPR Slash Commands
🤖 Generated by ProPR |
|
CI failed: Packaged Connect (win32-x64) Please investigate and fix this CI failure.
Failure evidence
|
|
Count evidence correction: current #2089 Linux unsigned validation reaches and passes all 116 desktop durability tests, then fails the fail-closed assertion because the old expected total is 115. This PR adds one pairing-browser test. After #2086 is merged/synced, recompute from the composed head (current #2086 derived total is 119, so integrating this one new test is likely 120) and assert the exact derived total; do not hard-code 120 without confirming the final test inventory, and do not weaken/exclude the guard. Also do not work on Windows lanes. |
|
/fix F1 F2 F3 Implement only the Mac/Linux/shared blockers in review 5516398297, with the full F1–F4 acceptance scope in comment 5516351277 and exact count evidence in 5516412358. This supersedes and must not resume the stopped win32 CI task. Do not change or chase Windows-only lanes. Do not merge. |
|
✅ Applied the requested follow-up changes in commit c428d8f
Summary of ChangesImplemented F1–F3 only, without committing or merging.
Verification:
No workflow, lockfile, Windows-specific file, signing/publishing, commit, or merge changes were made. The four target-native packaged lanes were not runnable locally because packaged macOS/Linux artifacts were unavailable; the harness is wired for those existing CI lanes. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
|
Concrete F3 evidence: the pre-desktop generic ensureAuthenticated no-credential path returns Express JSON exactly {"error":"Unauthorized"}. If using this as the legacy signal, keep classification constrained to the exact credential-free /api/desktop/discovery request, status 401, no redirect, application/json, a small bounded/fatal-UTF8 body, and an exact-key/value schema. Anything else (proxy HTML/JSON variants, extra keys/code, malformed/oversized body, redirect, modern strict metadata failure, REST 401) must remain fail-closed, not |
|
CI failed: Packaged Connect (win32-arm64) Please investigate and fix this CI failure.
Failure evidence
|
Full Test Suite ResultsValidation failed during: Full test suite.
View Test Output |
|
/review opus |
|
Normal ProPR implementation follow-up on exact #2089 head The audited merge has exactly two expected conflicts. In root package.json preserve pretest:unit and test:prepare, and union test:unit so both Then implement the remaining Mac/Linux/shared correction on the composed tree. Current four packaged Mac/Linux lanes reach ACTIVATE READY, trusted main-frame XHR ownership, and Structurally refactor Verify diff-check, marker/secret scan, typechecks, focused UI/auth/status/pairing/approval/session/transport tests, platform-safe Connect exactly 86/86, native durability exactly 120/120 for this branch, and all four packaged plus unsigned Mac/Linux lanes through |
|
🛑 Execution Cancelled The task processing was stopped by user request. You can post a new comment to restart processing. |
|
Retry the exact implementation request in #2089 (comment) after the prior worker container disappeared before publishing. Reproduce the already-green narrow Socket.IO transport-scope handshake fix, bounded Darwin approval-completion barrier, redacted bounded diagnostics, below-400-line UI/test refactor, and shared Windows source assertion only. First perform the required true merge of transport bf6c3ad, resolve only the two documented conflicts exactly, and preserve it as a real second parent. Re-run the exact 86/86 platform-safe and 120/120 native gates plus focused suites. Do not spend the run waiting on unavailable local Redis or registry infrastructure: classify those prerequisites after bounded checks, publish the verified tree through Git Data API, and then monitor the four Mac/Linux packaged lanes. Do not merge the PR and do not do Windows runtime/package work. |
|
🛑 Execution Cancelled The task processing was stopped by user request. You can post a new comment to restart processing. |
|
Published the verified manual fallback after two ProPR workers stopped before producing a commit. Commit |
|
/ultrafix goal=9 max=3 |
|
🔄 Ultrafix loop started (goal: 9/10, max cycles: 3) First action:
|
|
Implement only the three exact Mac/Linux CI corrections on current head
Run the approval/lifecycle/platform tests, exact 86/86 platform-safe and 120/120 native gates, focused client/UI/auth suites, diff/marker/secret scans, and publish to this existing PR branch. Then monitor all four Mac/Linux packaged and unsigned lanes. Classify registry audit 5xx/undefined failures as infrastructure; do not weaken those gates. |
Full Test Suite ResultsValidation failed during: Full test suite.
View Test Output |
|
✅ Applied the requested follow-up changes in commit 2da68e3 Summary of ChangesImplemented the three scoped Mac/Linux CI corrections:
Validation passed:
The reported full-suite run failed only at the known out-of-scope 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
Implemented the three scoped Mac/Linux CI corrections: - Enforced exact pairing evidence: 3 starts, 3 browser approvals, 1 poll, 1 activation in [smoke-packaged-connect.mjs](/home/node/workspace/apps/desktop/scripts/smoke-packaged-connect.mjs:620). - Pre-seeded the disposable Darwin keychain with Electron’s Safe Storage item and unset the generated secret before launch in [desktop-connect-discovery-guard.yml](/home/node/workspace/.github/workflows/desktop-connect-discovery-guard.yml:145). - Allowed incidental resources to be canceled without invalidating approval, while retaining subframe/main-frame rejection and adding bounded, redacted cleanup in [packaged-approval-session.ts](/home/node/workspace/apps/desktop/src/packaged-approval-session.ts:47). Validation passed: - Focused lifecycle/platform/approval: 53 tests - Platform-safe Connect: 86/86 - Native durability: 120/120 - Client: 72/72 - Focused API auth/boundary: 14/14 - Focused UI: 34/34 - Desktop and UI typechecks - Diff and secret/marker scans The [reported full-suite run](https://github.com/integry/propr/actions/runs/33867260810) failed only at the known out-of-scope `test/config-followup.test.ts` infrastructure-dependent assertion (`400 !== 500`); its gate was not weakened. No commit or visual preview was created. PR: #2089 Comment by: @github-actions[bot] (ID: 5539846056) Model: gpt-5.6-sol
Full Test Suite ResultsValidation failed during: Full test suite.
View Test Output |
|
✅ Applied the requested follow-up changes in commit 6dcfa7a Summary of ChangesFixed the sole full-suite failure in test/config-followup.test.ts. The test now uses the registry-independent valid clear value ( Validation:
🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
…test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2089-followup-2026-09-04T12-11-00/test/config-followup.test.ts:67). Fixed the sole full-suite failure in [test/config-followup.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-2089-followup-2026-09-04T12-11-00/test/config-followup.test.ts:67). The test now uses the registry-independent valid clear value (`''`) while preserving the same `pr_review_model` write/rollback assertions. Validation: - Focused failing suite: 13/13 passed - Related config routes: 100/100 passed - `git diff --check`: passed - No production or visual changes - No commit created, as requested PR: #2089 Comment by: @github-actions[bot] (ID: 5540233118) Model: gpt-5.6-sol
e31a4e6
into
1953-epic-desktop-transport-api
AI Implementation Summary
Closes #2087
Branch:
2087/gpt-5.6-sol-handle-pre-desktop-401-cl-20260902-2045-jh1Commits: ✅ Changes committed (88ea706)
AI Processing Completed
Execution Details:
Summary:
Implemented issue #2087.
401responses now produce a safeincompatiblestate instead of an offline error or authentication loop in credential-service.ts.Verification:
Detailed Logs:
01a063df-610d-7e33-82e0-f9ef1f99b55fLog files stored at:
/tmp/claude-logs/issue-2087-2026-09-02T20-58-15-201Z-conversation.json/tmp/claude-logs/issue-2087-2026-09-02T20-58-15-201Z-output.txtLatest Conversation Messages
This PR was created automatically by ProPR after processing issue #2087.
💡 Need changes?
Comment on this PR to request refinements — the AI agent monitors comments and will update the implementation based on your feedback. Keep iterating until you're satisfied!