You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Resolve Maestro variables at the failing runtime boundary so target labels and runFlow paths are actionable without adding new environment or secret flags.
Keep Maestro-compatible -e/--env KEY=VALUE; resolved diagnostic identifiers appear in failure output, matching what Maestro attempted.
Treat text entry as the security boundary: resolved inputText payloads are registered with centralized diagnostics redaction at dispatch and remain hidden from failures. Sensitive recorded input continues to use --record-as.
Preserve typed error metadata and daemon-owned paths; ordinary env values such as 2, on, or ios cannot corrupt diagnostic timestamps, keys, platform fields, or artifact paths.
Normalize malformed replay env entries as daemon INVALID_ARGS responses instead of allowing the request handler to throw.
Bound live-progress cleanup after terminal resize so reflow is cleared without erasing completed output in non-reflowing multiplexers.
Document the public secrets contract and the intentional native .ad/Maestro diagnostic policy in ADR 0012 and replay guidance.
Validation
Full pre-push gate passed with unit execution serialized for host stability: lint, typecheck, layering, production exports, metadata, build, Fallow, 4,655 unit tests, and smoke tests.
Owner-action CI failure: Coverage fails because MAESTRO_COMPAT_LIMITATIONS changed its canonical Environment statement while website/docs/docs/replay-e2e.md split/rephrased it; support-matrix.test.ts requires the contract statement verbatim. Align the website boundary text with the support-matrix contract (or deliberately change contract/test/docs together), then rerun the focused support-matrix test and Coverage.
P2 — resize regression test is too weak.progress.test.ts claims to verify every reflowed row is cleared but only asserts that output contains one cursor-up sequence. In the 80→20-column case the previous row occupies four physical rows; an implementation that clears only two would still pass. Assert the exact full clear prefix/count (three cursor-up moves and four erase-line commands), preferably derived from the prior visible width and resized column count.
The replay failure/redaction production path otherwise reviewed clean: identifiers resolve at the runtime boundary, input text is excluded from failure artifacts, injected diagnostic values are registered centrally, and no device-specific validation is required.
P2 — The new four-row cleanup cap reintroduces stale live-progress rows after a large width decrease. The previous line is truncated to the old terminal width, so a 200-column line resized to 20 columns occupies ten rows in a reflowing terminal; Math.min(MAX_LIVE_PROGRESS_CLEAR_ROWS, ...) clears only four, leaving six stale rows. The new test explicitly pins the incomplete cleanup by expecting only three cursor-ups. Please restore full reflow cleanup and assert nine cursor-ups/ten clears for 200→20, or use a capability strategy that distinguishes non-reflowing terminals without weakening reflowing-terminal behavior. The prior support-matrix and test-strength findings are otherwise resolved, and exact-head checks are green.
The canonical support-matrix limitation and website/docs/docs/replay-e2e.md now use the same verbatim failure-diagnostics statement (8f6c1f0ac).
The resize regression now derives the four reflowed rows from the initial visible width and resized column count, then asserts the exact clear prefix: four erase-line commands and three cursor-up moves (f121ac0f7).
Validation is green with deterministic unit execution: tooling, Fallow, 522 test files / 4,655 unit tests, and smoke tests.
P2 remains unresolved at f121ac0. The production code still caps cleanup with Math.min(MAX_LIVE_PROGRESS_CLEAR_ROWS, ...). The new 80→20 test proves only the four-row boundary; it does not cover the failing 200→20 case, and the adjacent test still expects just three cursor-ups there. A reflowing terminal needs nine cursor-ups/ten clears, so six stale rows remain. Please fix the implementation and assert the full 200→20 cleanup rather than strengthening a test that stops at the existing cap. Exact-head checks are otherwise green, with iOS Smoke still running.
Removed the four-row cap. Reflowing terminals now clear the complete previous width: the 200→20 regression asserts ten erase-line commands and nine cursor-up moves.
Added an explicit terminal capability for non-reflowing multiplexers. The default reporter detects tmux/GNU Screen sessions and uses single-row cleanup there, avoiding deletion of completed output.
Added a reporter-level tmux regression in addition to the renderer tests.
Validation is green: tooling, Fallow, 522 test files / 4,657 unit tests, and smoke tests.
Re-reviewed at 791c86d: clean and ready for human review. The resize defect is resolved—the reflowing path now clears all computed rows, the 200→20 regression asserts ten clears/nine cursor-ups, and tmux/screen use the explicit non-reflowing one-row path with reporter-level coverage. Exact-head checks are green.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
ready-for-humanValid work that needs human implementation, judgment, or maintainer merge
1 participant
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Resolve Maestro variables at the failing runtime boundary so target labels and
runFlowpaths are actionable without adding new environment or secret flags.-e/--env KEY=VALUE; resolved diagnostic identifiers appear in failure output, matching what Maestro attempted.inputTextpayloads are registered with centralized diagnostics redaction at dispatch and remain hidden from failures. Sensitive recorded input continues to use--record-as.2,on, orioscannot corrupt diagnostic timestamps, keys, platform fields, or artifact paths.INVALID_ARGSresponses instead of allowing the request handler to throw..ad/Maestro diagnostic policy in ADR 0012 and replay guidance.Validation