# Polymodel

Polymodel is an AT Protocol-native model/project sharing app — roughly Thingiverse on atproto — and a demo of a highly integrated Polytoken/Jira/Confluence agent workflow.

## Product direction

Initial product shape:

- model/project publishing on ATProto;
- a small lexicon set, tentatively project, profile, and likes/saves;
- feeds by profile, recent projects, and hot projects;
- browser STL viewing as a core interaction;
- Dioxus web UI backed by Rust and Jacquard 0.12.

STL viewer candidates:

- `three-d` is a viable web/WASM candidate with a browser/WebGL-oriented API.
- `kiss3d` also works on WASM and should be evaluated alongside `three-d`; choose based on STL loading, orbit controls, rendering quality, bundle/runtime costs, and Dioxus integration friction.

## Source of truth

- Jira project key: `PM`.
- Confluence space key: `PM`; numeric space ID for page APIs: `98315`; overview/root page ID: `98479`.
- Jira is both the human source of truth and the agent working truth for implementation tasks when Jira tools are available.
- Confluence is the durable design and demo-narrative space.
- Local Markdown is supporting material unless a task explicitly says otherwise.

## VCS

Use jj, not raw git, for normal development.

- Create isolated work with jj workspaces, and immediately start a fresh change before editing: `jj new -m "PM-12: concise summary"`.
- Use ticket-derived names like `pm-12-short-summary`.
- Check your own changes with `jj diff` before reporting completion.
- Use `jj describe` only to update the description of an already-isolated change; do not use it as a substitute for `jj new` at task start.

## Commands

Use the justfile command surface:

```sh
just fix
just check
just test
just test-server
just test-all
just serve
```

Before review or handoff, run at least `just fix` and the narrowest relevant tests. Use `just test-all` for substantial changes.

## Stack notes

- Dioxus 0.7 is the UI framework.
- Jacquard 0.12 is the AT Protocol client stack.
- The project uses Rust 2024 on nightly with `wasm32-unknown-unknown` available.

## Agent behavior

- Investigate code and docs before asking factual questions.
- Ask the operator for product/demo intent and workflow tradeoffs.
- Keep Jira updated at workflow gates. When adding Jira comments with restricted visibility through Atlassian MCP tools, use role visibility `{ "type": "role", "value": "Member" }`; the value is singular, and observed rejected values include `Administrators`, `Members`, and `Viewers`.
- Do not put secrets in repo files.
