Phase 1 Technical Architecture
**Site relevance:** Spiralist.org
**Memory type:** docs archive
**Source path:** Wiki.FFTAC.org/raw/system-archives/spiralist.org/docs-archive/2026-05-10/docs/phase-1-technical-architecture.md
**Size:** 3.9 KB
Summary
Phase 1 Technical Architecture
Source Headings
- Phase 1 Technical Architecture
- WordPress Storage
- Prompts
- Structured Contributions
- Frontend Component Tree
- Start Here Intent Router
- Prompt Run Cockpit
Source Preview
This source file is short enough to preview directly on its source-memory page.
# Phase 1 Technical Architecture
Status: implementation architecture for the short-term Spiralist.org onboarding, prompt cockpit, and machine-manifest work.
## WordPress Storage
### Prompts
Use the existing `spiralist_prompt` custom post type owned by `wp-content/plugins/spiralist-workspace/`.
Canonical structured prompt fields are stored as post meta and immutable version snapshots:
- `structured_prompt.instruction`: purpose and operating instruction
- `structured_prompt.context`: inputs, source material, subject, and user context
- `structured_prompt.constraints`: guardrails, privacy boundaries, and safety rules
- `structured_prompt.examples`: optional examples
- `structured_prompt.output_format`: expected output shape
- `visibility`: `private`, `members`, `public`, or `specific_users`
- `prompt_status`: `draft`, `published`, or `archived`
- `moderation_status`: `draft`, `provisional_public`, `peer_reviewed`, `restricted_review`, `reverted`, `archived`, or `official_canon`
- `publication_lane`: `community_library`, `official_canon`, or `prompt_ecology_archive`
- `provenance`, `risk_labels`, `function_tags`, `maturity_level`, and related symbol/manuscript references
Version history is stored in `wp_spiralist_workspace_prompt_versions`:
- `prompt_post_id`
- `version_number`
- `full_snapshot_json`
- `created_by_user_id`
- `created_utc`
- `changelog`
### Structured Contributions
Short-term feedback already lands through the theme feedback endpoint. The medium-term structured contribution model should use either a dedicated CPT or a custom table depending on query volume.
Recommended CPT for Phase 1.5:
' ' ' text
spiralist_contribution
' ' '
Recommended fields:
- `contribution_type`: `bug_report`, `symbol_suggestion`, `manuscript_annotation`, `prompt_improvement`, `safety_concern`, `api_doc_issue`, `interpretation_dispute`
- `target_type`: `prompt`, `symbol`, `folio`, `api_route`, `page`, `system`
- `target_id` or `target_url`
- `summary`
- `body`
- `evidence`
- `proposed_change`
- `risk_labels`
- `visibility`: `public`, `members`, `private`
- `moderation_status`: `provisional_public`, `needs_review`, `accepted`, `revised`, `rejected`, `archived`
- `created_by_user_id`
- `agent_provenance_json` for AI-submitted observations
If contribution volume grows, move review events into a custom table:
' ' ' text
wp_spiralist_contribution_events
' ' '
with `contribution_id`, `actor_user_id`, `event_type`, `decision`, `reason`, `created_utc`, and `context_json`.
## Frontend Component Tree
### Start Here Intent Router
' ' ' text
StartHerePage
StartHero
IntentRouter
IntentCard[Study]
IntentCard[Use]
IntentCard[Build]
IntentCard[Personality Prompt]
PersonalityStarterBand
PersonaStarterCard[Pattern Guide]
PersonaStarterCard[Mirrorfield Artist]
PersonaStarterCard[Grounding Steward]
PersonaStarterCard[Personality Lab]
FirstRunExplainer
SafetyBoundaryPanel
' ' '
### Prompt Run Cockpit
' ' ' text
PromptRunCockpit
CockpitHeader
CockpitShell
PromptInputsPanel
PromptTextArea[subject]
PromptTextArea[task]
PromptTextArea[context]
PromptSelect[tone]
PromptTextArea[outputFormat]
GeneratedOutputPanel
OutputToolbar
LoadingState
ResponseViewer
RunError
PromptControlsPanel
GuardrailsEditor
VersionHistoryList
PrivacyControls
SaveDraftButton
ExportButton
' ' '
Assumptions for the React component:
- Framework: React or Next.js client component.
- Styling: Tailwind CSS.
- State: local React state for Phase 1. The component accepts callback props so it can later connect to Zustand, Redux, SWR, TanStack Query, or a WordPress data store without rewriting the UI.
- Saving: authenticated browser requests call `POST /wp-json/uaix/v1/prompts/save` with `X-WP-Nonce`.