BubuStack is a Kubernetes-native automation stack composed of the bobrapet operator, the bobravoz-grpc transport plane, the bubu-sdk-go, and a growing catalog of Engrams and Impulses. Every repo follows the same principle: DOTADIW (Do One Thing And Do It Well) with declarative APIs, clean GitOps workflows, and production-grade reliability. Thank you for helping us keep that bar high.
- Use the repository that matches your change (operator, transport, SDK, Engram/Impulse, docs, or examples). Repository-specific READMEs describe any extra steps.
- For cross-cutting proposals, start a thread in org-wide Discussions so we can coordinate controller+SDK changes together.
- Security issues must follow the process in SECURITY.md; please do not open a public issue.
- Search the relevant repository issue tracker for existing reports.
- When filing a new bug report, include:
- Component (
bobrapet,http-request-engram,bubu-sdk-go, etc.). - Kubernetes version and cluster type.
- Custom Resources (
Story,StoryRun,Engram,Impulse,TransportBinding, etc.) or sample manifests. - Controller/Engram pod logs (
kubectl logs), SDK traces, or Stream payloads if applicable.
- Component (
- Tag issues with
kind/bugand, if relevant,area/operator,area/engram,area/sdk, orarea/transportto help us triage.
- Use the issue template to describe why the change is needed, not just the implementation. Helpful inputs include workload scale, latency budgets, tenancy constraints, and whether the change affects EngramTemplates, ImpulseTemplates, or SDK contracts.
- For brand-new Engram/Impulse ideas, share proposed
spec.withfields alongside the Bobrapet Story snippet so we can validate the CRD shape before implementation. - When asking for new transports, describe the streaming requirements (e.g., WebRTC, gRPC, or webhook semantics) so we can confirm they slot cleanly into the
bobravoz-grpcsurface.
- Fork and branch from
main. Keep each PR focused on one change-set (e.g., a new Engram parameter or a controller reconciliation tweak). - Discuss breaking changes early. If you need to evolve CRDs or SDK types, open a design issue first so downstream integrations can prepare.
- Run the relevant quality gates before opening the PR:
- Operators / transport controller:
make lint,make test,make generate,make manifests, and (optionally)make deploy IMG=<registry>/bobrapet:dev. - Engrams, impulses, SDK (Go):
make lint,make test,make docker-build IMG=<registry>/<component>:dev. - TypeScript/Node repos (e.g.,
bubustack/websiteor agent samples):pnpm install,pnpm lint,pnpm test,pnpm build.
- Operators / transport controller:
- Document user-facing changes. Update README/CHANGELOG/CRD docs plus Engram or Impulse templates when you add fields or alter defaults.
- Link issues and test evidence in the PR template. For controller work, include the
kubectlcommands or Kind/e2e scripts you ran.
- Prerequisites: Go 1.25.1+, Docker or another OCI builder,
kubectl, access to a Kubernetes cluster (Kind/Minikube is fine). - Common targets:
make lint,make test,make test-e2e,make generate,make manifests,make deploy IMG=<registry>/<name>:tag. - Samples:
config/samplescontains CRDs that can be applied viakubectl apply -k config/samplesto smoke-test Stories, StoryRuns, Engrams, and Impulses. - CRD changes: Run
make generateandmake manifeststo refreshapi/*deep-copies andconfig/crd/bases/*.yaml.
- Prerequisites: Go 1.25.1+, Docker,
make. - Quality gates:
make fmt,make lint,make test,make docker-build IMG=<registry>/<component>:dev. - Runtime verification: Use
kubectl apply -f Engram.yaml(or Helm/Kustomize overlays) plus a testStoryto validate overrides, streaming modes, andBUBU_DEBUGlogging.
- Prerequisites: Match the versions declared in each
package.json(node >=22&pnpm >=10for the agent starter,node >=20for the docs site). Use the package manager the repo already uses (pnpm where apnpm-lock.yamlexists, npm/yarn elsewhere). - Common scripts:
pnpm install && pnpm lint && pnpm test && pnpm buildfor pnpm-based repos, ornpm install && npm run buildfor Docusaurus/docs. - Testing: Keep E2E credentials out of commits; store secrets in
.env.localand supply mock fixtures for CI.
- Markdown files live alongside the code they describe. Run
pnpm formatormake fmtwhere provided to keep formatting consistent. - Organization-wide policies (Code of Conduct, Security, Support) are sourced from this
.githubrepository—update them here first, then sync downstream if needed.
- Follow Conventional Commits so release automation can build CHANGELOG entries.
- Rebase or merge
mainbefore requesting review when conflicts arise. - Every PR must pass CI, include tests (or rationale when tests are not applicable), and leave the tree in a deployable state.
All repositories sync a shared label taxonomy defined in .github/labels.yml. Please:
- Apply exactly one
kind/*label (bug, feature, docs, refactor, tests, chore). - Add one or more
area/*labels (operator, transport, SDK, engram, impulse, docs) pluspriority/*if known. - Use
status/*labels to reflect triage state (status/triage,status/needs-info,status/in-progress,status/blocked,status/ready). - Leave the
dependencieslabel on automation-driven PRs (e.g., Dependabot) so release tooling can batch them correctly.
If you introduce a new architectural surface, extend .github/labels.yml first so the taxonomy stays consistent before using bespoke labels in a single repo.
Participation in any BubuStack space is governed by the Contributor Covenant Code of Conduct. Report unacceptable behaviour to conduct@bubustack.com or via the org Discussions moderation form.