sync(desktop): propagate finalized transport into top epic - #2035
sync(desktop): propagate finalized transport into top epic#2035integry wants to merge 228 commits into
Conversation
[Epic sync] Bring Electron runtime foundation into transport lane
…rowser pairi Implemented by ProPR AI using gpt-5.6-sol model. Implementation completed successfully.
…git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-06-53/propr-ui/src/desktop/DesktopExperience.tsx:23). Fixed the PR build blocker in [DesktopExperience.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-06-53/propr-ui/src/desktop/DesktopExperience.tsx:23). The formatting-only change reduces the file to the 400-line ESLint limit without changing behavior. Validated successfully: - UI lint with zero warnings - UI typecheck - 23 desktop tests - Production UI build - `git diff --check` No commit was created. PR: #1977 Comment by: @github-actions[bot] (ID: 5464276486) Model: gpt-5.6-sol
…tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-11-47/propr-ui/src/desktop/browserAdapters.test.ts:33) by making the HTTP error assertion case-insensitive. Fixed the full-suite failure in [browserAdapters.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-11-47/propr-ui/src/desktop/browserAdapters.test.ts:33) by making the HTTP error assertion case-insensitive. Validation passed: - Targeted test: 5/5 - Full UI suite: 498/498 - UI typecheck - `git diff --check` Only that test file changed; no commit was created. PR: #1977 Comment by: @github-actions[bot] (ID: 5464306177) Model: gpt-5.6-sol
…hitecture. Implemented F1–F3 as a coherent main-process credential architecture. Key outcomes: - Bearers never enter renderer JavaScript or credential IPC. Pairing, persistence, probing, revocation, REST/Socket.IO injection, and invalidation live in [credential-service.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-16-21/apps/desktop/src/credential-service.ts). - Credentials are encrypted and bound to profile ID plus normalized origin. URL changes revoke against the old origin and never forward Authorization to the new origin. - Invalidation is scoped by profile ID and connection generation. Only definitive token-invalid codes clear credentials; authorization changes reconnect/re-probe, while transient errors remain retryable. - Pairing start and polling now have cancellation, bounded timeouts, expiry deadlines, safe interval clamping, strict approval-origin validation, and completion race protection. - Added adversarial regressions for A→attacker, delayed A failures after B, hung/cancelled pairing, malformed timing/URLs, and completion racing with deletion or switching. Verification passed: - Client: 17 tests - Electron desktop: 30 tests - UI: 502 tests - API desktop auth/socket/status: 47 tests - Client, desktop, UI, and API typechecks - UI lint - API and UI production builds - Linux Electron packaging: [propr-desktop-linux-x64](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-16-21/apps/desktop/out/propr-desktop-linux-x64) The branch remains based on `1953-epic-desktop-transport-api`; no commit or merge was created. I could not post the requested `/review` because this environment has no writable GitHub connector. The remaining handoff is to comment `/review` on PR #1977. PR: #1977 Comment by: @integry (ID: 5464340590) Model: gpt-5.6-sol
…equesting review. Implemented the requested follow-up without committing or requesting review. Key changes: - Enforced integer polling intervals of 1–60 seconds on start and every pending response. - Rejected invalid, expired, or over-30-minute pairing deadlines before scheduling or approval. - Preserved deadline-clamped sleeps and start/poll cancellation behavior. - Stripped renderer Cookie and Authorization headers across HTTP(S)/WS(S), including inactive and mismatched origins. - Stripped remote Set-Cookie headers while preserving marked main-process bearer requests. - Added active, inactive, same-origin multi-profile, forged-marker, WebSocket, cancellation, and deadline regressions. Updated [desktopPairing.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-45-47/packages/client/src/desktopPairing.ts), [client.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-45-47/packages/client/src/client.ts), and [credential-service.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-45-47/apps/desktop/src/credential-service.ts). Validation passed: - Client: 20 tests - Desktop: 31 tests - UI: 503 tests across 70 files - API desktop-auth/Socket.IO/status: 47 tests - Client, desktop, UI, and API typechecks - API build - Linux x64 production Electron package - `git diff --check` PR: #1977 Comment by: @integry (ID: 5464477994) Model: gpt-5.6-sol
…or changes. Implemented the clean dependency fix without product-behavior changes. - Root `test:prepare` now builds `@propr/shared` then `@propr/client` before the serial suite: [package.json](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-56-57/package.json:22) - Desktop tests now self-prepare through the existing non-recursive hook: [apps/desktop/package.json](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-56-57/apps/desktop/package.json:21) - CI verifies clean artifacts are absent, then present after preparation: [pr-test-on-label.yml](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-56-57/.github/workflows/pr-test-on-label.yml:49) - Added script/workflow ordering regression: [testSuiteRunner.test.mjs](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T19-56-57/test/testSuiteRunner.test.mjs:18) Validation: - Clean `npm ci`: passed - Clean `npm run desktop:test`: 31/31 passed - Clean `npm run desktop:package`: passed - `npm run desktop:typecheck`: passed - Docs setup/typecheck/build: passed - Package-script regression: 7/7 passed - Serial full-suite entry passed the formerly failing credential test immediately. The remainder could not complete because this environment lacks Docker/Redis; the run was stopped after reaching Redis-dependent tests. - `git diff --check`: passed No commit or review request was created. PR: #1977 Comment by: @integry (ID: 5464563805) Model: gpt-5.6-sol
…out changing renderer token custody, origin policy, cookies, or build ordering. Implemented the two race fixes on exact head `6cba577` without changing renderer token custody, origin policy, cookies, or build ordering. - Stale definitive probe responses now atomically revalidate profile generation/selection, persisted origin, and exact credential identity before deletion. - Pairing now applies one monotonic deadline/caller-abort race across approval, sleeps, and polls, with complete cleanup and safe late callback handling. - Added deterministic replacement, origin-change, pending-approval expiry, caller-abort, and late-settlement regressions. Validation: - Focused credential/pairing tests: 20/20 passed. - Clean `npm ci`: passed, zero vulnerabilities. - Clean build-order preparation: passed; generated shared/client `dist` directories were removed and rebuilt. - Desktop typecheck and UI typecheck: passed. - Desktop Linux package: passed. - `git diff --check`: passed. - Full suite: 321/322 entries passed. Only `test/llmMetrics.test.ts` timed out because Redis was unavailable (`ECONNREFUSED 127.0.0.1:6379`); all remaining tests, including 70 UI files/503 tests, passed. No commit was created. PR: #1977 Comment by: @integry (ID: 5464641318) Model: gpt-5.6-sol
… seamlessly Implemented by ProPR AI using gpt-5.6-sol model. Implementation completed successfully.
…ing: Implemented all four blockers on `ba9795f7` without committing: - Unified ProfileStore mutations under one serialized queue, eliminating lock inversion. - Enforced immediate pairing deadline/cancellation rejection with post-await lifetime checks. - Scoped authorization events and socket reconnects to the captured profile generation, with cleanup listener detachment. - Applied atomic exact-current credential deletion across stale pairing, invalidation, revoke, origin-change, and probe cleanup paths. Validation passed: - Final full suite: 321 non-live files plus native UI suite; 506 UI tests. - Client, desktop, UI focused tests and typechecks. - Production UI build. - Linux desktop package. - `git diff --check`. Packaged smoke was attempted but blocked by the unprivileged environment: Electron requires a root-owned mode-4755 `chrome-sandbox`. The smoke correctly refused to disable sandboxing. PR: #1977 Comment by: @integry (ID: 5464765371) Model: gpt-5.6-sol
Fixed PR #1988’s build blockers: - Restored correct URL warning classification in [runtimeConfig.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-29T21-22-36/propr-ui/src/config/runtimeConfig.ts:100). - Compacted the Connect verification markup in [DesktopExperience.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-29T21-22-36/propr-ui/src/desktop/DesktopExperience.tsx:96) to satisfy the 400-line lint limit. Verified: - Failing CI regression: 66/66 passed - Focused UI/desktop tests: 88/88 passed - Client tests: 17/17 passed - UI typecheck, lint, and production build passed - Notification regression stage passed - Browser smoke tests: 4/4 passed - CLI package verification passed - `git diff --check` passed No commit was created. PR: #1988 Comment by: @github-actions[bot] (ID: 5464959244) Model: gpt-5.6-sol
…covery contr Implemented by ProPR AI using gpt-5.6-sol model. Implementation completed successfully.
…p/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-29T21-41-13/propr-ui/src/config/runtimeConfig.ts:121). Fixed PR #1989’s build regression in [runtimeConfig.ts](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-29T21-41-13/propr-ui/src/config/runtimeConfig.ts:121). The UI now trims redundant trailing slashes before strict proxy URL validation, while continuing to reject paths, queries, fragments, ports, and userinfo. Validation passed: - Exact hosted-tunnel regression suite: 317/317 - UI tests: 66/66 - UI typecheck - UI lint - `git diff --check` Only the requested file was modified; no commit was created. PR: #1989 Comment by: @github-actions[bot] (ID: 5465042091) Model: gpt-5.6-sol
…acee1a376ee827`. Implemented F4–F7 on exact head `b21fdf134a0b56166fa2f520f9acee1a376ee827`. Key changes: - Main-only monotonic probe tickets and fresh 128-bit opaque transport scopes per activation. - Scope-bound REST and Socket.IO authentication with stale/malformed cancellation, header stripping, force-new Managers, and preflight handling. - Authenticated attachment blob URLs with abort and guaranteed revocation. - Exact transient credential cleanup after cancellation/failure. - Atomic local profile/credential detachment before best-effort revocation, protecting later replacements. - Added race, rotation, header, socket, CORS, attachment, F6, and F7 regressions. Validation passed: - Desktop: 41 tests and typecheck. - UI: 509 tests, typecheck, lint, and production build. - Client: 24 tests and typecheck. - Remote-auth/CORS/socket/status: 59 tests. - Linux production desktop package. - Root typecheck. - `git diff --check`. Environmental limitations: - Full serial suite reached 172/322 with no failures, then blocked because `redis-server` is not installed. - Packaged smoke could not run securely because the host lacks root-owned mode-4755 `chrome-sandbox` setup and `xvfb-run`. Sandboxing was not bypassed. No commit was created. PR: #1977 Comment by: @integry (ID: 5465095640) Model: gpt-5.6-sol
Implemented F1 only. - Noncanonical reserved Connect URLs—including explicit `:443` and percent-encoded hosts—now fail before pairing creation. - Returns bounded `PAIRING_CONFIGURATION_INVALID` / HTTP 503 without reflecting configured input. - Valid Connect, arbitrary HTTPS remotes, lookalikes, and loopback behavior remain unchanged. - Added regressions confirming no pairing row is persisted. Changed [desktopAuthService.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-29T22-14-16/packages/api/desktopAuthService.ts:152) and [desktopAuth.test.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-29T22-14-16/packages/api/test/desktopAuth.test.ts:101). Verification passed: - 67 Connect/client/API tests - 24 desktop tests - 96 runtime-config/desktop UX tests - 10 launcher drift tests - Affected typechecks and API lint - CLI release-package guard - `git diff --check` The full 321-file suite reached 176 files before hanging because Redis is unavailable at `127.0.0.1:6379`; it was stopped after repeated connection failures. No merge, base sync, commit, or PR creation was performed. PR: #1988 Comment by: @integry (ID: 5465187212) Model: gpt-5.6-sol
…Image.test.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T22-27-43/propr-ui/src/components/TaskPlanner/AuthenticatedAttachmentImage.test.tsx:39). Fixed the TypeScript regression in [AuthenticatedAttachmentImage.test.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-29T22-27-43/propr-ui/src/components/TaskPlanner/AuthenticatedAttachmentImage.test.tsx:39). The test now captures the signal in a typed collection, explicitly fails if absent, and verifies it is aborted after scope rotation—without a signal cast or assertion. Passed: - `npm run desktop:prepare` - `npm run typecheck -w propr-ui` - Focused authenticated attachment test: 2/2 passed - `git diff --check` Only the requested test file changed. HEAD remains `66cd848f7e91fd09b3376aed7a371fb2a948d90b`; no merge or base sync performed. PR: #1977 Comment by: @integry (ID: 5465242965) Model: gpt-5.6-sol
Implemented all selected blockers F1–F7. Key results: - Root access now uses one synchronous, descriptor-anchored, identity-checked snapshot; replacements and unsafe ancestry fail with `INVALID_ROOT`. Windows semantics fail closed when authority cannot be proven. - CLI/API identity creation is centralized, permission-checked, atomic, durable, concurrency-safe, and interruption-recoverable. - Discovery v1 parsing is strict and shared between producer and consumer. - Every rejected/timeout response body is cancelled; invalid, unreachable, and timeout exit classes are separated correctly. - Tunnel setup again normalizes redundant trailing slashes before strict validation. - Added packaged CLI, replacement, concurrency, interruption, body-stream, schema, and Unix/Windows-semantics regressions. - Updated desktop-pairing documentation. - No commit or PR operations performed. Verification: - Focused CLI/API/shared/tunnel/launcher/hosted-UI tests: passed. - Packaged CLI integration tests: passed. - Typechecks and lint: passed. - CLI package guard (`npm run cli:pack`): passed. - `git diff --check`: passed. - Full suite: 322/323 runners passed; all 69 UI files and 496 UI tests passed. The sole exception was the pre-existing Redis-backed `llmMetrics.test.ts`, which timed out because Redis and a Docker daemon are unavailable in the agent image. PR: #1989 Comment by: @integry (ID: 5465164512) Model: gpt-5.6-sol
…c0e83b082c4c75d8ac8894cd947aeb1`. Implemented the remaining blockers on exact head `0b7c2961ac0e83b082c4c75d8ac8894cd947aeb1`. Key changes: - Strict raw Connect shorthand validation; credentials, ports, encoding, Unicode, paths, whitespace, alternate casing, trailing dots, and lookalikes are rejected before flow persistence. - Reserved `t-*.propr.dev` attempts can no longer downgrade to generic HTTPS pairing/client behavior. - Malformed runtime configuration is bounded and redacted. The API client is constructed only after successful validation, otherwise a safe configuration screen renders. - Desktop logs, IPC errors, DOM messages, and profile presentation avoid raw endpoints and failure details. - Added managed-tunnel stale/restart recovery with Retry, Re-enter, Rediscover, and explicit confirmation before replacing a profile. - Added a secret-free optional rediscovery adapter seam. - Formal F1 API files were not modified. Validation passed: - Client/shared pairing: 20 tests - API desktop-auth/status: 39 tests - Desktop/Electron: 24 tests - Full UI: 507 tests across 70 files - Root, client, UI, and desktop typechecks - Root and UI lint - CLI package guard - `git diff --check` The repository-wide runner reached 175/321 files, then hung on Redis-dependent tests because neither Redis nor Docker is available. A resumed run encountered the same environment blocker at `llmMetrics.test.ts`. All affected and independently runnable suites pass. No commit, merge, sync, or PR operation was performed. PR: #1988 Comment by: @integry (ID: 5465256401) Model: gpt-5.6-sol
…ithout syncing, merging, or committing. Implemented the requested exact-head fixes on `1c42418a…` without syncing, merging, or committing. Key changes: - Status-only probes with bounded, one-use activation tickets and atomic main-process activation. - Profile origin updates and credential detachment serialized before best-effort revoke. - Failure-safe profile removal for corrupt/decrypt/unlink/state-write scenarios. - SocketProvider now reacts to scope and API-origin changes, with proper desktop null-scope behavior and full Manager teardown. - Realistic packaged-origin CORS preflight coverage while retaining malformed OPTIONS tests. Verification passed: - Desktop, UI, client, and API typechecks - Desktop suite: 51 tests - Client suite: 24 tests - API auth/socket/CORS/attachment suite: 38 tests - Full configured UI suite: 513 tests - UI lint: no errors - Runtime and packaging audits: zero vulnerabilities - Clean-dependency desktop package guard and production Linux package - API production build - `git diff --check` Unavailable locally: - Secure packaged smoke: `xvfb-run` is absent. - Root full suite: 173/322 tests passed before Redis-dependent execution; neither Redis nor Docker is installed in the container. PR: #1977 Comment by: @integry (ID: 5465267002) Model: gpt-5.6-sol
…g head without merging, syncing, or committing. Implemented the remaining A–D blockers on the exact existing head without merging, syncing, or committing. Key fixes: - Hermetic explicit-root discovery with robust `--root` parsing and a minimal non-ProPR environment allowlist. - Docker execution failures now produce `internalFailure`/exit 1; exit 2 is reserved for proven not-ready states. - No-store headers apply at the earliest `/api` boundary, including limiter and error responses. - Strict raw Connect selector validation and consistent case normalization across shared, API, UI, CLI, and launcher paths. - Added packaged hostile-CWD/env CLI tests, Docker failure regressions, real global limiter saturation, and selector parity tests. Validation passed: - CLI/API/shared/UI typechecks - CLI/API/UI lint - Focused CLI, API, pairing, tunnel, rate-limit, and UI tests - CLI packaging - `git diff --check` The configured full suite passed 322/323 runs. The sole failure was the unrelated Redis-dependent `test/llmMetrics.test.ts`, which timed out while Redis at `127.0.0.1:6379` was unavailable. PR: #1989 Comment by: @integry (ID: 5465371272) Model: gpt-5.6-sol
…a03e6ce26429f7d6846286` without merging, syncing, or committing. Implemented the exact-head follow-up on `38cdf456a090b8e252a03e6ce26429f7d6846286` without merging, syncing, or committing. Key changes: - Enforced atomic profile/requested/credential origin equality in [credential-service.ts](/home/node/workspace/apps/desktop/src/credential-service.ts) and [profile-store.ts](/home/node/workspace/apps/desktop/src/profile-store.ts), including stale detachment and delayed activation-race coverage. - Bound renderer activation to the main-returned `profileId`; mismatches become authentication-required and never publish a scope. - Restored authorization reconnect and stale deferred SocketProvider regressions. - Split [DesktopExperience.tsx](/home/node/workspace/propr-ui/src/desktop/DesktopExperience.tsx) to 289 lines and [DesktopExperience.test.tsx](/home/node/workspace/propr-ui/src/desktop/DesktopExperience.test.tsx) to 390 lines, without weakening lint. Validation passed: - Focused desktop: 55 tests - Focused adapter/apiClient/SocketProvider/UI: 58 tests - Full UI: 517 tests - UI lint, typecheck, and production build - Desktop typecheck and Linux production package - `git diff --check` The configured full suite completed 167/322 serial files without failures, then blocked indefinitely on file 168 because Redis was unavailable at `127.0.0.1:6379`; neither `redis-server` nor Docker is installed in this environment. PR: #1977 Comment by: @integry (ID: 5465456632) Model: gpt-5.6-sol
…g or syncing the transport base. Implemented the exact-head Connect follow-up without merging or syncing the transport base. - Enforced byte-for-byte canonical Connect origins across shared, client, API, Electron, hosted UI, CLI, and launcher paths. Reserved nested/lookalike hosts cannot fall through as generic remotes. - Removed renderer discovery fallback from managed recovery. Trusted rediscovery now requires current-attempt fencing, matching opaque profile ID, strict endpoint validation, and explicit confirmation. - Added bounded/redacted confirmation copy and deterministic recovery regressions. - Split the affected UI modules to eliminate all six lint warnings without changing lint configuration. Verification: - Connect suites: passed - UI lint, typecheck, build: passed - Desktop typecheck and Electron package: passed - `git diff --check`: passed - Full suite: 320/321 runs passed; only `test/llmMetrics.test.ts` timed out waiting for Redis at `127.0.0.1:6379`, which is unavailable in this environment. No commit was created. PR: #1988 Comment by: @integry (ID: 5465471435) Model: gpt-5.6-sol
Implemented only F8 and F9. - F8: successful A→B activation now clears renderer local/session storage before publishing the new scope, including same-origin switches. - F9: pairing uses proposed profile data without modifying the stored profile. Profile and credential commit transactionally after successful pairing; failures preserve the prior active profile, credential, and connection. Old tokens are revoked only after replacement commit. - Added regressions for browser-launch failure, cancellation, expiry, polling failure, secure-storage failure, commit/revoke ordering, and same-origin renderer isolation. Verification passed: - Desktop full test suite: 61 tests - Desktop typecheck - UI Electron adapter tests - UI typecheck and lint - `git diff --check` No commit was created. PR: #1977 Comment by: @integry (ID: 5465624544) Model: gpt-5.6-sol
Implemented only F2 and F3. - Hosted API client creation is now blocked for missing or non-Connect configurations, while OAuth completion remains exempt: [runtimeConfig.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-13-37/propr-ui/src/config/runtimeConfig.ts:350). - Approval URLs now require canonical raw query names and values, rejecting encoded names/hosts: [desktopPairing.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-13-37/packages/shared/src/desktopPairing.ts:57). - Added API-client gating and cross-contract encoding regressions. Verification passed: - Shared build - Client tests: 21 passed - UI tests: 66 passed - UI typecheck and targeted lint - `git diff --check` PR: #1988 Comment by: @integry (ID: 5465683890) Model: gpt-5.6-sol
…dc54004bb279e1` without merging, syncing, or committing. Implemented F8/F9 on exact head `f491eb7137cd9ff0b36b1e2c90dc54004bb279e1` without merging, syncing, or committing. Key changes: - [profile-store.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-30T00-17-19/apps/desktop/src/profile-store.ts) now uses immutable encrypted credential slots and one atomic versioned state pointer, with fsync ordering, legacy migration, startup recovery, orphan cleanup, and fail-closed validation. - Added injected durability failures, concurrent replacement, legacy migration, and real SIGKILL child-process recovery tests proving complete A or complete B. - [electronAdapters.ts](/tmp/git-processor/worktrees/integry/propr/pr-1977-followup-2026-08-30T00-17-19/propr-ui/src/desktop/electronAdapters.ts) now clears renderer storage only after exact-profile, current-attempt activation validation. - Mismatch, throw, stale activation, failed edits/pairing, and probing clear nothing. Clear failures restore sentinels, discard the main activation, publish no B scope, and return a fixed safe error. - Added a scoped activation-discard IPC path without removing the credential. Passed: - Desktop suite: 64 tests - UI isolation suites: 62 tests - UI and desktop typechecks - UI lint and production build - Linux desktop package - `git diff --check` - Exact-head verification The configured full suite was attempted and passed all tests reached, but the Redis-dependent portion blocked on `ECONNREFUSED 127.0.0.1:6379`; this environment has neither Redis nor Docker available. PR: #1977 Comment by: @integry (ID: 5465699420) Model: gpt-5.6-sol
Implemented only F4, F5, and F6: - Added the 2048-character guard before parsing `API_PUBLIC_URL` in [desktopAuthService.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-37-29/packages/api/desktopAuthService.ts:156). - Detects decoded `tunnel` parameter names such as `%74unnel`, blocking stored/configured fallback in [hostedTunnelConfig.ts](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-37-29/propr-ui/src/config/hostedTunnelConfig.ts:42). - Connect pairing errors now apply only to authentication; help-launch failures retain the bounded help-specific message in [DesktopExperience.tsx](/tmp/git-processor/worktrees/integry/propr/pr-1988-followup-2026-08-30T00-37-29/propr-ui/src/desktop/DesktopExperience.tsx:221). - Added focused regressions for all three findings. Verification passed: - API pairing suite: 8 tests - Focused UI suites: 82 tests - Desktop experience suite: 22 tests - API and UI typechecks - API and UI lint - `git diff --check` No commit was created. PR: #1988 Comment by: @integry (ID: 5465785343) Model: gpt-5.6-sol
…1b65ba6bc09e7e8edbc4c9ef418b12d436980` without merging, syncing, or committing. Implemented all seven follow-up blockers on exact HEAD `c551b65ba6bc09e7e8edbc4c9ef418b12d436980` without merging, syncing, or committing. Key outcomes: - Real fail-closed Windows DACL/reparse-point and macOS ACL authority checks with deterministic fixtures. - Crash-remnant identity recovery and strictly bounded, revalidated reads. - Abort-before-listener race closed with exact cleanup. - Root-specific persisted tunnel overrides restored through read-only config access. - Noncanonical managed URL spellings rejected across launcher, shared, API, CLI, and hosted UI boundaries. - Validated Docker transport environment forwarding with redacted failures. - Clean-checkout unit preparation now builds required workspaces first. Validation passed: - Clean `npm ci` and 281 fast unit tests. - Exact full suite: all 322 non-live files plus UI workspace; 497 UI tests. - 321 hosted-tunnel tests and focused identity/discovery regressions. - Node 22 and 24 CLI matrices. - Desktop audits, clean package build, typecheck, and 24 runtime tests. - CLI package dry run, API/CLI/UI builds, typechecks, and zero-warning lint. - Actionlint, release shellcheck, release metadata, and `git diff --check`. The packaged GUI launch smoke was unavailable because this host lacks Xvfb/root sandbox-helper setup; desktop packaging and runtime coverage passed. PR: #1989 Comment by: @integry (ID: 5465520611) Model: gpt-5.6-sol
…out merging, syncing, or committing. Implemented the remaining discovery authority blockers without merging, syncing, or committing. Key changes: - Docker discovery now filters by exact `propr.stack`, rejects duplicate/unknown labeled containers, and retains the 64 KiB cap. - Docker receives only strictly validated bootstrap, home/context, SSH, and documented Docker variables. - Windows ACL inspection now reads owner/DACL/reparse metadata from the same native handle; macOS ACL inspection uses the pinned descriptor. - Identity and `READY` entries receive consistent native authority validation, including recovery and publication paths. - Persisted tunnel state now uses a bounded, handle-pinned OS-home read with platform-canonical root keys and fixed fail-closed errors. - Added real Windows/macOS authority CI coverage in [pr-build-check.yml](/tmp/git-processor/worktrees/integry/propr/pr-1989-followup-2026-08-30T00-57-36/.github/workflows/pr-build-check.yml). - Exit semantics now match the request: ready/not-ready `0`, internal/config failure `1`, unsupported/incompatible `2`. Validation completed successfully: - Clean `npm ci`, release verification, fast-unit and hosted-tunnel validation - Focused root, identity, discovery, CLI, API, and orchestrator suites - CLI package, typecheck, and lint - Desktop audits, package, typecheck, and 24 runtime tests - UI full suite: 497 tests passed - `git diff --check` The aggregate full suite passed 322/324 file runs. One Redis-dependent test timed out because Redis is unavailable locally; the other transient repository-manager failure passed its isolated rerun (9/9). Native Windows/macOS jobs, actionlint, and packaged GUI smoke remain CI-only because this Linux runner lacks those OSes, Docker/actionlint, and `xvfb-run`. PR: #1989 Comment by: @integry (ID: 5465866322) Model: gpt-5.6-sol
…30d30c7b9a2ab7024f8932fa2f` without merging, syncing, or committing. Implemented all four blockers on exact head `8897926a40fe7030d30c7b9a2ab7024f8932fa2f` without merging, syncing, or committing. - Added credential identity epochs through [profile-store.ts](/home/node/workspace/apps/desktop/src/profile-store.ts), activation IPC, and [electronAdapters.ts](/home/node/workspace/propr-ui/src/desktop/electronAdapters.ts). Real identity replacement clears local/session storage once; reconnecting the same credential retains it. - Added alternating write-through, self-contained encrypted journals with recovery for pointer rollback, reordered visibility, corrupt/missing slots, and every credential/state boundary. - Persisted bounded pending revocations atomically with B. Startup and pre-mutation retries retain network/5xx failures, terminally complete 2xx/401/404, and emit only redacted diagnostics. - Serialized cancellation/profile switching through the publish gate, with deterministic pre-publish race coverage. - Added native Windows child termination/restart tests plus real-process revocation crash fixtures. Validation passed: - Configured Full Suite: all 321 non-live files plus UI workspace passed in 501.7s. - Desktop tests/typecheck/package. - UI tests, focused renderer/isolation/SocketProvider tests, typecheck, lint, and build. - Client, IPC/preload, API client, hosted-tunnel, notification, CLI packaging, release verification, and fast unit suites. - `git diff --check`. Environment-only limitations: - Native Windows tests are included but skipped on this Linux host. - Playwright Chromium could not start because the container’s 512-PID cgroup was exhausted by 352 unreapable test-runner zombie processes; it failed before loading a page. - Docker-based actionlint/shellcheck could not run because Docker is unavailable. PR: #1977 Comment by: @integry (ID: 5465910433) Model: gpt-5.6-sol
…f…` without merging or syncing the transport base. Implemented the durability follow-up on exact head `0a2cbd3f…` without merging or syncing the transport base. Key changes: - Added prepared → flush → verify → `O_SYNC` commit-marker journal publication. Flush/verification failures now fail before durable callbacks or B publication. - Encrypted and authenticated self-contained journals with bounded size and lossless string/`BigInt` generations. - Recovery now authenticates journals before reading or repairing `profiles.json`. - Added mirror corruption, alternate-slot rollback, missing-slot, injected I/O failure, revocation, cancellation, and crash matrices. - Added required x64 `windows-latest` durability job in [desktop-release-guard.yml](/home/node/workspace/.github/workflows/desktop-release-guard.yml:26), with explicit scenario-count enforcement and zero permitted skips. Validation passed: - Clean `npm ci` - Desktop tests: 87/87 - Linux native durability command: 67/67, 0 skipped - Client tests: 24/24 - UI transport tests: 39/39 - Fast validation tests: 279/279 - Desktop/UI typechecks, UI lint/build, root lint/build - Linux desktop package - Release metadata and `git diff --check` Native Windows success is not claimed: the hosted job must execute after push. Local `actionlint` and the Redis-backed configured Full Suite could not run because this environment has no Docker or Redis; both remain covered by CI. PR: #1977 Comment by: @integry (ID: 5466169482) Model: gpt-5.6-sol
|
Continue the existing task now from the successful clean staged merge. Do not wait on unavailable jq; use node for JSON checks. Verify the merge parents/invariants and relevant available tests, then commit and push the merge to the existing #2035 head. If the shared-object store blocks commit, use the already-created node-owned object/index directories or GitHub Git Data API. Do not start another task, do not invoke /merge, and do not add unrelated changes. |
…ervice cases + 37 profile-store + 10 pairing-shutdown = 119. I’m building the shared/client/local-setup/CLI prerequisites once, then will run the focused client suite, the exact 119-case native durability gate, and API status/CORS/socket tests concurrently. The exact native gate is confirmed in-repo: 72 credential-service cases + 37 profile-store + 10 pairing-shutdown = 119. I’m building the shared/client/local-setup/CLI prerequisites once, then will run the focused client suite, the exact 119-case native durability gate, and API status/CORS/socket tests concurrently. PR: #2035 Comment by: @integry (ID: 5531301079) Model: gpt-5.6-sol
|
Scoped Mac/Linux/shared correction only on exact transport head |
|
✅ Applied the requested follow-up changes in commit 6beeda9 Summary of ChangesUpdated verify-platform-safe-connect.mjs:
🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
…or/worktrees/integry/propr/pr-2035-followup-2026-09-03T20-11-59/scripts/verify-platform-safe-connect.mjs): Updated [verify-platform-safe-connect.mjs](/tmp/git-processor/worktrees/integry/propr/pr-2035-followup-2026-09-03T20-11-59/scripts/verify-platform-safe-connect.mjs): - Changed all expected/report counts from 85 to 86. - Preserved strict fail-closed equality checks. - Preserved the 90,000ms timeout. - No focused self-check existed to adjust. - Script passes: `tests=86 pass=86 fail=0 skipped=0`. - `git diff --check` passes; only the requested script changed. - No commit, merge, or preview artifacts created. PR: #2035 Comment by: @integry (ID: 5531518247) Model: gpt-5.6-sol
…ndary and all transport-sensitive desktop/API suites; it is now past 110 of 374 files with no failures. I’m letting the sequential runner finish so the final result reflects the complete merged tree. The repository-wide runner has passed the assembled API boundary and all transport-sensitive desktop/API suites; it is now past 110 of 374 files with no failures. I’m letting the sequential runner finish so the final result reflects the complete merged tree. PR: #2089 Comment by: @integry (ID: 5531489680) Model: gpt-5.6-sol
Prepared the exact merge state for the system commit/push: - Task cwd uses complete node-owned, non-bare `.git`; `inside-work-tree=true`. - `HEAD`: `8cd66a3791366b86d061baba55b176e52c51072e` - `MERGE_HEAD`: `6beeda95cd9da99a40fe54c12d66767c1a2db33a` - `MERGE_MODE=no-ff` - Six conflicts resolved to 8cd. - Zero unresolved entries; no unstaged changes. - Staged diff exactly matches `b494…→6be…`: only `scripts/verify-platform-safe-connect.mjs`, 4 insertions/4 deletions. - Platform-safe: 86/86 passed. - Native durability: 120/120 passed. - No commit created, as instructed. The system commit will therefore have parents 8cd first and 6be second. - No preview generated because this is ancestry-only and not visually perceptible. PR: #2089 Comment by: @integry (ID: 5531823572) Model: gpt-5.6-sol
…tch on `f482e1d7`.
Reapplied and audited the exact bounded eight-file F1–F3 patch on `f482e1d7`.
Implemented:
- Exact legacy `{ "error": "Unauthorized" }` 401 classification with bounded, fatal UTF-8, duplicate-safe parsing.
- Nonterminal discovery milestone and allowlisted journey diagnostics.
- Single terminal READY after pairing and persisted reprobe.
- Cached idempotent fixture cleanup tolerating only `ERR_SERVER_NOT_RUNNING`.
- Ephemeral Linux dbus/gnome-keyring/libsecret provisioning.
Verification passed:
- Client: 71/71
- Credential service: 72/72
- Lifecycle/cleanup: 27/27
- Express boundary: 1/1
- Shared, client, API, and desktop typechecks
- Platform-safe: 86/86
- Native durability: 120/120
- `git diff --check`
HEAD remains `f482e1d7`, with parents `8cd66a37` and `6beeda95`. The eight-file patch is uncommitted for the system commit hook. Cross-platform packaged lanes remain for CI; no visual preview was applicable.
PR: #2089
Comment by: @integry (ID: 5532060503)
Model: gpt-5.6-sol
… `123d31c` without committing. Implemented the scoped Mac/Linux/shared corrections on head `123d31c` without committing. - Linux Connect now derives one launch argv and passes `--password-store=gnome-libsecret` through the actual binary spawn. - Darwin workflow creates, unlocks, selects, restores, and deletes an ephemeral generated-password keychain. - Added audited LNA permission handling for trusted live main frames with current bindings, exact-origin request enforcement, child/foreign/destroyed renderer denial, and fixed redacted evidence. - Split renderer diagnostics into manual-form, browser-approval, and activation/dashboard stages. - Windows runtime behavior remains gated off from the new renderer-network boundary. - No package-lock, release, signing, publishing, or visual changes. Verification passed: - Focused launch/lifecycle/platform tests: 33/33 - Credential/session-security tests: 85/85 - Desktop typecheck - Platform-safe Connect: exactly 86/86 - Native durability: exactly 120/120 - Workflow YAML and Darwin shell syntax - Transport ancestry preserved from `f482e1d` PR: #2089 Comment by: @integry (ID: 5532347770) Model: gpt-5.6-sol
…t committing. Implemented the scoped packaged-approval harness fix without committing. - Added a unique non-persistent Electron session for the hidden approval window in [main.ts](/tmp/git-processor/worktrees/integry/propr/pr-2089-followup-2026-09-03T21-49-25/apps/desktop/src/main.ts:452). - Added the fail-closed navigation boundary in [packaged-approval-session.ts](/tmp/git-processor/worktrees/integry/propr/pr-2089-followup-2026-09-03T21-49-25/apps/desktop/src/packaged-approval-session.ts:1): - Exactly one credentialless main-frame `GET`. - Exact URL and HTTP 200 commit/completion required. - Permissions, redirects, alternate requests, subframes, popups, webviews, downloads, and external navigation denied. - Authorization/Cookie headers rejected; response cookies stripped. - Window destruction, handler detachment, and storage clearing are idempotent. - Added adversarial focused coverage and confirmed the production default session still cancels pairing navigation. - Left credential preparation, production session/LNA boundaries, identity rules, workflow, lockfile, and UI unchanged. Verification: - Focused approval/session tests: 19/19. - Focused pairing/session suites: 32/32. - Packaged lifecycle suites: 28/28. - Desktop typecheck: passed. - Platform-safe Connect: exactly 86/86. - Native durability: exactly 120/120. - Required Darwin x64/arm64 and Linux x64/arm64 Packaged Connect lanes remain in the CI matrix. The complete desktop command had one baseline Windows-only source-text assertion failure—its legacy spawn literal is already absent at the exact original head. Per scope, no Windows changes were made. No visual preview was created because this changes only a hidden acceptance harness. PR: #2089 Comment by: @integry (ID: 5532591618) Model: gpt-5.6-sol
…head `923e5efd6202b0bfd620af0b01ac5a8539df2b94`. Implemented the scoped Mac/Linux/shared follow-up on exact head `923e5efd6202b0bfd620af0b01ac5a8539df2b94`. Key changes: - Split the packaged journey into fixed, redacted stages from authentication-required through durable commit, reprobe, activation, publication, React connected state, and REST/Socket.IO proof. - Identified and fixed the post-pair boundary: generic packaged-smoke setup was creating synthetic profiles and changing active profile/generation before the real Connect journey. Connect acceptance now bypasses those mutations and layout probes. - Added bounded operation and renderer-ownership evidence without exposing identifiers, URLs, tokens, bodies, DOM text, or errors. - Preserved the mandatory `details.frame` rule because no captured evidence proves it is omitted. Explicit, missing, null, stale, foreign, and subframe cases remain fail-closed. - Strengthened two-phase request evidence: exactly eight credentialless discoveries, three pairing starts/browser approvals, polling, one activation, and authenticated REST/Socket.IO across restart. - Retained one terminal READY producer after full journey completion. Validation: - Platform-safe: `86/86` - Native durability: `120/120` - Final focused desktop/session/preload: `15/15` - Lifecycle/cleanup: `28/28` - Focused UI: `37/37` - Launch/lifecycle focused suite: `31/31` - Desktop and UI typechecks passed - `git diff --check` passed A diagnostic full-desktop run also exposed and helped fix one shared source-order regression. Its remaining failure was the pre-existing Windows-only staging assertion, intentionally untouched. All four packaged Mac/Linux lanes are left for CI as requested. No visual preview was generated because there is no visual product change. No commit was created. PR: #2089 Comment by: @integry (ID: 5533203330) Model: gpt-5.6-sol
|
Normal ProPR implementation follow-up; do not invoke the specialized The audited merge has one expected conflict in root Preserve #2086 strict parser/deadline/pre-abort/late-body disposal, unauthenticated identity discovery before bearer, identity/profile/origin/generation/scope fencing, mismatch detach, Connect rotation, exact 72 credential / 119 native counts, and all public desktop route ordering. Incorporate top/main preview auth/routes/setup changes including the corrected awaited client and secret-free reporter behavior. Preserve current-main lock updates ( Run diff-check, lock/install validation, focused auth/status/Connect/setup tests, API/shared/client/desktop/CLI typechecks, platform-safe 86/86, native 119/119, and full suite where bounded. Report direct merge parents and the package resolution. |
|
✅ Applied the requested follow-up changes in commit a2dfbf3 Summary of ChangesPrepared the exact resolved merge tree for the system-managed commit.
Validation passed:
The bounded full suite reached file 238/380. It encountered one environment-sensitive Per the critical instruction that the system will commit, I did not manually commit or push. No preview was created because this is not a visual change. 🤖 Implementation Details
Undo Changes • View Task Execution 💡 ProPR Slash Commands
🤖 Generated by ProPR |
…ed commit. Prepared the exact resolved merge tree for the system-managed commit. - Intended direct parents, in order: 1. `6beeda95cd9da99a40fe54c12d66767c1a2db33a` 2. `a2c7173790c34e2141043a9a49fec846ad12ac06` - Confirmed top contains main `c895c1884fa30557c3d20ca24f6e6b7b07daae45`. - Only conflict: [package.json](/tmp/git-processor/worktrees/integry/propr/pr-2035-followup-2026-09-04T09-18-22/package.json) - Retained transport `pretest:unit` for shared and local-setup. - Retained transport `test:prepare` including client and local-setup. - Used top’s `test:unit`, including `test/agentImagePreparation.test.ts` exactly once. - Resolved tree: `6fca3fd525325d47d1727384f85d0fcee15bbb9e`; verified identical between the standalone merge and mandated worktree. - Lockfile retains `fast-uri@3.1.7`, `qs@6.16.0`, and current humanfs versions. Validation passed: - Clean `npm ci` and workspace preparation/build. - Diff checks. - API/shared/client/desktop/UI/CLI/root typechecks. - Focused auth/status/Connect/setup suites. - Desktop focused: 126/126. - Platform-safe Connect: 86/86. - Native durability: 119/119, including credentials 72/72. The bounded full suite reached file 238/380. It encountered one environment-sensitive `config-followup.test.ts` assertion (`400` versus expected `500` after Docker-backed model discovery was unavailable), then blocked on missing Redis at `127.0.0.1:6379`. Per the critical instruction that the system will commit, I did not manually commit or push. No preview was created because this is not a visual change. PR: #2035 Comment by: @integry (ID: 5538342483) Model: gpt-5.6-sol
Full Test Suite ResultsValidation failed during: Full test suite.
View Test Output |
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
…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
Merge the validated transport implementation into the transport epic branch only. Remaining packaged acceptance blockers are split into targeted follow-up issues before the epic can cascade upward.
Checks FailedValidation failed during setup, tests, CLI packaging, linting, or build checks. View Logs |
…ct evidence Implemented by ProPR AI using gpt-5.6-sol model. Implementation completed successfully.
Implemented F1 only. - Fixture handshake records now include explicit acceptance status. - Socket.IO count, scope rotation, and query/auth binding evidence uses accepted handshakes only. - Added regression coverage for two valid rotated connections plus the expected rejected stale-auth handshake. - No visual preview generated because the change is non-visual. Validation passed: - Desktop script tests: 194 tests, 170 passed, 24 platform skips, 0 failures - ESLint - Syntax check - `git diff --check` No commit created. PR: #2107 Comment by: @integry (ID: 5541497961) Model: gpt-5.6-sol
…ed-journey--20260904-1325-1sq [2105 by GPT-5.6 Sol] Desktop packaged journey: diagnose exact evidence mismatch and pass Mac/Linux
Propagate the finalized desktop transport/API epic into the top-level cross-platform desktop epic.
This synchronization PR intentionally targets
1950-epic-cross-platform-dsk, notmain. It will remain the integration boundary for the completed remote pairing, credential lifecycle, ProPR Connect transport, and secret-free Connect discovery work. Final top-level acceptance remains in draft PR #1970 and must not be merged to main by this PR.