Skip to content

Fix preview broker dogfood edge cases#20

Merged
peter-olom merged 3 commits into
mainfrom
butler/manor-self-improvement-job-problem-d
Jun 20, 2026
Merged

Fix preview broker dogfood edge cases#20
peter-olom merged 3 commits into
mainfrom
butler/manor-self-improvement-job-problem-d

Conversation

@peter-olom

@peter-olom peter-olom commented Jun 19, 2026

Copy link
Copy Markdown
Owner

Summary

  • Resolve relative manor-harness --cwd values before forwarding preview/stack/service/desktop lifecycle start requests.
  • Preserve preview/service exec --cwd as an in-container path in the harness payload, then resolve relative exec cwd inside the runtime broker against the target container Config.WorkingDir so Docker receives an absolute WorkingDir.
  • Fix TCP heartbeat defaults so broker checks the preview container target instead of broker localhost.
  • Demux Docker multiplex log frames for preview and service log endpoints.

Dogfood coverage

  • Disposable Node HTTP preview: relative cwd, env vars, alias, HTTP heartbeat, logs/processes/exec, browser proof run with screenshot/video/trace.
  • Python HTTP preview with python:3.13-slim and HTTP heartbeat.
  • Command heartbeat preview and explicit TCP heartbeat preview.
  • Restricted web egress profile denied a fetch to a non-allowlisted domain.
  • Ephemeral stack + Redis service + preview heartbeat over stack network; service exec returned PONG.
  • Failure/recovery and cleanup: reproduced failed TCP/default-relative path case, stopped failed/normal previews, stopped stack, and final job preview list was empty.

Follow-up review/fix loop

  • Round 1 reviewers found exec --cwd was host-resolved too broadly. Fixed in 3558e806 by scoping host cwd resolution to lifecycle start commands and adding fake-registry subprocess tests for actual harness payloads.
  • Round 2 ops reviewer found Docker exec requires absolute WorkingDir for relative container cwd. Fixed in c6debc6 by resolving relative exec cwd against the container Config.WorkingDir in the broker and adding focused broker tests.
  • Final independent reviewers (correctness/regression, ops/runtime safety, API/broker behavior) all reported clean/no blockers at PR head c6debc6a74b924a33928b61b7b222ee98e7f5599.

Tests / build

  • Disposable preview build runner: npm ci, focused tests npx tsx --test test/server/manor-harness-cli.test.ts test/server/runtime-broker-preview-isolation.test.ts (10 pass, 0 fail), npm run build.
  • Build sentinel exec confirmed butler/dist/server/index.js and butler/dist/web exist.
  • Shared-shell syntax check: node --check on changed .mjs files.
  • Final ops reviewer additionally ran independent disposable snapshot verification: npm install, npm test (222 pass, 0 fail), and npm run build.

Risk / rollout

  • No live Manor restart or deploy performed.
  • Runtime-broker fixes require a normal Manor update/restart before live previews receive the TCP default, log demux, and exec-cwd broker behavior.
  • Non-blocking notes: log retrieval still buffers capped tail without byte cap; snapshot build emits existing non-fatal .git stderr because snapshots exclude .git.

Manor Codex added 3 commits June 19, 2026 07:47
Resolve relative harness cwd flags before forwarding runtime requests so snapshot previews copy the intended workspace.

Default TCP heartbeats to the preview container target instead of broker localhost, and demux Docker log frames for preview and service logs.

Add focused regression coverage for TCP heartbeat defaults, Docker log decoding, and harness cwd forwarding.
Scope host cwd resolution to lifecycle start commands where --cwd selects a source workspace.

Keep preview exec and service exec --cwd values unchanged so callers can use in-container relative or absolute working directories.

Replace the source-regex harness test with subprocess tests that capture the actual forwarded harness payload for lifecycle starts and exec calls.
Keep harness exec cwd values container-local, then normalize relative exec cwd values inside the runtime broker against the target container WorkingDir.

Use the normalized absolute container path for Docker exec WorkingDir and shell-form cd behavior so preview and service exec calls support relative in-container paths without host-path leakage.

Add focused regression coverage for preview and service container exec cwd resolution.
@peter-olom peter-olom marked this pull request as ready for review June 20, 2026 13:52
@peter-olom peter-olom merged commit c2f5d85 into main Jun 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant