Skip to content

Releases: Layrix-ai/LLLL

LLLL Guard 0.3.0: requires Node.js 22.12 or newer

Choose a tag to compare

@JettyMarquis JettyMarquis released this 04 Oct 17:43
Immutable release. Only release title and notes can be modified.
4dc59f7

LLLL Guard 0.3.0: requires Node.js 22.12 or newer

Breaking for some users: the minimum Node.js version is now 22.12. Node 20 reached end of life in April 2026, and commander 15 (the command-line library the package ships with) needs 22.12 or newer. If you are on Node 20, stay on 0.2.x or upgrade Node first. 0.2.x will not receive further fixes.

node --version                      # must be v22.12.0 or newer
npm install -g @layrix.ai/llll-guard@latest
llll-guard --version                # 0.3.0

What changed since 0.2.0

The package

  • engines is >=22.12.0. The guard launcher checks major and minor (22.0 to 22.11 are refused) and says "Node.js 22.12 or newer was not found" when it finds none; in a git hook that is the same warn-first behaviour as before (LLLL_GUARD_STRICT=1 stops the push).
  • commander 13 to 15 and minimatch 10.2.5 to 10.2.6. No behaviour of the command line changes: the options and exit codes (0 passed, 1 blocked, 2 could not run) are the same, and the whole test suite (712 tests, run against the real CLI and real git) passes on Node 22 and 24, Linux and macOS.
  • Development: vitest 5. CI now runs on Node 22 and 24.

The skill and the documents (the clone, not the npm package)

  • SKILL.md is split: a 912-line core and five reference files it tells the model to read on demand (scan, guard and review modes, menus, output standards, observation storage). Same content; about half of what every /llll call loads.
  • A pass over examples, sample audits and the checklist corrected factual errors and unsupported statements (for example the affected versions of CVE-2025-29927, poetry audit, sk- versus Stripe key formats). Statements that depend on how a law applies are waiting for expert review.
  • SECURITY.md (private vulnerability reporting is on), CONTRIBUTING.md, issue and pull request templates, Dependabot updates.
  • The fork monitor no longer fails the run or mentions a takedown when someone forks the repository; the licence is MIT.

Upgrading a project that has the hook installed

Nothing to reinstall. The hook runs the launcher, which finds a suitable Node. If your shell's default is Node 20, install Node 22.12 or newer (or set LLLL_NODE to one) before pushing; otherwise the hook warns that the push was not checked.

Known gaps

Legal and regulatory wording in the examples is awaiting expert review. Failing closed (stopping a push when Node or the engine is missing) becomes the default in 1.0.

LLLL Guard 0.2.0: one engine, no silent passes

Choose a tag to compare

@JettyMarquis JettyMarquis released this 03 Oct 07:56
Immutable release. Only release title and notes can be modified.
218bace

LLLL Guard 0.2.0: one engine, no silent passes

Guard is now a single TypeScript engine (@layrix.ai/llll-guard, Node.js 20 or newer). The bash guard script is a small launcher that finds Node and the engine; it holds no rules. This release is a transition release: it is warn-first (see below), and 1.0 will fail closed.

What changed

The gate no longer passes when it could not look. Exit code 0 is a pass, 1 is a block, 2 means the guard could not run, and 2 is never a pass. Before: the bash script crashed or passed silently on macOS's bash 3.2, the release gate printed "Nothing to scan" and exited 0, and an unreadable policy or a git error could end in a pass.

Push gate

  • The pushed range comes from git's pre-push input (new branches, tags, force-pushes, deletions, several refs), not from the current branch's upstream.
  • Secrets: provider-format keys and private keys (including PKCS#8 and PGP) are never downgraded; values published on purpose (NEXT_PUBLIC_*, env templates) are reported, not blocked, by comparing the value itself. Docs and env templates are scanned.
  • Overrides work: token-scoped to one finding on one version of one file, expiring (14 days by default), confirmed in a terminal, logged. HARD rules cannot be overridden.
  • Changes to llll.policy.json, .guardignore or llll.whitelist.json raise PG-S011. The policy is read from the remote's default branch, so a push cannot switch the gate off for itself.

Release gate: reads the files npm pack would publish (with --ignore-scripts), every file, any encoding; inline source maps, internal files, secrets; a file it could not read is a finding (RG-S008).

Hook: works in git worktrees and with core.hooksPath; keeps your own pre-push hook and runs it after the guard; no network npx; uninstall-hook restores it. husky, overcommit and lefthook are not chained: the installer prints the line to add.

Installers: Claude Code links the skill files only; opencode and Codex installers can upgrade and --uninstall, never truncate your config, and back files up.

Skill: one folding rule (round(N/2)), the credential downgrade rule matches the engine, corrected scan patterns, allowed-tools narrowed to specific commands plus llll-guard push|release, and /llll guard runs the engine first.

Upgrading

npm install -g @layrix.ai/llll-guard      # Node.js 20 or newer
cd your-project && llll-guard install-hook

If you installed the old bash hook, git pull in ~/.llll and run ~/.llll/guard doctor --fix; the old hook keeps working and tells you to reinstall it.

Warn-first. If Node or the engine cannot be found when you push, the hook warns loudly, writes .llll/logs/guard-not-run.log and lets the push through. Set LLLL_GUARD_STRICT=1 to stop the push instead. Failing closed becomes the default in 1.0.

Known gaps

Legal and factual corrections in the examples and sample audits are pending an expert review; SKILL.md is still one large file.