Skip to content

fix(auth): register platform identity specs + issuer-from-env in TemperPaw (ARN-255) - #469

Merged
rita-aga merged 3 commits into
mainfrom
claude/arn-255-issuer-bootstrap
Aug 25, 2026
Merged

fix(auth): register platform identity specs + issuer-from-env in TemperPaw (ARN-255)#469
rita-aga merged 3 commits into
mainfrom
claude/arn-255-issuer-bootstrap

Conversation

@rita-aga

@rita-aga rita-aga commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Makes ARN-255 JWT verification functional in prod. The prod host skips the default agent-specs bootstrap (paw-agent owns the agent lifecycle), so the kernel's TrustedIssuer + PrincipalGeneration specs never loaded — tdata/TrustedIssuer was EntitySetNotFound and bootstrap_trusted_issuer_from_env had nothing to act on.

  • Registers ONLY the two identity specs via the public SpecRegistry merge path (cascade-free; avoids the documented 512MB Railway OOM; does not resurrect the 8 built-in specs prod drops), then calls bootstrap_trusted_issuer_from_env (no-ops when TEMPER_TRUSTED_ISSUER_* env is unset).
  • Fixes the datadog_observability_contract + paw_fs_hot_path pin assertions and 27 os-apps wasm Cargo.lock files that still referenced pre-bump rev 724eda61 (my chore(deps): bump temper pin to a6e62899 (ARN-255 kernel token verification) #467 updated Cargo.toml pins but not these; temper-wasm-sdk is byte-identical between the revs).

Under three-reviewer + Greptile review now. Part of the ARN-255 deploy chain.

🤖 Generated with Claude Code

Greptile Summary

The PR makes production JWT verification bootstrap the required platform identity state and synchronizes the repository on a newer Temper revision.

  • Registers identity specifications when the paw-agent-owned lifecycle skips the default specification bootstrap.
  • Registers operator credential specifications before creating the configured credential and propagates bootstrap failures.
  • Loads the trusted JWT issuer from deployment environment variables before readiness.
  • Aligns native and WASM dependency pins, lockfiles, and revision contract tests.

Confidence Score: 5/5

The PR appears safe to merge because no blocking failure remains within the eligible follow-up-review scope.

No blocking failure remains.

Important Files Changed

Filename Overview
crates/temperpaw/src/startup.rs Adds ordered identity, credential, and trusted-issuer bootstrap steps whose failures prevent the service from becoming ready.
crates/temperpaw/Cargo.toml Moves Temper dependencies to one revision and adds temper-spec for targeted identity-spec registration.
Cargo.lock Resolves the native Temper dependency family at the newly pinned git revision.
crates/temperpaw/tests/datadog_observability_contract.rs Updates native and WASM pin-consistency assertions to the new Temper revision.
crates/temperpaw/tests/paw_fs_hot_path.rs Updates the paw-fs dependency revision contract to the new Temper pin.
os-apps/paw-agent/wasm/context_compactor/Cargo.lock Aligns the standalone WASM lockfile with the repository-wide Temper SDK revision.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A[Restore platform state] --> B{Skip default agent specs?}
    B -- No --> C[Default specs available]
    B -- Yes --> D[Register platform identity specs]
    C --> E{TEMPER_API_KEY configured?}
    D --> E
    E -- Yes --> F[Register credential specs]
    F --> G[Bootstrap operator credential]
    E -- No --> H[Continue without operator credential]
    G --> I[Bootstrap trusted issuer from environment]
    H --> I
    I --> J{Issuer configuration}
    J -- Complete --> K[Register trusted issuer]
    J -- Unset --> L[Leave JWT verification inactive]
    J -- Invalid or failed --> M[Fail startup before readiness]
    K --> N[Continue startup]
    L --> N
Loading

Reviews (2): Last reviewed commit: "chore(deps): repin temper to b0c79312 (m..." | Re-trigger Greptile

Context used:

…erPaw (ARN-255)

The prod host skips the default agent-specs bootstrap (paw-agent owns the agent
lifecycle), and paw-agent's spec set does not include TrustedIssuer or
PrincipalGeneration — so those two identity specs never loaded and
bootstrap_trusted_issuer_from_env had no entity set to dispatch against. ARN-255
JWT verification was inert in prod (tdata/TrustedIssuer = EntitySetNotFound).

Register ONLY the two identity specs via the public SpecRegistry merge path
(cascade-free, no 512MB OOM, does not resurrect the 8 built-in specs the prod
design drops), then call bootstrap_trusted_issuer_from_env unconditionally (it
no-ops when the TEMPER_TRUSTED_ISSUER_* env vars are unset). New identity_bootstrap
module mirrors the two IOA specs + CSDL slice from temper a6e6289 (documented,
unit-tested against drift).

Also fixes the datadog_observability_contract + paw_fs_hot_path pin assertions
and 27 os-apps wasm Cargo.lock files that still referenced the pre-bump temper
rev 724eda61 — my #467 pin bump updated the Cargo.toml pins but not these.
temper-wasm-sdk is byte-identical between the two revs (one auth-only commit
apart), so the lockfile rev bump is a no-op to the resolved graph.
@rita-aga

Copy link
Copy Markdown
Collaborator Author

@greptile review

rita-aga and others added 2 commits August 24, 2026 20:09
…iring (ARN-255)

Deletes the mirrored identity_bootstrap.rs module (and its `mod`) now that the
temper kernel exposes a narrow public API. Phase 4b of startup now:

- calls temper_platform::bootstrap_identity_specs in the default-agent-specs
  skip branch instead of the mirror, and fails readiness if it errors;
- registers AgentType/AgentCredential (bootstrap_operator_credential_specs)
  before bootstrapping the operator credential, so cold-boot on a virgin store
  no longer dispatches against missing tables (ARN-255);
- propagates bootstrap_operator_credential's error (fail readiness) instead of
  discarding it;
- consumes bootstrap_trusted_issuer_from_env's Result: none-set is a safe no-op,
  partial config or a registration failure fails readiness — no more
  "registering…" log followed by a silent no-op.

Requires the coupled temper change first (bootstrap_identity_specs et al.); the
temper pin here must be bumped to the merged temper SHA before this compiles
standalone. The contract-test rev and wasm lockfile fixes are unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…y API + operator predicate)

