atris 3.70.0 → 3.71.1

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 (79) hide show
  1. package/README.md +18 -0
  2. package/atris/skills/README.md +1 -0
  3. package/atris/skills/campaigns/SKILL.md +81 -0
  4. package/atris/skills/meta/SKILL.md +52 -8
  5. package/ax +226 -42
  6. package/bin/atris.js +38 -8
  7. package/commands/autoland.js +176 -7
  8. package/commands/autopilot.js +71 -11
  9. package/commands/campaign.js +779 -0
  10. package/commands/compile.js +19 -8
  11. package/commands/doctor.js +58 -0
  12. package/commands/dream.js +18 -3
  13. package/commands/engine.js +147 -5
  14. package/commands/improve.js +119 -9
  15. package/commands/init.js +18 -1
  16. package/commands/integrations.js +17 -5
  17. package/commands/interview.js +15 -3
  18. package/commands/land.js +22 -6
  19. package/commands/link.js +1 -0
  20. package/commands/member.js +359 -94
  21. package/commands/mission.js +249 -36
  22. package/commands/report.js +42 -8
  23. package/commands/run.js +9 -2
  24. package/commands/scout.js +9 -1
  25. package/commands/task.js +71 -17
  26. package/commands/team.js +212 -4
  27. package/commands/unknowns.js +15 -1
  28. package/commands/verify.js +46 -0
  29. package/commands/worktree.js +108 -15
  30. package/commands/write.js +12 -1
  31. package/commands/youtube.js +17 -2
  32. package/lib/accept-verify-gate.js +1 -0
  33. package/lib/account-bound.js +13 -0
  34. package/lib/auto-accept-certified.js +1 -0
  35. package/lib/autoland.js +13 -4
  36. package/lib/campaign-cadence.js +131 -0
  37. package/lib/campaign-core.js +330 -0
  38. package/lib/campaign-holdout.js +65 -0
  39. package/lib/campaign-loop.js +246 -0
  40. package/lib/campaign-missions.js +237 -0
  41. package/lib/campaign-new.js +251 -0
  42. package/lib/campaign-protect.js +75 -0
  43. package/lib/campaign-reading.js +147 -0
  44. package/lib/campaign-run-lock.js +59 -0
  45. package/lib/campaign-schema.js +196 -0
  46. package/lib/campaign-store.js +380 -0
  47. package/lib/campaign-sync.js +302 -0
  48. package/lib/campaign-trace.js +300 -0
  49. package/lib/conductor-artifacts.js +15 -1
  50. package/lib/daily-log.js +11 -1
  51. package/lib/dispatch-scout.js +18 -0
  52. package/lib/engine-ask.js +33 -3
  53. package/lib/engine-registry.js +2 -0
  54. package/lib/engine-resource.js +518 -0
  55. package/lib/fleet.js +125 -16
  56. package/lib/init-commit.js +80 -0
  57. package/lib/intents.js +8 -0
  58. package/lib/known-commands.js +1 -1
  59. package/lib/land-green.js +58 -7
  60. package/lib/landing-proof.js +352 -0
  61. package/lib/member-autoland.js +395 -18
  62. package/lib/member-board.js +7 -1
  63. package/lib/member-map-fold.js +126 -0
  64. package/lib/member-map-inbox.js +80 -0
  65. package/lib/member-progress.js +48 -1
  66. package/lib/member-report.js +127 -8
  67. package/lib/member-self-next-job.js +97 -0
  68. package/lib/member-task-pick.js +41 -14
  69. package/lib/member-up.js +249 -16
  70. package/lib/roster-prep.js +25 -2
  71. package/lib/runner-command.js +5 -0
  72. package/lib/task-db.js +47 -11
  73. package/lib/task-explanation.js +7 -0
  74. package/lib/task-list-keeper.js +8 -1
  75. package/lib/task-receipt.js +6 -1
  76. package/mcp/atris-mcp/index.mjs +212 -10
  77. package/package.json +2 -1
  78. package/scripts/det/engine-reading.js +37 -0
  79. package/scripts/det/ytnotes +29 -5
package/README.md CHANGED
@@ -138,6 +138,24 @@ atris member wake 5
138
138
  atris member wake navigator executor
139
139
  ```
140
140
 
141
+ Wake only picks jobs that have a test to pass, so members know when they are done. Add one like this:
142
+
143
+ ```bash
144
+ atris task new "fix the flaky login test" --verify "node --test test/login.test.js"
145
+ ```
146
+
147
+ Each job gets the time limit set for building in your roster, plus a few minutes for review. To see or change it:
148
+
149
+ ```bash
150
+ atris engine roster
151
+ ```
152
+
153
+ Naming just one member runs one step of work. Add `--keep` to keep that one member working.
154
+
155
+ ```bash
156
+ atris member wake executor --keep
157
+ ```
158
+
141
159
  Sleep stops the members that are awake.
142
160
 
143
161
  ```bash
@@ -34,6 +34,7 @@ cp -r atris/skills/[name] ~/.codex/skills/
34
34
  | backend | Backend architecture policy | `policies/atris-backend.md` |
35
35
  | blocks | Author Atris block documents: docs, decks, reports | - |
36
36
  | calendar | Google Calendar via AtrisOS API | - |
37
+ | campaigns | Run a long goal with a judge that fails today, a budget, and seats | - |
37
38
  | commerce | Quote a purchase or stock order; the person approves before anything is charged | - |
38
39
  | copy-editor | Detects and fixes AI writing patterns | - |
39
40
  | create-app | Build and deploy an Atris app from a description | - |
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: campaigns
3
+ description: "Run an Atris campaign: a long goal with a judge that fails today, a budget, and members in seats, worked by missions until the judge passes. Use when the goal takes many runs, needs several members, or must spend under a cap. Triggers on: run a campaign, long goal, big goal, keep going until it passes, campaign, judge, budget, atris campaign."
4
+ version: 1.0.0
5
+ tags:
6
+ - campaign
7
+ - judge
8
+ - budget
9
+ - missions
10
+ - mcp
11
+ ---
12
+
13
+ # Campaigns
14
+
15
+ A campaign is a goal plus a judge. The judge is a command that exits 0 only when the goal is met. The campaign runs missions under a budget until the judge passes, the money runs out, or a person has to decide something.
16
+
17
+ ## Campaign or mission
18
+
19
+ - **Mission**: one member, one objective, one check. Done in a run or a few ticks.
20
+ - **Campaign**: the goal needs many missions, more than one member, or a spending cap. A campaign decides what to do next; its missions do the work.
21
+
22
+ If one `atris mission start` would finish it, use a mission.
23
+
24
+ ## The five commands
25
+
26
+ ```bash
27
+ atris campaign "<goal>" # drafts a judge, proves it fails today, starts on a yes (agents pass --yes; --run keeps going)
28
+ atris campaign run <id> --max-steps 5 # judge, propose missions, run them; stops and says why
29
+ atris campaign show <id> # judge reading, money, missions, open asks, next move
30
+ atris campaign answer <id> <ask-id> "<yes>" # a person answers; agents cannot
31
+ atris campaign sync <id> # share it with the Atris web app and iOS
32
+ ```
33
+
34
+ `atris campaign "<goal>"` is the same as `atris campaign new "<goal>"`. Already have a judge? Start directly: `atris campaign "<goal>" --judge "<command>"`. A local campaign needs no budget; one that runs in the cloud does (`--budget 20`). Add `--json` to any verb for machine output. `atris campaign` alone lists every campaign and its next move.
35
+
36
+ ## Write a good judge
37
+
38
+ 1. **Outside the model.** Tests, counts, greps, a build, a local script. Never ask a model whether it is done.
39
+ 2. **Fails first.** A judge that passes today is refused: it cannot tell you when the work landed.
40
+ 3. **Graded.** Print progress, not just exit status. Lines like `ℹ pass 3` and `ℹ fail 2` become the campaign's answer, so a person sees 3 of 5 instead of "failed".
41
+ 4. **Read only and quick.** It runs after every mission. It changes nothing and finishes in minutes.
42
+
43
+ `atris campaign new` writes the judge to `atris/campaigns/<id>/judge.sh`. Read it before you start; edit it if it checks the wrong thing.
44
+
45
+ ## The no-reload line
46
+
47
+ Before anything that cannot be undone (sending, paying, deleting, deploying, publishing), stop and ask:
48
+
49
+ ```bash
50
+ atris campaign ask <id> "Deploy the billing change to production?"
51
+ ```
52
+
53
+ The campaign waits. `run` stops with `needs you: 1 open ask`. Only a person closes an ask, in their own terminal. An agent that writes an answer leaves the ask open with a warning.
54
+
55
+ ## From an MCP client
56
+
57
+ `atris mcp` serves the same verbs as tools: `campaign_list`, `campaign_show`, `campaign_new`, `campaign_start`, `campaign_run` (takes `max_steps`, returns `reason`), `campaign_ask`, `campaign_answer`. Every write is recorded as an agent. `campaign_answer` returns the `person_command` the person runs to close the ask.
58
+
59
+ ## 60-second example
60
+
61
+ ```bash
62
+ atris campaign new "every command in bin/atris.js has a --help that exits 0"
63
+ # draft for: every command ...
64
+ # judge sh atris/campaigns/cmp-help-everywhere-1a2b/judge.sh
65
+ # today fails, as it should: pass 41, fail 6
66
+ # start it: atris campaign start 'Help everywhere' --judge 'sh atris/campaigns/cmp-help-everywhere-1a2b/judge.sh' ...
67
+ atris campaign start 'Help everywhere' --judge 'sh atris/campaigns/cmp-help-everywhere-1a2b/judge.sh' --budget 20 --id cmp-help-everywhere-1a2b
68
+ atris campaign run cmp-help-everywhere-1a2b --max-steps 5
69
+ # stopped after 4 steps: finished
70
+ atris campaign show cmp-help-everywhere-1a2b
71
+ # state done (judge passed)
72
+ # answer answered: pass 47, fail 0
73
+ # budget $6.20 spent of $20.00
74
+ ```
75
+
76
+ ## Rules
77
+
78
+ - No campaign without a judge that fails today.
79
+ - Only the judge or a person finishes a campaign. An agent saying done changes nothing.
80
+ - Every mission reports what it spent. When the budget is gone, the campaign stops.
81
+ - Bound every run with `--max-steps`, then read the stop reason before running again.
@@ -1,24 +1,33 @@
1
1
  ---
2
2
  name: meta
3
- description: Metacognition skill for AI agents. Use when starting work, feeling stuck, output feels off, or before complex tasks. Teaches how to think about thinking.
4
- version: 1.0.0
3
+ description: Metacognition and delegation science skill for AI agents. Use when starting work, coordinating parallel team members, feeling stuck, output feels off, or before complex tasks. Do not use for trivial one-line lookups when the route and fix are already known. Triggers on meta, delegation, coordinate, parallel members, stuck, or self-check.
4
+ version: 1.1.0
5
5
  tags:
6
6
  - meta
7
7
  - metacognition
8
+ - delegation
9
+ - coordination
8
10
  ---
9
11
 
10
12
  # Meta Skill
11
13
 
12
- How to be an effective agent. Load this when you need to check yourself.
14
+ How to be an effective agent and coordinator. Load this when you need to check yourself or delegate across a team.
13
15
 
14
16
  ## When to activate
15
17
 
16
18
  - Starting a new session (orientation)
19
+ - Delegating work across multiple team members (`atris member run` / `atris member board`)
17
20
  - Feeling stuck or uncertain
18
21
  - Output feels sloppy or generic
19
22
  - Complex task ahead
20
23
  - After a mistake
21
24
 
25
+ ## When NOT to activate
26
+
27
+ - Single-file mechanical lookups where `atris/MAP.md` already gives the exact line and command
28
+ - Mid-execution of a single bounded test command that is already passing
29
+ - Routine read-only status checks that require no planning or delegation
30
+
22
31
  ## Context awareness
23
32
 
24
33
  1. **MAP first** - Read `atris/MAP.md` before any search. It's the index.
@@ -35,6 +44,29 @@ How to be an effective agent. Load this when you need to check yourself.
35
44
  | Uncertain about intent | Ask ONE question |
36
45
  | Output feels off | Pause, re-read context |
37
46
  | Stuck > 2 attempts | Escalate, don't spiral |
