Repository navigation
v1.7.0
Added
-
Traits: rules that apply only where the thing exists (SEMANTICS §2.5).
A rule file may sayapplies: [cli]; a registry declares the vocabulary
(traits:, carried in its pack) and which parts of the repository have which
traits (areas:, glob → traits, consumer-local). Withareasdeclared,
aval rules, theaval_rulestool and the session hook list only rules that
apply to the declared traits — a repository with no command line stops
printing command-line constraints at every session start.Filtering is display, never activity. A hidden rule is still active,
aval rule <id>explains it, and--all-traits/all_traits: truelists
it. Every filtering surface reports what it hid: a stderr notice under
aval rules,omitted(constraints,heuristics,traits) in every
--jsonand tool payload, and one hook line printed wheneverareasis
declared, zeros included — so an area that hides everything is seen at every
session start, not only in the diff that added it. A path no area covers
filters nothing; an area declaring[]keeps only untargeted rules. -
aval traits: the declaration (--json, and theaval_traitstool);
--summary, the hook's line, which reads the corpus only and needs no git;
--detect, which proposesareas:from tracked files; and--check, which
reports a detected trait no area or disclaim covers for that package,
and any glob matching no tracked file.--checkexits0/1findings /
3could not inspect — git missing or failing, an unreadable file, a
package.jsonthat is not JSON. A TOML manifest is scanned, never parsed,
and never exit3.Detection is advisory and unpinned: it leans toward reporting (a false
positive costs adisclaims:line; a miss would hide a constraint), and a
detector getting better is a patch. Today it knowscli(Cargo bins,
package mainoutside//go:build ignore, Python script tables, a
package.jsonbin) andui(React, Vue, Svelte, Solid, Preact, Angular,
Lit independenciesorpeerDependencies, or.tsx/.jsx/.vue/
.sveltefiles). -
Three checks, each firing only where the new fields are present:
rule-applies-declared,areas-declared,areas-parse. -
The glob dialect is normative and pinned by
conformance/traits.json,
with the applicability table beside it.
Changed
- The hook speaks where it used to go silent. When the installed aval is
older than the one that wrote the script, its first line says so and names
the upgrade; whenaval headsfails on a repository that has a registry, one
line says so and to runaval check. Without aval installed it still says
nothing.
Upgrading
brew upgrade avalon every workstation before a repository adopts
traits,areasordisclaims: aval before 1.7 refuses such a registry,
and a pack carryingtraitsorapplies.- Everybody re-runs
aval hook install(the script changed); bump each
workflow'sAVAL_VERSIONpin in the same pull request. - Order: release the tool, publish the producer pack with
traitsand
applies, then let each consumeraval addand commit its reviewed
areas:together.
What's Changed
- feat: traits, areas and aval traits (1.7.0) by @fredericrous in #29
Full Changelog: v1.6.0...v1.7.0