Skip to content

Primitive inventory and naming

Sonaloop has several first-class primitives that are easy to confuse if they are all called "artifacts". The product UI separates them deliberately:

Use three layers:

  1. Primitives are the stable Library-level entities. They have a purpose, a route, a detail page and a presence declaration.
  2. Subtypes / formats refine a primitive without creating a new top-level entity. Red-team and head-to-head are council formats; website, external prototype and A/B variant are reference subtypes; a session can run against a screen walkthrough, prototype or live URL.
  3. Methodology artifact_type tags are open planning/build tags used by the methodology engine and prototype renderer registry. They are not automatically Library primitives.

  4. Open questions are the research uncertainties driving a project. They live in the project outline, the Library's Open questions tab and /open-questions/{id} detail pages.

  5. Hypotheses are testable assumptions with predictions. They are not answers; they are framed bets that reality can validate or refute.
  6. References are websites, external prototype links and A/B variants placed in a council room. They come from add_artifact, may carry a captured snapshot, and surface under /references. They are not uploaded files.
  7. Assets are real files attached to a project: screenshots, documents, exports and generated deliverables. Assets can flow in as evidence or out as deliverables. They surface under /assets, /assets/{id} and in the project outline.
  8. Councils are moderated research rounds: a mediator asks; personas answer from memory. Red-team, head-to-head, price ladder and ideation are council formats, not new primitives.
  9. Surveys are structured question instruments for real responses.
  10. Prototypes are interactive surfaces personas can actually use. Scaffolded prototypes are not limited to forms or clickflows: the artifact registry can render flows, dashboards, cards, comparisons, models, journeys and freeform canvases (kind="canvas" / --type canvas) for spatial maps, control rooms, boards and simulation-like experiences. They render with the active design system: Sonaloop defaults locally, or the workspace design system in Cloud, including tokens, font stacks and optional brand/logo assets. Generated HTML carries a compiled --proto-* token layer, so presets and fine-grained edits to color schemes, chart series, status colors, radius, spacing, density, shadows and focus rings adapt the next scaffolded prototype without hardcoded template branches. In shared Cloud, the Inspector serves each static prototype through a short-lived signed file capability bound to the exact active workspace and prototype tree. The embedded app runs in an opaque, credentialless CSP sandbox: relative CSS/JS/images still work, but prototype code receives no Sonaloop cookies, cannot inherit the signed-in origin, and cannot resolve another workspace's files. The detail page keeps that preview embedded by default. Maximize expands the same sandbox across the product viewport; Escape or the host-owned close control returns to the detail page without giving prototype code additional authority. A hosted HTTP(S) app can instead be admitted metadata-only with register_remote_prototype: Sonaloop stores its URL and version, optionally pairs the concept note, and never fetches or executes the remote URL. Governed sessions labelled as prototype use must resolve to a same-project registered prototype; a concept note or external link alone cannot satisfy that gate.
  11. Sessions are replayable usage traces against a screen walkthrough, prototype or live URL. A step may carry a screenshot-relative focus rectangle; the Inspector presents those steps as a linear reading flow with a bounded, focus-centred crop beside the persona's concurrent comment. Reading sessions use an almost viewport-wide drawer and put the flow before generic properties and relations; narrow screens stack the crop above its comment. The source screenshot stays unchanged and opens in full resolution on click. The focus is explicitly a salience hypothesis, never eye-tracking or measured attention. The concurrent comment stays in the persona's demonstrated, in-the-moment language; observed action/state and researcher interpretation remain separate fields. UX-method vocabulary belongs in findings or friction analysis unless the loaded persona context shows natural use. A screenshot thumbnail on a project or prototype enters that session rather than opening a competing overlay. Full-resolution zoom lives inside the replay and closes by its visible control, Escape or backdrop click, returning the reader to the same session. Shared Cloud delivers retained step screenshots through short-lived, workspace- and session-bound capabilities. define_flow stores a reusable screen-walkthrough test script under project["flows"], but that script is not a Library primitive; it exists so multiple sessions can reuse the same ordered screenshot sequence.
  12. Notes are captured signals, observations or concepts.
  13. Reports / syntheses are analyses that turn evidence into interpretation.
  14. Decisions are evidence-backed commitments about what to do. They are not answers; they are actions justified by evidence.
  15. Sections are structural primitives: they group existing nodes and can have detail/export surfaces, but they are not evidence by themselves.

The Library groups primitives as a user-facing work map:

  • Frame: open questions and hypotheses — what still needs to be resolved or proven.
  • Material: references and assets — linked or stored material, whether evidence in or deliverable out.
  • Ask: councils and surveys — ways to ask personas or real respondents.
  • Test: prototypes and sessions — what can be exercised and the recorded run through it.
  • Capture: notes — low-friction signals, observations and concepts.
  • Conclude: reports and decisions — analysis and commitments.
  • Structure: sections — grouping, not evidence.

The Library is the cross-project browser for these primitives. The project page remains the primary context: the same objects appear as rows in the research outline, grouped by phase, and open their canonical detail pages as slide-overs.

A hallucinated kind from an LLM cannot silently create a new Library primitive: the service layer validates or normalizes persisted values, and the web presence gate fails when a project-scoped primitive is not registered. Open methodology tags remain separate from this product taxonomy.