@massu/core 1.16.0 → 1.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -0
- package/dist/cli.js +468 -160
- package/dist/hooks/session-end.js +17 -7
- package/dist/hooks/session-start.js +17 -7
- package/dist/hooks/user-prompt.js +5 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,64 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
10
10
|
> redistributed under the **Apache License 2.0**. Full license + NOTICE:
|
|
11
11
|
> `packages/core/assets/embedder/MODEL-LICENSE`.
|
|
12
12
|
|
|
13
|
+
## [1.16.2] - 2026-07-15
|
|
14
|
+
|
|
15
|
+
### Security
|
|
16
|
+
|
|
17
|
+
- **License-response signature verification is now STRICT by default (SEC-3 cutover).** The client
|
|
18
|
+
previously ACCEPTED unsigned or wrong-key `/validate-key` responses with a one-shot warning
|
|
19
|
+
(transition mode) unless the operator set `MASSU_REQUIRE_SIGNED_LICENSE=true`. As of `1.16.2`,
|
|
20
|
+
strict mode is the DEFAULT: an unsigned or invalid-signature response is rejected and the client
|
|
21
|
+
falls through to the grace-period cache or the free tier, closing the MITM / malicious-endpoint
|
|
22
|
+
tier-forgery window for good. This is safe because `1.16.1` shipped the rotated key as the bundled
|
|
23
|
+
PRIMARY pubkey and production signs every successful response with it (verified by a live
|
|
24
|
+
`valid:true` signature smoke). The only way back to warn-and-accept is an explicit
|
|
25
|
+
`MASSU_REQUIRE_SIGNED_LICENSE=false` — an emergency valve for a production signing outage.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
|
|
29
|
+
- **Public-sync boundary correction (repo tooling; no npm-package change).** Completing the `1.16.1`
|
|
30
|
+
public sync surfaced that its sync tooling wrongly copied `.claude/agents/` and
|
|
31
|
+
`.claude/commands/_verification-laws.md` into the public git repo to satisfy an
|
|
32
|
+
internal-governance test's DOGFOOD assertion. That crosses the documented public/internal boundary:
|
|
33
|
+
the review/workflow agents reach users through the npm package (`@massu/core` `files:
|
|
34
|
+
["agents/**/*"]`), not the public git repo, and the public-repo leak-guard allowlist intentionally
|
|
35
|
+
omits `.claude/agents/`. `1.16.2` reverts those copies and instead excludes
|
|
36
|
+
`verification-laws-shipped-and-wired.test.ts` from the mirror (the same pattern already used for
|
|
37
|
+
the other internal-only governance drift-guards), and genericizes two dev-script comments that
|
|
38
|
+
referenced internal incident paths so the public mirror carries no dangling internal references.
|
|
39
|
+
|
|
40
|
+
## [1.16.1] - 2026-07-14
|
|
41
|
+
|
|
42
|
+
### Security
|
|
43
|
+
|
|
44
|
+
- **License-response signing key rotated (SEC-1).** The Ed25519 key that signs `/validate-key`
|
|
45
|
+
responses was rotated after a live private key was found committed in a tracked runbook (SEC-1,
|
|
46
|
+
`docs/reports/2026-07-14-codebase-audit-findings.md`). Production now signs with the new key and
|
|
47
|
+
stamps the new fingerprint `18c04567…`; the bundled client pubkey (`license-pubkey.generated.ts`)
|
|
48
|
+
is regenerated to trust the new key as primary while keeping the old key in the allowlist for the
|
|
49
|
+
transition grace window. A live signature smoke confirmed a real `/validate-key` success is signed
|
|
50
|
+
by the new key and verifies. The drift-guard `no-committed-private-keys.test.ts` forbids
|
|
51
|
+
re-introduction of any private key.
|
|
52
|
+
|
|
53
|
+
### Fixed
|
|
54
|
+
|
|
55
|
+
- **The 2026-07-14 codebase-audit closure is now actually delivered.** The audit-closure fixes were
|
|
56
|
+
committed (`4f4c688`) but never published — `1.16.0` on npm predates all of them. `1.16.1` ships:
|
|
57
|
+
fail-closed engine startup on a fatal DB/ABI error (SF-1), Pro-tier gating of the `/v1` capability
|
|
58
|
+
endpoints (SEC-2), the two wired-but-previously-dead CLI subcommands `massu rule show` /
|
|
59
|
+
`massu rule effectiveness` (DF-1/DF-2), the documented-but-missing webhook-test route (BND-1), and
|
|
60
|
+
the cloud-sync "server-error-as-empty" fix (BND-3).
|
|
61
|
+
|
|
62
|
+
### Added
|
|
63
|
+
|
|
64
|
+
- **CR-64 release-integrity gate — a published version number is immutable.** A pre-push + CI gate
|
|
65
|
+
(`scripts/release-integrity-check.mjs`) fails the moment `packages/core`'s version equals an
|
|
66
|
+
already-published npm version whose `vX.Y.Z` tag is missing or not at HEAD. This closes the class
|
|
67
|
+
where `1.16.0` was published without a git tag or release ceremony and then reused for six more
|
|
68
|
+
commits that read as "SHIPPED" while never delivered to customers. Incident:
|
|
69
|
+
`docs/incidents/2026-07-14-npm-publish-decoupled-from-release-ceremony.md`.
|
|
70
|
+
|
|
13
71
|
## [1.16.0] - 2026-07-14
|
|
14
72
|
|
|
15
73
|
### Fixed — cloud sync had, in practice, NEVER succeeded for a real session
|