Skip to content

chore: bump hub (v0.13.0) and authup (v1.0.0-beta.57) - #163

Open
tada5hi wants to merge 1 commit into
developfrom
hub-013
Open

chore: bump hub (v0.13.0) and authup (v1.0.0-beta.57)#163
tada5hi wants to merge 1 commit into
developfrom
hub-013

Conversation

@tada5hi

@tada5hi tada5hi commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features
    • Added SeaweedFS-based S3 storage support for Hub and Node deployments.
    • Added configurable SeaweedFS admin panel exposure through Gateway API routes.
    • Added Authup provisioning for predefined roles, permissions, and realms.
    • Added PostgreSQL initialization and improved configurable database connectivity.
    • Added message broker actuator endpoint exposure.
  • Bug Fixes
    • Improved Harbor routing and support for external Harbor deployments.
    • Preserved chart-managed credentials across upgrades and uninstallations.
  • Documentation
    • Clarified credential management and multi-release configuration requirements.

Copilot AI review requested due to automatic review settings July 30, 2026 13:55

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@tada5hi
tada5hi changed the base branch from master to develop July 30, 2026 13:55
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 871e9e2e-6500-4d1c-86ac-8b8eb8d1b573

📥 Commits

Reviewing files that changed from the base of the PR and between d9bc37e and 8229ed9.

📒 Files selected for processing (37)
  • .gitignore
  • charts/flame-hub/Chart.yaml
  • charts/flame-hub/README.md
  • charts/flame-hub/templates/_helpers.tpl
  • charts/flame-hub/templates/_urls.tpl
  • charts/flame-hub/templates/authup/provisioning-configmap.yaml
  • charts/flame-hub/templates/credentials-secret.yaml
  • charts/flame-hub/templates/harbor/ingress.yaml
  • charts/flame-hub/templates/harbor/secret.yaml
  • charts/flame-hub/templates/postgresql/configmap-init.yaml
  • charts/flame-hub/templates/postgresql/secret.yaml
  • charts/flame-hub/templates/postgresql/service.yaml
  • charts/flame-hub/templates/postgresql/statefulset.yaml
  • charts/flame-hub/templates/server-core-worker/deployment.yaml
  • charts/flame-hub/templates/server-core/deployment.yaml
  • charts/flame-hub/templates/server-messenger/deployment.yaml
  • charts/flame-hub/templates/server-storage/deployment.yaml
  • charts/flame-hub/templates/server-telemetry/deployment.yaml
  • charts/flame-hub/values.yaml
  • charts/flame-node/Chart.yaml
  • charts/flame-node/flame-node-data-store/Chart.yaml
  • charts/flame-node/flame-node-data-store/charts/minio-5.4.0.tgz
  • charts/flame-node/flame-node-data-store/charts/seaweedfs-4.39.0.tgz
  • charts/flame-node/flame-node-data-store/values.yaml
  • charts/flame-node/templates/_helpers.tpl
  • charts/flame-node/templates/data-store/httproute.yaml
  • charts/flame-node/templates/gateway-client-settings-policy.yaml
  • charts/flame-node/templates/gateway.yaml
  • charts/flame-node/templates/message-broker/deployment.yml
  • charts/flame-node/templates/message-broker/service.yml
  • charts/flame-node/templates/secret.yaml
  • charts/flame-node/templates/storage-service/deployment.yaml
  • charts/flame-node/values.yaml
  • charts/flame-node/values_min.yaml
  • charts/third-party/authup/templates/configmap-provisioning.yaml
  • charts/third-party/authup/templates/deployment.yaml
  • charts/third-party/authup/values.yaml

📝 Walkthrough

Walkthrough

Flame Hub and Flame Node Helm charts migrate object storage from MinIO to SeaweedFS, add shared PostgreSQL and Harbor Secret wiring, enable Authup provisioning, and introduce SeaweedFS admin Gateway exposure. Node hostname handling and message-broker actuator exposure are also updated.

Changes

Flame Hub platform wiring

Layer / File(s) Summary
Chart dependencies and deployment documentation
charts/flame-hub/Chart.yaml, charts/flame-hub/README.md
SeaweedFS and Harbor repositories are updated, and documentation describes the multi-Secret and multi-release configuration model.
Shared helpers and endpoint contracts
charts/flame-hub/templates/_helpers.tpl, charts/flame-hub/templates/_urls.tpl
Helpers resolve PostgreSQL, Harbor, SeaweedFS, proxy, and internal Harbor endpoint names.
PostgreSQL and SeaweedFS services
charts/flame-hub/values.yaml, charts/flame-hub/templates/postgresql/*, charts/flame-hub/templates/server-*/deployment.yaml
PostgreSQL resources, SeaweedFS settings, readiness checks, and database and S3 Secret references are added or updated.
Harbor Secret and subchart integration
charts/flame-hub/templates/harbor/*, charts/flame-hub/values.yaml
Harbor credentials, exposure, persistence, external PostgreSQL configuration, Redis, and ingress routing are reworked.
Authup provisioning and database configuration
charts/flame-hub/templates/authup/*, charts/third-party/authup/*, charts/flame-hub/values.yaml
Authup provisioning files and configurable database credentials are added, with conditional ConfigMap mounting.
Credential scope and Harbor proxy wiring
charts/flame-hub/templates/credentials-secret.yaml, charts/flame-hub/templates/server-core*/deployment.yaml
The shared credentials Secret is narrowed, while Harbor proxy sidecar and insecure-registry conditions use the new helper.

Flame Node storage and Gateway updates