47
+ | 3+ independent slices | Delegate in parallel to team members |
48
+
49
+ ## The science of delegation
50
+
51
+ When work spans multiple concerns, shift from solo builder to team coordinator:
52
+
53
+ 1. **Partition by disjoint files** - Assign each member (`builder`, `architect`, `executor`, `auto-improver`, `orb`) a distinct file set so parallel branches never conflict at merge time.
54
+ 2. **Bind a scoped, falsifiable check** - Pass an explicit `--verify "node --test test/[scoped].test.js"` that tests only the files the member touches. Never bind a broad suite that mutates or reads shared global state during a parallel run.
55
+ 3. **Launch isolated, bounded runs** - Default to a short bounded window (`--minutes 30`) in an isolated repo copy with independent referee review; use multi-hour `--hours` or `--spend-full-budget --detach` only when the operator explicitly asks for a long or overnight run:
56
+ ```bash
57
+ atris member run [member] "[objective]" --runner auto --verify "node --test test/[file].test.js" --minutes 30 --ignite
58
+ ```
59
+ 4. **Monitor live telemetry, not guesswork** - Watch `atris member board` and `atris member result [member]`. If a member is `quiet` past its cadence or hits a repeated error streak, inspect its log and restaff or ping it via `atris member ping [member] "[guidance]"`.
60
+ 5. **Judge diffs, never prose** - Long runs can omit their final text summary even when all files and tests succeeded. Always verify `git status --short`, `git log -n 3`, and run the scoped test command inside the member's repo copy before marking ready or rejecting.
61
+ 6. **Close the loop through review gates** - Move verified work to Review with `atris task ready [id] --proof "[command and exit 0]"` and wait for human acceptance (`atris task accept [id]`) or the owner's explicit `atris autoland` policy before merging onto `origin/master` and running `atris member tidy --dry-run`.
62
+
63
+ ## Safety and failure handling
64
+
65
+ - **Human approval and landing gate** - Agents prepare proof and move tasks to Review; never run `atris task accept`, never push or merge to `origin/master` without human approval or active owner-enabled `atris autoland`, and never launch multi-hour detached runs unless explicitly requested by the operator.
66
+ - **Protected lanes** - Changes touching auth, billing, session, CSP, security, or production deploy always pause for explicit human review, even when `autoland` is on.
67
+ - **Git hook respect** - If a pre-commit or pre-push hook blocks a commit, stop and fix the root cause. Never bypass hooks with `--no-verify`.
68
+ - **Worktree hygiene** - Never delete a work folder while git locks exist or a process is still active inside it; preview with `atris member tidy --dry-run` before removing merged copies.
69
+ - **Repeated failure breaker** - If a member fails the same check twice in a row, halt that approach, record the cause in `atris/lessons.md`, and restaff with a narrower slice.
38
70
 
39
71
  ## Self-correction triggers
40
72
 
@@ -44,6 +76,7 @@ Stop and reassess when:
44
76
  - You're adding features not requested
45
77
  - You're explaining instead of doing
46
78
  - You've used words like "robust", "comprehensive", "streamlined"
79
+ - Two delegated members are editing the same file
47
80
 
48
81
  ## Memory leverage
49
82
 
@@ -58,6 +91,7 @@ You can stack skills:
58
91
  - `meta` + `design` = thoughtful frontend work
59
92
  - `meta` + `backend` = careful API design
60
93
  - `meta` + `writing` = deliberate prose
94
+ - `meta` + `autopilot` = multi-member parallel execution
61
95
 
62
96
  Meta is the foundation. Domain skills are the specialization.
63
97
 
@@ -66,15 +100,23 @@ Meta is the foundation. Domain skills are the specialization.
66
100
  ```
67
101
  Orient (read context)
68
102
  ↓
69
- Decide (which skill? what pace?)
103
+ Decide (solo or delegate? which skill? what pace?)
70
104
  ↓
71
- Act (execute with focus)
105
+ Act (execute with focus or dispatch disjoint members)
72
106
  ↓
73
- Check (output match intent?)
107
+ Check (verify diff, scoped tests, and member board)
74
108
  ↓
75
- Learn (add to lessons.md if miss)
109
+ Learn (add to lessons.md if miss, promote to skill at 2-3x)
76
110
  ```
77
111
 
112
+ ## Verification and closure
113
+
114
+ A solo or delegated task is complete only when all four checks pass with concrete evidence on disk:
115
+ 1. The scoped test command (`node --test test/[file].test.js`) is run bare (no pipes) and exits `0`.
116
+ 2. `git diff --check` exits `0` with no whitespace errors or conflict markers, and `git status --short` shows only declared files changed.
117
+ 3. For delegated runs, `atris member board` shows `done ok` (active or quiet runs are still in progress, never complete) and `atris member result [member] --json` points to a passing receipt in `atris/runs/`.
118
+ 4. Any modified skill passes `atris skill audit [name]` with `12/12` (0 errors, 0 warnings) and `atris skill eval atris/skills/[name]/SKILL.md` with `passed: true` and all rubric scores `>= 4`.
119
+
78
120
  ## Anti-patterns
79
121
 
80
122
  - Grepping before MAP check
@@ -83,6 +125,8 @@ Learn (add to lessons.md if miss)
83
125
  - Verbose explanations
84
126
  - Guessing instead of asking
85
127
  - Repeating past mistakes
128
+ - Delegating overlapping files to parallel workers
129
+ - Judging a run by its prose summary instead of its git diff and test exit code
86
130
  - Creating skill without symlinking to .claude/skills/ (won't load mid-session)
87
131
 
88
132
  ## Skill evolution
@@ -96,4 +140,4 @@ You're training future agents. Leave the codebase smarter than you found it.
96
140
 
97
141
  ## One-liner
98
142
 
99
- Think before you act. Check yourself. Use the system.
143
+ Think before you act. Partition cleanly when you delegate. Check yourself. Use the system.