atris 3.1.0 → 3.2.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/README.md +11 -2
- package/atris/skills/improve/SKILL.md +2 -2
- package/bin/atris.js +7 -1
- package/commands/autopilot.js +562 -39
- package/commands/business.js +14 -9
- package/commands/experiments.js +1 -1
- package/commands/release.js +183 -0
- package/commands/research.js +52 -0
- package/commands/sync.js +102 -13
- package/commands/verify.js +3 -3
- package/commands/wiki.js +45 -25
- package/lib/reward-config.js +24 -0
- package/lib/scorecard.js +16 -2
- package/lib/wiki.js +87 -56
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -83,7 +83,7 @@ cd ~/arena/atris-business/blondish
|
|
|
83
83
|
atris align --fix
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
That creates the cloud business, writes `.atris/business.json`, and scaffolds the
|
|
86
|
+
That creates the cloud business, writes `.atris/business.json`, initializes `.atris/state/` for events, episodes, and scorecards, and scaffolds the local `atris/` workspace under `~/arena/atris-business/<slug>/` with starter team lanes, a default recap artifact, and a first-loop starter queue in `atris/TODO.md`.
|
|
87
87
|
|
|
88
88
|
If you already have a folder full of source material, run it from there with `atris business init "BLOND:ISH" --here`.
|
|
89
89
|
|
|
@@ -111,6 +111,7 @@ If you already have a folder full of source material, run it from there with `at
|
|
|
111
111
|
|
|
112
112
|
- `atris learn` stores structured project memory in `atris/learnings.jsonl`
|
|
113
113
|
- `atris wiki` keeps repo memory in `atris/wiki/` by default, with `--cloud` when you want the remote workspace path
|
|
114
|
+
- `atris wiki --private` uses `.atris/presidio/` for local-only sensitive notes and operating memory
|
|
114
115
|
- `atris loop` refreshes `atris/wiki/STATUS.md` and `atris/wiki/log.md`, flags stale/orphan pages, and suggests the next ingest
|
|
115
116
|
- `atris activate` loads the current wiki status so the next session starts with project memory, not just tasks
|
|
116
117
|
- `atris experiments` runs Karpathy-style keep/revert loops in `atris/experiments/`
|
|
@@ -121,7 +122,7 @@ If you already have a folder full of source material, run it from there with `at
|
|
|
121
122
|
Under the hood, Atris can keep score on real repo work.
|
|
122
123
|
|
|
123
124
|
- Endgame tasks can carry a `Verify:` command, so work can end on a deterministic check instead of pure prose.
|
|
124
|
-
- `atris autopilot` can run that check after review, record a reward in the journal, and append a scorecard when a horizon closes.
|
|
125
|
+
- `atris autopilot` can run that check after review, record a reward in the journal, and append a local scorecard when a horizon closes.
|
|
125
126
|
- Future horizon picks can weight against recent scorecards, so the loop learns from repo-local history without claiming model retraining.
|
|
126
127
|
|
|
127
128
|
## Benchmark Harness
|
|
@@ -178,6 +179,14 @@ atris skill link [--all]
|
|
|
178
179
|
|
|
179
180
|
For Codex, copy any skill folder into `~/.codex/skills/`.
|
|
180
181
|
|
|
182
|
+
## v3.2.0
|
|
183
|
+
|
|
184
|
+
- **Staleness gate** — tasks tagged `[unverified]` are skipped at the moment of use, not pruned eagerly. Three-state model: actionable / unverified / deleted.
|
|
185
|
+
- **Lesson gate** — `isLessonResolved` checks whether a lesson already shipped before proposing new horizons from it. Prevents the loop from re-solving solved problems.
|
|
186
|
+
- **`atris release`** — new command: tags the version, bumps package.json, creates a GitHub release, and drafts a `/launch` post in one shot.
|
|
187
|
+
- **Shell injection fix** — `checkStaleness` switched from `execSync` string interpolation to `execFileSync` with args arrays. Markdown-derived content (task titles, inbox items) no longer reaches a shell.
|
|
188
|
+
- **Codex hardening** — `atris activate` and `atris` entry point detect Codex environments and write `AGENTS.md` so Codex sessions start with workspace context.
|
|
189
|
+
|
|
181
190
|
## Update
|
|
182
191
|
|
|
183
192
|
```bash
|
|
@@ -23,7 +23,7 @@ This is the product. The thing the user pays for. One call, one verifiable resul
|
|
|
23
23
|
→ POST /api/improve { workspace: ".", mode: "full" }
|
|
24
24
|
→ backend picks a task, plans, builds, reviews, verifies
|
|
25
25
|
→ returns { task, reward, files_changed, verify_pass, summary }
|
|
26
|
-
→ CLI writes scorecard to atris/scorecards.md
|
|
26
|
+
→ CLI writes scorecard to .atris/presidio/scorecards.md
|
|
27
27
|
→ CLI reports result to user
|
|
28
28
|
```
|
|
29
29
|
|
|
@@ -45,7 +45,7 @@ The inference is Claude Code (or whatever model the backend uses). The environme
|
|
|
45
45
|
5. On success:
|
|
46
46
|
- Show what shipped (task name, files changed, verify result)
|
|
47
47
|
- Show the reward score
|
|
48
|
-
- Write scorecard to
|
|
48
|
+
- Write scorecard to `.atris/presidio/scorecards.md`
|
|
49
49
|
- Append tick to today's journal
|
|
50
50
|
6. On failure:
|
|
51
51
|
- Show the error
|
package/bin/atris.js
CHANGED
|
@@ -237,6 +237,7 @@ function showHelp() {
|
|
|
237
237
|
console.log(' search - Search journal history (atris search <keyword>)');
|
|
238
238
|
console.log(' clean - Housekeeping (stale tasks, archive journals, broken refs)');
|
|
239
239
|
console.log(' verify - Validate work is done (tests, MAP.md, changes)');
|
|
240
|
+
console.log(' release - Tag release, bump version, create GitHub release, draft /launch');
|
|
240
241
|
console.log(' learn - Project learnings (patterns, pitfalls, preferences)');
|
|
241
242
|
console.log(' ingest - Local-first wiki ingest into atris/wiki/');
|
|
242
243
|
console.log(' query - Local-first wiki query against atris/wiki/');
|
|
@@ -424,7 +425,7 @@ const { planAtris: planCmd, doAtris: doCmd, reviewAtris: reviewCmd } = require('
|
|
|
424
425
|
// All other commands are lazy-loaded inline (require() only when invoked)
|
|
425
426
|
|
|
426
427
|
// Check if this is a known command or natural language input
|
|
427
|
-
const knownCommands = ['init', 'log', 'status', 'analytics', 'visualize', 'brainstorm', 'autopilot', 'run', 'plan', 'do', 'review',
|
|
428
|
+
const knownCommands = ['init', 'log', 'status', 'analytics', 'visualize', 'brainstorm', 'autopilot', 'run', 'plan', 'do', 'review', 'release',
|
|
428
429
|
'activate', '_activate', 'agent', 'chat', 'console', 'login', 'logout', 'whoami', 'switch', 'use', 'accounts', '_resolve', '_profile-email', '_switch-session', 'shell-init', 'update', 'upgrade', 'version', 'help', 'next', 'atris',
|
|
429
430
|
'clean', 'verify', 'search', 'skill', 'member', 'learn', 'plugin', 'experiments', 'pull', 'push', 'align', 'terminal', 'diff', 'business', 'sync',
|
|
430
431
|
'ingest', 'query', 'lint', 'loop',
|
|
@@ -1002,6 +1003,11 @@ if (command === 'init') {
|
|
|
1002
1003
|
} else if (command === 'verify') {
|
|
1003
1004
|
const taskId = process.argv[3] || null;
|
|
1004
1005
|
require('../commands/verify').verifyAtris(taskId);
|
|
1006
|
+
} else if (command === 'release') {
|
|
1007
|
+
const dryRun = process.argv.includes('--dry-run');
|
|
1008
|
+
require('../commands/release').releaseAtris({ dryRun })
|
|
1009
|
+
.then(() => process.exit(0))
|
|
1010
|
+
.catch((err) => { console.error(`\n✗ Error: ${err.message || err}`); process.exit(1); });
|
|
1005
1011
|
} else if (command === 'search') {
|
|
1006
1012
|
const keyword = process.argv.slice(3).join(' ');
|
|
1007
1013
|
searchJournal(keyword);
|