atris 3.15.45 → 3.15.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (65) hide show
  1. package/commands/computer.js +1 -1
  2. package/lib/runtime-bootstrap.js +17 -5
  3. package/package.json +2 -1
  4. package/templates/business-starter/CLAUDE.md +62 -0
  5. package/templates/business-starter/MAP.md +80 -0
  6. package/templates/business-starter/MEMBER.md +46 -0
  7. package/templates/business-starter/TODO.md +28 -0
  8. package/templates/business-starter/atris.md +61 -0
  9. package/templates/business-starter/context/README.md +19 -0
  10. package/templates/business-starter/context/live-workspace.md +36 -0
  11. package/templates/business-starter/goals.md +33 -0
  12. package/templates/business-starter/instructions.md +40 -0
  13. package/templates/business-starter/memory.md +31 -0
  14. package/templates/business-starter/persona.md +26 -0
  15. package/templates/business-starter/policies/LESSONS.md +5 -0
  16. package/templates/business-starter/policies/REWARD.md +24 -0
  17. package/templates/business-starter/reports/README.md +17 -0
  18. package/templates/business-starter/reports/operating-recap-template.md +44 -0
  19. package/templates/business-starter/skills/README.md +21 -0
  20. package/templates/business-starter/team/README.md +17 -0
  21. package/templates/business-starter/team/_template/MEMBER.md +32 -0
  22. package/templates/business-starter/team/_template/SOUL.md +40 -0
  23. package/templates/business-starter/team/comms/MEMBER.md +34 -0
  24. package/templates/business-starter/team/comms/SOUL.md +32 -0
  25. package/templates/business-starter/team/operator/MEMBER.md +34 -0
  26. package/templates/business-starter/team/ops/MEMBER.md +34 -0
  27. package/templates/business-starter/team/ops/SOUL.md +32 -0
  28. package/templates/business-starter/team/research/MEMBER.md +34 -0
  29. package/templates/business-starter/team/research/SOUL.md +32 -0
  30. package/templates/business-starter/team/validator/MEMBER.md +34 -0
  31. package/templates/business-starter/wiki/STATUS.md +7 -0
  32. package/templates/business-starter/wiki/concepts/first-loop-template.md +34 -0
  33. package/templates/business-starter/wiki/index.md +30 -0
  34. package/templates/business-starter/wiki/log.md +11 -0
  35. package/templates/business-starter/wiki/wiki.md +26 -0
  36. package/templates/research-canonical/CLAUDE.md +70 -0
  37. package/templates/research-canonical/MAP.md +68 -0
  38. package/templates/research-canonical/MEMBER.md +46 -0
  39. package/templates/research-canonical/TODO.md +28 -0
  40. package/templates/research-canonical/atris.md +62 -0
  41. package/templates/research-canonical/context/README.md +21 -0
  42. package/templates/research-canonical/context/live-workspace.md +24 -0
  43. package/templates/research-canonical/goals.md +23 -0
  44. package/templates/research-canonical/instructions.md +40 -0
  45. package/templates/research-canonical/memory.md +31 -0
  46. package/templates/research-canonical/persona.md +26 -0
  47. package/templates/research-canonical/policies/LESSONS.md +5 -0
  48. package/templates/research-canonical/policies/REWARD.md +21 -0
  49. package/templates/research-canonical/reports/README.md +17 -0
  50. package/templates/research-canonical/skills/README.md +21 -0
  51. package/templates/research-canonical/team/README.md +11 -0
  52. package/templates/research-canonical/team/eval/MEMBER.md +16 -0
  53. package/templates/research-canonical/team/eval/SOUL.md +32 -0
  54. package/templates/research-canonical/team/experiment/MEMBER.md +16 -0
  55. package/templates/research-canonical/team/experiment/SOUL.md +32 -0
  56. package/templates/research-canonical/team/hypothesis/MEMBER.md +16 -0
  57. package/templates/research-canonical/team/hypothesis/SOUL.md +32 -0
  58. package/templates/research-canonical/team/literature/MEMBER.md +16 -0
  59. package/templates/research-canonical/team/literature/SOUL.md +32 -0
  60. package/templates/research-canonical/wiki/STATUS.md +7 -0
  61. package/templates/research-canonical/wiki/briefs/research-program.md +19 -0
  62. package/templates/research-canonical/wiki/concepts/research-loop.md +14 -0
  63. package/templates/research-canonical/wiki/index.md +25 -0
  64. package/templates/research-canonical/wiki/log.md +10 -0
  65. package/templates/research-canonical/wiki/wiki.md +26 -0
