Repository navigation
v0.7.1
[0.7.1] - 2026-05-26
0.7.1 standardizes the CLI grammar (a breaking flip to verb-first) and makes every command atomic. On top of that: renegotiation got proper primitives — counter and a negotiated retract — and turns now deliver as coherent batches. Most of it came out of the e2e trials.
Added
brackish counter <noun> <id> --file <f> --rationale "<why>"— atomically rejects the peer's current proposed version and proposes your replacement in one transaction (no rejected-with-no-counter window). Replaces the manual reject-then-propose two-step, and reads in the log as a counter rather than a refusal.brackish accept <noun> --target … --include-dependencies— opt-in: also accepts the still-proposed schemas the targets$ref(transitive closure), in the same atomic batch. Default off; without it, accepting an endpoint whose schema isn't accepted yet is refused withaccept_orphans_ref, which names the missing schema and how to accept it.brackish deliver <doc>+ turn-delivery model. Your events (proposes/accepts/rejects/retractions/messages) are held until you deliver them, then surface to the peer'sread/inbox/waitas one batch.nap/waitimplydeliver; your own moves still show instatusimmediately. (events.delivered_atcolumn; migration backfills existing events as delivered.)
Changed
- BREAKING: the CLI is verb-first —
brackish <verb> <noun> [identity](accept endpoint GET /users, notendpoint accept). The document is the--docoption (defaults to the sole doc), no longer a positional.proposeis file-only (--file; the inline field/response/security builders are gone).--version/--expected-version→--rev/--expected-rev.propose-batch <doc> --manifest→propose --manifest. Variadicaccept <doc> A B C→accept <noun> --target A --target B. Standalone convention lint removed (propose --manifestpre-flight +validatecover it). - Every command is atomic — all-or-nothing. Batch accept now commits the whole set in one server transaction (was a client-side loop that could leave a partial accept); a mutually-referencing set accepts together, and any failure rolls back with nothing written.
propose --manifestandcounterlikewise. retractis now a negotiated propose/accept lifecycle under theretractionnoun.brackish propose retraction --endpoint X --schema Y --rationale "<why>"opens a grouped removal; the peer accepts it (tombstoned atomically, validated fully-valid-after) or rejects it. Verb-first:propose | accept | reject | withdraw | list retraction. Newretractionstable +retraction_*events. Breaking vs 0.6.1's unilateralretract(which removed immediately).brackish readinfers the sole document when<doc>is omitted (matchingstatus), and no longer truncates rejection/acceptance reasons or deltas.brackish installno longer wires aUserPromptSubmithook — skill (+ optional--permission) only; the foregroundstatus/naploop is the sync model.activate/deactivateare no-ops for now.