atris 3.1.0 → 3.5.0
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/GETTING_STARTED.md +65 -131
- package/README.md +29 -4
- package/atris/GETTING_STARTED.md +65 -131
- package/atris/PERSONA.md +5 -1
- package/atris/atris.md +122 -153
- package/atris/skills/aeo/SKILL.md +117 -0
- package/atris/skills/atris/SKILL.md +49 -25
- package/atris/skills/create-member/SKILL.md +29 -9
- package/atris/skills/endgame/SKILL.md +9 -0
- package/atris/skills/improve/SKILL.md +2 -2
- package/atris/skills/research-search/SKILL.md +167 -0
- package/atris/skills/research-search/arxiv_search.py +157 -0
- package/atris/skills/research-search/program.md +48 -0
- package/atris/skills/research-search/results.tsv +6 -0
- package/atris/skills/research-search/scholar_search.py +154 -0
- package/atris/skills/tidy/SKILL.md +36 -21
- package/atris/team/_template/MEMBER.md +2 -0
- package/atris/team/validator/MEMBER.md +35 -1
- package/atris.md +118 -178
- package/bin/atris.js +37 -6
- package/cli/__pycache__/atris_code.cpython-314.pyc +0 -0
- package/cli/__pycache__/runtime_guard.cpython-312.pyc +0 -0
- package/cli/__pycache__/runtime_guard.cpython-314.pyc +0 -0
- package/cli/atris_code.py +889 -0
- package/cli/runtime_guard.py +693 -0
- package/commands/align.js +15 -0
- package/commands/app.js +316 -0
- package/commands/autopilot.js +948 -42
- package/commands/business.js +691 -11
- package/commands/computer.js +1979 -43
- package/commands/context-sync.js +5 -0
- package/commands/experiments.js +1 -1
- package/commands/lifecycle.js +12 -0
- package/commands/plugin.js +24 -0
- package/commands/pull.js +40 -1
- package/commands/push.js +44 -0
- package/commands/release.js +183 -0
- package/commands/research.js +52 -0
- package/commands/serve.js +1 -0
- package/commands/sync.js +372 -87
- package/commands/verify.js +53 -4
- package/commands/wiki.js +71 -26
- package/lib/file-ops.js +13 -1
- package/lib/journal.js +23 -0
- package/lib/reward-config.js +24 -0
- package/lib/scorecard.js +58 -6
- package/lib/sync-telemetry.js +59 -0
- package/lib/todo.js +6 -0
- package/lib/wiki.js +235 -60
- package/package.json +4 -2
- package/utils/api.js +19 -0
- package/utils/auth.js +25 -1
- package/utils/config.js +24 -0
- package/utils/update-check.js +16 -0
|
@@ -1,76 +1,89 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: tidy
|
|
3
|
-
description: "Workspace maintenance and knowledge hygiene. Finds stale docs, broken refs, abandoned tasks, and fixes them. Use when things feel messy or you want the system to clean itself up. Triggers on: tidy, clean up, maintenance, lint, health check, freshen up."
|
|
4
|
-
version:
|
|
3
|
+
description: "Workspace maintenance and knowledge hygiene. Finds stale docs, broken refs, abandoned tasks, ghost names, duplicate scorecards, and fixes them. Use when things feel messy or you want the system to clean itself up. Triggers on: tidy, clean up, maintenance, lint, health check, freshen up, prune."
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
tags:
|
|
6
6
|
- maintenance
|
|
7
7
|
- knowledge
|
|
8
8
|
- hygiene
|
|
9
|
-
-
|
|
9
|
+
- prune
|
|
10
10
|
---
|
|
11
11
|
|
|
12
12
|
# /tidy
|
|
13
13
|
|
|
14
|
-
Finds what's rotting in your workspace and fixes it.
|
|
14
|
+
Finds what's rotting in your workspace and fixes it. Not just broken refs — ghost names, stale lessons, duplicate data, language drift, dead code.
|
|
15
15
|
|
|
16
16
|
## When to use
|
|
17
17
|
|
|
18
18
|
- "Things feel messy"
|
|
19
19
|
- "Clean this up"
|
|
20
|
+
- "Prune"
|
|
20
21
|
- After a big refactor when docs have drifted
|
|
21
22
|
- Periodically, to keep the knowledge base honest
|
|
22
|
-
-
|
|
23
|
+
- Before a release, to make sure everything is true
|
|
23
24
|
|
|
24
25
|
## On invoke
|
|
25
26
|
|
|
26
27
|
1. Run `atris clean --dry-run` silently. Collect results.
|
|
27
|
-
2. Read atris/MAP.md, atris/TODO.md, and today's journal
|
|
28
|
+
2. Read atris/MAP.md, atris/TODO.md, atris/lessons.md, and today's journal.
|
|
28
29
|
3. Scan for these problems (in priority order):
|
|
29
30
|
|
|
30
31
|
### What to look for
|
|
31
32
|
|
|
33
|
+
**Ghost names** — terms that don't match the current identity. Check package.json `name` and `description`, README title, and PERSONA. Grep the codebase for old names (e.g., "atrisDev" when the product is "atris"). Flag any user-facing string that uses a dead name.
|
|
34
|
+
|
|
32
35
|
**Stale wiki pages** — pages with `last_compiled` frontmatter where the source files have been modified since. The page content may be wrong.
|
|
33
36
|
|
|
34
37
|
**Broken MAP.md references** — file:line refs that point to code that moved or was deleted. The auto-healer fixes what it can; report what it can't.
|
|
35
38
|
|
|
39
|
+
**Stale lessons** — lessons about bugs that have since been fixed. Grep the named files for the bug pattern. If it's gone, tag the lesson `[resolved]`.
|
|
40
|
+
|
|
41
|
+
**Duplicate scorecards** — same slug appearing twice in scorecards.md. Keep the one with more data, delete the other.
|
|
42
|
+
|
|
36
43
|
**Abandoned tasks** — in-progress tasks claimed more than 3 days ago. Either finish them, re-scope them, or delete them.
|
|
37
44
|
|
|
38
45
|
**Orphan docs** — markdown pages under atris/ that nothing links to. They're invisible and probably stale.
|
|
39
46
|
|
|
40
|
-
**
|
|
47
|
+
**Dead exports** — functions in module.exports that nothing imports. They add surface area for no reason.
|
|
48
|
+
|
|
49
|
+
**Stale TODO items** — tasks older than 14 days that haven't moved. Run `isStillTrue` on each. Tag stale ones `[unverified]`.
|
|
41
50
|
|
|
42
51
|
**Empty sections** — TODO.md sections with placeholder text like "(empty)" or "(clean)".
|
|
43
52
|
|
|
44
53
|
4. Present findings as a numbered list, sorted by impact. For each:
|
|
45
|
-
- What's wrong
|
|
46
|
-
- Why it matters
|
|
47
|
-
- What you'd do to fix it
|
|
54
|
+
- What's wrong (specific file, line, or term)
|
|
55
|
+
- Why it matters (one sentence)
|
|
56
|
+
- What you'd do to fix it (one sentence)
|
|
48
57
|
|
|
49
58
|
5. Ask: "want me to fix these? all / pick numbers / skip"
|
|
50
59
|
|
|
51
60
|
6. Fix what they approve. For each fix:
|
|
52
61
|
- Make the change
|
|
53
62
|
- Update last_compiled if touching wiki pages
|
|
63
|
+
- Run tests after each fix
|
|
54
64
|
- Commit with a clear message
|
|
55
65
|
|
|
56
|
-
7. After all fixes, run `atris clean` one more time to verify.
|
|
66
|
+
7. After all fixes, run `atris clean` one more time to verify 0 issues.
|
|
57
67
|
|
|
58
68
|
## Example
|
|
59
69
|
|
|
60
70
|
```
|
|
61
|
-
|
|
71
|
+
found 5 things to tidy:
|
|
72
|
+
|
|
73
|
+
1. "atrisDev" appears 3 times in user-facing output (bin/atris.js:202, :1545).
|
|
74
|
+
product name is "atris" now. fix: replace with current name.
|
|
62
75
|
|
|
63
|
-
|
|
64
|
-
|
|
76
|
+
2. lessons.md has 2 lessons about bugs that are already fixed.
|
|
77
|
+
they'll mislead the next horizon pick. fix: tag [resolved].
|
|
65
78
|
|
|
66
|
-
|
|
67
|
-
|
|
79
|
+
3. scorecards.md has a duplicate entry for harden-rl-loop.
|
|
80
|
+
policy will double-count that endgame. fix: keep the better one.
|
|
68
81
|
|
|
69
|
-
|
|
70
|
-
|
|
82
|
+
4. MAP.md has 4 refs that can't be auto-healed.
|
|
83
|
+
navigation is wrong for those symbols. fix: update manually.
|
|
71
84
|
|
|
72
|
-
|
|
73
|
-
|
|
85
|
+
5. TODO.md has a task from 12 days ago that nobody touched.
|
|
86
|
+
it's noise. fix: tag [unverified] or delete.
|
|
74
87
|
|
|
75
88
|
want me to fix these? all / pick numbers / skip
|
|
76
89
|
```
|
|
@@ -80,5 +93,7 @@ want me to fix these? all / pick numbers / skip
|
|
|
80
93
|
- Never delete user content without asking.
|
|
81
94
|
- Always show what you found before fixing.
|
|
82
95
|
- Commit fixes in small, clear commits (one per category).
|
|
96
|
+
- Run tests after every fix. If tests break, revert and report.
|
|
83
97
|
- Update last_compiled frontmatter when recompiling wiki pages.
|
|
84
|
-
- Run atris clean at the end to verify
|
|
98
|
+
- Run atris clean at the end to verify 0 issues remain.
|
|
99
|
+
- Ghost names are highest priority. The workspace must speak one language.
|
|
@@ -47,7 +47,41 @@ tools: []
|
|
|
47
47
|
|
|
48
48
|
## Your Job
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
You gate the work at **two** points: before it runs (plan-review) and after it runs (review).
|
|
51
|
+
|
|
52
|
+
### Plan-review — before executor starts
|
|
53
|
+
|
|
54
|
+
Read the navigator's plan fresh, with no memory of the planning context. Check:
|
|
55
|
+
|
|
56
|
+
1. **Verify is falsifiable** — points at a rubric or test that can fail at t=0, not `true`, `echo ok`, or similar. Prefer `atris verify <slug> --section <name>`.
|
|
57
|
+
2. **Files declared** — explicit paths, not empty, not vague ("various files").
|
|
58
|
+
3. **Rollback named** — a commit, checkpoint, or `git revert` is enough.
|
|
59
|
+
4. **Plan matches declared fields** — the plan's ASCII/narrative aligns with Files/Exit/Verify.
|
|
60
|
+
5. **No contradictions in lessons.md** — recent failures don't warn against this approach.
|
|
61
|
+
|
|
62
|
+
Output EXACTLY one of these two formats as the last thing in your response:
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
SIGNOFF: <one sentence on why the plan is safe>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
or
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
REJECT: <one sentence on what is wrong>
|
|
72
|
+
FIX: <one sentence on what must change>
|
|
73
|
+
PROPOSED:
|
|
74
|
+
Files: <concrete path list>
|
|
75
|
+
Exit: <sharp, observable done condition>
|
|
76
|
+
Verify: <falsifiable shell command, prefer atris verify <slug> --section preflight>
|
|
77
|
+
Rollback: <git revert <sha> or concrete checkpoint>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Be a drafting partner, not just a critic. When you REJECT, write the PROPOSED block as a concrete draft the human can accept as-is, edit, or reject. Skip any PROPOSED field that is already correct in the original task. Omit the whole PROPOSED block only if the rejection is about scope or intent rather than a field that can be drafted.
|
|
81
|
+
|
|
82
|
+
No preamble, no explanation before the verdict. The autopilot parses this literally.
|
|
83
|
+
|
|
84
|
+
### Review — after executor finishes
|
|
51
85
|
|
|
52
86
|
1. **Ultrathink** — Think 3x: Does this match build.md? Edge cases? Breaking changes?
|
|
53
87
|
2. **Run tests** — All tests must pass
|
package/atris.md
CHANGED
|
@@ -1,250 +1,190 @@
|
|
|
1
|
-
# atris
|
|
1
|
+
# atris
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Atris exists because agents make work fast but unsafe without memory, ownership,
|
|
4
|
+
and rollback. This file is the workspace protocol: read reality from disk, choose
|
|
5
|
+
the right scope, claim work before changing it, verify before calling it done, and
|
|
6
|
+
leave a trail another agent or human can trust.
|
|
4
7
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
## ACTIVATE
|
|
8
|
+
## activate
|
|
8
9
|
|
|
9
|
-
|
|
10
|
+
On session start, before responding:
|
|
10
11
|
|
|
11
|
-
1.
|
|
12
|
-
- `atris/logs/YYYY/YYYY-MM-DD.md`
|
|
13
|
-
- `atris/MAP.md`
|
|
14
|
-
- `atris/
|
|
12
|
+
1. Read:
|
|
13
|
+
- `atris/logs/YYYY/YYYY-MM-DD.md` — today's journal
|
|
14
|
+
- `atris/MAP.md` — navigation
|
|
15
|
+
- `atris/wiki/STATUS.md` if present — current memory snapshot
|
|
15
16
|
|
|
16
|
-
2.
|
|
17
|
+
2. Show this box, then ask what to work on if no task was already given.
|
|
17
18
|
|
|
18
19
|
```
|
|
19
20
|
┌─────────────────────────────────────────────────────────────┐
|
|
20
|
-
│
|
|
21
|
+
│ atris [stage] │
|
|
21
22
|
├─────────────────────────────────────────────────────────────┤
|
|
22
|
-
│
|
|
23
|
-
│ • [2-3 items from Completed
|
|
23
|
+
│ recent │
|
|
24
|
+
│ • [2-3 items from Completed] │
|
|
24
25
|
├─────────────────────────────────────────────────────────────┤
|
|
25
|
-
│
|
|
26
|
-
│ ► [from In Progress
|
|
26
|
+
│ now │
|
|
27
|
+
│ ► [from In Progress] ····················· [in progress] │
|
|
27
28
|
│ [from Backlog] ····························── [next] │
|
|
28
29
|
├─────────────────────────────────────────────────────────────┤
|
|
29
|
-
│
|
|
30
|
-
│ • [from Inbox
|
|
30
|
+
│ inbox ([count]) │
|
|
31
|
+
│ • [from Inbox] │
|
|
31
32
|
└─────────────────────────────────────────────────────────────┘
|
|
32
|
-
|
|
33
|
-
Stage: PLAN → do → review (capitalize current stage)
|
|
34
33
|
```
|
|
35
34
|
|
|
36
|
-
|
|
35
|
+
If a task was already given, show the box and proceed with that task.
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
## operating rules
|
|
39
38
|
|
|
40
|
-
|
|
39
|
+
You can move fast. You do not get to move blindly.
|
|
41
40
|
|
|
42
|
-
|
|
41
|
+
Before changing anything, state:
|
|
42
|
+
- the goal
|
|
43
|
+
- the files or systems in scope
|
|
44
|
+
- what "done" means
|
|
45
|
+
- how it will be checked
|
|
46
|
+
- what happens if it fails
|
|
43
47
|
|
|
44
|
-
|
|
48
|
+
Then:
|
|
49
|
+
- do not execute if another agent owns the same task or files
|
|
50
|
+
- do not call something complete without verification
|
|
51
|
+
- do not take irreversible actions without approval from the human
|
|
52
|
+
- do not hide state outside markdown, logs, diffs, or the journal
|
|
53
|
+
- do not edit the rules that judge you — the reward config, the authority policy, or this file
|
|
45
54
|
|
|
46
|
-
|
|
55
|
+
If you cannot honor these rules, stop, write why in the journal, and ask the human before continuing.
|
|
47
56
|
|
|
48
|
-
|
|
57
|
+
Labels used below:
|
|
58
|
+
- `guarded` — checked by code or a pre-commit hook; bypassing is a bug
|
|
59
|
+
- `expected` — convention; honor it or stop
|
|
49
60
|
|
|
50
|
-
|
|
51
|
-
- If Backlog has task → move to In Progress, stage = PLAN
|
|
52
|
-
- Else if Inbox has items → ask "Convert [item] to task?"
|
|
53
|
-
- Else → go to BRAINSTORM
|
|
61
|
+
## task shape
|
|
54
62
|
|
|
55
|
-
|
|
56
|
-
- **PLAN** → Show ASCII plan, wait for approval → next stage = DO
|
|
57
|
-
- **DO** → Execute the work → next stage = REVIEW
|
|
58
|
-
- **REVIEW** → Run validator checks (test, verify, quality check)
|
|
59
|
-
- If passes → move to Completed, show DONE
|
|
60
|
-
- If fails → show issues, stay in DO
|
|
61
|
-
|
|
62
|
-
3. Output this EXACT box:
|
|
63
|
+
Every task in `TODO.md`:
|
|
63
64
|
|
|
64
65
|
```
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
66
|
+
- **T#:** <title> [tier] [kind]
|
|
67
|
+
**Owner:** <slug>
|
|
68
|
+
**Files:** <paths touched>
|
|
69
|
+
**Exit:** <observable done condition>
|
|
70
|
+
**Verify:** <shell command, exits 0 on success>
|
|
71
|
+
**After:** <T# deps or none>
|
|
72
|
+
**Rollback:** <commit/checkpoint or "none (gray)">
|
|
70
73
|
```
|
|
71
74
|
|
|
72
|
-
|
|
75
|
+
| Field | Meaning | Enforcement |
|
|
76
|
+
|---|---|---|
|
|
77
|
+
| tier | `agent` proceeds, `gray` queues for approval, `human` never attempted by you | guarded |
|
|
78
|
+
| kind | `explore` for ambiguous, `execute` for precise | expected |
|
|
79
|
+
| Files | declared upfront; becomes the file lock | guarded (Swarlo claim) |
|
|
80
|
+
| Verify | must exit 0 for the task to be complete | guarded (tick halts if missing) |
|
|
81
|
+
| Rollback | how to undo; `git revert <sha>` for most tasks | expected |
|
|
73
82
|
|
|
74
|
-
|
|
83
|
+
Deeper project work uses `atris/features/<slug>/` with `idea.md` (plan), `build.md` (steps), `validate.md` (checks). The task points at the triptych; the triptych holds the long form.
|
|
75
84
|
|
|
76
|
-
|
|
77
|
-
┌─────────────────────────────────────────────────────────────┐
|
|
78
|
-
│ DONE: [task name] [✓ REVIEWED] │
|
|
79
|
-
│ │
|
|
80
|
-
│ [1-2 sentences: what was done + review result] │
|
|
81
|
-
└─────────────────────────────────────────────────────────────┘
|
|
82
|
-
```
|
|
85
|
+
Verify cannot be a raw shell shortcut; it must call a rubric or test that can fail before the work is done. Prefer `atris verify <slug> --section <name>`, which extracts the fenced bash under `## <name>` in `validate.md` and runs it. The rubric is read-only, deterministic, and references only the working tree.
|
|
83
86
|
|
|
84
|
-
|
|
87
|
+
## routing
|
|
85
88
|
|
|
86
|
-
|
|
89
|
+
Before picking up work, decide scope:
|
|
90
|
+
- single project → route to that project's `atris/team/` and `TODO.md`
|
|
91
|
+
- crosses projects → route to `atris/team/cross-project-architect/` and plan the dependency order first
|
|
87
92
|
|
|
88
|
-
|
|
93
|
+
The human is the constructor. You multiply. Handoff fidelity lives in the files, not in context.
|
|
89
94
|
|
|
90
|
-
|
|
91
|
-
scout → plan → do → review
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
- **SCOUT** — Read relevant files first. Understand before you act. Report what you found.
|
|
95
|
-
- **PLAN** — ASCII visualization, get approval, NO code yet
|
|
96
|
-
- **DO** — Execute step-by-step, update journal
|
|
97
|
-
- **REVIEW** — Test, validate, clean up, delete completed tasks
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## TASK RULES
|
|
102
|
-
|
|
103
|
-
Every task must follow these rules. No exceptions.
|
|
95
|
+
## next
|
|
104
96
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
**Clear exit condition.** Every task states what "done" looks like. Not "improve auth" — instead: "Add session check to upload handler. Done when: unauthenticated requests return 401 and test passes."
|
|
108
|
-
|
|
109
|
-
**Tag every task:**
|
|
110
|
-
- `[explore]` — Ambiguous. Needs reading, research, judgment. Output is understanding.
|
|
111
|
-
- `[execute]` — Precise. Route is clear. Just do it. Output is code or artifact.
|
|
112
|
-
|
|
113
|
-
**Explore before execute.** When starting a new area of work, the first tasks should be `[explore]`. Read the files. Map the space. Report what you found. Then plan `[execute]` tasks based on what you learned.
|
|
114
|
-
|
|
115
|
-
**Sequence matters.** Order tasks so each one builds context for the next. Early tasks should teach you about the problem. Later tasks use that knowledge.
|
|
116
|
-
|
|
117
|
-
---
|
|
97
|
+
Move one task at a time through plan → do → review.
|
|
118
98
|
|
|
119
|
-
|
|
99
|
+
- **plan** — read relevant files, produce an ASCII visualization, wait for approval. No code.
|
|
100
|
+
- **plan-review** — the validator reads the plan fresh and signs off with `SIGNOFF:` or halts with `REJECT:` + `FIX:` + an optional `PROPOSED:` block (concrete draft of Files / Exit / Verify / Rollback to replace). Plan does not move to do without signoff. The validator is a drafting partner, not just a critic — on REJECT it proposes the sharper rubric rather than leaving the human to guess. Codex is optional escalation when `ATRIS_USE_CODEX=1` or the task carries `[codex]`.
|
|
101
|
+
- **do** — claim the task (move it to In Progress with `Claimed by:` and a timestamp), execute step by step, update `MAP.md` and the journal as reality changes.
|
|
102
|
+
- **review** — run the task's `Verify:` command, read the diff, run the relevant tests, append a one-line lesson to `lessons.md`, move the task to Completed.
|
|
120
103
|
|
|
121
|
-
|
|
122
|
-
|---------|-------|-----------|
|
|
123
|
-
| `atris plan` | navigator | Plans only, NO code |
|
|
124
|
-
| `atris do` | executor | Builds only, NO unplanned work |
|
|
125
|
-
| `atris review` | validator | Checks only, NO new features |
|
|
126
|
-
| `atris brainstorm` | brainstormer | Ideas only, NO code |
|
|
127
|
-
|
|
128
|
-
`atris next` = auto-selects agent based on journal state
|
|
129
|
-
|
|
130
|
-
Specs loaded at activate from `team/*.md`
|
|
131
|
-
|
|
132
|
-
---
|
|
133
|
-
|
|
134
|
-
## BRAINSTORM
|
|
135
|
-
|
|
136
|
-
**When queue empty (no backlog, no inbox):**
|
|
104
|
+
State the next stage:
|
|
137
105
|
|
|
138
106
|
```
|
|
139
107
|
┌─────────────────────────────────────────────────────────────┐
|
|
140
|
-
│
|
|
141
|
-
|
|
142
|
-
│ [1 sentence: what this project is] │
|
|
143
|
-
│ │
|
|
144
|
-
│ Ideas: │
|
|
145
|
-
│ 1. [suggestion based on MAP.md] │
|
|
146
|
-
│ 2. [suggestion based on journal patterns] │
|
|
147
|
-
│ 3. [suggestion based on product gaps] │
|
|
148
|
-
├─────────────────────────────────────────────────────────────┤
|
|
149
|
-
│ Pick one, remix, or "something else" │
|
|
108
|
+
│ next: [task] [plan|do|review]
|
|
109
|
+
│ [1-2 sentences on this stage] │
|
|
150
110
|
└─────────────────────────────────────────────────────────────┘
|
|
151
111
|
```
|
|
152
112
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
---
|
|
113
|
+
If the queue is empty, suggest three ideas from `MAP.md`, the journal, or product gaps. No extra reads. Three max.
|
|
156
114
|
|
|
157
|
-
##
|
|
115
|
+
## sweep
|
|
158
116
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
| `team/` | Agent behaviors |
|
|
166
|
-
| `atrisDev.md` | Full spec (reference) |
|
|
117
|
+
Periodically, and before closing an endgame, clean:
|
|
118
|
+
- stale tasks (claimed >3 days, never finished)
|
|
119
|
+
- broken `MAP.md` refs (auto-heal where possible, flag the rest)
|
|
120
|
+
- stale wiki pages (source newer than `last_compiled`)
|
|
121
|
+
- orphan pages (unlinked from anywhere)
|
|
122
|
+
- empty placeholder sections
|
|
167
123
|
|
|
168
|
-
|
|
124
|
+
`atris clean` runs this. `atris clean --dry-run` previews.
|
|
169
125
|
|
|
170
|
-
##
|
|
126
|
+
## journal
|
|
171
127
|
|
|
172
128
|
```
|
|
173
|
-
## Completed
|
|
174
|
-
- **C1:** Description [
|
|
129
|
+
## Completed
|
|
130
|
+
- **C1:** Description [reviewed]
|
|
175
131
|
|
|
176
|
-
## In Progress
|
|
132
|
+
## In Progress
|
|
177
133
|
- **T1:** Description
|
|
178
|
-
**Stage:**
|
|
179
|
-
**Claimed by:**
|
|
134
|
+
**Stage:** plan | do | review
|
|
135
|
+
**Claimed by:** <agent> at <ISO timestamp>
|
|
180
136
|
|
|
181
137
|
## Backlog
|
|
182
138
|
- **T2:** Description
|
|
183
139
|
|
|
184
140
|
## Inbox
|
|
185
141
|
- **I1:** Description
|
|
186
|
-
```
|
|
187
142
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
Context window = cache. Disk = truth. Route discoveries as they happen.
|
|
193
|
-
|
|
194
|
-
| You discover... | Write to... | Format |
|
|
195
|
-
|---------------------|----------------------|----------------------|
|
|
196
|
-
| Code location | MAP.md | file:line reference |
|
|
197
|
-
| New task | TODO.md | Task + exit condition |
|
|
198
|
-
| Decision / tradeoff | Journal → Notes | Timestamped line |
|
|
199
|
-
| Something learned | lessons.md | One-line lesson |
|
|
200
|
-
| Work finished | Journal → Completed | C#: description |
|
|
201
|
-
| Source changed | Re-check referencing pages | Frontmatter: last_compiled |
|
|
202
|
-
|
|
203
|
-
Don't batch. Don't wait for session end. Nothing important should live only in-context.
|
|
204
|
-
|
|
205
|
-
---
|
|
143
|
+
## Notes
|
|
144
|
+
[timestamped lines — one per discovery, decision, or tick]
|
|
145
|
+
```
|
|
206
146
|
|
|
207
|
-
|
|
147
|
+
Context is a cache. Disk is truth. Route discoveries as they happen:
|
|
208
148
|
|
|
209
|
-
|
|
149
|
+
| You discover... | Write to... |
|
|
150
|
+
|---|---|
|
|
151
|
+
| a code location | `MAP.md` (file:line) |
|
|
152
|
+
| a new task | `TODO.md` |
|
|
153
|
+
| a decision or tradeoff | journal `## Notes` |
|
|
154
|
+
| something learned | `lessons.md` (one line) |
|
|
155
|
+
| work finished | journal `## Completed` (C#) |
|
|
156
|
+
| a source changed | re-check pages that reference it |
|
|
210
157
|
|
|
211
|
-
|
|
158
|
+
Do not batch. Nothing important should live only in memory.
|
|
212
159
|
|
|
213
|
-
|
|
214
|
-
---
|
|
215
|
-
last_compiled: YYYY-MM-DD
|
|
216
|
-
sources:
|
|
217
|
-
- path/to/source1
|
|
218
|
-
- path/to/source2
|
|
219
|
-
---
|
|
220
|
-
```
|
|
160
|
+
## failure smells
|
|
221
161
|
|
|
222
|
-
|
|
162
|
+
If you notice these, stop and flag — do not continue:
|
|
163
|
+
- **loop** — the same suggestion fires tick after tick, nothing changes on disk
|
|
164
|
+
- **drift** — `MAP.md` file:line refs no longer match the code
|
|
165
|
+
- **stale task** — a backlog task references a file or symbol that no longer exists
|
|
166
|
+
- **hidden side effect** — an action changed external state (email sent, money moved, deploy) without a queued approval
|
|
167
|
+
- **unverifiable completion** — a task marked complete without a `Verify:` command that actually ran
|
|
223
168
|
|
|
224
|
-
|
|
169
|
+
Each has real examples in `lessons.md`. Before nontrivial execution, read the relevant recent lessons.
|
|
225
170
|
|
|
226
|
-
|
|
171
|
+
## upkeep
|
|
227
172
|
|
|
228
|
-
|
|
173
|
+
Pages that summarize or reference other files declare their sources in YAML frontmatter:
|
|
229
174
|
|
|
230
|
-
|
|
231
|
-
-
|
|
232
|
-
|
|
233
|
-
-
|
|
234
|
-
-
|
|
175
|
+
---
|
|
176
|
+
last_compiled: YYYY-MM-DD
|
|
177
|
+
sources:
|
|
178
|
+
- path/to/source1
|
|
179
|
+
- path/to/source2
|
|
180
|
+
---
|
|
235
181
|
|
|
236
|
-
|
|
182
|
+
If any source was modified after `last_compiled`, the page is stale. Re-read the sources, update the page, bump `last_compiled`.
|
|
237
183
|
|
|
238
|
-
|
|
184
|
+
Compounding: when you answer a question that required synthesis across pages, file the answer back — as a new page or into an existing one. Explorations accumulate.
|
|
239
185
|
|
|
240
|
-
|
|
241
|
-
- ASCII visualization before any plan
|
|
242
|
-
- Check MAP.md before touching code
|
|
243
|
-
- Update journal after completing work
|
|
244
|
-
- Delete tasks when done (target: 0)
|
|
245
|
-
- Persist as you go (see PERSISTENCE)
|
|
246
|
-
- After any file change, flag wiki pages that reference it as stale
|
|
186
|
+
Linting during review catches stale pages, orphans, contradictions, and concepts mentioned but missing their own page.
|
|
247
187
|
|
|
248
188
|
---
|
|
249
189
|
|
|
250
|
-
*
|
|
190
|
+
*Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them. Full spec: `atrisDev.md`.*
|