Skip to content
v1.7.0May 11, 2026

Massu 1.7.0: cohesive cleanup — stats SoT + monorepo domain-inferrer + npm dist-tag hygiene

Cohesive minor release bundling three structural-quality fixes in one ceremony: stats-vs-source-truth drift-guard for the homepage, monorepo domain-inferrer fix for non-src/ layouts, and removal of the stale `next: 1.2.1` npm dist-tag with policy documented in CLAUDE.md.

Massu 1.7.0: Cohesive cleanup release

Three structural-quality fixes shipped together because they all share Stage D ceremony cost (npm publish + Vercel deploy + sync-public.sh).

Stage A — website stats SoT drift-guard

New vitest test stats-numbers-against-source-truth.test.ts asserts each homepage stat equals a static derivation from its canonical source:

  • MCP Tools count ← name: p('xxx') patterns across packages/core/src/*/.ts
  • Workflow Commands count ← public command files under .claude/commands/massu-*.md (operator-restricted variants are excluded from the count)
  • Feature Entries ← tier: lines in features.ts
  • Database Tables ← CREATE TABLE in website/supabase/migrations/
  • Lines of Code (K+) ← packages/core/src/*/.ts total / 1000

Adding a new tool/command/migration without updating stats.ts FAILs the test. Companion script website/scripts/regen-stats.mjs emits expected values from the same derivation logic.

CLI Reference doc expanded from 5 CLI commands to 5 CLI + 59 slash commands; new cli-reference-doc-completeness.test.ts drift-guard asserts every external .claude/commands/massu-*.md has a matching ## /<command-name> H2 in the doc.

Team-tool surface gains a runtime cloud-gate via new isCloudFeatureAvailable() helper in packages/core/src/license.ts, wired at tools.ts:175 (registration) and tools.ts:413 (dispatch). Team tools team_search / team_expertise / team_conflicts are now correctly hidden and non-routable for workspaces without explicit cloud.enabled: true.

Stage B — monorepo domain-inferrer fix (P6-004)

topLevelSrcSubdirs in packages/core/src/detect/domain-inferrer.ts:71 no longer hardcodes join(root, 'src') — it now consumes the detected source-dir pipeline. New fixture monorepo-apps-no-root-src with workspaces-driven layout + 4 new domain-inferrer test cases exercise both single-repo non-src/ layouts and monorepos. Generalization-scanner Check 5 prevents the bug class from recurring.

New flattenSourceDirs() helper drops root sentinels (. and '') so root-source repos (Django's manage.py, Swift's Package.swift) continue to use the language-fallback domain (Python, Swift) rather than spuriously enumerating root subdirectories.

Stage C — npm dist-tag hygiene

Stale next: 1.2.1 npm dist-tag (4 minors behind, zero documented consumers) removed via npm dist-tag rm @massu/core next. New ### npm dist-tags policy section in .claude/CLAUDE.md codifies that only latest is maintained going forward. Pre-push step 9 (Dist-Tag Pre-Release) enforces with npm view @massu/core dist-tags parse — FAILs on any next:|beta:|alpha:|rc: channel without an ADR + CLAUDE.md opt-in.

Ship state

npm view @massu/core dist-tags reads:

{ latest: '1.7.0' }

Production deploy at https://massu.ai/ HTTP 200; all 4 critical routes (/, /docs, /changelog, /overview) live. Plan converged 14→3→0 across 3 audit iterations pre-loop. See plan-1.7.0-cohesive-cleanup and [1.7.0] in CHANGELOG.md.

Try this release

Install the latest version of Massu and start governing your AI development today.