Skip to content

ATape v0.5.7

Choose a tag to compare

@github-actions github-actions released this 10 Oct 11:57
c6cccd8

ATape v0.5.7: Explicit capture migration and unattended update recovery

This release adds an explicit, recoverable local capture migration to the managed
update path. The coordinated npm bundle contains @atape/cli and the seven
official Adapters, all at 0.5.7. Publication and unattended delivery are separate
results: this candidate must pass its automated gates before publication, and
public packages alone do not establish a successful production-registry upgrade.

The Authentication epoch remains auth-v1, including the 180 days absolute Web
Session lifetime. Artifact release and minimum CLI metadata are 0.5.7. Publishing
npm packages does not deploy a Server or change an existing Instance's minimum
CLI version.

To refresh the actual command entry with Node.js 24 or newer:

npm install --global @atape/cli@0.5.7

Explicit local migration and continued compatibility

The first compiled plan is atape.capture-migration.v1 / journal-v7-to-v8. A
migration-capable capture-v1 or capture-v2 runtime can move registered journals
at format 7 or 8 to actual capture contract atape.client.v3-capture.v2.
Transactional v7-to-v8 SQL preserves bindings, Canonical and Raw obligations,
receipts and checkpoints; verified v8 is an idempotent no-op. Projects, tool
selection, credentials, privacy settings and Stop intent are retained. Manual
upgrades use the same migration path for retained journals even when tools have
been disconnected. This does not import history or migrate Server storage.

The verified target performs read-only preflight before the bounded collection
pause. For enabled SourceCapture v2 sources that are intended to run, it checks
the Server's publication and legacy-adoption capabilities using existing
credentials. An Adapter's declared publication profile determines its minimum;
Cursor requires Profile3. Stopped collection permits local migration without
remote prerequisites. Scope and inventory are checked again under ownership so
a concurrent Start or configuration change cannot reuse an obsolete preflight.

Before the durable forward boundary, a confirmed failure can restore the exact
previous selection. After that boundary, recovery must continue with the recorded
target and plan. A strict requirement, progress ledger and completion receipt
gate ordinary capture writes. Recovery checks each attempt's authority under the
same barrier as the reader floor; a revoked apply process cannot commit further
progress. Missing metadata can be repaired only from matching surviving evidence;
unknown or inconsistent state fails closed. Do not delete recovery metadata as
a repair.

A completed receipt permits later compatible runtimes at or above its target,
subject to the current reader floor. It does not pin an obsolete executable,
bootstrap identity or Adapter slot. An active controlled-session creation proof
defers a floor advance until confirmation or abandonment, without killing the
interactive native session or allowing stale writers past the floor.

Migration-capable clients prefer the fixed v2 catalog, whose routes bind source
contract, control protocol and known migration plan to a complete immutable
bundle. The original v1 catalog and descriptor remain compatible; their readers
require the original seven packages and accept bounded additive packages. The
current publisher verifies all eight packages, including Cursor. New Adapters
are not installed or enabled merely because a bundle contains them. Old plan
routes and a real capture-v2 bridge on legacy GitHub/npm latest must remain
available for indefinitely offline clients. Future state formats and plans need
their own implementation, recovery bridge and verification; this release does
not authorize arbitrary migrations from remote metadata.

See explicit migration behavior
and ADR-0115.

Independent wakeup and older installations

Automatic updates are enabled by default after tool initialization and can be
disabled in Settings. Supported npm-global macOS/Linux installations register an
independent hourly user-level wakeup. It checks the existing due schedule while
the console is closed, login startup is off or collection is stopped, without
issuing Start. Disabling updates stops future new work; scheduling needed by an
in-flight update remains available for recovery and is removed when safe.
Recovery after the forward boundary still runs with automatic updates off and
preserves the latest Stop intent.

Immutable 0.5.3 does not acquire migration, discovery or wakeup support from this
release. Its incompatible initial boundary needs the
documented manual transition.
Existing capture-v2 clients can receive a compatible bridge, but a 0.5.4
installation enrolls independent scheduling only after a capable actual entry
runs. A newer managed selection does not prove the npm command entry was
refreshed; new command grammar may require that refresh. Reopen old consoles
after upgrading. External npm replacement is not crash-atomic.

The wake requires a running user manager and an available Node/npm installation.
It does not update a powered-off machine or supervise collection. Controlled
process, SQLite, orphan-process and physical-disk tests exercise recovery
boundaries; native helper tests exercise repeated OS activation. They do not
establish real capture after logout/reboot, calendar sleep, recovery from an
actual machine power cut, or a migration delivered through the production
registry. Those remain unverified operational acceptance limits.

Cursor and Server prerequisites

