--- name: experimental-code-coverage-verification-prep description: >- Prepares a Gerrit CL for code coverage verification try jobs. Adds dummy comments to trigger builds, optimizes builder configs by isolating test suites, and commits all changes. --- # Prep Verification Build This skill modifies workspace files to ensure LUCI builders run, isolates target test suites in builder Starlark files for speed, and uploads a Work-In-Progress (WIP) Gerrit CL. It is used to prepare both experimental branches with fixes and clean baseline branches. ## When to Use This Skill - After making potential configuration fixes and needing to run a verification build. - To create a "Baseline" CL on a clean branch, with only the necessary modifications to trigger and speed up the build. ## Inputs (Read from scratch/triage_state.json) This skill reads its primary inputs directly from `scratch/triage_state.json`. The only dynamic selector passed in the subagent prompt is `role` (`"Control"` vs. `"Fix"`): - `target_files`: A list of file paths that need a dummy comment to ensure they are included in the build's affected files. - `builders_of_concern`: A list of target builder names (e.g. `["linux-rel"]`). To locate the `.star` Starlark configuration file for each builder, reference [builder_star_map.json][star_map]. - `test_suites`: The test suite names to isolate in the builder configurations. - `bug_id`: The issue ID for context in the CL description. - `control_branch_name` / `fix_branch_name`: The git branch to check out. If `role` is `"Control"` (or `"control"`), check out `control_branch_name`. If `role` is `"Fix"` (or `"fix"`), check out `fix_branch_name`. ## Workflow 1. **Checkout Branch**: Read `scratch/triage_state.json` and check out `control_branch_name` (if `role` is `"Control"`) or `fix_branch_name` (if `role` is `"Fix"`). ```bash git checkout {{selected_branch_name}} ``` 2. **Add Dummy Comments**: - Iterate through each file in `target_files` (from `scratch/triage_state.json`). - Append a unique dummy comment to each file (e.g., `// Verification run for b/{{bug_id}}`). ```bash # Example for one file echo "// Verification run for b/{{bug_id}} $(date)" >> {{file_path}} ``` 3. **Optimize Builder Configurations**: - For each builder in `builders_of_concern` and its `.star` file: - Locate the builder definition. - Modify the test suite declarations to *only* include the target suites from `test_suites` (from `scratch/triage_state.json`). - **Example Modification**: Change existing test bundles to: ```python # Example for a builder's test targets targets = targets.bundle(targets = {{test_suites}}) ``` - After modifying the `.star` file(s), regenerate configuration artifacts directly from the repository root: ```bash lucicfg generate infra/config/main.star ``` This updates the underlying JSON build specifications. 4. **Commit Changes**: - Stage all modified tracked files in the workspace using `git add -u`. This stages the dummy comments and updated builder configurations while safely ignoring any untracked scratch files or local skills. ```bash git add -u ``` - Create a commit using the structured naming format. Note that the commit title must explicitly state `(Control)` or `(Fix)` based on `role`. If `test_suites` contains multiple test suites, join their names or list them. - **Commit Message**: ```text Verify Code Coverage Change for {{test_suites}} ({{role}}) This was generated by the Code Coverage Debugging Agent. Role: {{role}} Verification Target Files: {{ target_files }} {{ summary of applied GN/Starlark/recipe fixes or trimming }} Bug: {{bug_id}} ``` ```bash git commit \ -m "Verify Code Coverage Change for {{test_suites}} ({{role}})" \ -m "This was generated by the Code Coverage Debugging Agent." \ -m "Role: {{role}} Verification" \ -m "Target Files: {{ target_files }}" \ -m "{{ summary of applied GN/Starlark/recipe fixes or trimming }}" \ -m "Bug: {{bug_id}}" ``` 5. **Upload to Gerrit**: - Upload the CL as a Work-In-Progress (WIP). - Do **NOT** pass `--cq-dry-run` to the upload command. ```bash git cl upload -f --bypass-hooks -o wip ``` 6. **Update State File**: - Update `scratch/triage_state.json`: write the uploaded CL URL into `control_cl` (if `role` is `"Control"`) or `fix_cl` (if `role` is `"Fix"`). ## Output - The URL of the uploaded Gerrit CL. - Confirmation that `scratch/triage_state.json` (`control_cl` or `fix_cl`) has been updated. ## References - [lucicfg Reference Manual][lucicfg_ref] [star_map]: ../experimental-cq-debugger/references/builder_star_map.json [lucicfg_ref]: https://chromium.googlesource.com/infra/luci/luci-go/+/HEAD/lucicfg/doc/README.md