Layer / File(s) Summary
Node chart packaging and values
.gitignore, charts/flame-node/Chart.yaml, charts/flame-node/flame-node-data-store/*, charts/flame-node/values*.yaml
Chart versions and packaged dependencies change to SeaweedFS, with updated datastore and image configuration.
SeaweedFS datastore and storage wiring
charts/flame-node/flame-node-data-store/values.yaml, charts/flame-node/templates/storage-service/deployment.yaml, charts/flame-node/templates/_helpers.tpl
SeaweedFS all-in-one deployment, persistence, security, endpoint, and Secret settings replace MinIO wiring.
SeaweedFS admin Gateway exposure
charts/flame-node/templates/data-store/httproute.yaml, charts/flame-node/templates/gateway*.yaml, charts/flame-node/values.yaml
Admin HTTPRoute, conditional Gateway listener, and NGINX Gateway Fabric client policy are added.
Hostname and broker endpoint updates
charts/flame-node/templates/_helpers.tpl, charts/flame-node/templates/message-broker/*
Hostname protocol handling is centralized, and the broker exposes HTTP and actuator ports.
Secret template rendering cleanup
charts/flame-node/templates/secret.yaml
Whitespace controls around Secret conditionals and lookups are adjusted without changing Secret data semantics.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related PRs

Suggested labels: hub

Suggested reviewers: copilot

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is concise and accurately reflects the main hub and authup version bump in the changeset.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch hub-013

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 6

🧹 Nitpick comments (5)
charts/third-party/authup/templates/deployment.yaml (3)

94-117: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Compute the DB secret name once.

$dbUserSecret (Line 95) and $dbSecret (Line 109) evaluate the identical tpl expression; hoist a single variable above the env: entries.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/third-party/authup/templates/deployment.yaml` around lines 94 - 117,
Compute the database secret name once before the DB_USERNAME and DB_PASSWORD
environment entries, then reuse that variable in both conditional branches.
Remove the duplicate tpl evaluation and preserve the existing secretKeyRef and
direct-value behavior.

141-152: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

No rollout trigger when the provisioning ConfigMap changes.

Provisioning is applied at boot, so editing the ConfigMap (or the parent's provisioning-configmap.yaml) has no effect until the pod is restarted manually. A checksum/provisioning pod annotation keyed on the rendered content (or on the ConfigMap lookup when existingConfigMap is used) makes upgrades self-applying.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/third-party/authup/templates/deployment.yaml` around lines 141 - 152,
Add a pod-template annotation named checksum/provisioning in the deployment
template, deriving its value from the rendered provisioning ConfigMap content or
the referenced existing ConfigMap when provisioning.enabled is true. Ensure
changes to provisioning-configmap.yaml or the configured existingConfigMap
update the checksum and trigger a pod rollout, while preserving the current
volumeMounts and volumes behavior.

25-25: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Port stays hardcoded while the host became configurable.

database.host is now templated/required, but the readiness probe still assumes 5432. Worth adding database.port (defaulting to 5432) and using it here and in DB_PORT, otherwise a non-default PostgreSQL port makes this init container block forever.

♻️ Suggested change
-                  'until nc -z -v -w30 {{ tpl (required "database.host is required (set authup.database.host in the parent chart)" .Values.database.host) $ }} 5432; do echo "Waiting for db..."; sleep 5; done'
+                  'until nc -z -v -w30 {{ tpl (required "database.host is required (set authup.database.host in the parent chart)" .Values.database.host) $ }} {{ .Values.database.port | default 5432 }}; do echo "Waiting for db..."; sleep 5; done'
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/third-party/authup/templates/deployment.yaml` at line 25, Add a
configurable database.port value with a default of 5432, then update the
deployment readiness command and DB_PORT environment variable to use the
templated database.port value alongside database.host. Preserve the existing
required-host validation and default behavior for PostgreSQL port 5432.
charts/flame-hub/values.yaml (1)

56-70: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider a render-time guard for the duplicated literals.

The comments document that harbor.database.external.host/existingSecret and harbor.expose.clusterIP.name must stay in sync with global.flameHub.postgresql.*, but nothing enforces it — a release that sets global.flameHub.postgresql.existingSecret without editing the Harbor literals silently points Harbor at a non-existent Secret. A small helper using fail when harbor.database.external.host != global.flameHub.postgresql.host or harbor.database.external.existingSecret differs from the effective pg secret name would turn a runtime CrashLoop into a helm template error.

Also applies to: 517-527

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-hub/values.yaml` around lines 56 - 70, Add a Helm render-time
validation helper that fails when harbor.database.external.host differs from
global.flameHub.postgresql.host, when harbor.database.external.existingSecret
differs from the effective PostgreSQL secret name (existingSecret when set,
otherwise secretName), or when harbor.expose.clusterIP.name is out of sync with
the corresponding global PostgreSQL configuration. Invoke the helper during
chart rendering so helm template reports the mismatch before workloads are
deployed.
.gitignore (1)

14-15: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Overly broad gitignore pattern.

node*.yaml matches any file at any depth whose basename starts with "node", not just the intended local override file (e.g. it would also match a future legitimately-named chart file like charts/flame-node/node-foo.yaml). Consider scoping it more precisely, e.g. to a specific filename or a dedicated local/ directory.

♻️ Suggested narrower pattern
-node*.yaml
+/node-*.local.yaml
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.gitignore around lines 14 - 15, Replace the overly broad node*.yaml entry
in .gitignore with a narrowly scoped pattern matching only the intended local
override filename or dedicated local directory, while preserving the existing
.claude ignore rule.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@charts/flame-hub/templates/_helpers.tpl`:
- Around line 96-102: Update flameHub.seaweedfs.fullname to honor both
seaweedfs.fullnameOverride and the parent chart’s seaweedfs.fullnameOverride
before applying the existing generated-name logic. Update
flameHub.seaweedfs.s3Host to derive the -all-in-one hostname from a base name
truncated to the available 63-character budget. Add coverage for a 63-character
release name and for seaweedfs.fullnameOverride, verifying resource and parent
references remain aligned.

In `@charts/flame-hub/templates/authup/provisioning-configmap.yaml`:
- Around line 98-109: Add permission definitions for user_self_manage,
client_read, and client_update in the ConfigMap’s permissions block before the
roles section, matching the existing permission declaration structure. Keep the
steward role’s globalPermissions references unchanged so they resolve to the
newly declared permissions.

In `@charts/flame-hub/templates/postgresql/statefulset.yaml`:
- Around line 30-60: Align the PostgreSQL credentials used by the StatefulSet
with Harbor’s configured database user. Update the POSTGRES_USER source and both
pg_isready probes in the container specification to consistently use the shared
postgres username, or add validation/documentation enforcing that
harbor.database.external.username matches the Secret username; preserve the
existing POSTGRES_PASSWORD Secret reference.

In `@charts/flame-node/Chart.yaml`:
- Around line 50-52: Update the seaweedfs dependency in
charts/flame-node/Chart.yaml from 4.37.0 to 4.39.0, matching
flame-node-data-store/Chart.yaml and the existing vendored dependency version.
Add the corresponding charts/flame-node/charts/seaweedfs-4.39.0.tgz package so
the chart does not rely on build-time fetching.

In `@charts/flame-node/flame-node-data-store/values.yaml`:
- Around line 5-16: The blaze chart has no SeaweedFS dependency, so the scoped
global configuration in values.yaml is ineffective. Either add the required
SeaweedFS dependency to blaze/Chart.yaml so the seaweedfs settings propagate to
the grandchild chart, or remove the blaze.global.seaweedfs configuration block.

In `@charts/flame-node/values.yaml`:
- Around line 903-913: Update the ingress hostname documentation comment in the
values configuration to reference the actual host key used by
dataStore.seaweedfs.admin.ingress, replacing the mismatched hostname path while
leaving the configuration fields unchanged.

---

Nitpick comments:
In @.gitignore:
- Around line 14-15: Replace the overly broad node*.yaml entry in .gitignore
with a narrowly scoped pattern matching only the intended local override
filename or dedicated local directory, while preserving the existing .claude
ignore rule.

In `@charts/flame-hub/values.yaml`:
- Around line 56-70: Add a Helm render-time validation helper that fails when
harbor.database.external.host differs from global.flameHub.postgresql.host, when
harbor.database.external.existingSecret differs from the effective PostgreSQL
secret name (existingSecret when set, otherwise secretName), or when
harbor.expose.clusterIP.name is out of sync with the corresponding global
PostgreSQL configuration. Invoke the helper during chart rendering so helm
template reports the mismatch before workloads are deployed.

In `@charts/third-party/authup/templates/deployment.yaml`:
- Around line 94-117: Compute the database secret name once before the
DB_USERNAME and DB_PASSWORD environment entries, then reuse that variable in
both conditional branches. Remove the duplicate tpl evaluation and preserve the
existing secretKeyRef and direct-value behavior.
- Around line 141-152: Add a pod-template annotation named checksum/provisioning
in the deployment template, deriving its value from the rendered provisioning
ConfigMap content or the referenced existing ConfigMap when provisioning.enabled
is true. Ensure changes to provisioning-configmap.yaml or the configured
existingConfigMap update the checksum and trigger a pod rollout, while
preserving the current volumeMounts and volumes behavior.
- Line 25: Add a configurable database.port value with a default of 5432, then
update the deployment readiness command and DB_PORT environment variable to use
the templated database.port value alongside database.host. Preserve the existing
required-host validation and default behavior for PostgreSQL port 5432.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 871e9e2e-6500-4d1c-86ac-8b8eb8d1b573

📥 Commits

Reviewing files that changed from the base of the PR and between d9bc37e and 8229ed9.

📒 Files selected for processing (37)
  • .gitignore
  • charts/flame-hub/Chart.yaml
  • charts/flame-hub/README.md
  • charts/flame-hub/templates/_helpers.tpl
  • charts/flame-hub/templates/_urls.tpl
  • charts/flame-hub/templates/authup/provisioning-configmap.yaml
  • charts/flame-hub/templates/credentials-secret.yaml
  • charts/flame-hub/templates/harbor/ingress.yaml
  • charts/flame-hub/templates/harbor/secret.yaml
  • charts/flame-hub/templates/postgresql/configmap-init.yaml
  • charts/flame-hub/templates/postgresql/secret.yaml
  • charts/flame-hub/templates/postgresql/service.yaml
  • charts/flame-hub/templates/postgresql/statefulset.yaml
  • charts/flame-hub/templates/server-core-worker/deployment.yaml
  • charts/flame-hub/templates/server-core/deployment.yaml
  • charts/flame-hub/templates/server-messenger/deployment.yaml
  • charts/flame-hub/templates/server-storage/deployment.yaml
  • charts/flame-hub/templates/server-telemetry/deployment.yaml
  • charts/flame-hub/values.yaml
  • charts/flame-node/Chart.yaml
  • charts/flame-node/flame-node-data-store/Chart.yaml
  • charts/flame-node/flame-node-data-store/charts/minio-5.4.0.tgz
  • charts/flame-node/flame-node-data-store/charts/seaweedfs-4.39.0.tgz
  • charts/flame-node/flame-node-data-store/values.yaml
  • charts/flame-node/templates/_helpers.tpl
  • charts/flame-node/templates/data-store/httproute.yaml
  • charts/flame-node/templates/gateway-client-settings-policy.yaml
  • charts/flame-node/templates/gateway.yaml
  • charts/flame-node/templates/message-broker/deployment.yml
  • charts/flame-node/templates/message-broker/service.yml
  • charts/flame-node/templates/secret.yaml
  • charts/flame-node/templates/storage-service/deployment.yaml
  • charts/flame-node/values.yaml
  • charts/flame-node/values_min.yaml
  • charts/third-party/authup/templates/configmap-provisioning.yaml
  • charts/third-party/authup/templates/deployment.yaml
  • charts/third-party/authup/values.yaml

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Caution

Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 6

🧹 Nitpick comments (5)
charts/third-party/authup/templates/deployment.yaml (3)

94-117: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Compute the DB secret name once.

$dbUserSecret (Line 95) and $dbSecret (Line 109) evaluate the identical tpl expression; hoist a single variable above the env: entries.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/third-party/authup/templates/deployment.yaml` around lines 94 - 117,
Compute the database secret name once before the DB_USERNAME and DB_PASSWORD
environment entries, then reuse that variable in both conditional branches.
Remove the duplicate tpl evaluation and preserve the existing secretKeyRef and
direct-value behavior.

141-152: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

No rollout trigger when the provisioning ConfigMap changes.

Provisioning is applied at boot, so editing the ConfigMap (or the parent's provisioning-configmap.yaml) has no effect until the pod is restarted manually. A checksum/provisioning pod annotation keyed on the rendered content (or on the ConfigMap lookup when existingConfigMap is used) makes upgrades self-applying.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/third-party/authup/templates/deployment.yaml` around lines 141 - 152,
Add a pod-template annotation named checksum/provisioning in the deployment
template, deriving its value from the rendered provisioning ConfigMap content or
the referenced existing ConfigMap when provisioning.enabled is true. Ensure
changes to provisioning-configmap.yaml or the configured existingConfigMap
update the checksum and trigger a pod rollout, while preserving the current
volumeMounts and volumes behavior.

25-25: 🩺 Stability & Availability | 🔵 Trivial | ⚡ Quick win

Port stays hardcoded while the host became configurable.

database.host is now templated/required, but the readiness probe still assumes 5432. Worth adding database.port (defaulting to 5432) and using it here and in DB_PORT, otherwise a non-default PostgreSQL port makes this init container block forever.

♻️ Suggested change
-                  'until nc -z -v -w30 {{ tpl (required "database.host is required (set authup.database.host in the parent chart)" .Values.database.host) $ }} 5432; do echo "Waiting for db..."; sleep 5; done'
+                  'until nc -z -v -w30 {{ tpl (required "database.host is required (set authup.database.host in the parent chart)" .Values.database.host) $ }} {{ .Values.database.port | default 5432 }}; do echo "Waiting for db..."; sleep 5; done'
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/third-party/authup/templates/deployment.yaml` at line 25, Add a
configurable database.port value with a default of 5432, then update the
deployment readiness command and DB_PORT environment variable to use the
templated database.port value alongside database.host. Preserve the existing
required-host validation and default behavior for PostgreSQL port 5432.
charts/flame-hub/values.yaml (1)

56-70: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider a render-time guard for the duplicated literals.

The comments document that harbor.database.external.host/existingSecret and harbor.expose.clusterIP.name must stay in sync with global.flameHub.postgresql.*, but nothing enforces it — a release that sets global.flameHub.postgresql.existingSecret without editing the Harbor literals silently points Harbor at a non-existent Secret. A small helper using fail when harbor.database.external.host != global.flameHub.postgresql.host or harbor.database.external.existingSecret differs from the effective pg secret name would turn a runtime CrashLoop into a helm template error.

Also applies to: 517-527

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-hub/values.yaml` around lines 56 - 70, Add a Helm render-time
validation helper that fails when harbor.database.external.host differs from
global.flameHub.postgresql.host, when harbor.database.external.existingSecret
differs from the effective PostgreSQL secret name (existingSecret when set,
otherwise secretName), or when harbor.expose.clusterIP.name is out of sync with
the corresponding global PostgreSQL configuration. Invoke the helper during
chart rendering so helm template reports the mismatch before workloads are
deployed.
.gitignore (1)

14-15: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Overly broad gitignore pattern.

node*.yaml matches any file at any depth whose basename starts with "node", not just the intended local override file (e.g. it would also match a future legitimately-named chart file like charts/flame-node/node-foo.yaml). Consider scoping it more precisely, e.g. to a specific filename or a dedicated local/ directory.

♻️ Suggested narrower pattern
-node*.yaml
+/node-*.local.yaml
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.gitignore around lines 14 - 15, Replace the overly broad node*.yaml entry
in .gitignore with a narrowly scoped pattern matching only the intended local
override filename or dedicated local directory, while preserving the existing
.claude ignore rule.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@charts/flame-hub/templates/_helpers.tpl`:
- Around line 96-102: Update flameHub.seaweedfs.fullname to honor both
seaweedfs.fullnameOverride and the parent chart’s seaweedfs.fullnameOverride
before applying the existing generated-name logic. Update
flameHub.seaweedfs.s3Host to derive the -all-in-one hostname from a base name
truncated to the available 63-character budget. Add coverage for a 63-character
release name and for seaweedfs.fullnameOverride, verifying resource and parent
references remain aligned.

In `@charts/flame-hub/templates/authup/provisioning-configmap.yaml`:
- Around line 98-109: Add permission definitions for user_self_manage,
client_read, and client_update in the ConfigMap’s permissions block before the
roles section, matching the existing permission declaration structure. Keep the
steward role’s globalPermissions references unchanged so they resolve to the
newly declared permissions.

In `@charts/flame-hub/templates/postgresql/statefulset.yaml`:
- Around line 30-60: Align the PostgreSQL credentials used by the StatefulSet
with Harbor’s configured database user. Update the POSTGRES_USER source and both
pg_isready probes in the container specification to consistently use the shared
postgres username, or add validation/documentation enforcing that
harbor.database.external.username matches the Secret username; preserve the
existing POSTGRES_PASSWORD Secret reference.

In `@charts/flame-node/Chart.yaml`:
- Around line 50-52: Update the seaweedfs dependency in
charts/flame-node/Chart.yaml from 4.37.0 to 4.39.0, matching
flame-node-data-store/Chart.yaml and the existing vendored dependency version.
Add the corresponding charts/flame-node/charts/seaweedfs-4.39.0.tgz package so
the chart does not rely on build-time fetching.

In `@charts/flame-node/flame-node-data-store/values.yaml`:
- Around line 5-16: The blaze chart has no SeaweedFS dependency, so the scoped
global configuration in values.yaml is ineffective. Either add the required
SeaweedFS dependency to blaze/Chart.yaml so the seaweedfs settings propagate to
the grandchild chart, or remove the blaze.global.seaweedfs configuration block.

In `@charts/flame-node/values.yaml`:
- Around line 903-913: Update the ingress hostname documentation comment in the
values configuration to reference the actual host key used by
dataStore.seaweedfs.admin.ingress, replacing the mismatched hostname path while
leaving the configuration fields unchanged.

---

Nitpick comments:
In @.gitignore:
- Around line 14-15: Replace the overly broad node*.yaml entry in .gitignore
with a narrowly scoped pattern matching only the intended local override
filename or dedicated local directory, while preserving the existing .claude
ignore rule.

In `@charts/flame-hub/values.yaml`:
- Around line 56-70: Add a Helm render-time validation helper that fails when
harbor.database.external.host differs from global.flameHub.postgresql.host, when
harbor.database.external.existingSecret differs from the effective PostgreSQL
secret name (existingSecret when set, otherwise secretName), or when
harbor.expose.clusterIP.name is out of sync with the corresponding global
PostgreSQL configuration. Invoke the helper during chart rendering so helm
template reports the mismatch before workloads are deployed.

In `@charts/third-party/authup/templates/deployment.yaml`:
- Around line 94-117: Compute the database secret name once before the
DB_USERNAME and DB_PASSWORD environment entries, then reuse that variable in
both conditional branches. Remove the duplicate tpl evaluation and preserve the
existing secretKeyRef and direct-value behavior.
- Around line 141-152: Add a pod-template annotation named checksum/provisioning
in the deployment template, deriving its value from the rendered provisioning
ConfigMap content or the referenced existing ConfigMap when provisioning.enabled
is true. Ensure changes to provisioning-configmap.yaml or the configured
existingConfigMap update the checksum and trigger a pod rollout, while
preserving the current volumeMounts and volumes behavior.
- Line 25: Add a configurable database.port value with a default of 5432, then
update the deployment readiness command and DB_PORT environment variable to use
the templated database.port value alongside database.host. Preserve the existing
required-host validation and default behavior for PostgreSQL port 5432.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 871e9e2e-6500-4d1c-86ac-8b8eb8d1b573

📥 Commits

Reviewing files that changed from the base of the PR and between d9bc37e and 8229ed9.

📒 Files selected for processing (37)
  • .gitignore
  • charts/flame-hub/Chart.yaml
  • charts/flame-hub/README.md
  • charts/flame-hub/templates/_helpers.tpl
  • charts/flame-hub/templates/_urls.tpl
  • charts/flame-hub/templates/authup/provisioning-configmap.yaml
  • charts/flame-hub/templates/credentials-secret.yaml
  • charts/flame-hub/templates/harbor/ingress.yaml
  • charts/flame-hub/templates/harbor/secret.yaml
  • charts/flame-hub/templates/postgresql/configmap-init.yaml
  • charts/flame-hub/templates/postgresql/secret.yaml
  • charts/flame-hub/templates/postgresql/service.yaml
  • charts/flame-hub/templates/postgresql/statefulset.yaml
  • charts/flame-hub/templates/server-core-worker/deployment.yaml
  • charts/flame-hub/templates/server-core/deployment.yaml
  • charts/flame-hub/templates/server-messenger/deployment.yaml
  • charts/flame-hub/templates/server-storage/deployment.yaml
  • charts/flame-hub/templates/server-telemetry/deployment.yaml
  • charts/flame-hub/values.yaml
  • charts/flame-node/Chart.yaml
  • charts/flame-node/flame-node-data-store/Chart.yaml
  • charts/flame-node/flame-node-data-store/charts/minio-5.4.0.tgz
  • charts/flame-node/flame-node-data-store/charts/seaweedfs-4.39.0.tgz
  • charts/flame-node/flame-node-data-store/values.yaml
  • charts/flame-node/templates/_helpers.tpl
  • charts/flame-node/templates/data-store/httproute.yaml
  • charts/flame-node/templates/gateway-client-settings-policy.yaml
  • charts/flame-node/templates/gateway.yaml
  • charts/flame-node/templates/message-broker/deployment.yml
  • charts/flame-node/templates/message-broker/service.yml
  • charts/flame-node/templates/secret.yaml
  • charts/flame-node/templates/storage-service/deployment.yaml
  • charts/flame-node/values.yaml
  • charts/flame-node/values_min.yaml
  • charts/third-party/authup/templates/configmap-provisioning.yaml
  • charts/third-party/authup/templates/deployment.yaml
  • charts/third-party/authup/values.yaml
🛑 Comments failed to post (6)
charts/flame-hub/templates/_helpers.tpl (1)

96-102: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== locate helpers and referenced templates =="
git ls-files | rg 'charts/flame-hub/templates|seaweedfs|all-in-one|s3Host|fullnameOverride|flameHub\.seaweedfs' || true

echo
echo "== relevant _helpers.tpl sections =="
sed -n '1,180p' charts/flame-hub/templates/_helpers.tpl

echo
echo "== usages of flameHub.seaweedfs.fullname and s3Host =="
rg -n 'flameHub\.seaweedfs\.fullname|s3Host|fullnameOverride|service\.s3\.host|secret' charts/flame-hub/templates -S || true

echo
echo "== flame-hub Chart.yaml dependency/version context =="
sed -n '1,220p' charts/flame-hub/Chart.yaml || true

echo
echo "== installed/seaweedfs chart helpers if present in repo =="
for f in $(git ls-files | rg 'seaweedfs/.*/templates/.*/_helpers\.tpl|seaweedfs/.*_helpers\.tpl$|seaweedfs.*shared/_helpers\.tpl$'); do
  echo "-- $f"
  wc -l "$f"
  sed -n '1,220p' "$f" | rg -n '`@name`|seaweedfs\.fullname|fullnameOverride|trunc|all-in-one|define|name|fullname' || true
