Skip to content

Implement chapter 17: the client block and what it derives #429

Open

Description

@ExtraToast

Chapter 17 (spec/v1/17-sign-in.md) and 0100 specify the client block on an Application ahead of any implementation. This issue tracks implementing it, so the nine codes the chapter defines can leave the pending list in scripts/lint-codes.ts.

Scope

  • Schema: the client block on an Application (signIn, exposure, label, description, iconPath, launchPath, redirectPaths, protectedPath, credential, roles) and signIn (issuer, provider) in the Platform document.
  • Derivation: forward-auth from Audience and Client together; the /.auth/ route for gated Clients; the derived client credential path, its read grant and the provider's write grant; the ${client:issuer|id|secret} placeholders.
  • Deliverables: the cluster-scoped Client object from the kubernetes adapter; the /.auth/ route from the traefik adapter.
  • Release Gate: the anonymous request to a native Client's protectedPath.

Codes to exercise

E_AUTHENTICATED_WITHOUT_CLIENT, E_CLIENT_AUDIENCE, E_CLIENT_EXPOSURE_UNRESOLVED, E_CLIENT_FIELD_FOR_MODE, E_CLIENT_OPEN, E_CLIENT_PLACEHOLDER_WITHOUT_SECRET, E_DUPLICATE_APP_ROLE, E_GATE_PATH_CLAIMED, E_NO_SIGN_IN_PROVIDER

Ordering

E_AUTHENTICATED_WITHOUT_CLIENT refuses every authenticated exposure that has no Client yet. It should only be enforced once the estate's projects carry client blocks, which follows the identity rollout (JorisJonkers-dev/identity).

Activity

  1. added
    type: featureNew user-facing or operator-facing capability.
    area: authAuthentication, authorization, sessions, or identity.
    area: deployhomelab-deploy, deploy-v2, manifests, and rollout flow.
    on Oct 15, 2026
  2. ExtraToast commented on Oct 22, 2026

    @ExtraToast
    ContributorAuthor

    #544 has landed (#560 through #570), so feat/429-client-block (3fa7a6f) can be rebased onto main now. The paths it overlapped have moved:

  3. added
    status: blockedCannot move forward until an external dependency is resolved.
    on Oct 24, 2026
  4. ExtraToast commented on Oct 24, 2026

    @ExtraToast
    ContributorAuthor

    Chapter 17 is built in TypeScript: #577 (the client block and its refusals) and #597 (what a Client derives) are merged. Two codes stay pending, each waiting on work outside this repository:

    The model-driven side waits for the post-1.0 catch-up (emf/ is frozen, #585). Marked blocked until then.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: authAuthentication, authorization, sessions, or identity.area: deployhomelab-deploy, deploy-v2, manifests, and rollout flow.status: blockedCannot move forward until an external dependency is resolved.type: featureNew user-facing or operator-facing capability.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions