Commit Graph

69 Commits

Author SHA1 Message Date
Bryan Frimin
472ca703b5 Mitiate SSRF attack
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-20 12:11:17 +02:00
Bryan Frimin
e84094e62c Add logging and encryption rules
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-19 11:59:22 +02:00
Bryan Frimin
5efe9e5b0f Update agent rules
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-19 11:49:55 +02:00
Bryan Frimin
29818714a8 Style
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-19 11:44:05 +02:00
Bryan Frimin
ab52dc0a34 Clean agent rules
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-19 11:42:50 +02:00
Bryan Frimin
53edc5ba26 Fix compose config
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-15 16:42:56 +02:00
Émile Ré
713623c7c0 Document enum parameter rule and fix call style
Add coredata guide section on using Go enum constants as named
SQL parameters instead of hardcoded string literals. Fix mixed
inline/multiline RenderJSON call in cookie banner handler.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 10:21:01 +04:00
Émile Ré
85061884e7 Update contrib/claude/coredata.md
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Signed-off-by: Émile Ré <nemile.re@gmail.com>
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 10:21:00 +04:00
Émile Ré
01ca89de4a Rename migration
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 10:21:00 +04:00
Émile Ré
fe1b5dae4e Review fixes
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 09:24:48 +04:00
Émile Ré
31abc31454 Replace npm run relay with make relay everywhere
The make relay target merges split graphql files into a single
schema.graphql before running the Relay compiler. All CI workflows,
the generate target, and documentation now use make relay.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 09:19:41 +04:00
Émile Ré
00b233aa03 Fix Relay generating null query text for mutations
Relay v20 treats extend type in server schema as client extensions,
causing all mutation fields to have "text": null in generated artifacts.

Replace the cat-based schema concatenation with a merge script that
collects all extend type Mutation blocks and produces a single
type Mutation definition. The split graphql/ files remain the source
of truth for gqlgen; the merged schema.graphql is generated for Relay.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 09:19:41 +04:00
Émile Ré
31cca05ca4 Split GraphQL schemas into per-entity files
Split each API's monolithic schema.graphql into per-coredata-model
files under graphql/ subdirectories. gqlgen's follow-schema layout
with {name}.resolvers.go template generates one resolver file per
schema file. Relay uses schema + schemaExtensions to load the split
files.

Connect API: 8 files (base, session, organization, profile,
personal_api_key, saml, scim, audit_log)

Trust API: 5 files (base, trust_center, auth, nda, mailing_list)

Console API: 25 files covering all domain entities

Types extended across files (Organization, Mutation, Viewer,
TrustCenter, Identity) are defined in base.graphql as required by
Relay's schemaExtensions.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-15 09:19:38 +04:00
Émile Ré
74d7d3ff25 Upgrade Relay to v20.1.1 and unify compiler config
Consolidate the two per-app relay configs (console and trust)
into a single multi-project relay.config.json at the repo root
with three projects: core, iam, and trust. Bump all relay
packages from v19 to v20.1.1 and move relay-compiler to the
root devDependencies. Replace per-workspace relay scripts with
a single root-level npm run relay command and update the
GNUmakefile, CI workflows, and docs accordingly.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-14 16:04:11 +04:00
Émile Ré
61cd3244df Denormalize organization_id onto cookie entities
Add organization_id to cookie_banner_versions, cookie_categories,
and cookie_consent_records so AuthorizationAttributes can return
it directly without JOINing back to cookie_banners. Document the
pattern in contrib/claude/coredata.md.

Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-13 14:52:21 +04:00
Bryan Frimin
43336078f4 Migrate workers to kit/worker
Replace hand-rolled polling loops, semaphores, and WaitGroups
in all 7 background workers with go.gearno.de/kit/worker. Each
worker now implements Handler[T] (Claim/Process) and optionally
StaleRecoverer, gaining automatic Prometheus metrics and
OpenTelemetry tracing. Bumps kit from v0.3.0 to v0.5.0.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-04-13 12:25:42 +02:00
Émile Ré
722d4d2c45 Remove unused prop
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 12:17:16 +04:00
Émile Ré
ebd3a27c70 Update ui rules
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:58 +04:00
Émile Ré
7ea33ab68e Change naming rule
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:58 +04:00
Émile Ré
3df4e22da3 Fix page example
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:58 +04:00
Émile Ré
97afaed3ec Fix relay.md
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:58 +04:00
Émile Ré
6d537e8896 Add rules for app arborescence
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:58 +04:00
Émile Ré
be03883d80 Add rule for UI component props
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:57 +04:00
Émile Ré
d58d838f04 Add general react components rules
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:57 +04:00
Émile Ré
6e836d42f8 Add UI rules
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-07 11:38:57 +04:00
Émile Ré
a5d7630b9c Update release promp
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-03 18:18:10 +04:00
Émile Ré
ed826eb605 Add go style rules in contrib/claude
Signed-off-by: Émile Ré <emile@getprobo.com>
2026-04-01 18:03:25 +04:00
Sacha Al Himdani
6e9cee9d34 Document migration rules for indexes and defaults
Clarify that indexes should not be added speculatively and
should only be introduced when justified by production query
latency. Also document that columns should avoid DEFAULT
clauses, with guidance on backfilling non-nullable columns.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-20 10:52:31 +01:00
Bryan Frimin
a69b6da377 Document fix categorization rule in release guide 2026-03-20 10:32:51 +01:00
Bryan Frimin
baf8cf0837 Support developer-specific env vars in sandbox provisioning
Source a gitignored .sandbox.env file (if present) before running
probod-bootstrap so each developer can inject their own secrets
(SSO, API keys, etc.) without committing them to the repo.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 22:04:08 +01:00
Bryan Frimin
fc2c3eab61 Isolate sandbox node_modules with VM-local bind mount
Avoid platform conflicts between macOS host and Linux VM by
bind-mounting a VM-local directory over /workspace/node_modules.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-19 22:04:06 +01:00
Bryan Frimin
2be7337344 Disable Lima automatic port forwarding for sandbox
Lima auto-forwards ports from the VM to localhost, which blocks local
development on the same ports (e.g. localhost:8080). Services are
already accessible via the VM IP shown by `sandbox.sh status`.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 20:03:36 +01:00
Bryan Frimin
f3aa0dea36 Fix sandbox provisioning failure due to missing LIMA_CIDATA_USER
The provision script relied on LIMA_CIDATA_USER being set in the
environment, but during cloud-init this variable is not exported — it
only exists in /mnt/lima-cidata/lima.env. The file cannot be sourced
directly because values like LIMA_CIDATA_COMMENT contain unquoted
spaces, so we extract LIMA_CIDATA_USER with sed instead.

Also ensure HOME is set for root's go install commands and explicitly
set PATH when running make as the Lima user via su, since profile.d
scripts may not be loaded during cloud-init provisioning.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 19:51:53 +01:00
Bryan Frimin
9fd3473147 Fix sandbox Docker root issue and replace make dev with systemd services
Fixes docker permissions by enabling Docker daemon during provisioning. Replaces make dev with three managed systemd services: probo-stack (auto-starting Docker Compose infra), probod (API server with gow for hot-reload), and probo-console (frontend dev server). The stack now starts automatically on VM boot; probod and console are started manually after build.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 19:51:53 +01:00
Bryan Frimin
7895dd32b0 Fix logging format string bugs and add missing contributor guides
Replace three instances of leftover %T format verbs in logger.ErrorCtx() calls with proper structured logging fields. Add alphabetically-sorted reference documentation for six new contrib/claude/ guides and reorder the existing list.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 15:09:31 +01:00
Bryan Frimin
312e30d9e4 Add sandbox-specific probod config generation
Add a make target for probod-bootstrap and integrate it into the sandbox provisioning workflow. During VM provisioning, generate /etc/probod/config.yml with the Lima VM IP as the cookie domain, secure=false for HTTP access, and correct CORS origins. Also generate .env files for console and trust apps pointing to the VM IP. Update sandbox documentation to explain the auto-generated configuration.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-18 15:06:37 +01:00
Sacha Al Himdani
6c9b338ad5 Deprecate useMutationWithToasts and promisifyMutation
Update relay agent rules to mark both helpers as deprecated.
Replace examples with the preferred pattern: useMutation with
onCompleted/onError callbacks and useToast.

Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-17 17:51:55 +01:00
Sacha Al Himdani
532347fcda Add commit signing and authorship rules
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
2026-03-17 15:39:50 +01:00
Bryan Frimin
cb659411ba Add release guide documentation
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-17 08:52:32 +01:00
Bryan Frimin
3a38930628 Add seed script to populate dev environment with realistic compliance data
Validate GraphQL mutation responses in create_vendor, create_measure, and
create_framework helpers to ensure mutations actually returned data instead
of silently discarding the response.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-17 08:50:48 +01:00
Bryan Frimin
46635e7f04 Add Lima sandbox environment for parallel feature testing
Implement a complete sandbox system for testing multiple features in parallel
using git worktrees and Lima VMs. Each worktree gets its own isolated VM with
Docker, full service stack, and unique IP via vzNAT networking.

- contrib/lima/provision.sh: Idempotent provisioning script (Docker, Go 1.26.1, Node.js 24, npm 11.8.0, Go tools, mkcert)
- contrib/lima/probo.yaml: Lima VM template with vz vmType, Rosetta, vzNAT, virtiofs mount
- contrib/lima/sandbox.sh: Lifecycle CLI (create, start, stop, restart, delete, ssh, exec, status, list)
- contrib/lima/README.md: Human documentation with prerequisites, quickstart, troubleshooting
- contrib/claude/sandbox.md: Agent reference doc for sandbox usage patterns
- GNUmakefile: Convenience targets for sandbox.sh commands
- AGENTS.md: Updated reference documentation index

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-17 08:46:48 +01:00
Bryan Frimin
7147cf189a Reorganize GraphQL docs: separate Go backend from frontend Relay client
Move frontend Relay client documentation into relay.md and create new graphql.md dedicated to Go backend patterns. Covers gqlgen schema-first approach, @goModel/@goEnum/@goField directives, connection type patterns, and cursor pagination implementation.

- relay.md: Frontend Relay client (environments, compiler, queries, fragments, mutations)
- graphql.md: Go backend gqlgen (directives, connection types, pagination schema, keyset pagination)
- AGENTS.md: Update documentation references

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 19:09:39 +01:00
Bryan Frimin
5114a06acc Use for loop and ticker in worker pattern
Replace goto/LOOP with a for/select on time.Ticker for
clearer control flow.

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:34 +01:00
Bryan Frimin
76e6d5a9a7 Move Go service orchestration to contrib/claude
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:33 +01:00
Bryan Frimin
54183598cd Move Go worker pattern to contrib/claude
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:33 +01:00
Bryan Frimin
377807be2a Move Go test conventions to contrib/claude
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:32 +01:00
Bryan Frimin
21eaaef30a Extend license header to all source file types
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:32 +01:00
Bryan Frimin
4ea629283b Move license header to contrib/claude
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:32 +01:00
Bryan Frimin
c6f2c6a71c Move commit message conventions to contrib/claude
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:31 +01:00
Bryan Frimin
1b5f79c7d1 Add frontend Relay client guide
Signed-off-by: Bryan Frimin <bryan@getprobo.com>
2026-03-15 15:04:30 +01:00