Skip to content

Implement the Platform API (Go): all operations, workers, MCP, CI/CD, Terraform - #1

Merged
Adron merged 3 commits into
mainfrom
dev
Oct 6, 2026
Merged

Adron merged 3 commits into
mainfrom
dev

Conversation

@Adron

@Adron Adron commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Implements the full Platform API specified in docs/, and documents it.

What's here

  • Every operation in docs/openapi.yaml (98), with Conventions behavior (errors, pagination, PATCH semantics, ETag/If-Match, idempotency, rate limits, me), Access Control, audit + webhook outbox in the same transaction, and access.* flip events.
  • Postgres schema, pgx (local/CI) and RDS Data API (AWS) drivers behind one interface, migration runner.
  • Webhook delivery, Stripe billing + sync (with a retry job for failed events), scheduled jobs, stateless MCP server generated from the spec.
  • Lambda entry points, devserver, admin bootstrap, scripts/quickstart.sh.
  • Integration + contract tests on real Postgres (every response validated against openapi.yaml), unit tests, race- and lint-clean.
  • ci.yml, deploy.yml (skips until AWS is bootstrapped), rollback.yml; Terraform bootstrap/ and prod/ (validated, not applied).
  • openapi.yaml drift fixes found by the contract tests (listed in the Changelog).
  • README, PLAN.md, DEPLOYMENT.md, and the Changelog updated to match; DECISIONS.md #32–#37 record choices the build made where the spec was silent or contradictory (all "Proposed — confirm", none blocking).

Not done (needs a person)

  • AWS one-time setup (README → One-time setup); nothing is deployed.
  • The main ruleset and production environment in GitHub.
  • Confirming or overriding DECISIONS #32–#37.

Merge with "Create a merge commit".

🤖 Generated with Claude Code

Adron and others added 3 commits October 6, 2026 03:31
…D, Terraform

- All 98 operations in docs/openapi.yaml (routes generated by oapi-codegen;
  bodies hand-written for exact nulls/PATCH presence), one transaction per
  request with RLS test/live isolation, idempotency, rate limits, ETag,
  audit + webhook outbox in the same transaction, access.* flip events.
- Postgres schema (migrations/0001_init.sql), pgx and RDS Data API drivers
  behind one interface, in-repo migration runner.
- Webhook delivery (signing, retries, health), Stripe billing + sync,
  scheduled jobs (sweep, erasure cascade, archival, seat sync, cleanup),
  stateless MCP server generated from the spec.
- Lambda entry points, devserver, admin bootstrap, Quickstart script.
- Integration + contract tests against real Postgres (every response
  validated against openapi.yaml); unit tests; race-clean; lint-clean.
- ci.yml / deploy.yml / rollback.yml; Terraform bootstrap + prod.
- openapi.yaml drift fixes found by contract tests (nullable fields,
  RE2-incompatible slug pattern, undeclared documented filters).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- README: Status (implemented, not deployed), stack table and layout as
  built, real local ports, devserver/jobs/keys behavior, the two database
  backends as implemented, make targets, and a concrete one-time setup.
- DECISIONS.md #32-#37 (Proposed — confirm): org/tenant RLS semantics,
  inline Stripe processing, JWKS without CloudFront, seat cap on scope
  changes, test mode and seats, audit immutability via trigger.
- PLAN.md build status; DEPLOYMENT.md pointers to #33/#34.
- Changelog: the openapi.yaml fixes the contract tests found.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On Linux, Go's nanosecond clock could round a fresh grant's starts_at up
past the request's own now, resolving it as scheduled and skipping
access.granted. macOS clocks tick in microseconds, which hid it locally.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@Adron Adron left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yay, LGTM!

@Adron
Adron merged commit e00a8bb into main Oct 6, 2026
8 checks passed
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