Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
518 commits
Select commit Hold shift + click to select a range
59b6558
fix(dynamodb): TransactWriteItems no longer conflicts with in-flight …
Oct 30, 2026
35269d8
Merge branch 'test/flake-proof-lifecycle' into feat/parity-next
Oct 30, 2026
99968bd
Merge branch 'fix/codeql-2522-r5' into feat/parity-next
Oct 30, 2026
e9093dc
Merge branch 'fix/ddb-conflict-doccheck' into feat/parity-next
Oct 30, 2026
1325543
fix(azurearm): align API Management with primary sources
Oct 30, 2026
1cf8c94
feat(gcpapigateway): API Gateway control plane and gateway data plane
Oct 30, 2026
729833c
fix(azurearm): lint cleanups for API Management limits
Oct 30, 2026
e74ffd8
Merge branch 'fix/azure-apim-verify' into feat/parity-next
Oct 30, 2026
6cf56e7
feat(gcpapigateway): lint fixes
Oct 30, 2026
ec4ecd4
feat(gcpapigateway): lint fixes
Oct 30, 2026
ed49210
feat(gcpapigateway): format tests
Oct 30, 2026
89c5d94
test(batch): make host-loss restore retry assertions deterministic
Oct 30, 2026
caf20ec
Merge branch 'parity/gcp-apigateway' into feat/parity-next
Oct 30, 2026
e65f573
fix(azurearm): API Management service LRO headers per spec
Oct 30, 2026
7b1212e
fix(azurearm): lint cleanups for API Management operation results
Oct 30, 2026
8892f23
fix(azurearm): fieldalignment and embedlit lint fixes for APIM operat…
Oct 30, 2026
7cc745e
fix(gcpapigateway): verify rules against Google docs and ESPv2
Oct 30, 2026
afe048c
Merge branch 'test/batch-hostloss-deterministic' into feat/parity-next
Oct 30, 2026
29bdba6
Merge branch 'fix/azure-apim-asyncops' into feat/parity-next
Oct 30, 2026
96dd1a7
fix(gcpapigateway): lint fixes
Oct 30, 2026
f63aaa7
Merge branch 'fix/gcpapigw-verify' into feat/dash-apigw-apim
Oct 30, 2026
cc74d23
test(persistence): refresh snapshot golden for APIM operation records…
Oct 30, 2026
b26cfcb
fix(cosmosdb): stop writing container state under the read lock
Oct 30, 2026
20e9ddf
Merge branch 'fix/gcpapigw-verify' into feat/parity-next
Oct 30, 2026
e646675
Merge branch 'fix/cosmos-sproc-race' into feat/parity-next
Oct 30, 2026
25c86b2
feat(ui): API Gateway and API Management dashboard pages
Oct 30, 2026
27f952b
Merge branch 'feat/dash-apigw-apim' into feat/parity-next
Oct 30, 2026
0ee3679
fix(gcpapigateway): honour allowCors preflight; pin default hostname …
Oct 30, 2026
d7c0624
feat(azurearm): AKS runCommand, abort, certificate rotation, maintena…
Oct 30, 2026
3b8abf8
Merge branch 'parity/azure-aks-ops' into feat/parity-next
Oct 30, 2026
962c517
fix(gcpapigateway): lint fixes in CORS tests
Oct 30, 2026
3e42eb1
style(ui): oxfmt gcpapigateway test
Oct 30, 2026
ef78beb
Merge branch 'fix/gcpapigw-hostname' into feat/parity-next
Oct 30, 2026
52bf084
test(mq): assert broker start failure message atomically with CREATIO…
Oct 30, 2026
ed3966a
fix(awsconfig): scope all state by account as well as region
Oct 30, 2026
8affffe
fix(awsconfig): lint fixes for account scoping
Oct 30, 2026
c1b6854
fix(azurearm): AKS runCommand uses the documented unschedulable-pod e…
Oct 30, 2026
0fc8bac
fix(awsconfig): wrap long test lines
Oct 30, 2026
9c5b32c
Merge branch 'fix/aks-runcmd-ca' into feat/parity-next
Oct 30, 2026
0c07367
fix(awsconfig): format account scoping test
Oct 30, 2026
eeea1b5
Merge branch 'fix/awsconfig-scoping' into fix/tagging-account-aware
Oct 30, 2026
cdb0ba5
docs(azurearm): regenerate README
Oct 30, 2026
cbf6b53
Merge branch 'fix/awsconfig-scoping' into feat/parity-next
Oct 30, 2026
84ce2bf
fix(k3sengine): drop cached serving cert after CA rotation; fail fast…
Oct 30, 2026
d244e14
fix(k3sengine): wrap long test assertion
Oct 30, 2026
1cb6092
fix(k3sengine): shorten test assertion line
Oct 30, 2026
150e388
fix(azurearm): stop writing APIM service clock on every request
Oct 30, 2026
6c89ba2
Merge branch 'fix/aks-rotate-ready' into feat/parity-next
Oct 30, 2026
4448f3c
Merge branch 'fix/apim-now-race' into feat/parity-next
Oct 30, 2026
3129e39
fix(resourcegroupstaggingapi): resolve bridged backends and resource …
Oct 30, 2026
53917ee
feat(cosmosdb): configurable maximum resource-token lifetime
Oct 30, 2026
5c32773
fix(app): lint formatting for account-aware tagging
Oct 30, 2026
164390a
fix(kms): enforce caller identity on grant create/retire/revoke/list-…
Oct 30, 2026
8848516
Merge branch 'fix/tagging-account-aware' into feat/parity-next
Oct 30, 2026
f54e054
fix(organizations): enforce handshake party identity and AWS transiti…
Oct 30, 2026
c720266
style(cosmosdb): lint fixes for resource-token max setting
Oct 30, 2026
4a64bee
Merge branch 'feat/cosmos-token-maxlife' into feat/parity-next
Oct 30, 2026
1339dd0
fix(rds): honour caller account for shared DB and cluster snapshots
Oct 30, 2026
c2b8fe4
fix(ec2): gate snapshot and AMI use by launch and create-volume permi…
Oct 30, 2026
00e47e8
test(persistence): refresh snapshot inventory for additive rds owner …
Oct 30, 2026
36fd6cb
perf(bench): record e2e baseline and profile findings
Oct 30, 2026
a7d37b2
fix(kms): satisfy lint for grant caller checks
Oct 30, 2026
cf07408
fix(organizations): satisfy lint for handshake caller checks
Oct 30, 2026
41ea96e
fix(rds): satisfy lint for snapshot sharing
Oct 30, 2026
33a8ded
fix(ec2): satisfy lint for snapshot and AMI sharing
Oct 30, 2026
4e50782
test(router): S3 object lookalike routing corpus
Oct 30, 2026
20f1a5e
fix(organizations): wrap long test lines
Oct 30, 2026
a37c9c6
fix(rds): wrap long test lines
Oct 30, 2026
4746c92
fix(ec2): wrap long lines
Oct 30, 2026
629c6cd
Merge branch 'fix/iam-caller-identity' into feat/parity-next
Oct 30, 2026
7f9099c
test(dnstest): assert only the injected collision, not real free-port…
Oct 30, 2026
2581f19
perf(router): path-gate ARC zonal shift, agentcore data plane and Rou…
Oct 30, 2026
50f54eb
test(sagemakerruntime): detach SDK request body so event streams surv…
Oct 30, 2026
c14bcc9
perf(router): path-gate MGN, ResilienceHub and OAM matchers
Oct 30, 2026
98b489b
docs(rds): regenerate README
Oct 30, 2026
951693a
perf(router): target/CBOR-gate AppStream, MarketplaceEntitlement and …
Oct 30, 2026
939ee8d
Merge branch 'test/smr-stream-deterministic' into feat/parity-next
Oct 30, 2026
2ca8f2c
fix(scripts): lint-changed final summary and tool-failure flag
Oct 30, 2026
45fb5f8
Merge branch 'fix/lint-changed-summary' into feat/parity-next
Oct 30, 2026
a179a20
style(router): satisfy lint in routing corpus generator and leading-s…
Oct 30, 2026
bb8f582
style(router): wrap leading-slash test assertion
Oct 30, 2026
86cd1e6
Merge branch 'perf/route-gates' into fix/route-gates-leading-slash
Oct 30, 2026
2839eb4
Merge branch 'perf/route-gates' into feat/parity-next
Oct 30, 2026
4556f31
feat(cli): start --foreground/--docker-socket, richer status, Windows…
Oct 30, 2026
2cef323
feat(cli): lint fixes for lifecycle foreground/status
Oct 30, 2026
b9ca732
fix(router): normalise leading slashes once at path-gate evaluation
Oct 30, 2026
1e6c896
feat(cli): lifecycle lint follow-up
Oct 30, 2026
2fd055d
Merge branch 'fix/route-gates-leading-slash' into feat/parity-next
Oct 30, 2026
9d9d44f
Merge branch 'feat/cli-lifecycle-gaps' into feat/parity-next
Oct 30, 2026
a5def09
feat(azurearm): ACI probes, init containers, zones, subnets, DNS, dia…
Oct 30, 2026
df01f0b
feat(azurearm): lint cleanup for ACI probes and init containers
Oct 30, 2026
9d50160
feat(azurearm): ACI lint fixes
Oct 30, 2026
f856b6f
perf(router): OR-alternative gates and path-bucketed prefix checks
Oct 30, 2026
03334a4
perf(router): keep alt-gate corpus rows consistent with owner-scope test
Oct 30, 2026
53e0c2e
perf(router): split alt-gate corpus generator and satisfy lint
Oct 30, 2026
beea93e
test(app): stop service backends when wiring tests finish
Oct 30, 2026
22bdb20
perf(router): name the OPTIONS method constant in the corpus generator
Oct 30, 2026
96cc8bf
perf(router): share one request sweep across all gate hold tests
Oct 30, 2026
982ce61
refactor(gcpsql): run the MySQL engine on pkgs/mysqlengine
Oct 30, 2026
0775356
perf(router): preallocate hold-test gate slices
Oct 30, 2026
ed9274a
refactor(gcpsql): lint and alignment follow-ups for the mysqlengine move
Oct 30, 2026
04c1c7c
Merge branch 'perf/route-gates-alt' into feat/parity-next
Oct 30, 2026
305970f
fix(eventbridge): reject ScheduleExpression on custom buses by default
Oct 30, 2026
fc6130c
Merge branch 'refactor/gcpsql-mysqlengine' into feat/parity-next
Oct 30, 2026
88b41cb
Merge branch 'fix/eventbridge-custom-bus-schedule' into fix/eventbrid…
Oct 30, 2026
b74e793
feat(ecs): mount EFS volumes and replace unhealthy service tasks
Oct 30, 2026
1296d4f
fix(ecs): lint fixes for EFS volumes and unhealthy replacement
Oct 30, 2026
903d21d
fix(ocimysql): take the automatic backup for the most recent window a…
Oct 30, 2026
8ed6e63
fix(ocimysql): lint fixes for backup window tests
Oct 30, 2026
cc64927
test(app): dedupe alt-gate scan sweep across services and sample shor…
Oct 30, 2026
257a77d
test(app): realign alt-gate test consts
Oct 31, 2026
895c5f0
fix(eventbridge): wire custom-bus schedule setting, allow pattern+sch…
Oct 31, 2026
1cc10bb
Merge branch 'test/altgate-scan-speed' into ci/full-routing-proof
Oct 31, 2026
14f1af1
Merge branch 'test/altgate-scan-speed' into feat/parity-next
Oct 31, 2026
b0763c5
docs: regenerate READMEs
Oct 31, 2026
510b513
ci: run the full routing proof without -short on routing-path PRs and…
Oct 31, 2026
28adb33
fix(eventbridge): lint cleanup for pattern reasons
Oct 31, 2026
77e44bc
feat(stepfunctions): JSONata Map object Items, Distributed Map Argume…
Oct 31, 2026
8cc975a
Merge branch 'ci/full-routing-proof' into feat/parity-next
Oct 31, 2026
46e340f
Merge branch 'parity/ecs-efs-health' into feat/parity-next
Oct 31, 2026
aebf6f2
Merge branch 'fix/eventbridge-followups' into feat/parity-next
Oct 31, 2026
9884e3d
feat(stepfunctions): satisfy lint for JSONata Distributed Map changes
Oct 31, 2026
8eea308
style(e2e): goimports eventbridge test; regenerate ecs README
Oct 31, 2026
5ecf54f
Merge branch 'parity/sfn-jsonata-gaps' into feat/parity-next
Oct 31, 2026
914b149
test(persistence): refresh snapshot golden for stepfunctions map-item…
Oct 31, 2026
0ed2153
feat(ociloadbalancer): OCI Load Balancer control plane and loopback d…
Oct 31, 2026
d4b4214
feat(gcpbatch): Google Cloud Batch emulator
Oct 31, 2026
efdc313
feat(ociloadbalancer): lint cleanups and idle-timeout error classific…
Oct 31, 2026
2f66619
Merge branch 'parity/oci-loadbalancer' into feat/parity-next
Oct 31, 2026
37a81a6
fix(gcpbatch): lint and struct alignment
Oct 31, 2026
534378b
Merge branch 'parity/gcp-next' into feat/dash-gcp-batch
Oct 31, 2026
7810943
feat(ui): GCP Cloud Batch dashboard page and proxy
Oct 31, 2026
caffdfb
feat(ui): OCI Load Balancer dashboard page
Oct 31, 2026
4f3e4c0
Merge branch 'feat/dash-oci-lb' into feat/parity-next
Oct 31, 2026
530ac0e
feat(azurearm): Microsoft.Authorization roles, locks and policy
Oct 31, 2026
ee753fe
fix: pin gcpdns/gcpidentitytoolkit PARITY sdk_module to api v0.304.0;…
Oct 31, 2026
30981b3
style(ui): oxfmt ociloadbalancer
Oct 31, 2026
f4ed2aa
feat(azurearm): lint fixes, regenerated docs, authorization parity notes
Oct 31, 2026
959df8b
Merge branch 'parity/azure-next' into feat/parity-next
Oct 31, 2026
50ecc0a
fix(azurearm): accept raw spaces in the query of request lines
Oct 31, 2026
074b353
fix(azurearm): lint fixes for query space shim
Oct 31, 2026
a20779e
feat(ociartifacts): OCI Artifacts and Container Registry control plan…
Oct 31, 2026
a9ed27d
docs: regenerate gcpdns/gcpidentitytoolkit READMEs for api v0.304.0 pin
Oct 31, 2026
3927c5c
Merge branch 'parity/oci-artifacts' into feat/parity-next
Oct 31, 2026
76c0ac6
fix(httputils): query-space conn surfaces read errors, handles empty …
Oct 31, 2026
336a6ef
Merge branch 'fix/arm-unencoded-filter' into feat/parity-next
Oct 31, 2026
9d4050c
feat(gcpcompute): VPC peering, subnet routes, Cloud Armor policies, r…
Oct 31, 2026
7ea9b7d
style(gcpcompute): lint fixes for peering, policies and instance ops
Oct 31, 2026
4a52677
style(gcpcompute): replace lookup globals with functions
Oct 31, 2026
a9803d8
style(gcpcompute): wrap long test lines
Oct 31, 2026
1b1e43a
docs: regenerate azurearm README
Oct 31, 2026
4bf526d
test(persistence): refresh snapshot inventory for gcpcompute policy maps
Oct 31, 2026
2e12cee
test(terraform): google_compute_network_peering and google_compute_se…
Oct 31, 2026
c383d39
style(gcpcompute): wrap table row
Oct 31, 2026
5114eed
Merge branch 'parity/gcp-lb' into feat/parity-next
Oct 31, 2026
c7bed4c
feat(mcp): init_hooks_run tool and --mcp-read-only mode
Oct 31, 2026
9ca8e46
feat(ui): OCI Artifacts and Container Registry dashboard page
Oct 31, 2026
013961f
Merge branch 'feat/dash-oci-artifacts' into feat/parity-next
Oct 31, 2026
aa1f149
feat(cloudformation): spec-derived required properties and --cloudfor…
Oct 31, 2026
a4801fc
test(app): CodeBuild project fixture carries its required properties
Oct 31, 2026
666cb1c
feat(azuregraph): Microsoft Graph directory emulation (applications, …
Oct 31, 2026
11f129a
style: satisfy lint for init hook run, mcp read-only and cfn property…
Oct 31, 2026
4d0fa2d
Merge branch 'parity/aws-depth' into feat/parity-next
Oct 31, 2026
e88d894
feat(azuregraph): azuread provider support, dev client, owner binds, …
Oct 31, 2026
fde0da0
feat(azuregraph): lint fixes, decomposed handlers, AZURE.md entry
Oct 31, 2026
433c4a1
Merge branch 'parity/azure-next2' into feat/parity-next
Oct 31, 2026
64f7a8f
feat(gcpresourcemanager): Resource Manager v3/v1 and Service Usage v1…
Oct 31, 2026
7234e6a
feat(ocicontainerinstances): OCI Container Instances control plane wi…
Oct 31, 2026
cf1018e
style(gcpresourcemanager): satisfy lint (field alignment, constants, …
Oct 31, 2026
1345bdb
Merge branch 'parity/gcp-next2' into feat/parity-next
Oct 31, 2026
ea7e8c5
feat(ocicontainerinstances): lint fixes, decomposed validation, stati…
Oct 31, 2026
3be8d41
fix(ocicontainerinstances): place CLI field and flag names so cli.go …
Oct 31, 2026
6a05a43
test(cloudformation): add AWS-required properties to Redshift and Res…
Oct 31, 2026
0043c05
Merge branch 'parity/oci-next2' into feat/dash-oci-ci
Oct 31, 2026
87d9f2a
Merge branch 'parity/oci-next2' into feat/parity-next
Oct 31, 2026
aab11fa
feat(gcp): opt-in project and API-enablement enforcement across GCP s…
Oct 31, 2026
97e1691
style(gcp): satisfy lint for enforcement layer
Oct 31, 2026
0f8bf6d
Merge branch 'parity/gcp-enforce' into feat/parity-next
Oct 31, 2026
3688068
feat(ui): OCI Container Instances dashboard page
Oct 31, 2026
aa02222
feat(ui): satisfy lint for the Container Instances proxy
Oct 31, 2026
6340629
Merge branch 'feat/dash-oci-ci' into feat/parity-next
Oct 31, 2026
c8efe03
feat(azurearm): load balancers, NAT gateways, public IP prefixes, ASG…
Oct 31, 2026
9069c54
Merge branch 'parity/azure-next3' into feat/parity-next
Oct 31, 2026
71a99d7
feat(ui): GCP Resource Manager dashboard page
Oct 31, 2026
4dfa0e7
feat(ui): satisfy lint for the Resource Manager proxy
Oct 31, 2026
130493b
test(app): bound server readiness wait by the test deadline, not 3s
Oct 31, 2026
6f5cbb6
Merge branch 'feat/dash-gcp-rm' into feat/parity-next
Oct 31, 2026
521915a
feat(iam): evaluate Organizations SCPs in IAM enforcement
Oct 31, 2026
be59abd
feat(timestreamquery): execute SQL over records written via Timestrea…
Oct 31, 2026
339f821
docs: regenerate READMEs for SCP enforcement
Oct 31, 2026
c844179
feat(timestreamquery): lint fixes and syntax tests for the SQL engine
Oct 31, 2026
d346002
Merge branch 'parity/timestream-query' into feat/parity-next
Oct 31, 2026
d390a2b
test(app): use the deadline-bound readiness wait in the remaining ful…
Oct 31, 2026
ecfac5e
style(iam): split enforcement tail, format SCP files
Oct 31, 2026
0083f56
feat(verifiedpermissions): verify JWT signature/expiry for token auth…
Oct 31, 2026
8a3c5b3
feat(verifiedpermissions): lint and alignment fixes for JWT verification
Oct 31, 2026
ee60f69
Merge branch 'parity/vp-jwt' into feat/parity-next
Oct 31, 2026
db936a1
feat(organizations): keep at least one SCP per target; migrate restor…
Oct 31, 2026
e7840cf
Merge branch 'parity/iam-scp' into feat/parity-next
Oct 31, 2026
8ff6863
feat(stepfunctions): Parquet ItemReader and TestState HTTP TRACE insp…
Oct 31, 2026
a66481b
feat(stepfunctions): lint fixes for Parquet ItemReader and TestState …
Oct 31, 2026
fbd4c5e
Merge branch 'parity/sfn-parquet' into feat/parity-next
Oct 31, 2026
245b053
Merge branch 'parity/azure-aci-gaps' into feat/parity-next
Oct 31, 2026
95e740d
feat(lambda): Extensions API, /_aws/lambda/runtimes, allow-listed LAM…
Oct 31, 2026
29909e5
feat(dms): replication engine runs full-load and CDC tasks
Oct 31, 2026
8f37349
test(azurearm): pick the private-endpoint subnet by name; build test …
Oct 31, 2026
68a68ea
feat(lambda): lint fixes, guard-safe extension test
Oct 31, 2026
5241216
Merge branch 'parity/lambda-ext' into feat/parity-next
Oct 31, 2026
3501001
feat(dms): lint-clean engine, parity notes, regenerated docs
Oct 31, 2026
089bb93
fix(rds): set the MySQL driver logger once
Oct 31, 2026
8f5be96
fix(container): drain moby ContainerWait channels on early return
Oct 31, 2026
e267f8b
fix(container): satisfy lint in AwaitWait
Oct 31, 2026
405b738
fix(dms): retry endpoint connections when a task starts
Oct 31, 2026
a81467a
test(dms): skip real-database containers in -short runs
Oct 31, 2026
6a270ca
fix(dms): verify endpoint TLS; start RDS Postgres logical only via pa…
Oct 31, 2026
1d520b3
perf(app): mixed-service and parallel router benchmarks; aborted-requ…
Oct 31, 2026
a418a9c
perf(app): wrap long line in aborted-request leak test
Oct 31, 2026
63359f6
Merge branch 'parity/dms-engine' into feat/parity-next
Oct 31, 2026
1885433
Merge branch 'perf/router-pkgs' into perf/ddb-s3
Oct 31, 2026
f9ebf08
fix(security): resolve CodeQL alerts on PR #2522
Oct 31, 2026
98c0300
fix(security): satisfy lint on CodeQL fixes
Oct 31, 2026
ad4f180
fix(security): accept OCI CBC-SHA256 ciphers, never serve them
Oct 31, 2026
f1b3ac0
Merge branch 'perf/router-pkgs' into feat/parity-next
Oct 31, 2026
c788fc0
docs: regenerate READMEs
Oct 31, 2026
14d47cc
perf(s3): pooled copy scratch buffer and presized partition body scan
Oct 31, 2026
6bb81a8
perf(s3): name copy buffer size constant
Oct 31, 2026
b187828
Merge branch 'perf/ddb-s3' into feat/parity-next
Oct 31, 2026
af6e888
perf(startup): compile unicode-class bounded-repeat regexps lazily
Oct 31, 2026
6b51be5
perf(build): embed the SPA gzipped and inflate on demand
Oct 31, 2026
a664a66
perf(dynamodb): compile Scan/Query filter once per request
Oct 31, 2026
4f77864
perf(startup): build the CloudControl EC2 wire schema on first call
Oct 31, 2026
7b56d4b
test(app): full-server restart and mixed-service soak leak tests
Oct 31, 2026
2ba6f5a
perf(dynamodb): satisfy lint on compiled filter
Oct 31, 2026
48d18ff
fix(lint): satisfy golangci-lint for lazy regexps and soak tests
Oct 31, 2026
7db1035
Merge branch 'perf/size-soak' into feat/parity-next
Oct 31, 2026
2496c7b
fix: bind service test listeners on Port 0 instead of probing a free …
Oct 31, 2026
e83ff1f
fix: serve pre-bound DNS sockets with ActivateAndServe
Oct 31, 2026
79e798c
fix: split ephemeral DNS bind to satisfy nilerr
Oct 31, 2026
8b683a3
ci(routing-proof): free runner disk before the race build
Oct 31, 2026
3aebc2c
chore(scripts): drop full go-cache wipe from gocache-trim
Nov 1, 2026
21cd677
chore(scripts): shellcheck-clean gocache trim test (cd guard, ${c:?} rm)
Nov 1, 2026
48e4d79
test(guards): forbid fixed-budget server readiness waits
Nov 1, 2026
e27913c
test(guards): satisfy lint in readiness guard
Nov 1, 2026
7aec6d6
Merge branch 'test/readiness-guard' into feat/parity-next
Nov 1, 2026
fd1507a
fix(dynamodb): exact 38-digit Number comparison, ordering and arithmetic
Nov 1, 2026
f9dcac4
fix(dynamodb): lint cleanups for dynamonum
Nov 1, 2026
6c175b7
Merge branch 'fix/ddb-number-precision' into feat/parity-next
Nov 1, 2026
2134f01
docs(dynamodb): list unverified number-precision details in items_sti…
Nov 1, 2026
9a2d744
docs: regenerate READMEs for dynamodb parity notes
Nov 1, 2026
66d1aa9
ci(lint): free more runner disk for full-repo lint
Nov 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .badges/operations.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions .badges/parity.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 3 additions & 3 deletions .badges/services.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 14 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,16 +60,17 @@ jobs:
token: ${{ env.GH_CI_TOKEN }}
fetch-depth: 0

# Full-repo lint (go.mod/.golangci.yml changed) exhausts the default runner disk; lint needs no docker images or apt packages.
- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@ceedf095f4ec1a097402bc6bd80831f2e1a6fde6 # main
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: false
swap-storage: false
large-packages: true
docker-images: true
swap-storage: true

- name: Keep Go temp files and build cache off the /tmp tmpfs
run: |
Expand Down Expand Up @@ -939,6 +940,16 @@ jobs:
path: /tmp/gopherstack-tofu-provider-cache
key: tofu-providers-${{ runner.os }}-aws5

- name: Cache OpenTofu provider mirror
id: tofu-mirror-cache
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
path: ${{ runner.temp }}/tofu-provider-mirror
key: tofu-mirror-${{ runner.os }}-${{ hashFiles('test/terraform/*_test.go', 'test/terraform/fixtures/**') }}

- name: Point the terraform suite at the provider mirror
run: echo "GOPHERSTACK_TOFU_MIRROR_DIR=$RUNNER_TEMP/tofu-provider-mirror" >> "$GITHUB_ENV"

- name: Cache OpenTofu Google provider
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6
with:
Expand Down
75 changes: 75 additions & 0 deletions .github/workflows/routing-proof.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
name: Routing Proof

on:
pull_request:
branches: [ main ]
paths:
- 'internal/app/routing*'
- 'internal/routegates/**'
- 'pkgs/service/router*'
- 'testdata/routing/**'
- 'services/*/route*.go'
- 'cmd/routingcorpus/**'
- '.github/workflows/routing-proof.yml'
schedule:
- cron: '17 3 * * *'
workflow_dispatch:

permissions: read-all

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
routing-proof:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Free Disk Space (Ubuntu)
uses: jlumbroso/free-disk-space@ceedf095f4ec1a097402bc6bd80831f2e1a6fde6 # main
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: false
docker-images: false
swap-storage: false

- name: Keep Go temp files and build cache off the /tmp tmpfs
run: |
if mountpoint -q /mnt; then base=/mnt; else base="$RUNNER_TEMP"; fi
sudo mkdir -p "$base/gotmp" "$base/gocache"
sudo chown -R "$(id -u):$(id -g)" "$base/gotmp" "$base/gocache"
{
echo "GOTMPDIR=$base/gotmp"
echo "TMPDIR=$base/gotmp"
echo "GOCACHE=$base/gocache"
} >> "$GITHUB_ENV"

- name: Set up Go
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7
with:
go-version-file: go.mod
check-latest: true
cache: true

- name: Download Go modules (retry proxy stream errors)
run: |
for i in 1 2 3 4 5; do
go mod download && exit 0
sleep $((i * 15))
done
exit 1

- name: Install Task
uses: go-task/setup-task@a00fbb05ce67b35648be3c78cbc9fd85354c757e # v2.2.0
with:
version: 3.54.0
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Routing proof (full, no -short)
run: task routing-proof
6 changes: 6 additions & 0 deletions .golangci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -516,9 +516,15 @@ linters:
# isolation_test.go uses unexported types and must be in the same package.
- path: 'elasticache/isolation_test.go'
linters: [ testpackage, paralleltest ]
# gremlin_ws_proxy_test.go drives the unexported front against a fake Gremlin Server (no docker).
- path: 'neptune/gremlin_ws_proxy_test\.go'
linters: [ testpackage ]
# router_index_test.go checks the unexported index against the unexported linear scan.
- path: 'pkgs/service/router_index_test.go'
linters: [ testpackage ]
# router_alt_gate_test.go checks the unexported AltGate.admits against a lookup context.
- path: 'pkgs/service/router_alt_gate_test.go'
linters: [ testpackage ]
# routing_test.go white-box tests unexported routing helpers and the
# injectable RNG field, so it must live in the same package.
- path: 'route53/routing_test.go'
Expand Down
2 changes: 2 additions & 0 deletions AZURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,8 @@ That said, MQTT's fixed port (`1883`) happens to fall *outside* `--port-range-st
- **M2 (done)** — `services/azuretable`: table CRUD (Create/Delete/List Table), full entity lifecycle (Insert/Get/Query/Replace/Merge/Delete), a hand-written `$filter` lexer/parser/evaluator (eq/ne/lt/le/gt/ge, and/or/not, parentheses, every OData literal form -- string/int/Int64/float/bool/datetime/guid/binary -- against `PartitionKey`/`RowKey`/`Timestamp` and scalar properties), all eight EDM property types (String/Int32/Int64/Double/Boolean/DateTime/Guid/Binary) with `@odata.type` annotation round-tripping matching `azure-sdk-for-go/sdk/data/aztables`'s own client-side inference, and ETag-based optimistic concurrency (If-Match `*`/specific/absent -> upsert), wired into `cli.go` and bound to its own fixed port (10002, Azurite's own Table port; synchronous bind, fail-fast, no `PortAlloc` fallback -- mirrors Blob's M0 and Queue's M1 port strategy, see section 4). Batch (`$batch` multipart/mixed changesets) and continuation-token pagination are deferred -- see `services/azuretable/PARITY.md`. See `services/azuretable/README.md`/`PARITY.md` for current status and known gaps.
- **Azure Files (done)** -- `services/azurefile` (PARITY.md is the authority): the file shares data plane (service properties, shares with snapshots/leases/ACLs/soft delete, directories, files with sparse ranges, copy and rename) on fixed port 10009 (`--azure-file-port`), account by path or `<account>.file.<host>`, `.file.` also reachable through the shared storage vhost listener, ARM `primaryEndpoints.file` advertised, share soft delete driven by ARM `fileServices/default` `shareDeleteRetentionPolicy`. Tests are driven through `azure-sdk-for-go/sdk/storage/azfile`.
- **Azure Monitor Logs (done)** -- `services/azuremonitor` (PARITY.md is the authority): the Logs Ingestion API (`POST /dataCollectionRules/{immutableId}/streams/{stream}`, gzip, 1 MB limit, stream schema checks that drop bad records like Azure, or reject the upload with `--azure-monitor-strict-ingest`, `transformKql` through the in-tree KQL engine) and the Logs Query API (`/v1/workspaces/{id}/query`, `$batch`, resource-centric queries) on one HTTPS listener, fixed port 10013 (`--azure-monitor-port`), bearer auth (optionally JWT-shape checked). `services/azuremonitor/kql` is a KQL subset engine (tables, let, union, where, project/extend/summarize/sort/top/distinct and about 70 scalar functions); unsupported operators answer 400 SemanticError. ARM `Microsoft.OperationalInsights` (workspaces, tables, shared keys) and `Microsoft.Insights` (data collection endpoints and rules) live in `services/azurearm` over the `MonitorLogs` seam. Tests are driven through `azure-sdk-for-go/sdk/monitor/ingestion/azlogs`, `sdk/monitor/query/azlogs`, `armoperationalinsights` and `armmonitor`.

- **Microsoft Graph (done)** -- `services/azuregraph` (PARITY.md is the authority): Graph v1.0/beta directory objects (applications, service principals, users, groups, app role assignments, OAuth2 permission grants, owners and members references, `directoryObjects/getByIds`, `me`, `organization`, `domains`) on one HTTPS listener, fixed port 10014 (`--azure-graph-port`). OData `$filter`/`$select`/`$top`/`@odata.nextLink`/`$orderby`/`$count`/`$search` with the `ConsistencyLevel: eventual` rules for advanced queries, alternate keys (`applications(appId='..')`), `addPassword` (secret returned once, PBKDF2 hash stored), and the Graph error envelope. ARM advertises the listener as `microsoftGraphResourceId`, so `terraform-provider-azuread` with `metadata_host` works unchanged (`test/terraform/azure/azuread_test.go`). The ARM token endpoint authenticates `client_id`/`client_secret` of applications registered here and stamps the service principal's object id as `oid`; the seeded dev service principal (the all-zero client id) accepts any secret. `--azure-arm-validate-principals` makes role assignments reject principals that are neither directory objects nor user-assigned managed identities.
- **M3 (done)** — `services/cosmosdb`: database/container CRUD (with a single-path partition-key declaration; hierarchical/multi-path partition keys deferred), full document CRUD including upsert (`x-ms-documentdb-is-upsert`) and ETag-based optimistic concurrency (If-Match absent/specific -> upsert/conditional), and a hand-written SQL-subset query engine (tokenizer -> recursive-descent parser -> AST -> executor, directly reusing `services/azuretable/odata_filter.go`'s and `services/s3/select_sql_*.go`'s shape per this section's own M3 rationale below) supporting `SELECT *`/projections with `AS` aliasing, `FROM <alias> [<realias>]`, `WHERE` with the full comparison/boolean/`IS NULL` grammar and `@param` bindings, `ORDER BY`, `TOP`, and `OFFSET`/`LIMIT`. Auth is Cosmos's own master-key HMAC-SHA256 scheme (`services/cosmosdb/masterkey.go`, deliberately NOT `pkgs/azureauth` -- see section 3), opt-in verification via `--cosmosdb-validate-auth`, defaulting to the real Cosmos DB Local Emulator's well-known fixed master key. Bound to its own fixed port (8081, the real emulator's own published default -- NOT an Azurite-style 1000x number, since Cosmos's real emulator is a separate tool; synchronous bind, fail-fast, no `PortAlloc` fallback, and -- unlike M0/M1/M2's ports -- 8081 sits *outside* `--port-range-start`/`--port-range-end`'s own default range, mirroring `services/iot`'s MQTT precedent; see section 4). Fake `x-ms-request-charge`/`x-ms-session-token`/`x-ms-activity-id` headers on every response (real RU accounting is out of scope). Integration tests against `azure-sdk-for-go/sdk/data/azcosmos`; JS/Python SDK cross-compat smoke tests remain M4 scope. See `services/cosmosdb/README.md`/`PARITY.md` for current status and known gaps. **This completes the full 4-service Azure support plan** (Blob, Queue, Table, Cosmos); M4 (docs/polish, cross-SDK e2e) has since landed as well.
- **M4 (done)** — Docs/polish: the four services now render under their own **Azure** heading in the root `README.md` services table with curated display names (`cmd/gendocs/categories.go`) rather than falling through to "Other" as auto-title-cased slugs; per-service guides at `docs/services/azureblob.md`/`azurequeue.md`/`azuretable.md`/`cosmosdb.md` following the established AWS guide format; a four-service docker-compose example at `examples/azure-services/` (indexed in `examples/README.md`), with `Dockerfile`/`Dockerfile.goreleaser` now exposing 10000/10001/10002/8081; and the cross-SDK smoke suite from section 7 -- `test/e2e/crosssdk/azure_smoke.mjs` (`@azure/storage-blob`, `@azure/storage-queue`, `@azure/data-tables`, `@azure/cosmos`) and `azure_smoke.py` (`azure-storage-blob`, `azure-storage-queue`, `azure-data-tables`, `azure-cosmos`), driven by `test/e2e/azure_crosssdk_test.go`, which starts gopherstack on ephemeral ports and runs both scripts in CI's `e2e-tests` job. Note: no per-service badges were added -- `.badges/` holds only repo-level aggregate badges (services/operations/parity counts), which already include the Azure services, so "badges/icons" resolved to verifying zero `cmd/gendocs` drift rather than adding new SVGs. The cross-SDK suite immediately earned its keep by catching a real wire-compatibility gap: `Get Blob` accepted only the `Range` header, but the Python/JS SDKs send `x-ms-range` exclusively, so single-range downloads were unreachable from those SDKs despite the Go SDK passing (fixed in `services/azureblob/handler.go`; see that service's `PARITY.md`).

Expand Down
6 changes: 3 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -16,19 +16,19 @@ RUN go mod download
# Copy the source from the current directory to the Working Directory inside the container
COPY . .

# Build dashboard2 frontend assets before embedding in Go binary
# Build dashboard2 frontend assets before embedding in Go binary
# If the SPA was pre-built (e.g. via `task ui-build` before `task demo`), skip the npm build
# to avoid OOM inside the container. Fall back to building in-container if assets are absent.
RUN if [ ! -f dashboard/static/spa/index.html ]; then \
RUN if [ ! -f dashboard/static/spa/index.html.gz ] && [ ! -f dashboard/static/spa/index.html ]; then \
npm --prefix ui ci --include=optional && \
NODE_OPTIONS="--max-old-space-size=8192" npm --prefix ui run build; \
fi

# Build the Go app
RUN go build \
RUN CGO_ENABLED=0 go build \
-tags 'netgo osusergo static_build' \
-trimpath \
-buildvcs=false \
-ldflags="-w -s -extldflags '-static -fno-PIC'" \
-o gopherstack

Expand Down
Loading
Loading