Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -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):
Expand All @@ -58,7 +58,7 @@ If the bug touches a specific workspace, paste the Workspace ID from
<!--
If `pnpm test` or `basou` failed on a fresh checkout, mention which
line of the quickstart sanity-check passed last and which one failed.
Reference: docs/quickstart.md#sanity-check-checklist
Reference: https://basou.dev/quickstart/#sanity-check-checklist
-->

- Last passing line:
Expand Down
3 changes: 1 addition & 2 deletions .github/workflows/quality.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 10 additions & 10 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -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

Expand Down Expand Up @@ -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

Expand Down
10 changes: 5 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand All @@ -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
Expand All @@ -131,7 +131,7 @@ pnpm -r build
pnpm --filter @basou/cli link --global

# Verify
basou --version # → 0.7.0
basou --version
```

## Development
Expand Down
9 changes: 4 additions & 5 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
8 changes: 6 additions & 2 deletions docs/release-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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/<pkg> 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)

Expand Down
8 changes: 4 additions & 4 deletions docs/spec/approval.md
Original file line number Diff line number Diff line change
@@ -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`

Expand Down Expand Up @@ -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.
Expand All @@ -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.
Expand Down
108 changes: 43 additions & 65 deletions docs/spec/cli-commands.md
Original file line number Diff line number Diff line change
@@ -1,75 +1,53 @@
# 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 <session_id>
basou session note <session_id>
basou session import --format json --from <path>

# Task management
basou task new
basou task list
basou task show <task_id>
basou task status <task_id> <new_status>
basou task reconcile [--task <task_id>] [--write] [--json] [-v|--verbose] # v0.2
basou task refresh-linkage <task_id> [--write] # v0.2
basou task edit <task_id> [--title <text>] [...] # v0.2
basou task delete <task_id> --yes # v0.2
basou task archive <task_id> --yes # v0.2

# Decision records
basou decision record

# Adapter-mediated execution
basou run claude-code [args...]

# Environment observation
basou exec <command>

# Approval
basou approval list
basou approval show <approval_id>
basou approval approve <approval_id>
basou approval reject <approval_id> --reason "..."

# Status
basou status

# Regenerate generated artifacts
basou handoff generate
basou decisions generate

# Configuration
basou config <key> <value>
# 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 <https://basou.dev/commands/reference/>; you can
also read it locally with `basou <command> --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 <command> [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
basou review-flow new
basou report generate
basou analytics
```

> Native-log import did ship — but as its own `basou import <adapter>`
> 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.
4 changes: 2 additions & 2 deletions docs/spec/generated-markdown.md
Original file line number Diff line number Diff line change
Expand Up @@ -103,15 +103,15 @@ 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.
- Only entries the user explicitly records via `basou decision record` (or
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.
33 changes: 18 additions & 15 deletions docs/spec/overview.md
Original file line number Diff line number Diff line change
@@ -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 <adapter>`) 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.
Loading