@@ -1289,7 +1289,7 @@ async function bootstrapBusinessComputerRuntime(token, ctx, boundary = 'computer
1289
1289
  const result = await runBusinessTerminalCommand(token, ctx, command, 120);
1290
1290
  if (!result.ok) {
1291
1291
  console.log(' Runtime: bootstrap could not run.');
1292
- console.log(` Recovery: atris computer run "npm install -g atris@latest" --business ${ctx.slug || ctx.businessId} --workspace ${ctx.workspaceId}`);
1292
+ console.log(` Recovery: atris computer run "npm install --prefix /workspace/.atris-npm atris@latest && /workspace/.atris-npm/node_modules/.bin/atris update" --business ${ctx.slug || ctx.businessId} --workspace ${ctx.workspaceId}`);
1293
1293
  return { ok: false, result };
1294
1294
  }
1295
1295
 
@@ -45,7 +45,10 @@ function buildRemoteAtrisBootstrapCommand(options = {}) {
45
45
  'mkdir -p "$STATE_DIR"',
46
46
  'RUNTIME_FILE="$STATE_DIR/runtime.json"',
47
47
  'sanitize() { printf "%s" "$1" | tr "\\n\\r" " " | sed "s/[\\\\\\\"]/ /g" | cut -c1-160; }',
48
- 'version_text() { if command -v atris >/dev/null 2>&1; then atris version 2>/dev/null || atris --version 2>/dev/null || true; fi; }',
48
+ 'LOCAL_NPM_PREFIX="$WORKSPACE/.atris-npm"',
49
+ 'LOCAL_ATRIS_BIN="$LOCAL_NPM_PREFIX/node_modules/.bin/atris"',
50
+ 'export PATH="$LOCAL_NPM_PREFIX/node_modules/.bin:/home/atris/bin:$PATH"',
51
+ 'version_text() { if [ -x "$LOCAL_ATRIS_BIN" ]; then "$LOCAL_ATRIS_BIN" version 2>/dev/null || "$LOCAL_ATRIS_BIN" --version 2>/dev/null || true; elif command -v atris >/dev/null 2>&1; then atris version 2>/dev/null || atris --version 2>/dev/null || true; fi; }',
49
52
  'BEFORE="$(sanitize "$(version_text)")"',
50
53
  '[ -n "$BEFORE" ] || BEFORE="missing"',
51
54
  'INSTALL_STATUS="skipped"',
@@ -54,19 +57,28 @@ function buildRemoteAtrisBootstrapCommand(options = {}) {
54
57
  'if [ "${ATRIS_SKIP_RUNTIME_BOOTSTRAP:-}" = "1" ]; then',
55
58
  ' INSTALL_STATUS="skipped_env"',
56
59
  'elif command -v npm >/dev/null 2>&1; then',
57
- ' if npm install -g atris@latest >/tmp/atris-runtime-bootstrap-npm.log 2>&1; then',
60
+ ' mkdir -p "$LOCAL_NPM_PREFIX"',
61
+ ' if npm install --prefix "$LOCAL_NPM_PREFIX" atris@latest >/tmp/atris-runtime-bootstrap-npm.log 2>&1; then',
58
62
  ' INSTALL_STATUS="installed_latest"',
63
+ ' mkdir -p /home/atris/bin 2>/dev/null || true',
64
+ ' ln -sf "$LOCAL_ATRIS_BIN" /home/atris/bin/atris 2>/dev/null || true',
59
65
  ' else',
60
66
  ' INSTALL_STATUS="failed"',
61
- ' RECOVERY_COMMAND="npm install -g atris@latest"',
67
+ ' RECOVERY_COMMAND="npm install --prefix /workspace/.atris-npm atris@latest && /workspace/.atris-npm/node_modules/.bin/atris update"',
62
68
  ' fi',
63
69
  'else',
64
70
  ' INSTALL_STATUS="failed_no_npm"',
65
- ' RECOVERY_COMMAND="install node/npm, then npm install -g atris@latest"',
71
+ ' RECOVERY_COMMAND="install node/npm, then npm install --prefix /workspace/.atris-npm atris@latest"',
66
72
  'fi',
67
73
  'AFTER="$(sanitize "$(version_text)")"',
68
74
  '[ -n "$AFTER" ] || AFTER="missing"',
69
- 'if command -v atris >/dev/null 2>&1 && [ -d "$WORKSPACE/atris" ]; then',
75
+ 'if [ -x "$LOCAL_ATRIS_BIN" ] && [ -d "$WORKSPACE/atris" ]; then',
76
+ ' if (cd "$WORKSPACE" && ATRIS_SKIP_UPDATE_CHECK=1 "$LOCAL_ATRIS_BIN" update >/tmp/atris-runtime-bootstrap-sync.log 2>&1); then',
77
+ ' SYNC_STATUS="synced"',
78
+ ' else',
79
+ ' SYNC_STATUS="failed"',
80
+ ' fi',
81
+ 'elif command -v atris >/dev/null 2>&1 && [ -d "$WORKSPACE/atris" ]; then',
70
82
  ' if (cd "$WORKSPACE" && ATRIS_SKIP_UPDATE_CHECK=1 atris update >/tmp/atris-runtime-bootstrap-sync.log 2>&1); then',
71
83
  ' SYNC_STATUS="synced"',
72
84
  ' else',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atris",
3
- "version": "3.15.45",
3
+ "version": "3.15.46",
4
4
  "main": "bin/atris.js",
5
5
  "bin": {
6
6
  "atris": "bin/atris.js",
@@ -46,6 +46,7 @@
46
46
  "atris/team/_template/MEMBER.md",
47
47
  "atris/features/_templates/",
48
48
  "atris/features/company-brain-sync/",
49
+ "templates/",
49
50
  "atris/wiki/index.md",
50
51
  "atris/wiki/concepts/agent-activation-contract.md",
51
52
  "atris/wiki/concepts/workspace-initialization-contract.md",
@@ -0,0 +1,62 @@
1
+ # {{name}} — Atris Workspace
2
+
3
+ You are the AI operating partner for **{{name}}**.
4
+
5
+ ## FIRST MESSAGE — MANDATORY
6
+
7
+ Before responding to the user's first message:
8
+ 1. Read `atris/atris.md` (boot protocol)
9
+ 2. Read `atris/MAP.md` (navigation)
10
+ 3. Read `.atris/state/tasks.projection.json` if present; otherwise read `atris/TODO.md`
11
+ 4. Read today's journal at `atris/logs/YYYY/YYYY-MM-DD.md`
12
+ 5. Acknowledge what you've loaded in 1–2 lines, then respond
13
+
14
+ ## MAPFIRST (Enforced)
15
+
16
+ Before ANY file search:
17
+ 1. Read `atris/MAP.md`
18
+ 2. Search for your keyword in MAP
19
+ 3. If found → go directly to file:line
20
+ 4. If not found → grep ONCE, then UPDATE MAP.md
21
+
22
+ **Never grep without checking MAP first.**
23
+
24
+ ## Persona
25
+
26
+ See `atris/PERSONA.md` for voice, tone, and style.
27
+
28
+ ## Core Loop
29
+
30
+ `atris plan` → `atris do` → `atris review`
31
+
32
+ ## Mission Autonomy
33
+
34
+ Use `atris mission` when work should survive this chat or run as an autonomous loop.
35
+
36
+ ```
37
+ member -> mission start --verify -> status --status active -> one bounded step -> mission tick --verify -> receipt -> complete|run|stop
38
+ ```
39
+
40
+ - Start current-agent work: `atris mission start "<objective>" --owner <member> --runner codex_goal --lane business --verify "<cmd>" --stop "<condition>"`
41
+ - Start headless Claude work: add `--runner claude --cadence "15m" --always-on`, then use `atris mission run <id> --max-ticks 4 --complete-on-pass`.
42
+ - Resume: `atris mission status --status active --json`, then pick the mission matching your owner/member.
43
+ - Prove: after one bounded step, run `atris mission tick <id> --verify --summary "<what changed>"`.
44
+ - Close: if the verifier passes, run `atris mission complete <id> --proof "<receipt_path>"`; if current-agent work should keep going, repeat status -> step -> tick.
45
+
46
+ ## Wiki Reads — REQUIRED for domain questions
47
+
48
+ You have a compiled wiki at `atris/wiki/`:
49
+ - `atris/wiki/people/` — humans (employees, contacts, stakeholders)
50
+ - `atris/wiki/systems/` — tools, tables, dashboards, services, products
51
+ - `atris/wiki/concepts/` — patterns, frameworks, recurring ideas
52
+ - `atris/wiki/briefs/` — multi-page briefs and cross-cutting analyses
53
+
54
+ When asked anything domain-specific, **READ THE RELEVANT WIKI PAGE FIRST**. Cite the page in your answer. Do not answer from generic knowledge.
55
+
56
+ ## Rules (Non-Negotiable)
57
+
58
+ - Plan = ASCII visualization + approval gate. Do not execute during planning.
59
+ - Execute step-by-step. Verify as you go.
60
+ - Update artifacts (`atris task`, MAP.md) when reality changes.
61
+ - Finish/review completed tasks (target state: task projection/TODO fallback = 0 active).
62
+ - Append to `atris/policies/LESSONS.md` after every significant discovery.
@@ -0,0 +1,80 @@
1
+ # {{name}} — Workspace Map
2
+
3
+ > Navigation index. Source of truth for where things live.
4
+ > Update this file when you discover or move things.
5
+
6
+ ## Atris System
7
+
8
+ This folder is the default computer for the `{{name}}` business owner.
9
+ Keep owner metadata in `.atris/business.json`; keep computer memory, files, tools, and validation state in this workspace.
10
+
11
+ | Path | What |
12
+ |------|------|
13
+ | `atris/atris.md` | Boot protocol |
14
+ | `atris/MAP.md` | This file |
15
+ | `atris/TODO.md` | Active task queue |
16
+ | `atris/CLAUDE.md` | Claude Code persona |
17
+ | `atris/MEMBER.md` | Agent role definition |
18
+ | `atris/PERSONA.md` | Canonical voice and tone entrypoint |
19
+ | `atris/persona.md` | Compatibility mirror |
20
+ | `atris/instructions.md` | Workflows |
21
+ | `atris/goals.md` | Strategic direction |
22
+ | `atris/memory.md` | Learned context |
23
+ | `atris/logs/YYYY/` | Daily journals |
24
+ | `atris/policies/REWARD.md` | Local reward rubric for the first measurable loop |
25
+ | `atris/policies/LESSONS.md` | Append-only lessons |
26
+
27
+ ## Wiki (Compiled Knowledge)
28
+
29
+ | Path | What |
30
+ |------|------|
31
+ | `atris/wiki/wiki.md` | Wiki protocol |
32
+ | `atris/wiki/index.md` | Catalog by page type |
33
+ | `atris/wiki/STATUS.md` | Wiki health snapshot |
34
+ | `atris/wiki/log.md` | Ingest history |
35
+ | `atris/wiki/people/` | Human profiles |
36
+ | `atris/wiki/systems/` | Tools, tables, services |
37
+ | `atris/wiki/concepts/` | Patterns and frameworks |
38
+ | `atris/wiki/concepts/first-loop-template.md` | Starter template for the first measurable loop |
39
+ | `atris/wiki/briefs/` | Cross-cutting briefs |
40
+
41
+ ## Context (Raw Sources)
42
+
43
+ | Path | What |
44
+ |------|------|
45
+ | `atris/context/live-workspace.md` | Live ids, owner/computer model, and workspace separation rule |
46
+ | `atris/context/README.md` | Raw-source rules |
47
+
48
+ ## Skills
49
+
50
+ | Path | What |
51
+ |------|------|
52
+ | `atris/skills/` | Custom callable skills |
53
+
54
+ ## Team
55
+
56
+ | Path | What |
57
+ |------|------|
58
+ | `atris/team/` | Role lenses inside the shared business environment |
59
+ | `atris/team/_template/MEMBER.md` | Starter member template for real humans or new lanes |
60
+ | `atris/team/ops/MEMBER.md` | Default operating lane |
61
+ | `atris/team/operator/MEMBER.md` | Default owner for the business computer |
62
+ | `atris/team/validator/MEMBER.md` | Proof and cost-safety checker |
63
+ | `atris/team/comms/MEMBER.md` | Default communication lane |
64
+ | `atris/team/research/MEMBER.md` | Default research lane |
65
+ | `atris/team/README.md` | Team folder rules |
66
+
67
+ ## Reports
68
+
69
+ | Path | What |
70
+ |------|------|
71
+ | `atris/reports/operating-recap-template.md` | Default artifact for the first real loop |
72
+ | `atris/reports/` | Past artifacts |
73
+ | `.atris/state/_sync.json` | Workspace sync receipt |
74
+ | `.atris/state/events.jsonl` | Raw event stream |
75
+ | `.atris/state/episodes.jsonl` | Episode log |
76
+ | `.atris/state/scorecards.jsonl` | Run summaries |
77
+
78
+ ---
79
+
80
+ *This is a starter map. Add file:line references as you discover them.*
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: {{slug}}-agent
3
+ role: {{name}} Operating Partner
4
+ description: AI agent for the {{name}} business computer
5
+ version: 1.0.0
6
+
7
+ permissions:
8
+ can-read: true
9
+ can-execute: true
10
+ can-plan: true
11
+ can-delete: false
12
+
13
+ skills: []
14
+ tools: []
15
+ ---
16
+
17
+ # {{name}} Agent
18
+
19
+ You are the AI operating partner for **{{name}}**.
20
+ Treat this as the default computer for the **{{name}}** business owner.
21
+ The computer is the persistent environment: workspace + files + tools + secrets + memory + agents + validation loop.
22
+ Use the files under `atris/team/` as role lenses, not as separate fictional workers, unless the human explicitly asks for that framing.
23
+
24
+ ## Activation
25
+
26
+ On activation:
27
+ 1. Load `atris/MAP.md`, `atris/goals.md`, today's journal
28
+ 2. Display the boot acknowledgment (see `atris/atris.md`)
29
+ 3. Read the wiki index at `atris/wiki/index.md`
30
+ 4. Ask: "What would you like to work on?"
31
+
32
+ ## Workflow
33
+
34
+ Follow `atris plan → atris do → atris review`. Always:
35
+ 1. **SCOUT:** Read relevant files first. Report findings.
36
+ 2. **PLAN:** ASCII visualization, get approval, NO code yet.
37
+ 3. **DO:** Execute step-by-step. Update journal.
38
+ 4. **REVIEW:** Test, validate, clean up active task state. Completed rows are history.
39
+
40
+ ## Persona
41
+
42
+ See `atris/PERSONA.md` for voice, tone, and style.
43
+
44
+ ## Domain Knowledge
45
+
46
+ Always read the relevant `atris/wiki/` page before answering domain questions about {{name}}.
@@ -0,0 +1,28 @@
1
+ # {{name}} — Active Tasks
2
+
3
+ > Working task queue. Target state = 0.
4
+ > Daily tasks live in `atris/logs/YYYY/YYYY-MM-DD.md`.
5
+
6
+ ## Endgame
7
+
8
+ **Slug:** first-business-loop
9
+ **Picked:** {{today}}
10
+ **Horizon:** Turn the starter into one real business loop with a measurable concept page, one named human, and one recap that writes structured state.
11
+ **Source:** workspace bootstrap
12
+
13
+ ## Backlog
14
+
15
+ - **B1:** Create the first measurable loop page in `atris/wiki/concepts/` using `first-loop-template.md` [endgame]
16
+ **Verify:** test -n "$(find atris/wiki/concepts -maxdepth 1 -type f -name '*.md' ! -name 'first-loop-template.md' -print -quit)"
17
+ - **B2:** Add the first named human to both `atris/team/` and `atris/wiki/people/` [endgame]
18
+ **Verify:** test -n "$(find atris/team -mindepth 1 -maxdepth 1 -type d ! -name '_template' ! -name 'ops' ! -name 'comms' ! -name 'research' -print -quit)" && test -n "$(find atris/wiki/people -mindepth 1 -maxdepth 1 -type f -name '*.md' -print -quit)"
19
+ - **B3:** Write the first dated recap, then run `atris business record <report-path>` to append structured state entries [endgame]
20
+ **Verify:** test -n "$(find atris/reports -maxdepth 1 -type f -name '*.md' ! -name 'README.md' ! -name 'operating-recap-template.md' -print -quit)" && test -s .atris/state/events.jsonl && test -s .atris/state/episodes.jsonl && test -s .atris/state/scorecards.jsonl
21
+
22
+ ## In Progress
23
+
24
+ (none)
25
+
26
+ ## Completed
27
+
28
+ (clear)
@@ -0,0 +1,61 @@
1
+ # Atris Boot Protocol — {{name}}
2
+
3
+ You are operating in the **{{name}}** Atris workspace.
4
+
5
+ ## ON SESSION START
6
+
7
+ 1. Read `atris/MAP.md` for navigation
8
+ 2. Read `.atris/state/tasks.projection.json` if present; otherwise read `atris/TODO.md`
9
+ 3. Read today's journal at `atris/logs/YYYY/YYYY-MM-DD.md`
10
+ 4. Acknowledge what you have loaded, ask what to work on
11
+
12
+ ## WORKFLOW
13
+
14
+ ```
15
+ PLAN → DO → REVIEW
16
+ ```
17
+
18
+ - **PLAN:** Read context, propose approach as ASCII visualization. Stop. Wait for approval.
19
+ - **DO:** Execute step-by-step. Update artifacts (`atris task`, MAP.md) as reality changes.
20
+ - **REVIEW:** Verify, test, clean up. Finish/review the task. Append lessons to `atris/policies/LESSONS.md`.
21
+
22
+ ## TASK SOURCE OF TRUTH
23
+
24
+ Use `atris task` when available. It stores durable local SQLite task state,
25
+ append-only task events, and refreshes `.atris/state/tasks.projection.json` for
26
+ desktop/web/agent views.
27
+
28
+ `atris/TODO.md` is the readable fallback/projection. It can be rebuilt with
29
+ `atris task render --out atris/TODO.md`; do not rely on manual TODO.md edits for
30
+ ownership. In cloud business workspaces, Supabase `tasks` is the source of truth
31
+ and Swarlo is the live claim/report layer.
32
+
33
+ ## RULES
34
+
35
+ - **MAPFIRST.** Read `atris/MAP.md` before grepping. It's the index.
36
+ - **Plan before code.** No code during planning.
37
+ - **One step at a time.** Verify before continuing.
38
+ - **Finish completed tasks.** Target state: task projection/TODO fallback = 0 active items.
39
+ - **Append lessons, don't rewrite.** History is sacred.
40
+ - **Read atris/wiki/ pages before answering domain questions.** Cite the page in your answer.
41
+
42
+ ## CORE FILES
43
+
44
+ | File | Purpose |
45
+ |------|---------|
46
+ | `atris/atris.md` | This file — boot protocol |
47
+ | `atris/MAP.md` | Navigation index |
48
+ | `.atris/state/tasks.projection.json` | Current task projection |
49
+ | `atris/TODO.md` | Rendered/legacy task fallback |
50
+ | `atris/MEMBER.md` | Agent role + permissions |
51
+ | `atris/persona.md` | Voice, tone, style |
52
+ | `atris/goals.md` | Strategic direction |
53
+ | `atris/memory.md` | Persistent learned context |
54
+ | `atris/instructions.md` | Workflows and processes |
55
+ | `atris/wiki/` | Compiled knowledge base |
56
+ | `atris/context/` | Raw source materials |
57
+ | `atris/skills/` | Custom callable skills |
58
+ | `atris/team/` | Team member profiles |
59
+ | `atris/reports/` | Past artifacts |
60
+ | `atris/policies/LESSONS.md` | Append-only lessons |
61
+ | `atris/logs/YYYY/YYYY-MM-DD.md` | Daily journal |
@@ -0,0 +1,19 @@
1
+ # Context — {{name}}
2
+
3
+ Raw source material for {{name}}.
4
+ `atris/` is the context graph, so structured source material belongs here, not in the workspace root.
5
+
6
+ ## How to use
7
+
8
+ - Drop new sources here as files (`.md`, `.sql`, `.json`, etc.)
9
+ - Run `atris ingest <path>` to compile into the wiki
10
+ - Sources are **immutable** — never edit them after ingest. If a source changes, create a new dated copy.
11
+ - Files outside `atris/` should stay as boot shims, exports, or random scratch output only
12
+
13
+ ## Suggested layout
14
+
15
+ - `company-overview.md` — mission, team, stage
16
+ - `people/` — one file per key stakeholder
17
+ - `sql/` — database queries (if applicable)
18
+ - `briefs/` — meeting notes, deal briefs
19
+ - Anything else relevant
@@ -0,0 +1,36 @@
1
+ # {{name}} — Live Workspace
2
+
3
+ ## Business
4
+
5
+ - ID: `{{business_id}}`
6
+ - Slug: `{{slug}}`
7
+
8
+ ## Product Model
9
+
10
+ - Owner type: `Business`
11
+ - Entity type: `business`
12
+ - Computer type: `business_ops` by default
13
+ - Computer shape: workspace + files + tools + secrets + memory + agents + validation loop
14
+ - Group role: people, chat, membership, approvals, and visibility live in groups, not in the computer memory
15
+
16
+ ## Workspace
17
+
18
+ - ID: `{{workspace_id}}`
19
+
20
+ ## Separation Rule
21
+
22
+ This workspace should know {{name}}, not any other business.
23
+ Do not mix context across workspaces.
24
+
25
+ ## Current Loop
26
+
27
+ - primary workflow: define the first measurable loop here
28
+ - primary operator: add the human approval surface here
29
+ - next artifact: add the first report, note, or recap artifact here
30
+
31
+ ## Structured State
32
+
33
+ - `.atris/state/_sync.json` - workspace sync receipt
34
+ - `.atris/state/events.jsonl` - raw events
35
+ - `.atris/state/episodes.jsonl` - episodes
36
+ - `.atris/state/scorecards.jsonl` - scorecards
@@ -0,0 +1,33 @@
1
+ # {{name}} — Goals
2
+
3
+ Strategic direction. Weeks-to-months scale (TODO.md is days, this is weeks).
4
+
5
+ ## Active Goals
6
+
7
+ ### Define the first measurable loop
8
+ - **Status:** Active
9
+ - **Why:** a business workspace gets useful when one workflow has clear state, action, and reward
10
+ - **Next step:** pick the first operator workflow and the artifact it should produce
11
+ - **Started:** YYYY-MM-DD
12
+
13
+ ### Make the next operator decision faster
14
+ - **Status:** Active
15
+ - **Why:** the first win is decision quality, not folder size
16
+ - **Next step:** compile the shortest brief that supports the next real action
17
+ - **Started:** YYYY-MM-DD
18
+
19
+ <!-- Example:
20
+ ### Increase advertiser retention to 95%
21
+ - **Status:** In progress (current: 87%)
22
+ - **Why:** Retention = revenue predictability
23
+ - **Next step:** Analyze churn patterns in Q1 data
24
+ - **Started:** 2026-04-08
25
+ -->
26
+
27
+ ## Completed Goals
28
+
29
+ *(None yet)*
30
+
31
+ ---
32
+
33
+ *Autonomous mode reads this file every cycle. Goals here drive prioritization.*
@@ -0,0 +1,40 @@
1
+ # {{name}} — Instructions
2
+
3
+ Standard processes and workflows.
4
+
5
+ ## Default Cadence
6
+
7
+ 1. Read MAP.md
8
+ 2. Check today's journal
9
+ 3. Plan → Do → Review
10
+ 4. Update artifacts as you go
11
+ 5. Keep all durable context under `atris/`; anything outside is boot glue or raw output
12
+
13
+ ## Content Generation
14
+
15
+ 1. Understand the goal
16
+ 2. Check `atris/PERSONA.md` and recent journals
17
+ 3. Generate draft
18
+ 4. Refine: cut fluff, strengthen hooks
19
+ 5. Cite sources from `atris/wiki/`
20
+
21
+ ## Reporting
22
+
23
+ 1. Check `atris/wiki/STATUS.md` for recent context
24
+ 2. Synthesize from `atris/context/` sources
25
+ 3. Highlight decisions and next steps
26
+ 4. Save to `atris/reports/YYYY-MM-DD-topic.md`
27
+
28
+ ## Domain Questions
29
+
30
+ When asked anything specific to {{name}}:
31
+ 1. Read the relevant `atris/wiki/` page first
32
+ 2. If the wiki is missing the answer, say so and propose what to ingest from `atris/context/`
33
+ 3. Never answer from generic knowledge alone
34
+
35
+ ---
36
+
37
+ ## First Loop
38
+
39
+ Start with one measurable business loop.
40
+ Define the state, the action, the reward, and the next check window before adding more tooling.
@@ -0,0 +1,31 @@
1
+ # {{name}} — Memory
2
+
3
+ Persistent learned context. Read before significant work.
4
+
5
+ ## Tripwires
6
+
7
+ Things that look obvious but break unexpectedly.
8
+
9
+ *(none yet — add when you discover surprising failures)*
10
+
11
+ ## Preferences
12
+
13
+ Patterns this business prefers.
14
+
15
+ *(none yet — document as you observe them)*
16
+
17
+ ## Dead Ends
18
+
19
+ Approaches tried and abandoned, and why.
20
+
21
+ *(none yet — log failed approaches)*
22
+
23
+ ## Domain Quirks
24
+
25
+ Business-specific facts that aren't obvious from the code.
26
+
27
+ *(none yet)*
28
+
29
+ ---
30
+
31
+ *Update this file after significant discoveries. This is the long-term memory; LESSONS.md is the short-term log.*
@@ -0,0 +1,26 @@
1
+ # {{name}} — Persona
2
+
3
+ Canonical Atris persona entrypoint for this workspace.
4
+ Keep this file aligned with `atris/persona.md`.
5
+
6
+ ## Voice
7
+
8
+ (Customize: e.g., "Direct and confident", "Friendly and approachable", "Analytical and precise")
9
+
10
+ ## Tone
11
+
12
+ (Customize: e.g., "Professional but conversational", "No fluff, no hedging")
13
+
14
+ ## Style
15
+
16
+ - Lead with the answer, then explain
17
+ - Short sentences, active voice
18
+ - Concrete examples over abstractions
19
+ - Cite the source when answering domain questions
20
+
21
+ ## Anti-patterns
22
+
23
+ - No em dashes in outbound copy
24
+ - No "AI" buzzword
25
+ - No over-promising
26
+ - No ALL CAPS
@@ -0,0 +1,5 @@
1
+ # {{name}} — Lessons
2
+
3
+ Append-only log. One lesson per line. Format: `YYYY-MM-DD | category | lesson`
4
+
5
+ ## (no lessons yet)
@@ -0,0 +1,24 @@
1
+ # {{name}} Reward Policy
2
+
3
+ Reward what makes the operator faster and the business loop more correct.
4
+
5
+ ## Local Reward
6
+
7
+ - `+2` workspace boot and `atris verify` stay clean
8
+ - `+2` new context is sourced, concise, and readable by a human first
9
+ - `+3` a recommendation is concrete enough for an operator to approve or reject
10
+ - `+5` the chosen business metric improves in the next check window
11
+ - `-3` stale or unsourced numbers
12
+ - `-4` extra docs with no operator use
13
+ - `-5` a major business leak goes unflagged
14
+
15
+ ## Learning Rule
16
+
17
+ After each meaningful run:
18
+
19
+ 1. log the run in today's journal
20
+ 2. append the raw event to `.atris/state/events.jsonl`
21
+ 3. append the episode to `.atris/state/episodes.jsonl`
22
+ 4. append the run summary to `.atris/state/scorecards.jsonl`
23
+ 5. add one lesson to `atris/policies/LESSONS.md` if the system got sharper
24
+ 6. keep the docs short enough that an operator could skim them
@@ -0,0 +1,17 @@
1
+ # Reports — {{name}}
2
+
3
+ Past artifacts. Reports, analyses, decision documents.
4
+
5
+ ## Naming
6
+
7
+ `YYYY-MM-DD-topic-name.md`
8
+
9
+ Examples:
10
+ - `2026-04-08-q1-revenue-review.md`
11
+ - `2026-04-15-customer-churn-analysis.md`
12
+
13
+ ## Linkage
14
+
15
+ - Reports referenced by name from journals (`atris/logs/`)
16
+ - Canonical findings get promoted to `atris/wiki/briefs/`
17
+ - Use `atris business record <report-path>` to turn a finished recap into structured state
@@ -0,0 +1,44 @@
1
+ # {{name}} Operating Recap Template
2
+
3
+ Use this after any real run that should teach the workspace something.
4
+
5
+ ## Trigger
6
+
7
+ - what happened:
8
+ - when:
9
+ - who initiated it:
10
+
11
+ ## Sources
12
+
13
+ - source 1:
14
+ - source 2:
15
+
16
+ ## What Changed
17
+
18
+ - change:
19
+ - change:
20
+
21
+ ## Decisions
22
+
23
+ - decision:
24
+ owner:
25
+ due:
26
+
27
+ ## Open Questions
28
+
29
+ - question:
30
+ owner:
31
+
32
+ ## Reward Signals
33
+
34
+ - what improved:
35
+ - what stayed unclear:
36
+ - what should be measured next:
37
+
38
+ ## Structured Append
39
+
40
+ After the recap is written:
41
+
42
+ 1. run `atris business record <this-report-path> --outcome mixed --metric "operator speed"` from the workspace root
43
+ 2. confirm `.atris/state/events.jsonl`, `.atris/state/episodes.jsonl`, and `.atris/state/scorecards.jsonl` all changed
44
+ 3. add one lesson to `atris/policies/LESSONS.md` if the loop got sharper
@@ -0,0 +1,21 @@
1
+ # Skills — {{name}}
2
+
3
+ Custom callable skills specific to {{name}}.
4
+
5
+ ## How skills work
6
+
7
+ Each skill is a folder with a `SKILL.md` file. The agent can invoke the skill by name.
8
+
9
+ ```
10
+ atris/skills/
11
+ ├── my-skill/
12
+ │ └── SKILL.md
13
+ ├── another-skill/
14
+ │ └── SKILL.md
15
+ ```
16
+
17
+ ## Framework skills (NOT here)
18
+
19
+ Framework skills (autopilot, wiki, loop, meta, endgame, improve, upkeep) are NOT stored in business workspaces. They live at the system level on the EC2 instance and are resolved by the agent runtime.
20
+
21
+ This directory is for **business-custom skills only**.