Cursor remains experimental. Existing acceptance uses constructed Confab-derived
rows and a synthetic native executable, not authenticated Cursor CLI or IDE
conversations. The selected static profile is Cursor CLI 2026.10.01-e373342;
other versions, real streaming/compaction and platform equivalence remain
unverified. Controlled creation requires a fresh session through
atape start --tool cursor, an updated actual bootstrap, a connected Project,
an enabled Cursor Adapter, an interactive macOS/Linux terminal and an explicit
absolute ATAPE_CURSOR_EXECUTABLE path. Unconfirmed history is skipped. A
nonprefix rewrite or truncation conservatively stops that source while keeping
its published head. See the Cursor guide.

Cursor upload still requires a Server supporting
atape.publication-target.v3, storage migration
000024_unknown_conversation_time.sql, and matching Reader/Search/Web behavior.

An older Server fails capability negotiation; source clocks are not fabricated.
Other providers retain their existing publication profile unless they explicitly
declare Profile3. Server deployment and the production storage migration are
separate operator actions and are not authorized or performed by this release.

Candidate validation and manual acceptance disclosure

The exact frozen 0.5.7 candidate must pass repository checks, production builds,
checksummed installed CLI/Adapter acceptance, terminal and historical-client
contracts, real local migration/recovery contracts, authenticated PostgreSQL
provider contracts, dependency/container security, Go race/fuzz, self-host
configuration and paired restore gates. Prior PR results and older package
hashes are not this candidate's completed acceptance. No candidate CI or
publication outcome is claimed by preparing these notes.

All eight packages use the ordinary GitHub Actions Trusted Publisher route.
Cursor's one-version local bootstrap in 0.5.6 remains a historical record;
neither its skipped 0.5.6 workflow step nor its trust configuration proves a
successful Cursor OIDC publication. The workflow must verify all eight exact
public manifests and tarball bytes before advertising the version Release,
compatible v1 catalog and migration v2 catalog. Publication evidence must cover
the actual frozen 0.5.7 candidate.

Staging evidence remains pending. These manual
checks are unverified and waived for publication only, never recorded as passed:

  • candidate-artifacts: manual acceptance of the candidate artifacts.
  • official-topology: operation in the official deployment topology.
  • github-provider-staging-smoke: live GitHub Provider staging smoke.
  • official-domain-egress-deny-smoke: official-domain egress isolation.
  • two-user-two-team: two-user/two-Team acceptance.
  • waf-tls-callback: WAF, TLS and callback configuration.
  • backup-restore: operational backup and restore.
  • observability-secret-sample: observability secret sampling.
  • rollback: operational rollback exercise.
  • release-signoff: manual release signoff.

On 2026-10-10 in Asia/Singapore, the user explicitly requested publication with
“那你触发下发布吧”. Under
ADR-0048, that
request authorizes the manual-only waiver for this coordinated release. The
separate waiver will bind the exact frozen candidate after preparation; automated
gates remain mandatory. This request does not authorize Server deployment or
a production database migration.

{
"protocol": "atape.release-bundle.v1",
"version": "0.5.7",
"captureStateContract": "atape.client.v3-capture.v2",
"updateControlProtocol": "atape.update-control.v1",
"packages": [
{
"name": "@atape/adapter-claude",
"integrity": "sha512-OmEHG2NVdgiR1WqysaCX8ss2CpnYrB1v/hQi3cvBZJ5W0YXL2AovaZXzXgmx7SO4uNNamCupkeuhSgOnb36l+Q==",
"tarball": "https://registry.npmjs.org/@atape/adapter-claude/-/adapter-claude-0.5.7.tgz"
},
{
"name": "@atape/adapter-codebuddy",
"integrity": "sha512-NEwKrO7eZa3NANJ4wXI+ueKsnWEmYQIxYECv3kKfqHQpBLP91Q6pWVi8atGjt7gHIsb8tQG5nmKGuj6GI8dMbA==",
"tarball": "https://registry.npmjs.org/@atape/adapter-codebuddy/-/adapter-codebuddy-0.5.7.tgz"
},
{
"name": "@atape/adapter-codex",
"integrity": "sha512-PSNd8HrNzZ5QxyCXUEjEoYH2eHm67UsThhIYaQsqV26WpmrtemPflGeUE3qTGFLKht7FD3PvLCWjoGX0/uzO6g==",
"tarball": "https://registry.npmjs.org/@atape/adapter-codex/-/adapter-codex-0.5.7.tgz"
},
{
"name": "@atape/adapter-cursor",
"integrity": "sha512-0297lfaFMm0k/VriLFEscm58PSDizOy++j0f8TKorSzmnhcUoJuTp++wIYDNK/uORwMfkkyjqqNg03QrubihDg==",
"tarball": "https://registry.npmjs.org/@atape/adapter-cursor/-/adapter-cursor-0.5.7.tgz"
},
{
"name": "@atape/adapter-grok",
"integrity": "sha512-U++v3biJ9+GRMt/2QFJvuPIbDo8njR9Zfk6fi5SPd7bQ8mb1SlDRDMbzHWekiJ7mYQTI3v1p4pJBpjhM905Nlw==",
"tarball": "https://registry.npmjs.org/@atape/adapter-grok/-/adapter-grok-0.5.7.tgz"
},
{
"name": "@atape/adapter-kimi",
"integrity": "sha512-asw0trBaSweVNoNkekzUzgYyX+TxGe0/k/Ya6EUCo9gy/wzRewX3+nopekMKCTwwoFTxquAoZOtZY0QuNgs2jg==",
"tarball": "https://registry.npmjs.org/@atape/adapter-kimi/-/adapter-kimi-0.5.7.tgz"
},
{
"name": "@atape/adapter-opencode",
"integrity": "sha512-H9K6MDL6fWBs58j2AIiKelLyZgIC2IciZ3Oqm3waz0qMcIG0Pt25Ux+WG+ha48SLDJDJdCHuoUZfNRfdOtCzhA==",
"tarball": "https://registry.npmjs.org/@atape/adapter-opencode/-/adapter-opencode-0.5.7.tgz"
},
{
"name": "@atape/cli",
"integrity": "sha512-0izyGIpTlIEsZsLgK5tk2A0qzoyuLuMVJcEAny3VE48GtPbNztVqtYR+nhzTCXzwzMm47GJDcEW5BtGmxPE2vw==",
"tarball": "https://registry.npmjs.org/@atape/cli/-/cli-0.5.7.tgz"
}
]
}

{
"protocol": "atape.release-bundle.v2",
"version": "0.5.7",
"captureStateContract": "atape.client.v3-capture.v2",
"updateControlProtocol": "atape.update-control.v1",
"packages": [
{
"name": "@atape/adapter-claude",
"integrity": "sha512-OmEHG2NVdgiR1WqysaCX8ss2CpnYrB1v/hQi3cvBZJ5W0YXL2AovaZXzXgmx7SO4uNNamCupkeuhSgOnb36l+Q==",
"tarball": "https://registry.npmjs.org/@atape/adapter-claude/-/adapter-claude-0.5.7.tgz"
},
{
"name": "@atape/adapter-codebuddy",
"integrity": "sha512-NEwKrO7eZa3NANJ4wXI+ueKsnWEmYQIxYECv3kKfqHQpBLP91Q6pWVi8atGjt7gHIsb8tQG5nmKGuj6GI8dMbA==",
"tarball": "https://registry.npmjs.org/@atape/adapter-codebuddy/-/adapter-codebuddy-0.5.7.tgz"
},
{
"name": "@atape/adapter-codex",
"integrity": "sha512-PSNd8HrNzZ5QxyCXUEjEoYH2eHm67UsThhIYaQsqV26WpmrtemPflGeUE3qTGFLKht7FD3PvLCWjoGX0/uzO6g==",
"tarball": "https://registry.npmjs.org/@atape/adapter-codex/-/adapter-codex-0.5.7.tgz"
},
{
"name": "@atape/adapter-cursor",
"integrity": "sha512-0297lfaFMm0k/VriLFEscm58PSDizOy++j0f8TKorSzmnhcUoJuTp++wIYDNK/uORwMfkkyjqqNg03QrubihDg==",
"tarball": "https://registry.npmjs.org/@atape/adapter-cursor/-/adapter-cursor-0.5.7.tgz"
},
{
"name": "@atape/adapter-grok",
"integrity": "sha512-U++v3biJ9+GRMt/2QFJvuPIbDo8njR9Zfk6fi5SPd7bQ8mb1SlDRDMbzHWekiJ7mYQTI3v1p4pJBpjhM905Nlw==",
"tarball": "https://registry.npmjs.org/@atape/adapter-grok/-/adapter-grok-0.5.7.tgz"
},
{
"name": "@atape/adapter-kimi",
"integrity": "sha512-asw0trBaSweVNoNkekzUzgYyX+TxGe0/k/Ya6EUCo9gy/wzRewX3+nopekMKCTwwoFTxquAoZOtZY0QuNgs2jg==",
"tarball": "https://registry.npmjs.org/@atape/adapter-kimi/-/adapter-kimi-0.5.7.tgz"
},
{
"name": "@atape/adapter-opencode",
"integrity": "sha512-H9K6MDL6fWBs58j2AIiKelLyZgIC2IciZ3Oqm3waz0qMcIG0Pt25Ux+WG+ha48SLDJDJdCHuoUZfNRfdOtCzhA==",
"tarball": "https://registry.npmjs.org/@atape/adapter-opencode/-/adapter-opencode-0.5.7.tgz"
},
{
"name": "@atape/cli",
"integrity": "sha512-0izyGIpTlIEsZsLgK5tk2A0qzoyuLuMVJcEAny3VE48GtPbNztVqtYR+nhzTCXzwzMm47GJDcEW5BtGmxPE2vw==",
"tarball": "https://registry.npmjs.org/@atape/cli/-/cli-0.5.7.tgz"
}
],
"migration": {
"protocol": "atape.capture-migration.v1",
"id": "journal-v7-to-v8",
"fromCaptureStateContracts": [
"atape.client.v3-capture.v1",
"atape.client.v3-capture.v2"
]
}
}