Carries the create-time two-person approval fix (PR 63) and everything since RC.8 onto the release train. The shared workflow publishes 0.1.0-RC.9 to the Gitea Maven registry and tags v0.1.0-RC.9 on merge.
Carries the create-time two-person approval fix (PR 63) and everything since RC.8 onto the release train. The shared workflow publishes 0.1.0-RC.9 to the Gitea Maven registry and tags v0.1.0-RC.9 on merge.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Replace the platform-ci release callers with one caller of
KofTwentyTwo/ci-workflows maven.yaml (qqq-orb port).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- SchemaDriftIT/SchemaDriftTest: quote OpenAPI path templates before
turning {key} into a regex; other placeholders such as {slug} were
compiled as regex repetition and threw PatternSyntaxException.
- Contract ITs: set allowInsecureHttp on the test qbit config; the
Authentik test container is plain http and is reached via the Docker
host address (e.g. 172.17.0.1 in CI), not loopback. Production https
validation is unchanged.
- Postgres ITs: bind the mapped port to 127.0.0.1 only when the Docker
daemon is local; with a remote daemon the loopback-only binding made
the database unreachable (connection refused).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
On a cold runner the built-in Authentik blueprints can race our custom
ones on first boot, leaving kof22-oauth2-apps in "error" until the
8-minute wait times out (run 5465). The local-review path already
re-applied errored blueprints; do the same (throttled to every 10s) in
the shared contract-stack wait.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Run 5488: with errored blueprints re-applied, kof22-oauth2-apps and
kof22-qqq-tokens succeeded but kof22-identity-bootstrap stayed
"unknown" (never applied) until the wait timed out. Re-apply blueprints
in "error" or "unknown" state after a 60s grace period, every 30s.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
When the blueprint wait times out, also print error-level worker lines
and error/warning server lines (API-triggered re-applies run in the
server), so the failing blueprint's cause is visible in CI logs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
With twoPersonApproval=true, the native Create Group action persisted a
new group carrying authentik.* permissions (for example
authentik.users.read) immediately, while Edit Group queued an
authentik_approval_request for a second person. Apply the same
identity-permission expansion and second-person condition at creation
time: the plan becomes NEEDS_APPROVAL and nothing is written until a
distinct operator holding authentik.approve approves it; the stored
request keeps the native requester/approver and live revalidation
checks.
Regression test: creating a group with authentik.users.read queues one
approval request and writes nothing, self-approval is refused, a second
operator with approve + groups.manage completes the creation, the
persisted group carries exactly the requested permission, the request is
APPROVED, and a repeat approval is refused.
Carried locally by GG Forge as qbit-authentik-rc8-create-approval.patch
since 0.1.0-RC.8.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Signed-off-by: James Maes <james@kof22.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Carries the create-time two-person approval fix (PR 63) and everything since RC.8 onto the release train. The shared workflow publishes 0.1.0-RC.9 to the Gitea Maven registry and tags v0.1.0-RC.9 on merge.
🤖 Generated with Claude Code
- SchemaDriftIT/SchemaDriftTest: quote OpenAPI path templates before turning {key} into a regex; other placeholders such as {slug} were compiled as regex repetition and threw PatternSyntaxException. - Contract ITs: set allowInsecureHttp on the test qbit config; the Authentik test container is plain http and is reached via the Docker host address (e.g. 172.17.0.1 in CI), not loopback. Production https validation is unchanged. - Postgres ITs: bind the mapped port to 127.0.0.1 only when the Docker daemon is local; with a remote daemon the loopback-only binding made the database unreachable (connection refused). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>