Repository navigation
crossweft 0.2.2
Release commit (pin this in CI): 9cd31dd333dd04fc65b9d47540893fd3d98a9ee6
python -m pip install "git+https://github.com/happyin-app/crossweft.git@9cd31dd333dd04fc65b9d47540893fd3d98a9ee6" # v0.2.2check --incremental:--changedagainst the last commit at which the check
passed in this work tree, plus the paths that were uncommitted then (they
rerun, so reverting an uncommitted file cannot bring back unchecked bytes);
the full check when there is no such commit, another crossweft version or
build recorded it (the record keeps a digest of the engine code), or the map,
config or a joint plugin changed. HEAD and the uncommitted paths are read
before the check runs, so a commit landing meanwhile is never recorded. A pass moves the
commit forward. The record lives in the git directory (per worktree, never
committed). Exclusive with--changed; refused with--format sarif.- The stop hook runs
check --incremental. Measured on a 1,140-file map with
13 joint kinds: full check 385 s; a stop after editing one source file 38 s. joints.sourcesincrossweft.json: the plugin files and the helpers they
import, for ajoints.dirthat also holds unrelated code.--changedthen
falls back to the full check only when one of those files changes (before:
any change underjoints.dir). A plugin that imports a helper from its
directory, or reads a file from it while imported or checked, that neither
sourcesnor the kind's inputs cover is an error
(joints:unlisted-read:<kind>:<path>), so the list cannot go stale silently.
Globs match the way--changedmatches them, part by part.