Skip to content
wiki.fftac.org

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`.