fix(auth): register platform identity specs + issuer-from-env in TemperPaw (ARN-255) - #469
Merged
Merged
Conversation
…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.
Collaborator
Author
|
@greptile review |
…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.
Collaborator
Author
|
@greptile review |
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
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
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.
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.
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
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 --> NReviews (2): Last reviewed commit: "chore(deps): repin temper to b0c79312 (m..." | Re-trigger Greptile
Context used: