v2.0.0
Changelog
All notable changes to this project will be documented in this file. Format is based on Keep a Changelog, and this project adheres to Semantic Versioning. Releases are managed via @changesets/cli.
[Unreleased]
Added
Changed
Fixed
[2.0.0] - 2026-05-10
TestAtlas v2.0.0 is a major release introducing the Multi-Agent Quality Intelligence Brain — a persistent, machine-readable quality layer that turns any capable AI agent into a product-understanding, exploration, and evidence-collection system. V2 adds 41 new commands, 18 new schemas, 14 system personas, 11 council commands, and full support across all 18 host adapters. Phase 22 + Phase 23 follow-on work (closing 8 COUNCIL-2026-05-09-003 brain-audit findings) plus the COUNCIL-2026-05-10-001 release-readiness fixpack are folded into the v2.0.0 release per Option A of the council's release-cut decision.
Phase 23 — Close 8 COUNCIL-2026-05-09-003 brain-audit findings (DEC-001..DEC-008 + OPEN-001)
Phase 23 closes the structural-not-functional residue from Phase 22 surfaced by COUNCIL-2026-05-09-003. All 8 motions carried; 5 net-new high-leverage gaps the Phase-22 verifier missed. Backward-compat absolute — every fix is additive.
Fixed (Phase 23)
- DEC-001 / ISSUE-042 + ISSUE-045 — Audit-honesty: 22-04-SUMMARY.md + Phase-22 Verification narrative now cite live test counts (1842 / 1836 pass / 6 distinct fail / 2 skip) with all 6 distinct failure names enumerated.
- DEC-002 / ISSUE-038 —
_testatlas/brain/drift.jsonrepopulated with 11 schema-conforming records (DRIFT-001..DRIFT-011) reflecting COUNCIL-2026-05-09-002 audit findings;drift-record-additivity.test.jsTest 4 (length===11) GREEN. - DEC-003 / ISSUE-039 —
scripts/update-indexes.js#listCouncilSessionsreads each session.json and emits per-session bullets withtopic + mode= + participants=N + status=; 09_artifact_index.md council-sessions block now enumerates real metadata. Missing session.json falls back to path-only (back-compat). - DEC-004 / ISSUE-040 —
.testatlas/commands/explore.mdtrimmed to ≤1800 words AND ≤6 What's Next entries; long-form per-child brief contract extracted to NEW.testatlas/reference/explore-orchestration.md. - DEC-005 / ISSUE-043 —
_testatlas/00_overview.md"Core Domains" section replaced with TESTATLAS:GENERATEDdomain-countblock driven bystate.json#counts.domains; doc never drifts from brain truth. - DEC-006 / ISSUE-041 —
--reconcile-counts --populate-from-app-map --detect-driftflags wired into the existingupdate-brain-after-command.jsinvocations in.testatlas/commands/explore-codebase.mdand.testatlas/commands/core/brain-sync.md; Phase-22 producer scripts now fire at runtime;lifecycle-flag-wiring.test.jspins the wiring. - DEC-007 / ISSUE-044 —
scripts/consolidate-council.jsdocstring lines 215-221 trimmed to drop the orphan'strong-suspect'mention; comment now matches code at line 227. - DEC-008 —
CHANGELOG.md [0.1.0]gains### Schema migrationsection;package.json#versionbumped 1.2.6 → 2.0.0. DIST-03 + package-version-vs-CHANGELOG tests GREEN.
Added (Phase 23)
- OPEN-001 ADR captured —
.testatlas/reference/council-protocol.mdgains "Deferred design — vote-status producer (OPEN-001)" section documenting the futureupdate-claim-status-from-votes.jsproducer that would let DEC-004's OR-gate tighten to AND without re-introducing the 5-phase silent zero-promotion regression. Implementation deferred; design + scaffolding captured here. - NEW
.testatlas/reference/explore-orchestration.md— long-form per-child brief contract reference extracted fromexplore.mdper CMD-03 budget compliance.
Verification (Phase 23)
pnpm test: 1877 total / 1875 pass / 0 fail / 2 intentional skip (the previously-failing 6 distinct ✖ all flipped GREEN; Wave-2 cascade RED bars closed by Wave-3 adapter + example regen).check-adapter-parity --strict: 1314/1314 obligations (100.0%) — restored from Wave-2 source-body divergence (910/1314 RED → 1314/1314 GREEN).lint-commands0 violations;check-command-budgets/validate-workspace/validate-brainall exit 0.- 18 adapter trees + 7 example workspaces regenerated; 5 Wave-0 RED-bar tests authored (
update-indexes-council-sessions-rich,00-overview-domain-count,lifecycle-flag-wiring,consolidate-council-comment-code-parity,council-protocol-deferred-design) — all GREEN post-Wave-1/2 implementation. - Concurrent-agent boundary preserved through Phase-23 closure:
scripts/lib/install-core.js+scripts/lib/update-core.jsbyte-identical pre-/post (commits70e73331..838bae58).
Fixed (Phase 23 / Plan 23-03 — DEC-001 audit-honesty correction to Phase-22 verification)
- Phase-22 Verification narrative corrected. Original CHANGELOG +
22-04-SUMMARY.mdcited "1837/3/2 of 1842"; live counts at Phase-22 closure were 1842 / 1836 pass / 6 distinct ✖ / 2 skip. Phase 23 closes all 6. Full post-mortem: see.testatlas/reference/audit-honesty-history.md.
Added (Phase 23 / Plan 23-01 — Wave 0 TDD red-bar)
- 5 RED-bar regression tests pinning Phase-23 contracts (DEC-003, DEC-005, DEC-006, DEC-007, OPEN-001) BEFORE production-code edits, per Nyquist contract:
test/update-indexes-council-sessions-rich.test.js— DEC-003 pinslistCouncilSessionsenrichment.test/00-overview-domain-count.test.js— DEC-005 pinsdomain-countGENERATED block live-sync.test/commands/lifecycle-flag-wiring.test.js— DEC-006 pins--reconcile-counts --populate-from-app-map --detect-driftinvocation.test/scripts/consolidate-council-comment-code-parity.test.js— DEC-007 pins zerostrong-suspectin docstring.test/reference/council-protocol-deferred-design.test.js— OPEN-001 pins the deferred-design ADR.
- Test suite delta: 1842 → 1877 (+35); 1834 → 1849 pass (+15 baselines GREEN); 6 → 26 fail (+20 RED contract pins). All baseline RED tests preserved unchanged.
Fixed (Release-readiness post-Phase-23, COUNCIL-2026-05-10-001)
- DEC-002..DEC-005 fixpack — Pre-tag closure of 9 residual workspace-hygiene findings surfaced by the Release Readiness council (2026-05-10): cleared
validate-workspaceschema-discipline (dropped unregistered$schemaURL from_testatlas/brain/drift.json; auto-healed manifest counts; refreshed cross-cut index hashes for 7to_fix/by_*indexes —validate-workspace0 errors / 0 warnings); transitioned 8 brain rows ISSUE-038..045 fromstatus:new→status:closedwith append-only history entries (closing the lifecycle gap where Phase-23 closed code but did not flip status); trimmedCHANGELOG.mdfrom 3080 → 3000 words by extracting the Phase-22 audit-honesty post-mortem to.testatlas/reference/audit-honesty-history.md(with 1-line cross-reference); folded the[Unreleased]Phase-22+23 entries into this[2.0.0]block per release-cut Option A. Surfaced 4 issue candidates (validate-workspace.js + check-token-budget.js exit-code masking — turned out NOT to be regressions; the masking was a piped-tailmeasurement artifact in the council prompt; AJV singleton drift schema registration; brain-status lifecycle gap → OPEN-007 obd-verifier checklist extension). Final state:pnpm test1877/1875/0/2;validate-workspace0/0;validate-brainOK;check-adapter-parity --strict1314/1314;check-token-budget CHANGELOG.md 3000PASS. Full audit at_testatlas/agents/councils/sessions/COUNCIL-2026-05-10-001/.
Added
-
V2 Multi-Agent Quality Intelligence Brain. A persistent
_testatlas/brain/tree with 16 JSON files (manifest.json,state.json,coverage.json,domains.json,flows.json,issues.json,evidence.json,decisions.json,risks.json,assumptions.json,graph.json,quality_scores.json,drift.json,agent_sessions.json,personas.json,events.jsonl) that captures everything an agent learns about the product under test. Every brain file is AJV-validated before write.scripts/validate-brain.js— full brain validation against V2 schemasscripts/score-quality.js— 11 deterministic quality metrics (0-100, no LLM judgment)scripts/detect-drift.js— git-diff-based drift detection with 7 input categoriesscripts/update-graph.js— 16-relationship knowledge graph populatorscripts/update-brain-after-command.js— automated post-operation brain update hookscripts/sync-markdown-json.js— idempotent markdown/JSON reconciliationscripts/index-artifacts.js— brain index rebuild from workspace scanscripts/generate-dashboard-data.js— machine-readable dashboard exportscripts/build-sqlite.js— optional SQLite projector (graceful degrade whenbetter-sqlite3absent)
-
V2 Command Surface — 41 new commands (73 total). Commands are now organized into 7 categories:
core/—init,status,bootstrap-refresh,brain-sync,brain-validate,brain-query,brain-compact,brain-export(8 commands)explore/—explore-state,explore-errors,explore-components,explore-routes,explore-jobs,explore-security-privacy,explore-observability,explore-tests,explore-brain,explore-release-readiness,explore-all(11 commands)test/—generate-scenarios,generate-automation,generate-retest-pack,test-critical-flows(4 commands)council/—council,council-domain-review,council-flow-review,council-product-review,council-bug-triage,council-release-readiness,council-red-team,council-brain-audit,council-retest,council-design-critique,council-test-plan(11 commands)brain/—brain-score,brain-drift(2 commands)report/—report-domain,report-release,report-dashboard-data(3 commands)maintain/—maintain-migrate,maintain-validate-artifacts(2 commands)
-
Persona & Council System. 14 built-in system personas (
product-strategist,user-advocate,qa-lead,accessibility-reviewer,performance-skeptic,security-privacy-reviewer,api-contract-analyst,codebase-mapper,runtime-investigator,data-steward,adversarial-red-team-tester,documentation-curator,automation-engineer,release-readiness-judge) each with md+json pairs, blind spots, evidence requirements, and safety limits. 5 reusable council templates (domain-review,release-readiness,bug-triage,red-team,brain-audit) configure default participants and stop conditions. The 9-round council protocol (context-read → independent-review → initial findings → cross-question → disagreement capture → rebuttal → vote → consolidation → canonical-update) is documented in.testatlas/reference/council-protocol.md. -
Council Session Infrastructure.
scripts/create-council-session.jscreates a full session directory with 15 artifacts (session.{md,json}, prompt.md, context_bundle.md, participants.json, transcript.{jsonl,md}, claims.jsonl, disagreements.md, votes.json, consolidation.{md,json}, followups.md, generated_{issues,flows,questions}.md).scripts/extract-claims.jsparses transcripts for CLAIM markers.scripts/consolidate-council.jsproduces followups and updatesbrain/decisions.json.scripts/record-execution-mode.jsprovides post-hoc execution mode tracking. -
V2 Schemas — 18 new JSON Schemas (39 total). New schemas:
persona,council_session,claim,transcript,event,story,coverage,quality_score,drift_record,relationship,dashboard_data,retest_pack,decision,risk,assumption,sub-agent-handoff,install-manifest,example-script. All schemas use JSON Schema Draft 2020-12 and whitelist$schemaannotations on closed schemas. -
Explorer Map Templates. 16 template files (8 md + 8 json) across 8 surface types:
routes,pages,components,states,endpoints,jobs,cli_commands,integrations. Each template declares the full field shape per PRD §7.13 withTESTATLAS:GENERATEDmarkers for sync-markdown-json reconciliation. -
Automation Skeleton Generation.
scripts/generate-automation.jsemits framework-aware test skeletons for 6 frameworks: Playwright (.spec.ts), Cypress (.cy.js), API (.http), CLI (.sh), Contract (.contract.json), Smoke (.md). Each skeleton carries fixtures + mock-data comment blocks and a companion.meta.jsonstatus tracker. -
Capability Gate Safety Infrastructure. Destructive filesystem operations (
cp,rm,unlink,rename) are gated byrequireCapability(config, 'destructive-fs')which respectssafeModeandallowDestructiveActionsconfig. Violations throwCAPABILITY_DENIED.test/safety/capability-gate-invariant.test.jswalks every script and asserts the gate is present. -
27 Command Invariants in
lint-commands.js. Automated doc-vs-truth validation catches: flag existence, path canonicity, schema key existence, lifecycle completeness, frontmatter script form, flag completeness, enum value validity, vocabulary enum drift, lifecycle position, schema file existence, maps path consistency, bare script paths, duplicate section headings, config key existence, option pair completeness, step cross-references, stop code existence, outputs vs required actions, numerical claims vs scripts, capability-stop condition contradictions, MCP tool param validity, canonical product names, missing canonical sections, shell required in fallback, undefined cross-references, and product name canonicalization. -
Audit Manifest.
.testatlas/audit-manifest.jsontracks every factual claim in every command body with resolution status against the invariant catalog. 986 claims at 57% resolution rate — new invariants surface claims faster than they resolve, driving the asymptote toward zero. -
Cross-Reference Integrity Testing.
test/commands/mesh-graph.test.jsasserts zero orphans, dead-ends, broken refs, and slash collisions across the full 73-command graph.test/agentic/cross-reference-integrity.test.jsresolves every/atlas:NAMEmention against the live command set. -
Adapter-Aware Preamble Path Injection.
{{ADAPTER_COMMAND_PATH}}placeholder inbootstrap.mdis substituted at render time with the actual target-repo install path per adapter (e.g..claude/commands/atlas-bootstrap.mdfor Claude Code,.kilocode/workflows/atlas-bootstrap.mdfor KiloCode). Prevents agents from probing wrong filesystem paths. -
Execution Mode Tracking. Council sessions track
executionMode(parallel-subagents,single-spawn-inline,sequential-fallback,classify-only,inline-simulation,no-op) with a 5-tier auto-detect helper. Tier 5 (both signals omitted) leaves the field absent so the orchestrator records it post-hoc. -
New Documentation.
docs/V2_WORKSPACE.md— complete brain tree, agents tree, map templates, and report exports reference.docs/PERSONAS_AND_COUNCILS.md— 14 personas, 5 councils, 9-round protocol, and custom persona creation guide.docs/GETTING_STARTED.mdextended with V2 Advanced Path.
Changed
-
Adapter System — full V2 support across all 18 adapters. Per-command-file adapters (13) render both flat V1 and categorized V2 commands in nested subdirs. Multi-source adapters (5) emit concatenated outputs covering the full 73-command surface. Capability vocabulary extended from 6 → 9 entries (
council-orchestration,brain-sync,persona-contextadded). Adapter parity gate: 1314/1314 obligations satisfied, zero drift. -
V2 commands render flat at adapter root. Phase 16 fix ensures V2 categorized commands are rendered as flat files (e.g.
atlas-core-init.md,atlas-explore-state.md) so slash-command discovery works on flat-only hosts (Claude Code, Codex). No naming collisions across 73 source files. -
validate-workspace --auto-healapplies by default (v1.2.0). Bare--auto-healwrites to disk;--dry-runfor preview.--applyis a documented no-op for back-compat. -
Brain writers honor
TESTATLAS_FIXED_TIMESTAMP. All V2 writers that emit brain JSON routelast_updatedthrough the determinism contract soregenerate-example --checkis byte-identical across replays. -
Uninstall deep prune.
scripts/uninstall.jsrecursively prunes deep V2 directory trees (.testatlas/agents/personas/system/, adapter nested subdirs, etc.) bottom-up after manifest-driven file removal. -
Schema counts corrected across docs. README.md, docs/SCHEMAS.md, docs/ADAPTERS.md now report 39 schemas (21 V1 + 18 V2), 73 commands (32 V1 + 41 V2), 18 adapters, 14 personas, 5 council templates.
Fixed
-
200+ doc-vs-truth drift issues closed across 13 dogfood rounds (Rounds 7–13). Categories: stop code claims, output path consistency, lifecycle hook completeness, numerical claim accuracy, schema filename casing, slash-command references, capability declarations, canonical count keys, bare script paths, duplicate headings, cross-reference resolution, MCP tool param validity, and product name canonicalization.
-
Test suite: 0 failures. 1766 pass / 0 fail / 2 skipped (intentional E2E gates). Pre-V2 baseline was 1735/25/2. All 26 schema-mapping baseline errors closed.
-
validate-workspacepasses clean. 0 errors, 0 warnings across 12 checks. Previously failed with 28TESTATLAS_UNKNOWN_SCHEMAerrors on persona/council-template/map paths. -
Safety gaps closed.
v2-migrate.jsandupdate-core.jsdestructive operations now correctly gated by capability checks (was hardcoded safeMode + ignored return).normalize-slugs.jsapply branch gated.e2e/run-node-api-graph.jsdocumented as tmpdir-only safety exempt. -
Schema conformance.
app-map.schema.jsonextended with 6 optional top-level properties (errorHandling,integrationEnvironments,runtimeMetadata,observability,securityFindings,states).issue.schema.jsonaddedtriagedAsandclosedAs.vocabulary.schema.jsonextended with 7 V2 enums (claim_type,council_type,drift_status,persona_type,message_type,disagreement_type,vote_value).test-scenario.schema.jsonwidened for optionalconfidence.config.schema.json#pinnedVersionaccepts caret/tilde/comparator semver ranges. -
Consolidator filter broadened.
scripts/consolidate-council.jsnow acceptsobserved/inferred/hypothesizedclaims withstatus='accepted'orconfidence='confirmed'/'strong-suspect', fixing a 5-phase silent corruption where every council session produced 0brain/decisions.jsonentries. -
Votes render back-compat. Motion-keyed votes (
votes.motions[]?.votes[]) supported alongside legacyvotes.votes[]shape. -
embeddings_manifest.jsonno longer required.validate-brain.jstolerates its absence for forward-compat with future vN+1 embedding producers. -
drift.jsonschema-conforming structure. Trimmed 7 excess fields per record to matchdrift_record.schema.json#additionalProperties:false. -
Stale version references removed from docs/UPDATE.md, docs/RELEASE.md, docs/SIGNING.md. Gitignored
.planning/file references cleaned from docs/SCOPE.md and docs/THREAT_MODEL.md. -
Orphan file removed:
docs/static-html-report-spec.md(duplicate ofprd/static-html-report-spec.md).
Security
- Capability gates on all destructive filesystem operations (
v2-migrate,update,normalize-slugs). requireCapability(config, 'destructive-fs')hard-fails before anycp/rm/renameunder default-deny config.
Notes
- No breaking changes for V1 users. All V1 commands, schemas, and adapter outputs are byte-identical pre/post v2.0.0. V2 commands live in categorized subdirectories that V1's flat enumeration excludes by design.
- JSON remains canonical. SQLite is derived/cacheable only. Every artifact is schema-validated before write.
- TestAtlas v1.x enters maintenance. LTS window: 2.x active, 1.x maintenance, 0.x EOL.
[1.2.6] - 2026-05-06
No notable changes since 1.2.5.
[1.2.5] - 2026-05-06
No notable changes since 1.2.4.
[1.2.4] - 2026-05-06
No notable changes since 1.2.3.
[1.2.3] - 2026-05-06
No notable changes since 1.2.2.
[1.2.2] - 2026-05-06
No notable changes since 1.2.1.
[1.2.1] - 2026-05-06
No notable changes since 1.2.0.
[1.2.0] - 2026-05-06
Changed
- BREAKING —
validate-workspace --auto-healnow applies by default. Bare--auto-healwrites to disk; pass--dry-runfor preview.--applyis a documented no-op for back-compat. Migration: add--dry-runto scripts expecting preview-only behavior. scripts/lib/adapters/render-mcp.jsrequires explicitversionparameter. MCP manifest now tracks the suite version correctly.
Fixed
- High-severity —
runUpdatenow executes full adapter upgrade lifecycle. Previously only renamed.testatlas/; adapter outputs outside the suite tree (.claude/commands/,.cursor/rules/,AGENTS.md,.aider/CONVENTIONS.md, etc.) were never re-emitted on update. v1.2.0 addsrestageAdaptershelper that re-emits all adapter command files, prunes orphans, and includes them in the regenerated manifest. Action required: runnpx @webventures/testatlas update --force-reinstallonce after updating to v1.2.0. - Reporter preview subtitle now appears under the section header for unmissable preview-only state.
[1.1.0] - 2026-05-06
Added
- Cosign + dogfood-test infrastructure (
sigstore/cosign-installer@v3in CI,scripts/setup-dogfood-env.shpre-flight probe). CONTRIBUTING.mdDogfood Test Prerequisites section.- Per-area report views (
regressions.md,readiness.md,coverage.md,quality_risks.md). counts.reportsfield inworkspace-manifest.schema.json.scripts/triage.jsproduction-grade idempotent triage driver.- POSIX banner in
install.shwithNO_COLOR/NO_UNICODE/non-TTY support. renderBannerwired intoinstall.js,update.js,uninstall.js.- Production-grade release driver (
scripts/bump-version.js): pre-flight gates, CHANGELOG migration, atomic commit + tag,gh release create, optional--waitfor OIDC publish completion. docs/RELEASE.md"Local release driver" section.
Changed
generate-report.jsreadiness verdict filters closed/wont_fix issues before severity check.generate-report.jsrun dedup, per-domain coverage detection, and Test Pyramid type-classification fixed.generate-report.jsautoheal parity: HEAL-01 recomputescounts.reports.commands/triage.mdpreferred-path entry declaresnode .testatlas/scripts/triage.js.install.shline budget raised to 290 for banner function.test/release/pack-contents.test.jsceiling raised to 8MB.scripts/sync-status.jsreports counter matchesREPORT-*.mdfiles only.- Bootstrap-token publish path deprecated; OIDC Trusted Publishing is canonical.
[1.0.0] - 2026-05-04
First production GA release. Closes Phase 8 (examples + auto-doc generators + GA polish) and consolidates Phases 0–7.
Added
- Bootstrap & Constitution (Phase 1):
.testatlas/bootstrap.md, capability-aware degradation, full config layer. - Schemas & Templates (Phase 2): 18 JSON Schemas +
vocabulary.json, markdown templates, generated-section markers, atomic-write kernel. - Workspace skeleton (Phase 2):
_testatlas/with 14 canonical documents and 23 subdirectories. - Commands (Phases 3–4): 30
/atlas:*commands covering init, validate, explore (11 sub-explorers), test (10 types), issue lifecycle, reporting, handoff, cleanup. - Utility scripts (Phase 5): 12 scripts with shared
scripts/lib/,validate-workspacewith--auto-heal. - Adapters (Phase 6): 7 agent adapters generated via
assemble-adapter.js, per-adapter capability matrix, adapter-parity CI gate. - Distribution (Phase 7): 3 install paths (
npx,install.sh,git clone), atomic update with backup/rollback, migration framework, workspace lockfile,--verify-signaturecosign verification, cross-platform CI matrix. - Examples (Phase 8): 5 example workspaces with deterministic-replay engine (
regenerate-example.js). - Auto-generated docs (Phase 8):
docs/COMMANDS.md,docs/SCHEMAS.md, examples gallery,docs/MONOREPO.md. - Phase 9 — Agentic Workflow Completeness:
subagent-spawncapability, sub-agent orchestration on 4 umbrella commands + 11 sub-explorers, cross-reference integrity test, E2E pipeline harness, 18-adapter capability matrix.
Changed
package.json#version:0.1.0→1.0.0. First version shipping to npm.- GitHub org placeholder finalized to
testatlas-dev. - 9 adapters declare
subagent-spawn(claude-code, opencode, kilocode, codex, gemini-cli, github-copilot, cline, kiro, sourcegraph-amp). - Canonical command graph in templates (
/atlas:explore→/atlas:map-domains→/atlas:plan).
Removed
- All "Phase X ships this", "(deferred to v2)", and "(coming in Phase X)" framings from tracked content.
Security
- npm publish via Trusted Publishing (OIDC); SLSA Build L3 provenance.
- GitHub Releases ship signed sigstore bundle.
- Two-tree invariant:
update.jswrites only to.testatlas/; never touches_testatlas/except via migrationup()functions. - POSIX
install.shpartial-pipe protection via_main "$@"sentinel.
[0.1.0] - 2026-05-04
First public-ready cut. Phase 0–7 complete.
Added
npx testatlas initone-liner with adapter auto-detection.- POSIX
install.shcurl-pipe installer, shellcheck-clean, partial-pipe sentinel. git clone && node install.js <target>offline-capable path.node uninstall.jswith--purge,--force-untracked,--dry-run.- 18th JSON Schema:
install-manifest.schema.json. node update.jsatomic self-update with backup, rollback, SIGINT safety.- Migration framework: forward-only, idempotent, N→N+1 with long-jump composition.
- Workspace lockfile with PID + age dual stale detection.
- GitHub Releases auto-check, version pinning,
--verify-signaturecosign verification. - Cross-platform CI matrix: Linux/macOS/Windows × Node 20.x/22.x/24.x.
- Release pipeline with OIDC Trusted Publishing + provenance + sigstore sidecar.
Changed
package.json: removedprivate: true, bumped to0.1.0, addedpublishConfig.- Config schema: added
pinnedSinceandpinAlertThresholdDays.
Schema migration
None — baseline schemaVersion: 1.
Security
- npm publish via Trusted Publishing (OIDC); SLSA Build L3 provenance.
- GitHub Releases ship signed sigstore bundle.
- Two-tree invariant enforced.
- POSIX
install.shpartial-pipe protection.