Repository navigation
v0.6.1
[0.6.1] - 2026-05-24
Re-negotiation escape hatches (issue #2): removing accepted artifacts, and a read-only validity check so you stop reverse-engineering the validation model by proposing things.
Added
brackish retract <doc> --endpoint "GET /a" --schema Foo [--convention] [--reason ...]removes already-accepted artifacts (atomic, all-or-nothing). The post-removal doc must still validate, so a wedged doc — accepted-but-invalid under a newer OpenAPI check — is fixed by retracting the invalid set together, then re-proposing clean. Retraction is a tombstone version (history preserved), effective immediately; the peer seesartifact_retractedevents. New artifact statusretracted+ schema migration (v3→v4) widening thestatusCHECK.brackish validate <doc> [--manifest <file>]dry-runs the server's OpenAPI 3.1 assembly + meta-schema validation and writes nothing. Bare form checks the current accepted doc (diagnoses an already-invalid doc);--manifestpreviews proposing a whole set together, exactly aspropose-batchassembles it.
Changed
propose-batchfailure output no longer reads as a per-item, partially-applied sequence. An atomic rejection now says the batch was rejected and nothing was written, instead of listing "remaining (not attempted)" items that implied a stop-on-first commit.spec_invalidrecovery hint now distinguishes "your spec is wrong" from "the doc is already invalid from other artifacts" and points atbrackish validate/brackish retract.<kind> lintwarns on OpenAPI 3.0nullable(removed in 3.1 — the meta-schema silently ignores it, so it passes server validation but 3.1 codegen treats the field as non-nullable). Names the field path; suggeststype: [<type>, 'null'].
Fixed
<kind> show <doc> <id>routes the status header/divider to stderr, leaving only the spec body on stdout — soshow > file.yamlwrites a clean file, as the skill always claimed. Both versions present → bodies joined by a---YAML document separator on stdout.