done

Repository: PrivateAIM/helm

Length of output: 19319


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== seaweedfs packaged chart metadata and helper files =="
tar -tzf charts/flame-node/flame-node-data-store/charts/seaweedfs-4.39.0.tgz | rg '^seaweedfs/(Chart\.yaml|values\.yaml|templates/.*_helpers\.tpl|templates/s(erviceall|tatefulsetall|ecret)\.yaml|templates/shared/_helpers\.tpl)$' || true

echo
echo "== unpack selected sealed-seaweedfs files =="
tmp="$(mktemp -d)"
tar -xzf charts/flame-node/flame-node-data-store/charts/seaweedfs-4.39.0.tgz -C "$tmp"

for f in "$tmp"/seaweedfs/Chart.yaml "$tmp"/seaweedfs/values.yaml "$tmp"/seaweedfs/templates/shared/_helpers.tpl "$tmp"/seaweedfs/templates/s3secret.yaml; do
  if [ -f "$f" ]; then
    echo "-- $(realpath --relative-to "$tmp"/seaweedfs "$f")"
    wc -l "$f"
    sed -n '1,220p' "$f" | rg -n 'fullname|nameOverride|fullnameOverride|s3-secret|all-in-one|define|resource|service|secret' || true
  fi
done

echo
echo "== relevant template sections =="
sed -n '1,220p' "$tmp"/seaweedfs/templates/s3secret.yaml
echo
sed -n '1,140p' "$tmp"/seaweedfs/templates/shared/_helpers.tpl

echo
echo "== deterministic behavior probe for helper input/output shapes =="
python3 - <<'PY'
MAX = 63
def current_seaweedfs_fullname(release_name, name_override):
    name = "seaweedfs" if name_override is None else name_override
    if name in release_name:
        base = release_name
    else:
        base = f"{release_name}-{name}"
    return base[:MAX].rstrip("-")

def current_s3_host(release_name, name_override):
    base = current_seaweedfs_fullname(release_name, name_override)
    return f"{base}-all-in-one"

cases = [
    ("very-long-release-this-is-the-longest-release-name-possible", None),
    ("very-long-release-this-is-the-longest-release-name-possible", "something-else"),
    ("short", None),
]
for rel, override in cases:
    name = current_seaweedfs_fullname(rel, override)
    s3 = current_s3_host(rel, override)
    print({"release": rel, "override": override, "fullname": name, "s3host": s3, "fullname_len": len(name), "s3host_len": len(s3)})
PY

Repository: PrivateAIM/helm

Length of output: 2523


🏁 Script executed:

#!/bin/bash
set -euo pipefail
tmp="$(mktemp -d)"
tar -xzf charts/flame-node/flame-node-data-store/charts/seaweedfs-4.39.0.tgz -C "$tmp"

echo "== seaweedfs templates containing S3 service/secret/all-in-one names =="
tar -tzf charts/flame-node/flame-node-data-store/charts/seaweedfs-4.39.0.tgz | rg '^seaweedfs/templates/' | sort

echo
for f in "$tmp"/seaweedfs/templates/service.yaml "$tmp"/seaweedfs/templates/all-in-one.yaml "$tmp"/seaweedfs/templates/secret.yaml "$tmp"/seaweedfs/templates/_helpers.tpl "$tmp"/seaweedfs/templates/shared/_helpers.tpl; do
  [ -f "$f" ] || continue
  echo "-- $(grep -n '`@name`\|fullnameOverride\|nameOverride\|all-in-one\|s3-secret\|Service\|Secret\|metadata:' "$f" | head -120 || true)"
  echo "Lengths:"
  wc -l "$f"
  echo "-- $f"
  rg -n 'nameOverride|fullnameOverride|all-in-one|s3-secret|define|metadata|name:' "$f" -C 3 || true
  echo
done

echo
echo "== deterministic behavior probe =="
python3 - <<'PY'
MAX = 63
def current_helper(release_name, name_override):
    name = "seaweedfs" if name_override is None else name_override
    if name in release_name:
        base = release_name
    else:
        base = release_name + "-" + name
    return base[:MAX].rstrip("-")

def current_s3_host(release_name, name_override):
    return current_helper(release_name, name_override) + "-all-in-one"

cases = [
    ("very-long-release-this-is-the-longest-release-name-possible", None),
    ("very-long-release-this-is-the-longest-release-name-possible", "something-else"),
    ("short", None),
]
for rel, override in cases:
    full = current_helper(rel, override)
    host = current_s3_host(rel, override)
    print({"release": rel, "override": override, "fullname": full, "s3host": host, "fullname_len": len(full), "s3host_len": len(host), "over_63": len(host) > 63})