Repins from a6e62899 to the merged temper main b0c79312 so the host builds
against the new bootstrap_identity_specs / bootstrap_operator_credential_specs
APIs and the operator-predicate tightening. Updates Cargo.toml x-deps, Cargo.lock,
the contract-test expected rev, and the os-apps wasm lockfiles.
@rita-aga

Copy link
Copy Markdown
Collaborator Author

@greptile review

@rita-aga
rita-aga merged commit a291ebb into main Aug 25, 2026
2 checks passed
rita-aga added a commit that referenced this pull request Aug 25, 2026
…9312

Align the new ReleaseRun module with the temper-wasm-sdk rev the rest of the
tree moved to (724eda61 -> b0c79312, via #467/#469). The module was authored
when main pinned 724eda61; every sibling module and wasm-helpers are now on
b0c79312, so on the PR merge commit release_run_lifecycle was the only module
still on the old rev, producing two temper_wasm_sdk::Context types (E0308) in
the os-apps WASM build. Pure rev bump — no code change (module uses
temper_wasm_sdk::prelude::*, same as its siblings). 38/38 tests pass and the
wasm32 build is clean against b0c79312.

Re-verified the review basis: the only commits between the two revs are ARN-255
authz (token verification + operator predicate) and a doc-comment edit in
effects.rs; odata/query/filter, state_timeout, effects (SetCounterFromParam +
increment ordering), and dispatcher (trigger principal) are functionally
unchanged, so the 6-round review holds on b0c79312.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01PZkYwk1gmU6GPKRuQsSLda
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant