[2123 by GPT-5.6 Sol] Integrate packaged visual acceptance and Linux menu with current desktop transport - #2127
Conversation
…nd Linux men Implemented by ProPR AI using gpt-5.6-sol model. Implementation completed successfully.
|
/merge Merge the current target desktop epic into this visual/menu integration and resolve only the integration conflicts. Preserve #2076 canonical macos-linux-v1 release profile (four targets, ten artifacts, two Darwin feeds; optional/nonblocking Windows validation), #2124 unconditional rollback CSP reconciliation, current dependency policy and exact transport boundary. Compose desktop-release-guard workflow and README with the new visual acceptance rather than replacing either side wholesale. Do not reintroduce mandatory Windows publication or discard native lifecycle steps. Native PR #2125 and real Linux setup task #2126 are independent; do not implement their work. Run the relevant workflow/typecheck tests and leave the PR open for one Ultrafix pass and independent audit. Retain Closes #2123 and add Closes #2044, Closes #2088 and Closes #2081 because this integration carries those original visual/menu/exact-origin follow-ups. Do not merge main. |
|
🔀 Resolved merge conflicts from Conflicting Files
Resolution SummaryResolved the conflict in desktop-release-guard.yml.
Validation:
No commit was created. Git could not mark the file resolved because the linked worktree index is root-owned; 🤖 Resolution Details
System-triggered merge conflict resolution |
…gpt-5.6-sol-integrate-packaged-visual-20260904-2105-x0m Automatically resolved merge conflicts after merging target branch into PR branch. Resolved conflicts in: - .github/workflows/desktop-release-guard.yml PR: #2127 Model: gpt-5.6-sol
|
/ultrafix goal=8 max=1 |
|
🔄 Ultrafix loop started (goal: 8/10, max cycles: 1) First action:
|
|
/review |
|
✅ AI Code Review Complete requested by @integry Posted 1 review: |
|
Concrete regression on synced head8297b447: both packaged Linux Connect jobs now fail, while all four passed on the base desktop epic. Run33922887220, x64 job101184917283 and ARM64 job101184917245. Executable/fuse inspection passes; app and renderer become ready, strict Connect discovery passes, ACTIVATE reports READY, then JOURNEY_PAIR_ACTIVATION_PUBLISHED times out with phase pair / RENDERER_STAGE_TIMEOUT. Please diagnose and fix the introduced current-user/renderer/socket lifecycle integration using the actual failing logs. Preserve production connection semantics, exact CSP/credential ownership, and meaningful readiness assertions; do not simply remove a stage or inflate the timeout. Check ordinary packaged Connect and the real visual harness on current Mac/Linux CI. Native lifecycle #2125 and real setup #2126 remain separate. Leave open for validation; account for any concrete findings from the in-progress review. |
Checks FailedValidation failed during setup, tests, CLI packaging, linting, or build checks. View Logs |
|
Independent audit identified the precise Connect regression: useCurrentUserBootstrap now calls getCurrentUser with scopeGeneration, and proprApi appends ?propr_scope_generation=N. smoke-packaged-connect.mjs still recognizes request.url === /api/auth/user and its evidence filters the same exact string. The request now gets401, currentUser stays absent, SocketProvider correctly stays disabled, and REACT_CONNECTED never arrives. Fix the fixture/contract integration by parsing pathname and validating the bounded expected generation query, updating evidence matching too (or retain compatible production route semantics). Preserve the requirement that sockets wait for validated current-user state; do not relax readiness or increase timeouts. |
|
One small CI correction to include with the pending integration fix: Validate Changes run33922887183 fails only UI lint after typecheck passes. build-check-output artifact identifies propr-ui/src/desktop/PackagedAcceptanceLocalSetup.tsx:7:14 react-refresh/only-export-components, and --max-warnings0 makes that fatal. Move the non-component export to an appropriate shared module (or apply the repository-approved equivalent), keep the lint policy unchanged, and run UI lint. No broader refactor needed. |
🔍 AI Code Review — codex:gpt-5.6-solOverall EvaluationThis PR builds a comprehensive packaged Linux acceptance harness with accessibility, visual, authentication, socket, zoom, and artifact-verification coverage. No merge-blocking defect can be conclusively traced within the supplied partial diff. However, it is not merge-ready: both current Packaged Connect Linux checks are failing, and the omitted runner/artifact ranges prevent complete verification. It needs minor changes or check-level resolution before merging. ✅ Acceptance capabilities are tightly isolated — Test behavior requires dual authorization, a packaged Linux binary, an isolated user-data directory, main-process attestation, and sender-bound IPC. ✅ Credential custody is explicitly validated — The changed current-user and WebSocket paths strip renderer credentials, inject the active bearer in the main process, and emit bounded evidence for acceptance validation. ✅ CI evidence is mandatory — Linux x64 jobs install the required runtime tools, run artifact verification, and fail when evidence is missing. Merge blockersNo merge blockers. SuggestionsThese are optional follow-ups and are not sent to S1: 🟢 Cover scope-switch renderingConsider adding an App-level test for profile activation and switching while current-user validation remains pending. ScoreThe implementation shows strong security boundaries and unusually thorough focused tests, but the two authoritative Packaged Connect failures and the explicitly omitted diff ranges prevent a merge-ready assessment. Score: 7/10 🤖 Review Details
Files omitted from review diff1 file was omitted because patch content was unavailable from GitHub or did not fit the review context budget. Large, binary, generated, and lockfile changes are deprioritized.
🤖 Review by ProPR |
|
🔄 Starting work on follow-up changes requested by @integry, @github-actions[bot] I'll analyze the 4 requests and implement the necessary changes. Processing comment IDs: 5546866910✓, 5546879926✓, 5546886958✓, 5546889662✓ |
|
Additional real packaged-acceptance failure to resolve in the current integration correction: Linux x64 release job101185186430 reaches run-packaged-acceptance.mjs:1243 after successful correlated current-user OPTIONS/GET/main/fixture evidence (200 and accepted schema), then throws Acceptance Socket.IO handshake failed: renderer-lifecycle-evidence-invalid. This is distinct from the ordinary Connect raw-URL fixture mismatch. The required screenshot/trace artifact is not produced. Diagnose the renderer lifecycle reporter/collector schema and ordering from the actual packaged run, fix the instrumentation contract, and rerun the real Linux x64 acceptance to verified artifact completion. Preserve meaningful lifecycle/credential/socket assertions and all12x5 capture coverage; do not bypass evidence validation or claim preview completion from unit tests. This was also an explicitly required regression fix in issue2123. |
|
⌛ Processing Delayed: Claude's usage limit was reached while processing requests from @integry, @github-actions[bot]. The job has been automatically rescheduled and will restart at a later time. Job ID: pr-comments-batch-integry-propr-2127-codex-gpt56-sol-2123-gpt-5-6-sol-integrate-pac-ratelimit-retry will run again after delay. |
|
🔄 Starting work on follow-up changes requested by @integry I'll analyze the 1 request and implement the necessary changes. Processing comment ID: 5546929190✓ |
|
⌛ Processing Delayed: Claude's usage limit was reached while processing requests from @integry. The job has been automatically rescheduled and will restart at a later time. Job ID: pr-comments-batch-integry-propr-2127-codex-gpt56-sol-2123-gpt-5-6-sol-integrate-pac-ratelimit-retry will run again after delay. |
|
Resume the unfinished correction after the previous usage-limit stop. Current head8297b; no correction was pushed. Recover existing edits if available and complete the three demonstrated failures together: ordinary packaged Connect current-user raw-URL/evidence matching must accept the bounded expected proprDesktopScopeGeneration query; PackagedAcceptanceLocalSetup.tsx non-component export causes fatal UI lint; and real packaged acceptance job101185186430 fails renderer-lifecycle-evidence-invalid after current-user phases all pass, preventing60 screenshots. Prior comments contain exact logs and contracts. Preserve production credential/socket readiness boundaries, lifecycle evidence validation, release profile and full12x5 capture coverage. Fix actual fixture/instrumentation contracts rather than hiding evidence or extending timeouts. Run relevant tests/lint and actual packaged CI. No optional S1 polish or score chasing. Leave open, target desktop epic only; Linux production setup is separate issue2126. |
|
🛑 Execution Cancelled The task processing was stopped by user request. You can post a new comment to restart processing. |
|
✅ Applied the requested follow-up changes in commit 0e913d3 Summary of ChangesImplemented the three requested corrections:
Validation passed:
The 60-capture local attempt was blocked earlier at Connect confirmation by the container’s lack of a production-configured Electron sandbox, before reaching lifecycle validation. Corrected GitHub CI can only run after the system commits/pushes these changes; I did not commit per instruction. No release-profile/workflow changes or visual previews were added. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
|
Recovery evidence for the automatically rescheduled worker (not a new scope or request for another review pass): predecessor task pr-comments-batch-integry-propr-2127-1788688113021 had uncommitted corrections before its container was replaced around 10:02 UTC. A clean NEW worktree does not establish that the OLD worktree has no recoverable edits; please inspect the prior worktrees if accessible. It changed lifecycle console evidence to an immediate secret-free JSON snapshot with strict parsing/schema validation in the collector; reused the bounded current-user URL classifier in ordinary Connect routing and evidence; moved the setup discriminator/type out of the TSX module. It reported zero-warning UI lint, focused regressions, desktop suite 544 passed/26 skipped, Linux package build and fuse inspection passing, then was provisioning isolated Xvfb/keyring/Tesseract tools for actual acceptance. No commit was pushed. Recover and verify that delta where possible; the 60 captures and actual packaged Connect proof remain required. This note only preserves prior results, not permission to skip revalidation or weaken production gates. |
Implemented the three requested corrections: - Ordinary packaged Connect now strictly accepts the expected bounded `proprDesktopScopeGeneration=1` URL for fixture routing and evidence matching. - Lifecycle evidence is emitted as an immutable JSON snapshot and synchronously parsed with the existing strict validation. - The non-component setup export moved out of the TSX module, resolving fatal React-refresh lint. Validation passed: - Desktop/UI typecheck - UI lint with zero warnings - Desktop suite: 544 passed, 26 skipped - Focused UI/current-user regressions - Linux package build - Executable/fuse inspection - Real packaged Connect smoke The 60-capture local attempt was blocked earlier at Connect confirmation by the container’s lack of a production-configured Electron sandbox, before reaching lifecycle validation. Corrected GitHub CI can only run after the system commits/pushes these changes; I did not commit per instruction. No release-profile/workflow changes or visual previews were added. PR: #2127 Comment by: @integry (ID: 5558427812) Model: gpt-5.6-sol
|
🛑 Execution Cancelled The task processing was stopped by user request. You can post a new comment to restart processing. |
|
Normal production-sandbox CI still reproduces the visual blocker at published head0e913d3: run34027467657, Linux x64 job101471017483, run-packaged-acceptance.mjs:1255 -> journey1481 reports renderer-lifecycle-evidence-invalid. Current-user evidence is exactly once throughout (OPTIONS/GET/main accepted/fixture200/requestIssued/responseCompleted/parsedUserAccepted/activeScopeAccepted all1, rejected0). The JSON snapshot change alone did not resolve the actual failing predicate. Diagnose and correct the exact producer/collector mismatch, including early/intermediate lifecycle records and cross-journey invalid-state attribution. Add bounded secret-free classification for the first invalid record if needed; do not guess, drop invalid records, relax schema/count invariants, or weaken socket proof. All4 ordinary Mac/Linux Connect now pass; preserve those and lint fixes. Complete the actual normal CI 12x5=60 capture run before claiming visual acceptance. No Windows work or additional feature scope. |
|
✅ Applied the requested follow-up changes in commit 4bd4557 Summary of ChangesImplemented the exact lifecycle correction without weakening evidence:
Validation passed:
A local harness run produced all 60 captures with valid current-user, lifecycle, and socket evidence. Its final verifier reported separate accessibility findings. This container cannot run the required root-owned production SUID sandbox, and the corrected code is intentionally uncommitted, so normal hosted CI must run after the system publishes it. I am not claiming visual acceptance yet. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
|
Concrete independent diagnosis for the current active correction: createFixture has no explicit /api/auth/demo-mode response. Its generic /api/* fallback returns {agents:[],repositories:[],items:[],count:0}; getDemoModeStatus consumes this without schema validation, and DemoModeProvider sets isDemoMode=status.demoMode (undefined). App propagates that as the demoMode disable reason; SocketProvider reports disabledByDemoMode:undefined. JSON.stringify then omits this required key, so captureRendererLifecycleEvidence exactKeys fails and globally invalidates evidence. Add the truthful fixture demo-mode contract (demoMode:false plus any other required response fields) and regression coverage through this producer chain. Preserve strict lifecycle schema/count checks and all real socket/current-user proof. This is evidence for your existing request, not a separate feature or review cycle. |
…g evidence: Implemented the exact lifecycle correction without weakening evidence: - Added the missing production-shaped `/api/auth/demo-mode` fixture response. Its absent `demoMode` boolean caused `disabledByDemoMode` to disappear from intermediate JSON lifecycle records. - Replaced global invalid-state poisoning with strict per-journey attribution. - Added bounded, secret-free first-invalid classification while keeping invalid records fatal. - Preserved lifecycle schema/count limits and socket proof. Validation passed: - Desktop suite: 544 passed, 26 skipped - Focused tests: 21 passed - UI lifecycle/setup tests: 6 passed - Desktop/UI typechecks - UI lint and runner lint - Linux package build - `git diff --check` A local harness run produced all 60 captures with valid current-user, lifecycle, and socket evidence. Its final verifier reported separate accessibility findings. This container cannot run the required root-owned production SUID sandbox, and the corrected code is intentionally uncommitted, so normal hosted CI must run after the system publishes it. I am not claiming visual acceptance yet. PR: #2127 Comment by: @integry (ID: 5558656372) Model: gpt-5.6-sol
|
ℹ️ Analyzed the follow-up request by @integry Analysis SummaryI’ll trace the fixture → demo-mode provider → socket lifecycle evidence path in the specified PR worktree, then add the smallest contract fix and focused regression coverage while keeping the strict evidence checks intact. I’ll first verify the worktree state and repository guidance so I don’t disturb recovered or unrelated edits. No code changes were necessary based on the current state of the branch. 🤖 Analysis Details
💡 ProPR Slash Commands
🤖 Generated by ProPR |
|
The lifecycle fix is independently verified at 4bd4557 and the hosted Linux run now reaches artifact verification, but it fails the accessibility threshold: run34028985075 job101475096977 at11:07:07, acceptance-artifacts.mjs:416. This confirms the failure is not solely the local user-space display setup. Please make one bounded correction for the actual contrast/accessibility findings in the 60-capture report; preserve thresholds and all strict lifecycle/socket/current-user/secret checks. Capture and publish sanitized report plus representative screenshots so we can visually inspect the result, including if verification fails. Do not redesign unrelated UI. Consolidate the separate Intel Mac CI test failure in the same pass: job101475096923 has exactly one failed test, packaged-connect-lifecycle.test.mjs:726 transient Windows EBUSY mock. Its identityOptions has a 20ms wall-clock deadline, while CI took35ms. The test file is unchanged by this correction, so do not infer a production Windows regression or resume Windows implementation. Stabilize only this cross-platform test (deterministic timing or a justified test-only bound, retaining production deadlines and timeout tests), or provide evidence supporting a job-only rerun when GitHub allows it. The delayed diagnostic worker for comment5558687266 was stopped because your published commit already implements it; do not search for or duplicate old work. Focus on these actual current-head CI failures and report exact-head Linux/macOS evidence. Do not merge. |
|
✅ Applied the requested follow-up changes in commit c759219 Summary of ChangesImplemented the bounded follow-up without committing or merging.
Verification:
Exact-head diagnosis at Visual previewProfile manager accessibility correctionPackaged Linux standard-viewport capture showing the corrected Local instance helper label in the Manage instances dialog. First-run chooser contrast correctionPackaged Linux standard-viewport capture showing the corrected helper-text contrast for both setup choices. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
…ging. Implemented the bounded follow-up without committing or merging. - Corrected the three reported contrast failures in [desktop.css](/home/node/workspace/propr-ui/src/desktop/desktop.css:113). - Added accessible names to the flagged dashboard link and search input. - Stabilized only the transient EBUSY test with a test-local 250 ms bound; production and timeout-test deadlines remain unchanged. - Made unsigned and signed Linux evidence uploads run even after verification failure in [desktop-release-guard.yml](/home/node/workspace/.github/workflows/desktop-release-guard.yml:338). - Staged two sanitized representative screenshots for preview publication. Verification: - Full packaged Linux acceptance: 60/60 screenshots, 12 journeys, zero serious/critical findings, accessible names/focus/modal checks passed. - Strict standalone artifact verification passed, including OCR and secret scanning. - Lifecycle test: 25/25 repeated runs passed. - Desktop suite: 544 passed, 26 skipped, 0 failed. - Relevant UI tests: 21 passed. - UI lint, desktop/UI typechecks, YAML parsing, and `git diff --check` passed. Exact-head diagnosis at `4bd45579`: Linux had 10 serious contrast records across the chooser and profile manager; Intel macOS had only the 35.29 ms transient EBUSY test failure. No production Windows implementation was changed. PR: #2127 Comment by: @integry (ID: 5558814249) Model: gpt-5.6-sol


AI Implementation Summary
Closes #2123
Branch:
2123/gpt-5.6-sol-integrate-packaged-visual-20260904-2105-x0mCommits: ✅ Changes committed (24b2852)
AI Processing Completed
Execution Details:
Summary:
Implemented issue #2123.
Validation passed:
The packaged visual run was attempted but could not start without Xvfb, gnome-keyring, and Tesseract, so rendered artifacts could not be visually inspected locally. CI now provides that required environment.
Detailed Logs:
nullLog files stored at:
/tmp/claude-logs/issue-2123-2026-09-04T21-46-17-671Z-conversation.json/tmp/claude-logs/issue-2123-2026-09-04T21-46-17-671Z-output.txtLatest Conversation Messages
This PR was created automatically by ProPR after processing issue #2123.
💡 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!
Visual preview
Suggested agent tools
Closes #2044
Closes #2088
Closes #2081