PY

Repository: PrivateAIM/helm

Length of output: 15633


Align SeaweedFS resource names with its helpers.

flameHub.seaweedfs.fullname should honor seaweedfs.fullnameOverride and the parent chart’s seaweedfs.fullnameOverride; flameHub.seaweedfs.s3Host should build -all-in-one from the base name’s character budget so it cannot exceed 63 characters. This keeps parent references aligned with seaweedfs-4.39.0 service/secret names; add cover for a 63-character release name and a seaweedfs.fullnameOverride.

Also applies to lines 119-129.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-hub/templates/_helpers.tpl` around lines 96 - 102, Update
flameHub.seaweedfs.fullname to honor both seaweedfs.fullnameOverride and the
parent chart’s seaweedfs.fullnameOverride before applying the existing
generated-name logic. Update flameHub.seaweedfs.s3Host to derive the -all-in-one
hostname from a base name truncated to the available 63-character budget. Add
coverage for a 63-character release name and for seaweedfs.fullnameOverride,
verifying resource and parent references remain aligned.
charts/flame-hub/templates/authup/provisioning-configmap.yaml (1)

98-109: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

authup server-core built-in permissions user_self_manage client_read

💡 Result:

In the Authup ecosystem, permissions are managed through a system of built-in and custom policies [1]. Permissions such as user_self_manage and client_read are defined within the Authup server-core service to control access to specific resources [2][3]. Built-in permissions in Authup are created and maintained automatically by the system on startup and are marked as built_in, meaning they cannot be modified or deleted via the API [1]. These permissions are often used alongside policies to enforce security restrictions, such as realm scoping or identity-based access [1]. Regarding the specific identifiers mentioned: user_self_manage: This is typically associated with the ability for a user to manage their own profile or account information [2]. client_read: This permission allows an actor to read client-related data [4]. In Authup, access to resources—including checking if an identity has a specific permission—is governed by the core access control system, which often integrates with API endpoints that return these permission entities [1][2]. It should be noted that Authup uses a permission-based gating system for its API relations [5]. For example, certain operations may require specific permissions (like PERMISSION_READ) to access related entities, and failing to hold the necessary permission can result in relations being silently stripped from API responses [5]. Administrators can assign these permissions globally or to specific realms and clients during the provisioning process [6].

Citations:


🌐 Web query:

Authup built-in permissions listing user_self_manage client_read

💡 Result:

In the Authup authentication and authorization system, permissions are independent entities that represent the ability to perform a specific action [1]. Authup does not have a static, hard-coded list of "built-in" permissions like user_self_manage or client_read in the sense of reserved system-level keywords [1]. Instead, Authup allows users to define custom permissions to suit their system's requirements [1][2]. Permissions are managed through the system as resources, and they exist independently of roles and users [1]. You can create, retrieve, update, and delete permissions via the Authup API [2]. If a permission named user_self_manage or client_read exists in your implementation, it has been specifically created within your Authup instance (likely to represent actions such as a user managing their own profile or a client reading resource data) [2]. To verify or list the permissions currently defined in your Authup system, you can use the following API request [2]: GET /permissions Authorization: Bearer <your_access_token> Because Authup uses an allow-by-default model, simply defining a permission name does not restrict it; restrictions are instead enforced by policies attached to those permissions [1]. Policies can be bundled with these permissions to define the specific conditions under which they are granted [1].

Citations:


🌐 Web query:

site:github.com/authup/authup user_self_manage client_read

💡 Result:

The terms user_self_manage and client_read appear to be permission scopes or identifiers associated with the Authup authentication and authorization system [1][2]. While Authup is a documented open-source project that utilizes these types of access-management strategies—including claim-based and attribute-based authorization—specific public documentation detailing the exact functional definitions of these two specific strings is not present in the provided search results [1]. Authup is designed to support standard protocols like OAuth 2.0 and OpenID Connect, which commonly use such scopes to define granular access levels for users and clients [1].

Citations:


🌐 Web query:

github authup repository permissions.go "user_self_manage" "client_read"

💡 Result:

Authup is an authentication and authorization framework that supports declarative, isomorphic permission management [1][2]. While you specifically mentioned permissions.go and identifiers like user_self_manage or client_read, it is important to note that the Authup core repository is primarily implemented in TypeScript and JavaScript, not Go [1]. In Authup, permissions are central concepts used to control access [3]. They can be managed via the REST API or declared in configuration files [4][2]. Examples of common operations involve interacting with a Permission resource, such as fetching, creating, updating, or deleting specific permissions (e.g., via HTTP requests to /permissions) [5]. Regarding the specific identifiers: 1. User Permissions: Authup supports managing user-specific permissions (e.g., via user_read, profile_edit) [5][6]. While user_self_manage is not explicitly documented as a default built-in permission name, Authup allows for the creation of custom permissions that can be assigned to users or roles to facilitate self-management workflows [3][5]. 2. Client Permissions: Authup differentiates between permissions for clients and users [6]. Permissions like client_read or client_add are standard patterns for controlling access to client-related management APIs [6][7]. 3. Implementation: Logic related to permission evaluation, such as the permission-binding evaluator, is found within the TypeScript/JavaScript server core (e.g., apps/server-core/src/core/security/policy/evaluator.ts) [8]. If you are encountering a file named permissions.go in a repository related to Authup, it is likely part of a specific language-specific plugin, integration, or a third-party implementation, as the primary Authup framework is built using TypeScript [1][7][9].

Citations:


🌐 Web query:

"authup" "builtinPermissions" "user_self_manage"

💡 Result:

In Authup, user_self_manage is not listed as a standard built-in permission [1][2]. Authup utilizes a system of built-in policies (such as system.default, system.identity, and system.permission-binding) and permissions to manage access [1]. While Authup provides several built-in permissions (e.g., user_read, role_edit) [2], custom permissions are used to implement specific functionality like allowing users to manage their own profiles [2]. You can implement user self-management by creating a custom permission (for example, named profile_edit) [2]. This custom permission allows for the necessary granular control and can be assigned to users or roles via the Authup API [2][3]. Custom permissions are identified by having their built_in property set to false [2]. To create such a permission, you would interact with the Permission API (e.g., via a POST request) [2]. Once created, you can assign it to the relevant user or role to grant them the authority to manage their own information [2][3].

Citations:


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Relevant Chart Files:"
fd -a 'provisioning-configmap.yaml|values.yaml|Chart.yaml' . | sed -n '1,80p'

echo
echo "Target file context:"
target="$(fd 'provisioning-configmap.yaml' . | grep 'charts/flame-hub/templates/authup/provisioning-configmap.yaml' | head -n 1 || true)"
if [ -n "${target:-}" ]; then
  nl -ba "$target" | sed -n '1,150p'
fi

echo
echo "Authup references in repo:"
rg -n "authup|permissions:|globalPermissions:|user_self_manage|client_read|client_update" . || true

Repository: PrivateAIM/helm

Length of output: 1033


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Chart file versions:"
sed -n '1,80p' charts/flame-hub/Chart.yaml
sed -n '1,120p' charts/third-party/authup/Chart.yaml
sed -n '1,120p' charts/flame-hub/values.yaml | rg -n "authup|chart|repository|tag|version" -C 2 || true

echo
echo "Target provisioning configmap around referenced lines:"
awk 'NR>=1 NR<=140 {printf "%6d:%s\n", NR, $0}' charts/flame-hub/templates/authup/provisioning-configmap.yaml

echo
echo "Target provisioning configmap permissions/authup blocks:"
awk '/permissions:|globalPermissions:|user_self_manage|client_read|client_update/ {start=NR-8; end=NR+20; next} /^$/ && NR>end {exit} if (NR>=start && NR<=end) {printf "%6d:%s\n", NR, $0}' charts/flame-hub/templates/authup/provisioning-configmap.yaml

echo
echo "All repo references:"
rg -n "authup|user_self_manage|client_read|client_update|globalPermissionsRealmScope|provisioning-configmap" . || true

Repository: PrivateAIM/helm

Length of output: 3810


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Target provisioning configmap lines 1-160:"
awk 'NR>=1 && NR<=160 {printf "%6d:%s\n", NR, $0}' charts/flame-hub/templates/authup/provisioning-configmap.yaml

echo
echo "All repo references:"
rg -n "authup|user_self_manage|client_read|client_update|globalPermissionsRealmScope|provisioning-configmap" . || true

echo
echo "Authup third-party chart values:"
awk 'NR>=1 && NR<=220 {printf "%6d:%s\n", NR, $0}' charts/third-party/authup/values.yaml

echo
echo "Lockfile version pins:"
if [ -f charts/flame-hub/Chart.lock ]; then awk 'NR>=1 && NR<=80 {printf "%6d:%s\n", NR, $0}' charts/flame-hub/Chart.lock; fi

Repository: PrivateAIM/helm

Length of output: 25682


🌐 Web query:

github authup authup locter FileResourcePermissionRelation schema globalPermissionsRealmScope

💡 Result:

Based on current authoritative technical documentation and repository analysis as of July 30, 2026, the terms FileResourcePermissionRelation and globalPermissionsRealmScope are not part of the Authup (https://authup.org) project architecture [1][2][3]. Authup is an open-source authentication and authorization system that utilizes OAuth2 and OpenID Connect protocols with support for multi-realm tenancy [3][4]. A comprehensive review of the Authup GitHub organization repositories—which include core server services, CLI tools, and adapters—confirms that these specific schema identifiers do not exist within the Authup codebase [2][3][5]. The terms provided appear to be associated with other software systems. For instance, code referencing "workspace_user_resource_permission" and similar patterns frequently appears in projects like MaxKB (a knowledge base application) [6][7], while "FileResource" and permission-related logic are common in content management frameworks such as Drupal [8][9]. Similarly, "global permissions" are a standard concept in enterprise platforms like Atlassian Jira, which utilizes specific API identifiers for managing global permissions [10][11].

Citations:


🌐 Web query:

Authup provisioning roles globalPermissions references permissions

💡 Result:

In Authup, globalPermissions is a property used primarily in declarative provisioning to assign permissions with global scope to roles or entities [1]. These permissions are not bound to a specific realm, allowing them to be reusable across all realms [2]. When configuring roles during provisioning, the globalPermissions field accepts an array of permission names (strings) [1]. You can use the wildcard '' to assign all global permissions [1]. Additionally, you can control the scope and reach of these permissions using related fields [1]: - globalPermissionsExclude: Used to specify permissions to exclude when the '' wildcard is applied [1]. - globalPermissionsRealmScope: Defines the default realm scope (own, ownOrNull, or any) applied to each global permission junction entry [1]. - globalPermissionsRealmScopeOverrides: Allows for per-permission realm scope overrides, where keys represent the realm scope value and values are the lists of specific permissions [1]. Permissions in Authup are generally categorized as either global (realm_id = null) or realm-scoped [2]. The globalPermissions field specifically manages those that exist outside of any single realm context [2]. When evaluating these permissions, the system also considers associated policies and the specific realm scope (e.g., own, any) attached to the grant to determine the final access level [2].

Citations:


Declare the referenced permissions before assigning them in roles.

user_self_manage, client_read, and client_update are not declared in the permissions block above. Add these permission definitions so the provisioned roles reference real permissions rather than unknown permission names.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-hub/templates/authup/provisioning-configmap.yaml` around lines
98 - 109, Add permission definitions for user_self_manage, client_read, and
client_update in the ConfigMap’s permissions block before the roles section,
matching the existing permission declaration structure. Keep the steward role’s
globalPermissions references unchanged so they resolve to the newly declared
permissions.
charts/flame-hub/templates/postgresql/statefulset.yaml (1)

