Repository navigation
ISS-14015: Admit a module's own results file in main-sync closure - #425
Merged
Merged
Conversation
The selected report closure turned compare.mjs's join(outDir, "results.json"), with outDir an unbound caller parameter, into */results.json and matched the retained apps/desktop/playwright-report-e2e/results.json, so every symphony-alpha build-purpose main-sync refused once typecheck:affected selected @repo/control. An uncertain path whose only known piece is the file name now locates no retained report; naming the report's directory or full path is still refused. vibe 1.1.81.
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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
walkReportClosure(tools/vibe-workers/src/main-sync-report-closure.ts:59on main) matched every committed reader's path references againstreportOutputs. symphony-alpha'spackages/control/src/vibe-shots/pixel-core/compare.mjs(#9744) reads back its own cache asreadFileSync(join(outDir, RESULTS_FILE)), whereoutDiris the caller's parameter. The parser records that as{value: "/results.json", unknownPrefix: true}, andpathPossibilityturns it into*/results.json. That pattern matchesapps/desktop/playwright-report-e2e/results.json, so line 61 threw. This happened wheneverpnpm typecheck:affectedselected@repo/control#typecheck, which made every build-purpose main-sync refuse.inputUnlocatedFileNameinmain-sync-input-references.ts(the owner of the unknown-path encoding) recognizes a path reference whose value and uncertain terms have no known directory segment. The closure walk returns early for such a reference. A fully unbound path was already no match, and this treats an unbound directory plus a bare file name the same way.join(root, "playwright-report-e2e", "results.json")). symphony-alpha's real consumers (scripts/ci/desktop-e2e-attribution.ts,apps/desktop/test/e2e/helpers/desktop-e2e-coverage-finalize.ts) name the full path, so they stay refused.dist/main-sync.mjsis rebuilt. The plugin manifests, the README line and the pin tests are bumped. vibe-core is unchanged.main-sync-report-closure.tsline 8 (import) and new lines 53 and 54 (early return);main-sync-input-references.tslines 735 to 745 (new function at the bottom). These auto-merge with ISS-13446's branch; only the version lines conflict.Breaking changes
None. The change is internal to the vibe-workers closure check.
Test plan
main-sync-report-closure.test.ts(14 pass): a new case reproduces the compare.mjs shape with a retainedapps/desktop/playwright-report-e2e/results.jsonpresent and passes. Another new case, a reader namingplaywright-report-e2eunder an unbound root, is still refused. The existing literal, argv and cwd retained-reader refusals still pass.main-sync-input-references.test.ts(184 pass) andtsc --noEmitare clean. The Python pin tests (22 and 8) and vibe-benchreply-checker.test.ts(4) pass.verifyReportExecution(fixed-check, pnpm typecheck:affected, tasks [@repo/control#typecheck])REFUSED with the ISS-14015 message on unfixed code and PASSES with this change. The closure over compare.mjs and over all ofpackages/controlpasses too.