From 424d774ae96bac913e4c528725774dd9aebe86ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E5=B1=B1=E8=B2=B4=E8=87=B3?= Date: Tue, 9 Jun 2026 15:25:52 +0900 Subject: [PATCH 1/4] docs(spec): refresh the CLI command catalog The hand-maintained catalog had drifted from the shipped CLI: it omitted import, refresh, view, and stats, and listed commands that no longer exist (session new, config). Replace the version-annotated flag-level catalog with a top-level command-group map plus a pointer to the generated, always-current reference at basou.dev/commands/reference (and `basou --help`), which is regenerated from the CLI on every release and cannot re-drift. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/spec/cli-commands.md | 108 +++++++++++++++----------------------- 1 file changed, 43 insertions(+), 65 deletions(-) diff --git a/docs/spec/cli-commands.md b/docs/spec/cli-commands.md index 51655d58..febb70da 100644 --- a/docs/spec/cli-commands.md +++ b/docs/spec/cli-commands.md @@ -1,66 +1,49 @@ -# CLI command catalog (v0.1 + v0.2) - -This document lists the CLI surface delivered by v0.1 and amended by v0.2. - -## §15.1 v0.1 commands (with v0.2 additions) - -> **Note**: this section is the v0.1 source of truth and is augmented as -> additional commands are introduced in v0.2 maintenance. Lines added in -> v0.2 carry a `# v0.2` comment for differentiation. - -```bash -# Initialization -basou init - -# Session management -basou session new -basou session list -basou session show -basou session note -basou session import --format json --from - -# Task management -basou task new -basou task list -basou task show -basou task status -basou task reconcile [--task ] [--write] [--json] [-v|--verbose] # v0.2 -basou task refresh-linkage [--write] # v0.2 -basou task edit [--title ] [...] # v0.2 -basou task delete --yes # v0.2 -basou task archive --yes # v0.2 - -# Decision records -basou decision record - -# Adapter-mediated execution -basou run claude-code [args...] - -# Environment observation -basou exec - -# Approval -basou approval list -basou approval show -basou approval approve -basou approval reject --reason "..." - -# Status -basou status - -# Regenerate generated artifacts -basou handoff generate -basou decisions generate - -# Configuration -basou config +# CLI command catalog + +basou's command surface is organized into a few top-level command groups. The +**authoritative, always-current flag-level reference** is generated from the +CLI itself and published at ; you can +also read it locally with `basou --help`. This document gives the +conceptual map and records what is intentionally deferred. + +## §15.1 Top-level command groups + +```text +# Workspace +basou init # create a .basou/ workspace at the Git repo root +basou status # show the current workspace status +basou stats # report how much the AI worked (volume + time proxies) + +# Sessions and execution +basou exec [args...] # run a command and record it as a session +basou run claude-code [args...] # run an AI tool through basou as a tracked session +basou session ... # inspect sessions (list / show / note / import) +basou import claude-code|codex # import provenance from a tool's native logs +basou refresh # import all adapters + regenerate handoff/decisions +basou view # open a local web UI to browse provenance + +# Tasks +basou task ... # purpose units spanning sessions (new / list / show / + # status / reconcile / refresh-linkage / edit / + # delete / archive) + +# Decisions and approvals +basou decision record # record a human-authored decision as an event +basou approval ... # manage approval requests (list / show / approve / reject) + +# Generated artifacts +basou handoff generate # generate or inspect .basou/handoff.md +basou decisions generate # generate or inspect .basou/decisions.md ``` -## §15.2 Commands deferred to v0.3 or later +For exact flags, subcommands, and arguments, see the generated reference linked +above — it is regenerated from the CLI on every release, so it never drifts from +the implementation. -The following commands are intentionally **not** implemented in v0.1 or -v0.2. They are listed for transparency and are reconsidered when v0.3 -planning starts: +## §15.2 Commands considered but not implemented + +The following are intentionally **not** implemented. They are listed for +transparency and reconsidered in a future release: ```bash basou team new @@ -68,8 +51,3 @@ basou review-flow new basou report generate basou analytics ``` - -> Native-log import did ship — but as its own `basou import ` -> command group (`basou import claude-code` / `basou import codex`), not as a -> `basou session import --source` flag. See -> [terminal-and-import.md](terminal-and-import.md) §14.2. From 0533df7fefb1edb207f8e35a6af61a3a8f2e5e67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E5=B1=B1=E8=B2=B4=E8=87=B3?= Date: Tue, 9 Jun 2026 15:25:52 +0900 Subject: [PATCH 2/4] docs(spec): de-version the spec and correct adapter, import, and multi-root scope The spec corpus was written in v0.1/v0.2 epoch framing that has since gone stale. Bring it to current reality: - overview: claude-code is no longer the only adapter (codex import shipped), and import is no longer JSON-only; the run adapter wraps claude-code as a child process while import adapters read native logs read-only. - workspace: reconcile "one repository = one workspace" with the shipped multi-root capture (repeatable --project / manifest.import.source_roots, see terminal-and-import section 14.3); fix the stale `basou task create` example to `basou task new`; drop the version tag from the index-lock candidate (it remains unimplemented, distinct from the task/session locks). - Drop version-coupled phrasing (v0.1/v0.2/v0.3 framing, "v0.4+" futures) across approval, generated-markdown, schemas, terminal-and-import, and the docs index, preferring version-independent wording to prevent re-staling. The "Added in v0.2" event-catalog annotations are kept as historical provenance. Schema versions (0.1.0) are unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/README.md | 9 ++++----- docs/spec/approval.md | 8 ++++---- docs/spec/generated-markdown.md | 4 ++-- docs/spec/overview.md | 33 +++++++++++++++++--------------- docs/spec/schemas.md | 20 +++++++++---------- docs/spec/terminal-and-import.md | 25 ++++++++++++------------ docs/spec/workspace.md | 32 ++++++++++++++++++------------- 7 files changed, 70 insertions(+), 61 deletions(-) diff --git a/docs/README.md b/docs/README.md index 4c4f1e08..1c1ad51a 100644 --- a/docs/README.md +++ b/docs/README.md @@ -24,11 +24,10 @@ docs/ [`README.md`](../README.md). - For the specification of basou's data model and CLI behavior, read the files under [`spec/`](spec/). -- This documentation tracks the v0.1 / v0.2 implementation. Sections that - cover features deferred to v0.3 or later are explicitly marked as such. +- This documentation tracks the current implementation. Sections that + cover deferred features are explicitly marked as such. ## Versioning -These documents describe the behavior of basou as released in v0.2.x. When new -features land in a future release, the corresponding section is updated as -part of that release. +These documents describe basou's current behavior. When new features land in a +future release, the corresponding section is updated as part of that release. diff --git a/docs/spec/approval.md b/docs/spec/approval.md index 37245969..138ffe30 100644 --- a/docs/spec/approval.md +++ b/docs/spec/approval.md @@ -1,8 +1,8 @@ # Approval events This document specifies the approval event family. Approval is a core -capability in v0.1: the schema is fixed and the local CLI provides the -minimal implementation. Remote endpoints are out of scope for v0.1. +capability: the schema is fixed and the local CLI provides the +minimal implementation. Remote endpoints are out of scope. ## §9.1 `approval_requested` @@ -60,7 +60,7 @@ minimal implementation. Remote endpoints are out of scope for v0.1. ## §9.4 `risk_level` vocabulary -v0.1 fixes four values: +The vocabulary fixes four values: - `low`: routine activity; informational only. - `medium`: limited impact, but confirmation recommended. @@ -71,7 +71,7 @@ v0.1 fixes four values: - Default: `null` (no expiry). - An ISO 8601 timestamp may be provided. -- v0.1 does not run a background job that automatically transitions +- basou does not run a background job that automatically transitions `pending` approvals to `expired` when `expires_at` is reached. - `basou approval list` lazily evaluates `expires_at`: an entry is marked `expired` when the list is consulted, without mutating the YAML file. diff --git a/docs/spec/generated-markdown.md b/docs/spec/generated-markdown.md index bf0d866c..cf582f75 100644 --- a/docs/spec/generated-markdown.md +++ b/docs/spec/generated-markdown.md @@ -103,7 +103,7 @@ These fields originate from `decision_recorded` events. ## §10.5 decisions.md generation principle -**In v0.1, only entries that originate from `decision_recorded` events make +**Only entries that originate from `decision_recorded` events make it into decisions.md.** - basou does not infer "decisions" from raw AI output or git diffs. @@ -111,7 +111,7 @@ it into decisions.md.** equivalent) are considered. The events.jsonl history remains the source of truth; `decisions.md` is a UX-only projection of the rich fields attached to each `decision_recorded` event. -- AI-assisted decision extraction is reconsidered for v0.2 or later. +- AI-assisted decision extraction is reconsidered for a future release. This follows basou's principle that an evidence trail must carry human intent. diff --git a/docs/spec/overview.md b/docs/spec/overview.md index 9143ae4c..ddafd2fd 100644 --- a/docs/spec/overview.md +++ b/docs/spec/overview.md @@ -1,40 +1,43 @@ # Overview basou is a workspace-local evidence-trail tool for AI-assisted development. -The v0.1 / v0.2 specification covers what basou records, where it records it, +This specification covers what basou records, where it records it, and how the artefacts are organized. ## Product foundations -- **Product name**: basou (the only external code name adopted for v0.1) +- **Product name**: basou (the only external code name adopted) - **License**: Apache 2.0 (open core) - **Release cadence**: staged, roughly twelve months from the first release - **Vision**: make the invisible labor of the AI era auditable -## Scope decisions for v0.1 +## Scope -The v0.1 release intentionally narrows the surface area: +basou intentionally narrows the surface area: - The primary product is **basou core**, the workspace tool itself. -- The only adapter shipped with v0.1 is the **claude-code-adapter**. +- Adapters connect external AI tools: the **run** adapter wraps claude-code as + a tracked child process; native-log **import** adapters cover claude-code and + codex. - **git** and **terminal recording** are core capabilities, not separate layers. -- A dedicated provider layer is not implemented in v0.1. -- A dedicated policy engine is not implemented in v0.1. -- Import is limited to the minimal JSON form of the basou event schema. +- A dedicated provider layer is not implemented. +- A dedicated policy engine is not implemented. +- Import accepts both a tool's native logs (`basou import `) and a + portable JSON form (`basou session import`). - Remote approval is a core capability: the schema is fixed and a local CLI - provides the minimal implementation. Remote endpoints are out of scope for - v0.1. + provides the minimal implementation. Remote endpoints are out of scope. -## v0.1 design principles +## Design principles - **Markdown that a human has reviewed is committed; raw logs are ignored.** -- **Using basou is a deliberate act in v0.1.** Explicit recording is +- **Using basou is a deliberate act.** Explicit recording is preferred over implicit automation, so the tool stays observable. -- **basou does not reach into Claude Code's internal format.** The adapter - treats Claude Code as an external child process. +- **The `run` adapter does not reach into Claude Code's internal format**; it + treats Claude Code as an external child process. The `import` adapters read a + tool's own native logs read-only. - **The source of truth (JSONL) is kept separate from human-facing output (Markdown).** Generated Markdown can be regenerated; the JSONL cannot. -- **No code name without a concrete implementation is exposed in v0.1.** +- **No code name without a concrete implementation is exposed.** These principles apply across the rest of this specification. diff --git a/docs/spec/schemas.md b/docs/spec/schemas.md index b73f8eab..40f8d9d2 100644 --- a/docs/spec/schemas.md +++ b/docs/spec/schemas.md @@ -31,7 +31,7 @@ capabilities: approval: required_for: - destructive_command - - external_send # reserved; detection may be limited in v0.1 + - external_send # reserved; detection may be limited default_risk_level: medium adapters: @@ -45,12 +45,12 @@ git: ## §4.2 Notes -- `approval.required_for` includes `external_send` as reserved because v0.1 - detection is limited. +- `approval.required_for` includes `external_send` as reserved because + detection is currently limited. - `capabilities.enabled` is heterogeneous in granularity; it is kept as-is - for v0.1 and may be normalized in a later release. + for now and may be normalized in a later release. - The schema reserves room for `providers:` / `policies:` / `teams:` / - `review_flows:` to extend in the future (unused in v0.1). + `review_flows:` to extend in the future (currently unused). --- @@ -115,7 +115,7 @@ session: operator that deliberately recorded a system file path is not redacted by surprise. A null byte in the input is rejected with `Invalid path: contains null byte`; Windows-style backslashes are folded to forward - slashes (v0.3 targets macOS / Linux; full Windows support is a v0.4+ + slashes (basou targets macOS / Linux; full Windows support is a future task). - `working_directory` is sanitized via a sentinel-based variant that skips rule (1) when applied to the field's own value — feeding the live cwd @@ -130,9 +130,9 @@ session: succeeds; the warning is informational and fires for `--dry-run` too so the operator can preview a rewrite before committing. - Backward compatibility: existing session.yaml files written before the - v0.3 sanitizer are NOT retroactively rewritten. A future v0.4+ release - may introduce `basou session migrate` to sanitize existing data on - request. + path sanitizer was introduced are NOT retroactively rewritten. A future + release may introduce `basou session migrate` to sanitize existing data + on request. --- @@ -152,7 +152,7 @@ session: Every event carries a `session_id` (see [Workspace, sessions, tasks, IDs §2.2](workspace.md#22-every-event-is-bound-to-a-session)). -## §7.2 v0.1 / v0.2 event catalog +## §7.2 Event catalog | Category | event type | Description | |---|---|---| diff --git a/docs/spec/terminal-and-import.md b/docs/spec/terminal-and-import.md index a8233381..24bd75f9 100644 --- a/docs/spec/terminal-and-import.md +++ b/docs/spec/terminal-and-import.md @@ -1,8 +1,8 @@ # Session lifecycle, terminal recording, import This document covers three related areas: the session lifecycle (including -the `imported` terminal state), the v0.1 terminal-recording strategy, and -the v0.1 import surface. +the `imported` terminal state), the terminal-recording strategy, and +the import surface. ## §6.1 Session lifecycle states @@ -15,7 +15,7 @@ the v0.1 import surface. | `failed` | abnormal termination (non-zero exit code or exception) | | `interrupted` | user interrupted (e.g. Ctrl+C) | | `imported` | imported from an external source; basou did not run the session | -| `archived` | compressed historical session; **not implemented in v0.1** (the value is reserved) | +| `archived` | compressed historical session; **not implemented** (the value is reserved) | ## §6.2 Transition diagram @@ -28,24 +28,24 @@ running --> completed running --> failed running --> interrupted imported (independent terminal state; does not transition) -archived (not implemented in v0.1) +archived (not implemented) ``` ## §6.3 Notes -- v0.1 does **not** guarantee automatic resumption from `waiting_approval`. +- basou does **not** guarantee automatic resumption from `waiting_approval`. Full pause / resume orchestration by the adapter is reconsidered for - v0.2 or later. + a future release. - The state is recorded, but the actual control flow is human-driven. --- ## §13.1 Terminal recording strategy -**Staged adoption: v0.1 ships a wrapper only; v0.2 may add an opt-in -precmd hook.** +**Staged adoption: basou ships a wrapper only; a future release may add an +opt-in precmd hook.** -## §13.2 v0.1 implementation +## §13.2 Implementation The user explicitly runs commands through `basou exec`: @@ -60,13 +60,14 @@ Internally, basou spawns the command as a child process and records a ## §13.3 Rationale -- In v0.1, the user is encouraged to be deliberate about what is recorded; +- The user is encouraged to be deliberate about what is recorded; this aligns with the evidence-trail philosophy. - Many basou users handle confidential workloads. Explicit recording is safer than automatic capture for those contexts. -- Resolving zsh / bash precmd-hook differences cleanly is deferred to v0.2. +- Resolving zsh / bash precmd-hook differences cleanly is deferred to a + future release. -## §13.4 v0.2 candidates +## §13.4 Future candidates - zsh / bash precmd hook (opt-in mode) - `script(1)` wrapping (full output capture) diff --git a/docs/spec/workspace.md b/docs/spec/workspace.md index 07ed3a99..94d4cb46 100644 --- a/docs/spec/workspace.md +++ b/docs/spec/workspace.md @@ -6,10 +6,16 @@ out on disk. ## §1.1 Confirmed invariants - `.basou/` is placed at the **Git repository root**. -- The v0.1 baseline is **one repository = one workspace**. -- monorepo / subproject support is out of scope for v0.1. +- The baseline is **one repository = one workspace**: a single `.basou/` + owns the provenance. +- A single logical project may still span several sibling repositories; + `basou import` aggregates their native logs into one workspace via the + repeatable `--project` flag / `manifest.import.source_roots` (see + terminal-and-import.md §14.3). Per-subproject workspaces inside a monorepo + remain out of scope. - A session is **bound to a single workspace**. Cross-repository work is - split across separate sessions. + split across separate sessions, which a multi-root import attributes to + the aggregating workspace. - `manifest.yaml` carries `workspace_id`, leaving room for multi-workspace configurations in a future release. @@ -71,8 +77,8 @@ out on disk. auto-recovered. To force a clean rebuild, remove the index (`rm .basou/tasks/index.json`) and run any command that calls `enumerateTaskIds` (e.g. `basou task list`); a workspace-wide index - lock is a v0.3.x candidate if dogfood surfaces this drift. -- In v0.2, `basou task reconcile` detects and repairs broken references in + lock remains a candidate if dogfood surfaces this drift. +- `basou task reconcile` detects and repairs broken references in `created_in_session` and `linked_sessions[]`. The default is dry-run; `--write` actually mutates state, and only the write path emits a `task_reconciled` event from an ad-hoc session. @@ -115,10 +121,10 @@ approval originals, and adapter raw output are ignored. - **Conceptual name**: `task-events.log` (the legacy term from the original design notes). -- **v0.1 actual file**: `.basou/sessions//events.jsonl`. +- **Actual file**: `.basou/sessions//events.jsonl`. - Separating concept from file name leaves room for a future workspace-aggregated log (`.basou/events/task-events.log`). -- v0.1 does not produce an aggregated log. +- basou does not produce an aggregated log. ## §1.5 Concurrency control @@ -163,21 +169,21 @@ the stale lockfile and retries once. bounded by start and end times. - A **task** is a goal unit and may bundle multiple sessions. - 1 task : N sessions is allowed. -- 1 session : 1 task. (1 session : N tasks is **not** allowed in v0.1.) +- 1 session : 1 task. (1 session : N tasks is **not** allowed.) - A session may exist without a task (for ad-hoc work). - A session is bound to a single workspace. ## §2.2 Every event is bound to a session -In v0.1, every event must belong to some session and is written to +Every event must belong to some session and is written to `.basou/sessions//events.jsonl`. - `task_created` and `task_status_changed` are written to the events.jsonl of the session that executed them. -- Creating a task without going through a session is not allowed in v0.1. -- CLI flows that create a task directly (e.g. `basou task create`) +- Creating a task without going through a session is not allowed. +- CLI flows that create a task directly (e.g. `basou task new`) implicitly create an ad-hoc session. -- A workspace-aggregated event log is reconsidered in v0.2 or later. +- A workspace-aggregated event log is reconsidered in a future release. ## §2.3 Example relationship @@ -200,7 +206,7 @@ linked_workspaces: - ws_yyy ``` -This is not implemented in v0.1. +This is not implemented. --- From 67cc0233bcc4872d9bd33316858df87ce2665ca6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E5=B1=B1=E8=B2=B4=E8=87=B3?= Date: Tue, 9 Jun 2026 15:25:52 +0900 Subject: [PATCH 3/4] docs: align contributor and release docs with the published line - CONTRIBUTING: replace "early pre-OSS / v0.3.x line" with version-independent wording (scoped @basou/* packages published, APIs still stabilizing) and drop the v0.1/v0.3 framing from the pathless-error note. - README: de-version the package table and the --version examples; the version badge and status line remain the single intentional current-version surface. - release-checklist: de-version the "current 0.3.1 line" lead-in and backfill the published-releases table with 0.4.0 through 0.7.0 (all on npm). The 0.3.1 and 0.6.0 captured dry-run blocks stay as dated evidence. - bug_report: drop the stale 0.3.1 version example and point the sanity-check reference at the canonical basou.dev URL (the local quickstart is now a redirect stub without that anchor). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/ISSUE_TEMPLATE/bug_report.md | 4 ++-- CONTRIBUTING.md | 20 ++++++++++---------- README.md | 10 +++++----- docs/release-checklist.md | 8 ++++++-- 4 files changed, 23 insertions(+), 19 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 922a2377..4388f4a0 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -41,7 +41,7 @@ For long output, fence it in a triple-backtick block. ## Environment -- `basou --version` (e.g. `0.3.1`): +- `basou --version`: - Node.js version (`node --version`): - pnpm version (`pnpm --version`): - OS (macOS / Linux + version): @@ -58,7 +58,7 @@ If the bug touches a specific workspace, paste the Workspace ID from - Last passing line: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1884b4c1..badef843 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,11 +1,11 @@ # Contributing to Basou -Thanks for your interest in Basou! Basou is in early pre-OSS stage — -the v0.3.x line is dogfood-ready, the public APIs are still in flux, -and we're collecting feedback from a small set of trial users before -opening contributions broadly. This document describes how to set up -the project, the change conventions we follow, and the easiest way to -report problems while we're in this state. +Thanks for your interest in Basou! Basou is in a pre-1.0 stage — the +scoped `@basou/*` packages are published to npm and dogfood-ready, the +public APIs are still stabilizing, and we're collecting feedback from a +small set of trial users before opening contributions broadly. This +document describes how to set up the project, the change conventions we +follow, and the easiest way to report problems while we're in this state. ## Reporting issues / friction @@ -63,10 +63,10 @@ end-to-end. pull request. - **`pnpm test`** (= vitest) runs each package's suite; new features land with tests in the same commit. -- **Error messages stay pathless on the CLI surface.** v0.1 - established a "no absolute paths in stderr" contract; v0.3 - added a workspace-write-time path sanitizer that follows the same - principle. See [docs/spec/](docs/spec/) for the full rules. +- **Error messages stay pathless on the CLI surface.** basou + maintains a "no absolute paths in stderr" contract, and a + workspace-write-time path sanitizer follows the same principle. See + [docs/spec/](docs/spec/) for the full rules. ## Commits and pull requests diff --git a/README.md b/README.md index b003b774..2a74b845 100644 --- a/README.md +++ b/README.md @@ -93,9 +93,9 @@ underlying data model, see [docs/spec/](docs/spec/). | Package | Description | Status | | -------------- | ------------------------------------------------------------------ | ------------------- | -| `@basou/cli` | The `basou` command-line tool | v0.7.0 — published on npm | -| `@basou/core` | Core library: sessions, events, approvals, git capability | v0.7.0 — published on npm | -| `@basou/sdk` | Read-only SDK for reading a workspace's provenance | v0.7.0 — published on npm | +| `@basou/cli` | The `basou` command-line tool | Published on npm | +| `@basou/core` | Core library: sessions, events, approvals, git capability | Published on npm | +| `@basou/sdk` | Read-only SDK for reading a workspace's provenance | Published on npm | ## Installation @@ -107,7 +107,7 @@ Requires Node.js >= 20.10.0. npm install -g @basou/cli # Verify -basou --version # → 0.7.0 +basou --version ``` See [basou.dev/installation/](https://basou.dev/installation/) for upgrade and @@ -131,7 +131,7 @@ pnpm -r build pnpm --filter @basou/cli link --global # Verify -basou --version # → 0.7.0 +basou --version ``` ## Development diff --git a/docs/release-checklist.md b/docs/release-checklist.md index 37e48aab..2aed2f28 100644 --- a/docs/release-checklist.md +++ b/docs/release-checklist.md @@ -4,8 +4,8 @@ This document is the maintainer-facing companion to [CONTRIBUTING.md](../CONTRIBUTING.md) "Release flow". CONTRIBUTING.md spells out the contributor-side steps that every release shares (land `## Unreleased`, bump versions, tag); this file expands the publish -side that only maintainers run, plus the dry-run evidence that the -current `0.3.1` line is safe to push to the public registry. +side that only maintainers run, plus the dry-run evidence that a +scoped `@basou/*` release is safe to push to the public registry. Read this before running `pnpm -r publish --access public` on a new release. @@ -15,6 +15,10 @@ release. | Date | Version | Packages | Notes | |------------|---------|-------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| | 2026-05-22 | 0.3.1 | `@basou/core`, `@basou/cli`, `@basou/sdk` | First public scoped release. Published in dependency order (core → cli → sdk); each `pnpm publish` re-authed via the npm web 2FA flow. Registry confirmed all three via `npm view @basou/ versions`. | +| 2026-05-27 | 0.4.0 | `@basou/core`, `@basou/cli`, `@basou/sdk` | Scoped release (no dedicated CHANGELOG section). | +| 2026-06-04 | 0.5.0 | `@basou/core`, `@basou/cli`, `@basou/sdk` | `basou stats` and the generated CLI command reference. | +| 2026-06-05 | 0.6.0 | `@basou/core`, `@basou/cli`, `@basou/sdk` | `@basou/sdk` read-only runtime API and shipped JSON Schema artifacts. | +| 2026-06-08 | 0.7.0 | `@basou/core`, `@basou/cli`, `@basou/sdk` | Multi-root capture and `basou refresh --watch`. | ## Pre-publish dry-run (verified 2026-05-22) From dbeca45bc0cc1735588b022dcdb8b40514ba1b46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E5=B1=B1=E8=B2=B4=E8=87=B3?= Date: Tue, 9 Jun 2026 15:25:52 +0900 Subject: [PATCH 4/4] ci(quality): drop the stale test-count comment The Test step comment hardcoded a "v0.3.1 baseline is 1015 tests" count that has long since drifted from the suite. Replace it with a version- and count-independent note so it does not re-stale on every test addition. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/quality.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 519e8d84..b101f883 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -38,8 +38,7 @@ jobs: # workspace packages typecheck against the published shape. run: pnpm typecheck - name: Test - # vitest per package; the v0.3.1 baseline is 1015 tests - # (cli 367 + core 647 + sdk 1). Any test break here fails CI. + # vitest per package; any test break here fails CI. run: pnpm -r test - name: Lint # biome check across the workspace; this is the gap that the