Skip to content

docs: adopt the shared CueLABS Kafka bus in the system design - #244

Open
siyanbolagiggs1 wants to merge 5 commits into
cuesoftinc:mainfrom
siyanbolagiggs1:khalid-dev
Open

siyanbolagiggs1 wants to merge 5 commits into
cuesoftinc:mainfrom
siyanbolagiggs1:khalid-dev

Conversation

@siyanbolagiggs1

Copy link
Copy Markdown

Summary

Apparule shares one Kafka service with Expendit and Upstat. This PR records
that decision and adds the proposed system design, amended to fit it.

  • docs/decisions.md: adds X-11 Shared message bus, identical in
    all three products. Expendit is the keep-alive owner; Apparule runs no
    heartbeat or watchdog.
  • docs/system-design.md (new, [Proposed], awaiting ratification),
    with a shared-bus amendment:
    • Apparule's events on the shared lanes (§5.3), not 10 Apparule topics
    • measurement templates travel inside capture.ready
    • commerce's ledger view comes with each ledger.reconcile_requested, by
      pointer; no compacted ledger.entries
    • "queue in Kafka for 7 days" becomes "re-send from Postgres"
    • one Kafka user apparule, consumer groups apparule-<service>
    • all payloads by pointer, so measurement values never appear on the bus
  • .gitignore: ignores local copies of the CueLABS skills and personal
    notes.
  • Merges the latest main.

Related issues

Closes #243

Type of change

  • Bug fix
  • New feature
  • Refactor / chore
  • Documentation
  • Security fix

Affected areas

  • api/common (Go)
  • api/<service>
  • web
  • mobile
  • deploy
  • Other: docs/, .gitignore

Checklist

  • I followed the Contributing guide.
  • Commits follow Conventional Commits (feat:, fix:, chore:…).
  • Lint and tests pass locally. (Docs only; no code changed.)
  • No secrets, credentials, or .env files are committed.
  • Documentation updated where relevant.

Still to decide at ratification (S-9): consumers scale to zero with wake-ups,
as Expendit does, or run as worker pools.

Expendit, Apparule and Upstat share one Aiven Kafka service (boss,
2026-10-13), under the CueLABS delivery standard's shared-messaging.md:
three lanes (cuelabs.uploads/requests/results), per-product event types,
pointer-only payloads, no compacted topics, one Kafka user per product,
and Expendit as the keep-alive owner. Added word for word in all three
products' cross-cutting decisions.
The [Proposed] system design draft, awaiting the boss's ratification,
with the 2026-10-13 shared-bus amendment (decisions.md X-11): this
product's events on the CueLABS lanes (cuelabs.uploads/requests/results),
pointer-only payloads, no compacted topics, and the sections that need
rework before ratification.
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.

[Feature]: Adopt the shared CueLABS Kafka bus in the Apparule system design

1 participant