Skip to content

feat(cli): queue / topic / stream resource verbs (spec 29) - #89

Merged
gustavobertoi merged 2 commits into
mainfrom
feat/spec29b-messaging-verbs
Jul 1, 2026
Merged

feat(cli): queue / topic / stream resource verbs (spec 29)#89
gustavobertoi merged 2 commits into
mainfrom
feat/spec29b-messaging-verbs

Conversation

@gustavobertoi

Copy link
Copy Markdown
Contributor

Spec 29 (messaging half) — completes the M9 local-cloud lane. Built in a worktree, verified locally (make ci + determinism + CGO=0 4-target cross-build green; go.mod tidy clean; all new deps pure-Go).

  • queuecreate/list/rm over NATS (JetStream work-queue), Redis (list), or SQS (LocalStack, opt-in). Native NATS default.
  • topic — pub/sub over Kafka/Redpanda or SNS (LocalStack, opt-in).
  • stream — durable streams over NATS (JetStream) or Kafka, --partitions/--retention.

Four new pure-Go provisioners behind mockable seams: NATS (nats.go), Kafka/Redpanda (franz-go/kadm, reached via the template's 127.0.0.1:49092 external listener), LocalStack SQS/SNS (aws-sdk-go-v2, incl. FIFO/DLQ + SNS→SQS subscribe), and a thin Redis key-namespace. Each runs the flock→overlay→provisioner→ledger→event flow; --engine inference is native-by-default (never auto-starts an engine, clear error if unsatisfiable); tenant-scoped names (--no-prefix); --json; ledger kind=queue|topic|stream (free-text, no migration).

New deps (all pure-Go, confirmed CGO-free in the static cross-build): nats.go, franz-go+kadm, aws-sdk-go-v2/service/{sqs,sns}. make vuln is unchanged pre-existing go1.26-toolchain stdlib noise (new deps not called).

With this, the local-cloud data plane is complete: databases, users, buckets+lifecycle, queues, topics, streams — declarative (resources:) and imperative — across postgres/minio/localstack/nats/kafka.

🤖 Generated with Claude Code

gustavobertoi and others added 2 commits June 30, 2026 22:34
Messaging half of spec 29: NATS (JetStream streams + work-queue consumers),
Kafka/Redpanda (topics), LocalStack SQS/SNS (opt-in), and a thin Redis queue/
topic key namespace — all pure-Go clients (nats.go, franz-go, aws-sdk-go-v2)
behind mockable seams, wired through the existing lock->overlay->provisioner->
ledger->event flow. NATIVE-by-default engine inference; --no-prefix; --json;
ledger kind=queue|topic|stream (no migration).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Table-driven tests for the nats/kafka/localstack/redis provisioners behind
their mock seams (create/list/delete + project-prefix isolation + idempotency),
orchestrate CreateResource ledger-kind recording for queue/topic/stream, and the
CLI groups (registration, flags, --engine native-default inference, invalid/
unsatisfiable-engine errors, --partitions-rejected-for-nats guard). go mod tidy.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@gustavobertoi
gustavobertoi merged commit 477fad7 into main Jul 1, 2026
4 checks passed
@gustavobertoi
gustavobertoi deleted the feat/spec29b-messaging-verbs branch July 1, 2026 02:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant