Repository navigation
Release 1.6.6: short task-checks command - #32
Merged
Merged
Conversation
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.
Release 1.6.6: short task-checks command.
On e1a, 7 of 40 task-checks calls never ran: the Bash tool on Windows fails a command of about 7,000 characters or more, and those commands were 6,907 characters or longer. The command carried every path in the task's Files list (
--declared) and the lane's check commands twice (--lane-cmdand--wide-cmd), so it grew with the task.Now setup's owner map (
owners.json) records each task's declared Files list, and the engine passes a fingerprint of it instead:--declared-from-owners N:HHHHHHHH, the path count and a 32-bit FNV-1a hash of the paths. task-checks reads the list from the owner map and checks it against the fingerprint; on a mismatch it writes an error record and exits 3, so a wrong list never decides the check policy. When the wide list equals the lane list the engine passes--wide-as-laneinstead of repeating the commands. The command no longer grows with the Files list (1 file and 200 files differ by at most 2 characters), and an e1a-sized unit's command is under 4,000 characters.Also in this release:
--scopetakes--declared-from-ownerswith--ownersthe same way; when it cannot build the list from the owner map it says so in the scope section instead of guessing.--declaredand--wide-cmdstill work for a call made by hand.Testing: built by a parallel-lanes run on 1.6.5 (r166): 7 tasks in a prelude, 3 lanes and a join in two waves, each task implemented and reviewed, then integration, a three-lens final review (7 minor findings, 5 fixed; 2 declined, both about the engine's own join-wave merge messages, which have no conventional prefix: left for a later release) and a verify run. Fingerprint fixtures are shared by the Python and JavaScript tests, including quotes, spaces, non-ASCII paths and a lone surrogate. An end-to-end test on real git checks that the engine-built command gives the same check policy as the old long form. Full suite on Windows (Python 3.15): 1715 tests, 1699 pass, 16 skipped, 0 fail. Not run: a validation run on a real project.