-
Notifications
You must be signed in to change notification settings - Fork 1
feat: x402 marketplace + architecture review bundle (#513-#535) #536
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
53 commits
Select commit
Hold shift + click to select a range
0b9a9b3
feat(x402): chain label on buyer + verifier metrics, sync PurchaseAut…
bussyjd 08b303e
feat(x402): last-settlement gauge + verifier PodMonitor
bussyjd da721d4
test(x402): cover new chain label + last-payment gauge + PurchaseAuto…
bussyjd 27e1ac5
chore(x402): RBAC trim, ServiceMonitor, relocate monitoring YAML, rec…
bussyjd 0fbb99a
fix(x402): GC verifier metric series for deleted offers
bussyjd 9be9de8
fix(x402): verifier replicas: 2 → 1 to keep metric GC correct
bussyjd 522aeae
fix(x402-metrics): align Prometheus retention with recording-rule win…
bussyjd fdb86b3
chore(images): digest-pin verifier, controller, litellm, cloudflared
bussyjd 7896384
feat(controller): wire client-go leader-election so HA scaling is safe
bussyjd d8912eb
fix(x402): gate verifier /readyz on informer cache sync
bussyjd 08b4808
refactor(x402): drive verifier deployment from helmfile, not Go-side …
bussyjd 04b9a6e
feat(security): Restricted Pod Security Standard across embedded work…
bussyjd 5c9a879
fix(x402-buyer): persist consumed-nonce state to PVC instead of emptyDir
bussyjd fb594ea
refactor: relocate remaining bedag/raw helmfile releases into base chart
bussyjd 6bec651
fix(x402): fail-closed when URI is under a paid prefix but no rule ma…
bussyjd 4353948
feat(monetizeapi): controller-gen as canonical CRD schema source
bussyjd 9481e4e
fix(prometheus-rules): escape PromQL $labels for Helm rendering
bussyjd 7919a36
docs(migration): bedag/raw → base release ownership transfer script
bussyjd 938b380
fix(controller/render): Restricted PSS securityContext on httpd workl…
bussyjd f9f1ff5
fix(prometheus-rules): use increase() for the per-offer revenue rule
bussyjd b700f34
feat(x402-metrics): add asset_symbol label for per-token queries
bussyjd 9022f37
fix(prometheus-rules): use epsilon floor not 1.0 to avoid under-repor…
bussyjd 7c66408
ci: add helm-template-smoke job to catch chart-render parse errors
bussyjd e2d4add
docs(observability): record the thin-layer architecture decisions
bussyjd 5de3d4a
feat(monetize): replace pause annotation with ERC-8004-friendly drain
bussyjd ffdd459
merge: chore/digest-pin-cluster-images (#517) - digest-pin verifier, …
bussyjd b8f0e09
merge: feat/controller-leader-election (#518) - wire client-go leader…
bussyjd 3693513
merge: refactor/ensure-verifier-via-helmfile (#520) - drive verifier …
bussyjd 4b58459
merge: feat/restricted-pss-sweep (#521) - Restricted PSS across embed…
bussyjd 22971d7
merge: fix/x402-buyer-state-pvc (#522) - persist consumed-nonce state…
bussyjd b83a6e4
merge: refactor/eliminate-bedag-raw-releases (#523) - move bedag/raw …
bussyjd 8e7e371
merge: feat/controller-gen-codegen (#525) - controller-gen as canonic…
bussyjd 91f11a4
merge: ci/helm-template-smoke (#533) - add helm-template-smoke job
bussyjd d085287
merge: docs/observability-thin-layer-architecture (#534) - record thi…
bussyjd ef31561
merge: feat/drain-replaces-pause (#535) - ERC-8004-friendly drain ins…
bussyjd 8c94219
merge: docs/bedag-raw-migration-script (#528) - bedag/raw migration s…
bussyjd 8dad18e
merge: fix/controller-render-restricted-pss (#529) - Restricted PSS s…
bussyjd f4e07b3
merge: feat/x402-marketplace-metrics (#513) - chain label, last-settl…
bussyjd 7b00484
merge: fix/verifier-single-replica (#515) - verifier replicas 2->1 fo…
bussyjd 27471b8
merge: fix/prom-retention-window-alignment (#516) - align Prometheus …
bussyjd d425181
merge: fix/verifier-readyz-on-informer-sync (#519) - gate verifier /r…
bussyjd 186a4f0
merge: fix/verifier-fail-closed-on-paid-prefix (#524) - fail-closed w…
bussyjd dbc3ee0
merge: fix/prometheus-rules-helm-template-escape (#527) - escape Prom…
bussyjd 8d85a28
merge: fix/prometheus-rule-increase-7d (#530) - use increase() for pe…
bussyjd ff89758
merge: feat/x402-asset-symbol-label (#531) - asset_symbol label for p…
bussyjd a3cb0a3
merge: fix/alert-clamp-min-epsilon (#532) - use epsilon floor not 1.0…
bussyjd 04ed1ab
test(stack): allow multi-line emptyDir after PSS sweep sizeLimit addi…
bussyjd c3ba469
fix: resolve marketplace bundle architecture blockers
bussyjd 82cbfae
chore: remove pre-release migration script
bussyjd 94418db
docs: warn pre-release testers about stack reset
bussyjd 46189cd
docs: clarify pre-release ownership warning
bussyjd 1dbbf60
merge: fix/marketplace-bundle-architecture-review (#541) - resolve ar…
bussyjd 7453339
ci: restrict workflow token permissions
bussyjd File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,116 @@ | ||
| name: Helm Template Smoke | ||
|
|
||
| on: | ||
| pull_request: | ||
| branches: [ main ] | ||
| paths: | ||
| - 'internal/embed/infrastructure/**' | ||
| - '.github/workflows/helm-template-smoke.yml' | ||
| push: | ||
| branches: [ main ] | ||
| paths: | ||
| - 'internal/embed/infrastructure/**' | ||
| - '.github/workflows/helm-template-smoke.yml' | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| jobs: | ||
| helm-template-smoke: | ||
| name: helm template embedded chart | ||
| runs-on: ubuntu-latest | ||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4.3.1 | ||
|
|
||
| - name: Set up Helm | ||
| uses: azure/setup-helm@1a275c3b69536ee54be43f2070a358922e12c8d4 # v4.3.1 | ||
| with: | ||
| version: v3.20.1 # match obolup.sh pinned version | ||
|
|
||
| - name: helm template ./base | ||
| run: | | ||
| # Render the embedded `base` chart and fail on Go-template parse | ||
| # errors. Catches bugs like the unescaped `{{ $labels }}` in | ||
| # PrometheusRule annotations that broke `helm upgrade base` on | ||
| # every `obol stack up` (see PR #527). `go test ./...` does not | ||
| # exercise Helm rendering, so this is the only pre-merge gate | ||
| # for chart parse errors. | ||
| # | ||
| # The base chart contains `{{PLACEHOLDER}}` strings (e.g. | ||
| # `{{OLLAMA_HOST_IP}}`, `{{CLUSTER_ID}}`) that are substituted | ||
| # by `internal/defaults/defaults.go::InfrastructureReplacements` | ||
| # before helmfile runs. Helm's Go-template parser would treat | ||
| # them as actions and fail, so we substitute stub values into | ||
| # a working copy first — mirroring what `obol stack init` does. | ||
| set -euo pipefail | ||
| workdir="$(mktemp -d)" | ||
| cp -R internal/embed/infrastructure/base "$workdir/base" | ||
| # Mirror internal/defaults InfrastructureReplacements with CI stubs. | ||
| find "$workdir/base" -type f -name '*.yaml' -print0 \ | ||
| | xargs -0 sed -i \ | ||
| -e 's/{{OLLAMA_HOST_IP}}/127.0.0.1/g' \ | ||
| -e 's/{{OLLAMA_HOST}}/localhost/g' \ | ||
| -e 's/{{CLUSTER_ID}}/ci-helm-smoke/g' | ||
| # Match values passed by helmfile.yaml `releases[base]`. | ||
| helm template base "$workdir/base" \ | ||
| --set dataDir=/data \ | ||
| --set network=mainnet \ | ||
| > "$workdir/base-rendered.yaml" | ||
|
|
||
| # Kubernetes object identity must be unique within one rendered | ||
| # chart. Helm will happily render duplicate apiVersion/kind/name | ||
| # tuples and leave the actual outcome to manifest ordering; this | ||
| # caught the duplicated obol-frontend ClusterRole/Binding review bug. | ||
| awk ' | ||
| function flush() { | ||
| if (api && kind && name) { | ||
| key = api "/" kind "/" ns "/" name | ||
| count[key]++ | ||
| } | ||
| api = kind = name = ns = ""; inmeta = 0 | ||
| } | ||
| /^---/ { flush(); next } | ||
| /^apiVersion:/ { api = $2; next } | ||
| /^kind:/ { kind = $2; next } | ||
| /^metadata:/ { inmeta = 1; next } | ||
| inmeta && /^ name:/ { name = $2; next } | ||
| inmeta && /^ namespace:/ { ns = $2; next } | ||
| /^[^ ]/ && $0 !~ /^(apiVersion|kind|metadata):/ { inmeta = 0 } | ||
| END { | ||
| flush() | ||
| for (k in count) { | ||
| if (count[k] > 1) { | ||
| print count[k] " " k | ||
| dup = 1 | ||
| } | ||
| } | ||
| exit dup | ||
| }' "$workdir/base-rendered.yaml" | ||
|
|
||
| - name: helm template ./cloudflared | ||
| run: | | ||
| # The cloudflared chart has no placeholder substitution and uses | ||
| # default values from values.yaml. | ||
| set -euo pipefail | ||
| helm template cloudflared internal/embed/infrastructure/cloudflared \ | ||
| > /dev/null | ||
|
|
||
| - name: helm lint ./base | ||
| run: | | ||
| set -euo pipefail | ||
| workdir="$(mktemp -d)" | ||
| cp -R internal/embed/infrastructure/base "$workdir/base" | ||
| find "$workdir/base" -type f -name '*.yaml' -print0 \ | ||
| | xargs -0 sed -i \ | ||
| -e 's/{{OLLAMA_HOST_IP}}/127.0.0.1/g' \ | ||
| -e 's/{{OLLAMA_HOST}}/localhost/g' \ | ||
| -e 's/{{CLUSTER_ID}}/ci-helm-smoke/g' | ||
| helm lint "$workdir/base" \ | ||
| --set dataDir=/data \ | ||
| --set network=mainnet | ||
|
|
||
| - name: helm lint ./cloudflared | ||
| run: | | ||
| set -euo pipefail | ||
| helm lint internal/embed/infrastructure/cloudflared |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.