github feder-cr/AIHawk v0.68.1
0.68.1

latest releases: v0.68.3, v0.68.2
4 hours ago
  • The language gate comes from the core, and this repository exempts nothing

invisible-core 30.23.0 carries the check that a public repository is English,
as invisible_core.english. Until now it was a script copied here from the
wrapper, and the copy carried the wrapper's data with it: four of the five
paths in its exclusion list - src/invisible_playwright/_pw/, _driver/,
_juggler/injected.js, tests/test_fork.py - do not exist in this repository
and never did. A dead exclusion never makes anything red, which is exactly why
nobody found it; the shared gate refuses one.

So scripts/check_english_only.py is deleted, the english CI job installs the
core and runs the module, and the tool-description test imports the word list
from invisible_core.english instead of loading the script by path. This
repository declares no [tool.invisible.english] at all: measured, the shared
gate reads 245 tracked files here and is silent with nothing exempt.

The dependency floor moves to invisible-playwright>=0.16.2, which is the
first wrapper pinning a core that has the module the test imports.

  • The version is declared in three files, and the suite declares what it imports

Three things the CI found on the first run, all of them mine and all of them
real.

The version lives in pyproject.toml, manifest.json and server.json, and
bumping one left two behind: the gate compares them and said so. Bumped.

invisible-core is now a DECLARED test dependency. It was already arriving
through invisible-playwright, so nothing was missing at runtime - but since
30.23.0 the language gate is invisible_core.english and two test files import
it directly, and an import that leans on a transitive dependency works until the
day the wrapper stops needing the core. test_the_suite_declares_everything_it _imports caught it against the published stack, which is what it is for.

And test_the_gate_says_which_tree_it_judged.py is rewritten against the module
instead of the deleted script. Its own docstring had named this consolidation and
said it was not done yet - "the single home for a rule that all three must obey
is invisible_core ... that consolidation is a core release and is not done here".
It is done, so the test that asserted the REFUSAL is gone: the script could only
judge where it lived, so pointing it elsewhere was a mistake to catch; the module
takes the tree as an argument, so pointing it elsewhere is an ordinary request.
What replaces it is the property the refusal was protecting - a cross-repo run
answers about the tree it was given and names it, and pointed at a guilty tree it
accuses THAT one rather than reporting its own clean state. The file also pins
what the copy cost: four of the five exclusions it carried named paths that only
ever existed in the wrapper, and this repository now declares none.

Suite 693 passed against the published stack - invisible-core 30.23.0 and
invisible-playwright 0.16.2 resolved from the index, in a clean venv. ruff clean,
language gate clean on 245 files with nothing exempt.

Don't miss a new AIHawk release

NewReleases is sending notifications on new releases.