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.
- package/commands/computer.js +1 -1
- package/lib/runtime-bootstrap.js +17 -5
- package/package.json +2 -1
- package/templates/business-starter/CLAUDE.md +62 -0
- package/templates/business-starter/MAP.md +80 -0
- package/templates/business-starter/MEMBER.md +46 -0
- package/templates/business-starter/TODO.md +28 -0
- package/templates/business-starter/atris.md +61 -0
- package/templates/business-starter/context/README.md +19 -0
- package/templates/business-starter/context/live-workspace.md +36 -0
- package/templates/business-starter/goals.md +33 -0
- package/templates/business-starter/instructions.md +40 -0
- package/templates/business-starter/memory.md +31 -0
- package/templates/business-starter/persona.md +26 -0
- package/templates/business-starter/policies/LESSONS.md +5 -0
- package/templates/business-starter/policies/REWARD.md +24 -0
- package/templates/business-starter/reports/README.md +17 -0
- package/templates/business-starter/reports/operating-recap-template.md +44 -0
- package/templates/business-starter/skills/README.md +21 -0
- package/templates/business-starter/team/README.md +17 -0
- package/templates/business-starter/team/_template/MEMBER.md +32 -0
- package/templates/business-starter/team/_template/SOUL.md +40 -0
- package/templates/business-starter/team/comms/MEMBER.md +34 -0
- package/templates/business-starter/team/comms/SOUL.md +32 -0
- package/templates/business-starter/team/operator/MEMBER.md +34 -0
- package/templates/business-starter/team/ops/MEMBER.md +34 -0
- package/templates/business-starter/team/ops/SOUL.md +32 -0
- package/templates/business-starter/team/research/MEMBER.md +34 -0
- package/templates/business-starter/team/research/SOUL.md +32 -0
- package/templates/business-starter/team/validator/MEMBER.md +34 -0
- package/templates/business-starter/wiki/STATUS.md +7 -0
- package/templates/business-starter/wiki/concepts/first-loop-template.md +34 -0
- package/templates/business-starter/wiki/index.md +30 -0
- package/templates/business-starter/wiki/log.md +11 -0
- package/templates/business-starter/wiki/wiki.md +26 -0
- package/templates/research-canonical/CLAUDE.md +70 -0
- package/templates/research-canonical/MAP.md +68 -0
- package/templates/research-canonical/MEMBER.md +46 -0
- package/templates/research-canonical/TODO.md +28 -0
- package/templates/research-canonical/atris.md +62 -0
- package/templates/research-canonical/context/README.md +21 -0
- package/templates/research-canonical/context/live-workspace.md +24 -0
- package/templates/research-canonical/goals.md +23 -0
- package/templates/research-canonical/instructions.md +40 -0
- package/templates/research-canonical/memory.md +31 -0
- package/templates/research-canonical/persona.md +26 -0
- package/templates/research-canonical/policies/LESSONS.md +5 -0
- package/templates/research-canonical/policies/REWARD.md +21 -0
- package/templates/research-canonical/reports/README.md +17 -0
- package/templates/research-canonical/skills/README.md +21 -0
- package/templates/research-canonical/team/README.md +11 -0
- package/templates/research-canonical/team/eval/MEMBER.md +16 -0
- package/templates/research-canonical/team/eval/SOUL.md +32 -0
- package/templates/research-canonical/team/experiment/MEMBER.md +16 -0
- package/templates/research-canonical/team/experiment/SOUL.md +32 -0
- package/templates/research-canonical/team/hypothesis/MEMBER.md +16 -0
- package/templates/research-canonical/team/hypothesis/SOUL.md +32 -0
- package/templates/research-canonical/team/literature/MEMBER.md +16 -0
- package/templates/research-canonical/team/literature/SOUL.md +32 -0
- package/templates/research-canonical/wiki/STATUS.md +7 -0
- package/templates/research-canonical/wiki/briefs/research-program.md +19 -0
- package/templates/research-canonical/wiki/concepts/research-loop.md +14 -0
- package/templates/research-canonical/wiki/index.md +25 -0
- package/templates/research-canonical/wiki/log.md +10 -0
- package/templates/research-canonical/wiki/wiki.md +26 -0
package/commands/computer.js
CHANGED
|
@@ -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 -
|
|
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
|
|
package/lib/runtime-bootstrap.js
CHANGED
|
@@ -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
|
-
'
|
|
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
|
-
'
|
|
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 -
|
|
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 -
|
|
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
|
|
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.
|
|
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,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**.
|