Activation and selection
Pack activation and rule selection are separate:rule_packscontrols which shipped catalogues are available.select,warn, andignoreassign available pack identities to policy tiers.- Activating a pack does not select it.
- A pack selector matches no identities until its pack is activated.
- Pack names must be registered and unique.
Codes and namespaces
Fensu reservesFP for shipped native packs. Each pack owns a namespace beneath
that prefix. The Dagster, Rust, TypeScript, and SvelteKit packs own FPDG, FPRS,
FPTS, and FPSK.
Pack-native rules append their numeric identity directly, such as FPDG022.
Retained core aliases preserve the core family and number after the pack namespace:
FFA001 becomes FPDGA001 in the Dagster pack.
Pack-to-pack aliases follow the same rule: FPTSA001 becomes FPSKA001 in the
standalone SvelteKit pack.
An alias executes the canonical native implementation while diagnostics retain the
selected pack identity and disclose provenance:
Native execution
Pack-native rules and retained aliases execute without starting Python. They use the same deterministic discovery, caching, warning, ignore, exception, and output machinery as core rules. Activating a native pack by itself does not require a Python interpreter. A project that also configuresrule_paths, rule_modules, or custom-rule options still
uses the custom-rule metadata host for those custom rules.
fensu rule shows Kind: pack, the owning pack, and any canonical
alias target for an activated identity.
Available packs
Dagster
A standalone Dagster repository architecture with 23 native policies and 101
retained core aliases.
TypeScript and SvelteKit
Framework-independent TypeScript policy and a standalone SvelteKit policy
with transparent TypeScript aliases.
Rust
Native Cargo workspace analysis with 117 layout, dependency, naming, shape,
hygiene, and test-convention rules.