30-60: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick win

Keep the PostgreSQL username aligned with Harbor.

POSTGRES_USER is taken from the effective Secret, which explicitly supports a configurable username, while Harbor is configured with the literal database user postgres. A custom username therefore initializes PostgreSQL with one role while Harbor connects as another and fails to start. The probes also use the unrelated values-based username. Enforce postgres for this shared database, or document/validate that harbor.database.external.username must match the Secret username. (raw.githubusercontent.com)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-hub/templates/postgresql/statefulset.yaml` around lines 30 - 60,
Align the PostgreSQL credentials used by the StatefulSet with Harbor’s
configured database user. Update the POSTGRES_USER source and both pg_isready
probes in the container specification to consistently use the shared postgres
username, or add validation/documentation enforcing that
harbor.database.external.username matches the Secret username; preserve the
existing POSTGRES_PASSWORD Secret reference.
charts/flame-node/Chart.yaml (1)

50-52: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
fd -e tgz . charts/flame-node

Repository: PrivateAIM/helm

Length of output: 153


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "Tracked files under charts/flame-node:"
git ls-files charts/flame-node | sed -n '1,120p'

echo
echo "Locate Chart.yaml files with seaweedfs:"
rg -n "name: seaweedfs|version: (4\.3[7-9]\.0|4\.)|repository: https://seaweedfs/github.com/seaweedfs/seaweedfs/helm|repository: https://seaweedfs.github.io/seaweedfs/helm" charts -g 'Chart.yaml' -g '*.yaml'

echo
echo "Git status summary:"
git status --short

Repository: PrivateAIM/helm

Length of output: 4088


Align the SeaweedFS dependency version and vendored chart.

charts/flame-node/Chart.yaml pins seaweedfs to 4.37.0, while charts/flame-node/flame-node-data-store/Chart.yaml and existing tracked vendored tarballs in charts use 4.39.0. Align this pin to 4.39.0 if that is the intended version, and add charts/flame-node/charts/seaweedfs-4.39.0.tgz instead of relying on build-time fetch.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-node/Chart.yaml` around lines 50 - 52, Update the seaweedfs
dependency in charts/flame-node/Chart.yaml from 4.37.0 to 4.39.0, matching
flame-node-data-store/Chart.yaml and the existing vendored dependency version.
Add the corresponding charts/flame-node/charts/seaweedfs-4.39.0.tgz package so
the chart does not rely on build-time fetching.
charts/flame-node/flame-node-data-store/values.yaml (1)

