Repository source: docs/plans/archive/public_key_visibility_step3_development_plan.md
Public Key Visibility Step 3 Development Plan
Stage 1
Goal: Make the profile author’s public key available to every bootstrap-post rendering path.
Dependencies: Approved Step 2; existing profile-to-post identity association.
Expected changes: Extend the post read data used by standalone posts, thread posts, and thread-root posts to carry the associated public key and an explicit missing-key state; do not change persistence or add a migration.
Verification approach: Exercise representative signed and keyless post fixtures and confirm the rendered view receives the expected key or absence state.
Risks or open questions:
Posts with no linked profile must remain renderable.
Existing author label and approval behavior must not change.
Canonical components/API contracts touched: Existing post/profile read model queries and
fetchPost/thread-post retrieval paths; no public API contract change.
Stage 2
Goal: Display the author’s public key in advanced technical details on bootstrap posts.
Dependencies: Stage 1 data availability.
Expected changes: Add or extend a shared post identity-details presentation used by the standalone post page, reusable post card, and thread-root card; show the armored key when available and a clear unavailable message otherwise; retain the existing profile advanced-details presentation for approved and unapproved profiles.
Verification approach: Inspect standalone bootstrap-post, thread bootstrap-post, and ordinary-post renderings; confirm the key is not placed in default post body/metadata and approval status remains independent.
Risks or open questions:
Avoid duplicating divergent markup across post surfaces.
Keep large key material contained within the existing advanced-details interaction.
Canonical components/API contracts touched:
templates/pages/post.php,templates/partials/post_card.php,templates/partials/thread_root_card.php, and the shared partial created or extended for post identity details.
Stage 3
Goal: Add regression coverage for complete public-key access.
Dependencies: Stages 1–2.
Expected changes: Add smoke or focused rendering assertions for approved profiles, unapproved profiles, standalone bootstrap posts, thread bootstrap posts, and keyless authors; cover the public-key label/content and unavailable state.
Verification approach: Run the targeted PHP test suite and perform a manual browser check of all three requested entry points.
Risks or open questions:
Test fixtures must distinguish approval state from key presence.
Canonical components/API contracts touched: Existing application smoke/render tests; no new API endpoint required.