Skip to content

Commit 992069f

Browse files
authored
feat(bigquery): add local compatibility server (#6)
* docs(bigquery): add compatibility design * chore(bigquery): add autoloop automation * feat(bigquery): add local compatibility server * feat(dashboard): add BigQuery console * test(bigquery): add e2e smoke script * docs(readme): document BigQuery support
1 parent b00ca92 commit 992069f

27 files changed

Lines changed: 9990 additions & 49 deletions

File tree

.agents/orbit.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
| --- | --- | --- | --- | --- |
33
| 2026-04-30 | Orbit | generated S3 Codex autoloop script set | `scripts/s3-autoloop/`, `.gitignore`, `README.md` | ready for bounded S3 implementation loop with foundation/full gates |
44
| 2026-05-01 | Orbit | generated DynamoDB Codex autoloop script set | `scripts/dynamodb-autoloop/`, `.gitignore` | ready for bounded DynamoDB implementation loop with staged verification gates |
5+
| 2026-05-01 | Orbit | generated BigQuery Codex autoloop script set | `scripts/bigquery-autoloop/`, `.gitignore` | ready for bounded BigQuery REST v2 implementation loop with staged verification gates |

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ scripts/dynamodb-autoloop/progress.md
3535
scripts/dynamodb-autoloop/done.md
3636
scripts/dynamodb-autoloop/iteration-*.out
3737
scripts/dynamodb-autoloop/prompt-*.*
38+
scripts/bigquery-autoloop/.run-loop.lock
39+
scripts/bigquery-autoloop/.circuit-state
40+
scripts/bigquery-autoloop/runner.jsonl
41+
scripts/bigquery-autoloop/runner.log
42+
scripts/bigquery-autoloop/state.env
43+
scripts/bigquery-autoloop/state.env.sha256
44+
scripts/bigquery-autoloop/progress.md
45+
scripts/bigquery-autoloop/done.md
46+
scripts/bigquery-autoloop/iteration-*.out
47+
scripts/bigquery-autoloop/prompt-*.*
3848
scripts/dashboard-design-renewal-autoloop/.run-loop.lock
3949
scripts/dashboard-design-renewal-autoloop/.circuit-state
4050
scripts/dashboard-design-renewal-autoloop/runner.jsonl

README.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Local cloud service emulator for development and E2E inspection.
44

5-
`devcloud` runs a local dashboard plus compatible development endpoints for Mail, S3, GCS, and DynamoDB. It is designed for deterministic local tests and manual inspection, not for production workloads or full cloud-provider parity.
5+
`devcloud` runs a local dashboard plus compatible development endpoints for Mail, S3, GCS, DynamoDB, and BigQuery. It is designed for deterministic local tests and manual inspection, not for production workloads or full cloud-provider parity.
66

77
## Quick Start
88

@@ -28,6 +28,7 @@ Default local endpoints:
2828
| S3 | `http://127.0.0.1:4566` | `http://127.0.0.1:8025/s3` |
2929
| GCS | `http://127.0.0.1:4443` | `http://127.0.0.1:8025/gcs` |
3030
| DynamoDB | `http://127.0.0.1:8000` | `http://127.0.0.1:8025/dashboard/dynamodb` |
31+
| BigQuery | `http://127.0.0.1:9050` | `http://127.0.0.1:8025/dashboard/bigquery` |
3132

3233
Useful commands:
3334

@@ -52,6 +53,7 @@ server:
5253
s3Port: 4566
5354
gcsPort: 4443
5455
dynamodbPort: 8000
56+
bigqueryPort: 9050
5557

5658
auth:
5759
smtp:
@@ -67,6 +69,10 @@ auth:
6769
mode: relaxed
6870
accessKeyId: dev
6971
secretAccessKey: dev
72+
bigquery:
73+
mode: relaxed
74+
project: devcloud
75+
bearerToken: dev
7076

7177
storage:
7278
path: .devcloud/data
@@ -93,6 +99,16 @@ services:
9399
billingMode: PAY_PER_REQUEST
94100
maxItemBytes: 400000
95101
maxTables: 256
102+
bigquery:
103+
enabled: true
104+
project: devcloud
105+
location: US
106+
maxRowsPerTable: 1000000
107+
maxRequestBytes: 10485760
108+
query:
109+
maxResultRows: 10000
110+
maxExecutionSeconds: 30
111+
defaultUseLegacySql: false
96112
```
97113
98114
## Support Matrix
@@ -224,6 +240,7 @@ VERIFY_STAGE=full bash scripts/mail-autoloop/verify.sh
224240
VERIFY_STAGE=full bash scripts/s3-autoloop/verify.sh
225241
VERIFY_STAGE=full bash scripts/gcs-autoloop/verify.sh
226242
VERIFY_STAGE=full bash scripts/dynamodb-autoloop/verify.sh
243+
VERIFY_STAGE=full bash scripts/bigquery-autoloop/verify.sh
227244
```
228245

229246
Run E2E smoke tests:
@@ -233,6 +250,7 @@ scripts/mail-e2e.sh
233250
scripts/s3-e2e.sh
234251
scripts/gcs-e2e.sh
235252
scripts/dynamodb-e2e.sh
253+
scripts/bigquery-e2e.sh
236254
```
237255

238256
Keep a service running after the E2E journey for browser/API inspection:
@@ -242,6 +260,7 @@ E2E_INTERACTIVE=true scripts/mail-e2e.sh
242260
E2E_INTERACTIVE=true scripts/s3-e2e.sh
243261
E2E_INTERACTIVE=true scripts/gcs-e2e.sh
244262
E2E_INTERACTIVE=true E2E_DELETE_DATA=false scripts/dynamodb-e2e.sh
263+
E2E_INTERACTIVE=true E2E_DELETE_DATA=false scripts/bigquery-e2e.sh
245264
```
246265

247266
Override ports when defaults are already in use:
@@ -251,6 +270,7 @@ E2E_INTERACTIVE=true E2E_SMTP_PORT=1125 E2E_DASHBOARD_PORT=8125 scripts/mail-e2e
251270
E2E_INTERACTIVE=true E2E_S3_PORT=14566 E2E_DASHBOARD_PORT=18025 E2E_SMTP_PORT=11025 scripts/s3-e2e.sh
252271
E2E_INTERACTIVE=true E2E_GCS_PORT=14443 E2E_DASHBOARD_PORT=18025 scripts/gcs-e2e.sh
253272
E2E_INTERACTIVE=true E2E_DYNAMODB_PORT=18000 E2E_DASHBOARD_PORT=18025 scripts/dynamodb-e2e.sh
273+
E2E_INTERACTIVE=true E2E_BIGQUERY_PORT=19050 E2E_DASHBOARD_PORT=18025 scripts/bigquery-e2e.sh
254274
```
255275

256276
## Project Structure
@@ -265,6 +285,7 @@ E2E_INTERACTIVE=true E2E_DYNAMODB_PORT=18000 E2E_DASHBOARD_PORT=18025 scripts/dy
265285
| `internal/services/s3` | S3-compatible HTTP service and filesystem-backed object store. |
266286
| `internal/services/gcs` | GCS JSON API-compatible HTTP service. |
267287
| `internal/services/dynamodb` | DynamoDB-compatible JSON API service. |
288+
| `internal/services/bigquery` | BigQuery-compatible REST API service. |
268289
| `docs/` | Product and compatibility designs. |
269290
| `mock/` | UI design mocks. |
270291
| `scripts/*-autoloop/` | Bounded implementation-loop and verification scripts. |

0 commit comments

Comments
 (0)