5-16: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
cat charts/flame-node/flame-node-data-store/blaze/Chart.yaml 2>/dev/null || fd Chart.yaml charts/flame-node/flame-node-data-store

Repository: PrivateAIM/helm

Length of output: 1294


🏁 Script executed:

#!/bin/bash
set -e
printf '--- blaze Chart.yaml ---\n'
wc -l charts/flame-node/flame-node-data-store/blaze/Chart.yaml
sed -n '1,220p' charts/flame-node/flame-node-data-store/blaze/Chart.yaml

printf '\n--- data store Chart.yaml ---\n'
sed -n '1,220p' charts/flame-node/flame-node-data-store/Chart.yaml

printf '\n--- values relevant snippets ---\n'
sed -n '1,40p' charts/flame-node/flame-node-data-store/values.yaml
printf '\n--- blaze templates dependency references ---\n'
rg -n 'seaweedfs|blaze\.global|global\.seaweedfs|subchart|template|helmfile|Chart\.lock|dependencies' charts/flame-node/flame-node-data-store/blaze -S || true

Repository: PrivateAIM/helm

Length of output: 244


🏁 Script executed:

#!/bin/bash
set -e
echo '--- blaze Chart.yaml ---'
wc -l charts/flame-node/flame-node-data-store/blaze/Chart.yaml
sed -n '1,220p' charts/flame-node/flame-node-data-store/blaze/Chart.yaml

echo '--- data store Chart.yaml ---'
sed -n '1,220p' charts/flame-node/flame-node-data-store/Chart.yaml

echo '--- values relevant snippets ---'
sed -n '1,40p' charts/flame-node/flame-node-data-store/values.yaml
echo '--- blaze templates dependency references ---'
rg -n 'seaweedfs|blaze\.global|global\.seaweedfs|subchart|template|helmfile|Chart\.lock|dependencies' charts/flame-node/flame-node-data-store/blaze -S || true

echo '--- parent data-store chart dependency context ---'
rg -n '^dependencies:|name: seaweedfs|name: blaze|charts/flame-node/flame-node-data-store/values|seaweedfs:' charts/flame-node/flame-node-data-store -S || true

Repository: PrivateAIM/helm

Length of output: 4940


Add the seaweedfs dependency under blaze or remove this scoped global.

blaze/Chart.yaml declares no dependencies, so blaze.global.seaweedfs has no grandchild chart to render and the override will not take effect. Add the required SeaweedFS dependency into charts/flame-node/flame-node-data-store/blaze/Chart.yaml, or remove this blaze.global.seaweedfs: block.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-node/flame-node-data-store/values.yaml` around lines 5 - 16, The
blaze chart has no SeaweedFS dependency, so the scoped global configuration in
values.yaml is ineffective. Either add the required SeaweedFS dependency to
blaze/Chart.yaml so the seaweedfs settings propagate to the grandchild chart, or
remove the blaze.global.seaweedfs configuration block.
charts/flame-node/values.yaml (1)

903-913: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

@param name doesn't match the actual key (host vs documented hostname).

The doc comment references dataStore.seaweedfs.admin.ingress.hostname, but the actual field is host. Tools like bitnami's readme-generator-for-helm validate @param paths against real keys and error out on mismatches.

📝 Suggested fix
       ingress:
        enabled: false
-       ## `@param` dataStore.seaweedfs.admin.ingress.hostname Hostname for the admin panel. Must be set even if the same
+       ## `@param` dataStore.seaweedfs.admin.ingress.host Hostname for the admin panel. Must be set even if the same
        ## as .expose.hostname
        host:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

      ## Expose the admin panel in the browser via the node Ingress API
      ingress:
       enabled: false
       ## `@param` dataStore.seaweedfs.admin.ingress.host Hostname for the admin panel. Must be set even if the same
       ## as .expose.hostname
       host:
       ## `@param` dataStore.seaweedfs.admin.ingress.path Base path the admin process serves from.
       path: "/seaweedfs"
       annotations:
         nginx.ingress.kubernetes.io/proxy-body-size: 500m
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@charts/flame-node/values.yaml` around lines 903 - 913, Update the ingress
hostname documentation comment in the values configuration to reference the
actual host key used by dataStore.seaweedfs.admin.ingress, replacing the
mismatched hostname path while leaving the configuration fields unchanged.

@tada5hi tada5hi added the deploy/preview Deploy 1 hub and 2 nodes to the preview cluster label Jul 30, 2026
@privateaim-flux

Copy link
Copy Markdown

Flux Status

ℹ️ HelmRelease/pr-163-hub/hub

Helm install succeeded for release pr-163-hub/hub.v1 with chart flame-hub@0.1.0+8229ed956de7

Metadata:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

deploy/preview Deploy 1 hub and 2 nodes to the preview cluster

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants