Unblocked
gstack’s /ship stops blocking Django, Flutter and asset-only branches
In a repository that never opted in, a Django migration, a font, or a Dart test file used to stop /ship cold at the pre-gate. Now those branches get the right tests, or none, and ship.
Django
Django apps select their own tests
In a Django project, an app's migrations, admin file and templates now pick that app's tests, plus the tests that reach its models. And every Python test depends on the settings module.
Assets
Fonts, images and tool config need no tests
Images, fonts, PDFs, editor settings and lint config now pass with no tests, as long as no test names the file. Stylesheets, CI workflows, environment files and version pins still need a lane.
Dart lanes
The pre-gate runs Dart and Flutter tests
Dart and Flutter repositories get real lanes. Each package runs its own tests with flutter test or dart test, through fvm when the package pins it. If the Dart SDK is missing, the result is incomplete, never a pass.
Reviews
Flutter PRs get the design, performance and security reviewers
A Flutter widget change used to get only the testing pass in review. Now a Dart file counts as both frontend and backend, so the design, performance and security specialists all run, and /ship offers flutter test.
Init
gstack-pregate init drafts a policy from your repo
Setting up the pre-gate starts from your repository now. Init prints the languages it found and the test runner for each. Files it cannot place map to the nearest directory's tests, and the rest are marked to do.
Also
Three smaller fixes
Passing a commit as the base now gets a branch suggestion. Adversarial review measures diff size the same way review army does. And a tricky directory change in CI no longer sends tests to the wrong folder.
Your turn
The full notes are in gstack’s changelog
CHANGELOG.mdgstack 1.91.160.0 and 1.91.161.0, October 19The details are in gstack's changelog. Which framework is your repository on when you run /ship?



















