Repository navigation
v1.91.161.0 fix(pregate): Django, Dart, asset and tool-config lanes; init drafts from the repo (#3266-#3269) - #3306
Conversation
Port of arlophoenix's #3285. The import graph reads Dart import/export/part directives and resolves package: URIs through every tracked pubspec.yaml; _test.dart files under test/ are tests. lanes runs each Dart package's selected tests from its own root with flutter test or dart test (through fvm when the package pins it). flutter/dart/melos/very_good CI jobs are lanes, and run-step test paths resolve against working-directory and literal cd. A missing Dart SDK or a .dart file outside any package leaves the lane incomplete with a fix line; device tests (integration_test/, test_driver/) are not unit lanes. Co-authored-by: arlophoenix <arlo.phoenix@gmail.com> Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
…impossible fetch (#3269) gstack-pregate --base <sha> refused with "fix: git fetch origin <sha> --depth=1". That fetch can never create origin/<sha>: a short SHA fails with "couldn't find remote ref", and a full SHA only reaches FETCH_HEAD. A fork clone hits the same wall with --base upstream/main. When origin/<base> does not resolve but <base> names a commit here and no local branch (a SHA, a tag, another remote's ref), the refusal now says --base takes a branch name on origin and suggests origin/HEAD's branch. A local branch, or a name that resolves nowhere, keeps the fetch fix: that is the unfetched or shallow checkout it repairs. Same code, same exit 3, and pin files are still read only from the reviewed origin/<base>. Fixes #3269 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…he repo (#3266, #3267, #3268) - Django: settings modules, settings strings, include(), app migrations, admin, templates, static files and project templates get framework edges (lib/pregate/django.ts). - Assets, stylesheets and dotfile tool config take a no-tests empty lane; licence text under any name is documentation. - gstack-pregate init drafts languages, runner notes and nearest-test dependencies; never writes []. - Review fixes on the #3285 port: untracked shell scopes leave a lane unknown; Dart directives read to their semicolon; nested comments. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
… has a lane Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
- Tool config is an allowlist: unknown dotfiles (.rspec, .husky hooks) and stylesheets still need a lane; snapshot, golden and fixture trees and .gstack/ are never inert. - Django edges need Django evidence (manage.py or code importing django) and settings assignments in code, not strings or comments. - A cd after ||, &, control flow or braces leaves a lane unknown. - Dart directives allow metadata and quoted semicolons. - init drafts at most 256 dependencies (the schema limit); the rest are TODO. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
|
😎 This pull request was merged. |
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md
E2E Evals: ❌ FAIL121 executed, 0 reused rule/judge records | 0 manual accepted (unscored; no score-cache credit) | $32.78 rule/judge cost | reconcile exit: 1 Profile: pr / mode Derived dependents (scripts/pr-dependencies.ts):
Rule and judge shards
Fail-closed reconciliationSliced lane: planner → duration-packed executors → fail-closed report. Behavior cases run a pre-registered 3-trial panel (PASS at 2/3 with no contract violation); a PASS 2/3 is shown with its failed trial, never as a clean pass. Reused results retain their original provenance and expiry. Failures and split verdicts |
…gate fixtures Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
|
flaky: qa-only-no-fix, failed in https://github.com/garrytan/gstack/actions/runs/39313931713 (attempt 1, slice 8: |
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md
|
flaky: review-exploratory-small-cli, failed in https://github.com/garrytan/gstack/actions/runs/39320737890 (attempt 1, slice 8), passed on rerun attempts 2 and 3, logged for the daily flaky-fix pass. flaky: ship-exploratory-plan-checks, failed in https://github.com/garrytan/gstack/actions/runs/39320737890/attempts/2 (slice 8, |
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> # Conflicts: # CHANGELOG.md
Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com>
|
flaky: ship-exploratory-late-input, failed in 39351737002 attempt 1 (eval-slices 7: "command outside declared caller observation interface"), passed on rerun 39351737002 attempt 2, logged for the daily flaky-fix pass. flaky: test/setup-ps1.test.ts PowerShell 5.1 legacy cases, failed in 39351736921 (windows-setup, 5 s timeout, exit null), passed on rerun 39351736921 attempt 2, logged for the daily flaky-fix pass. |
|
Merging under Garry's flaky-test rule (2026-10-19). ship-exploratory-late-input failed in attempt 1 of run 39351737002 and passed on the rerun of slice 7 only. setup-ps1 PS 5.1 timed out, and its job rerun passed. Both are logged and unrelated to this diff. — GStack Minder |
gstack-pregatestopped/shipwithPREGATE_NO_LANEon routine changes in Django, Dart and Flutter repos, and on branches that only touched assets or tool config, even in repos that never opted in. This fixes the four user reports and lands two contributor PRs.Issues
Fixes #3266
Fixes #3267
Fixes #3268
Fixes #3269
Supersedes #3285 (@arlophoenix, squashed with
Co-authored-by) and #3290 (@szsunyuan, cherry-picked with authorship kept).What changes
lib/pregate/django.ts. With Django evidence (amanage.pyor code importing django) and a settings module (code, not a string or comment, assigningINSTALLED_APPS/ROOT_URLCONF, or the moduleDJANGO_SETTINGS_MODULEnames), the graph getsframeworkedges: every Python test depends on the settings module; dotted strings in settings andinclude("app.urls")count as imports; an app's migrations,admin.py,templates/,static/,templatetags/,management/,fixtures/andlocale/select the app's tests and the tests reaching itsmodels.py(the suite when the app has no tests); project-level templates select the suite. Edges only add tests.lib/pregate/docs-lane.ts. When nothing maps the file to a test: images, fonts, media and PDFs (outside snapshot/golden/fixture trees) and an allowlist of tool config (.pre-commit-config.yaml,.editorconfig, lint/format config,.vscode/,.idea/,.impeccable/, GitHub issue templates/CODEOWNERS/dependabot) take ano-tests (assets and tool config)empty lane; licence text under any vendored name is documentation. Stylesheets, unknown dotfiles (.rspec,.husky/), CI workflows,.gstack/,.env*, version pins and unmapped code still fail closed. The existing docs/no-tests labelling is unchanged (a declared[]SVG stays unlabelled, aspregate-docs-lane-reviewpins).initdrafts from the repo (gstack-pregate init writes a fixed placeholder instead of a draft from the repo #3268),lib/pregate/init-draft.ts. It prints the languages and the runner each language's tests get, maps every file the graph cannot place to the tests of its nearest directory with 1–25 tests (up to the 256-entry schema limit), and lists the rest, plus planner-computed lanes needingselection, asTODO. It never writes[], so committing the draft unedited can only add tests.package:URIs through every trackedpubspec.yaml; per-packageflutter test/dart test(through fvm when pinned); Dart CI jobs as lanes withworking-directory/cdpath resolution; missing SDK or nopubspec.yamlisincomplete; device tests are not unit lanes.--base <sha>(gstack-pregate --base <sha>: POLICY_SOURCE_UNAVAILABLE suggests a git fetch that cannot fix it #3269, fix(pregate): a --base that names a commit gets a branch fix, not an impossible fetch (#3269) #3290). A SHA or another remote's ref gets "pass a branch on origin" instead of a fetch that cannot help.Review
gstack /review (Claude Opus 5.5) plus two outside-voice rounds on GPT-6 Astra. Fixes made on top of the contributor code: a
cdin a pipeline,||, background job, control flow, command substitution or redirected subshell now leaves a CI lane's test set unknown instead of resolving later paths against the wrong directory (which dropped a Windows obligation in a probe); Dart directives are read to the next unquoted;with metadata and nested comments, so an unindented conditional import no longer loses edges. #3286 (user-owned policy) is not ported: review found that the repo's.env(auto-loaded by Bun) can redirect the user-policy path, so it got a request-changes comment.Gate integrity
test/pregate-non-js.test.ts(Django, assets/licence/tool config, init, the shell and Dart review fixes; each with negative controls) andtest/pregate-dart.test.ts(from fix(pregate): Dart import graph and test lanes #3285),test/pregate-wtree-refusal.test.ts+1 case (from fix(pregate): a --base that names a commit gets a branch fix, not an impossible fetch (#3269) #3290). Every new positive case fails on the tree before the fix (checked on 2084712's parent).test/helpers/pregate-fixture.ts: the git helper's error message reports status, signal and spawn error (from fix(pregate): Dart import graph and test lanes #3285); its throw condition is unchanged.Checks run
typecheck clean; test typecheck ratchet 819 known, none new; pregate suites (non-js 11, dart 21, selection 28, docs-lane-review 3, import-graph-paths 12, manifest-paths 4, bats-nested 6, wtree-refusal 8, invalidation 3, guards 11, regate 8) all green; troubleshooting-anchors 223, module-size ratchet, spawnsync tripwire green; credential scan clean.
gstack-pregate --stage tests --remote(Ubicloud, $0.04): 9301 tests, 0 failed on tree 343024f33de4; macOS and Windows lanes left to CI. Paid gate selection: the full PR gate (every case reachesbin/gstack-pregate).