atris 3.24.0 → 3.25.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.
- package/README.md +6 -6
- package/atris/atrisDev.md +717 -0
- package/atris/policies/outbound-artifact-gate.md +48 -0
- package/atris/skills/atris-feedback/SKILL.md +2 -3
- package/atris/wiki/sources/atris-labs-2026-05-10.txt +6 -9
- package/atris/wiki/sources/atris-labs-goals-2026-05-10.txt +4 -5
- package/atris.md +19 -43
- package/ax +1695 -101
- package/bin/atris.js +2 -38
- package/commands/aeo.js +5 -5
- package/commands/computer.js +0 -1
- package/commands/mission.js +2 -1
- package/commands/recap.js +0 -16
- package/commands/sync.js +2 -0
- package/commands/workflow.js +1 -2
- package/commands/youtube.js +183 -0
- package/lib/ax-chat-input.js +164 -0
- package/lib/ax-goal.js +307 -0
- package/lib/ax-prefs.js +70 -0
- package/lib/ax-shimmer.js +63 -0
- package/lib/context-gatherer.js +8 -26
- package/package.json +2 -1
- package/commands/card.js +0 -121
- package/commands/deck.js +0 -184
- package/commands/reel.js +0 -128
- package/commands/site.js +0 -48
- package/commands/slop.js +0 -307
- package/commands/theme.js +0 -217
- package/lib/card.js +0 -120
- package/lib/deck-from-md.js +0 -110
- package/lib/html-render.js +0 -257
- package/lib/memory-view.js +0 -95
- package/lib/reel.js +0 -52
- package/lib/site.js +0 -114
- package/lib/slides-deck.js +0 -237
- package/lib/theme.js +0 -264
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Outbound Artifact Gate
|
|
2
|
+
|
|
3
|
+
Human-facing sends must ship the artifact in the format the recipient is meant to see.
|
|
4
|
+
|
|
5
|
+
This applies to email, Slack, docs, decks, HTML summaries, UI screenshots, customer updates, and team updates.
|
|
6
|
+
|
|
7
|
+
## Rule
|
|
8
|
+
|
|
9
|
+
Never send raw artifact source to a human unless the human explicitly asked for source.
|
|
10
|
+
|
|
11
|
+
Examples of raw source:
|
|
12
|
+
- HTML tags in a plain-text email body.
|
|
13
|
+
- Markdown code fences that are supposed to render into a page, doc, email, diagram, or UI.
|
|
14
|
+
- A screenshot, deck, PDF, or UI claim without visual proof.
|
|
15
|
+
- Generic copy that sounds like a template instead of this workspace and this recipient.
|
|
16
|
+
|
|
17
|
+
## Required Gate
|
|
18
|
+
|
|
19
|
+
Before sending, record:
|
|
20
|
+
|
|
21
|
+
1. Recipient and channel.
|
|
22
|
+
2. Intended format: plain text, rendered HTML, PDF, deck, screenshot, doc, or source.
|
|
23
|
+
3. Render proof for HTML or visual artifacts: preview, screenshot, PDF export, rendered email receipt, or browser check.
|
|
24
|
+
4. Anti-slop pass: concrete copy, no hype terms, no corporate filler, no AI-tell phrases.
|
|
25
|
+
5. Approval packet: exact recipient, subject or title, final body, and attachments.
|
|
26
|
+
6. Receipt after send: message id, link, file path, or explicit `not sent`.
|
|
27
|
+
|
|
28
|
+
## Hard Fails
|
|
29
|
+
|
|
30
|
+
Stop before send when any of these are true:
|
|
31
|
+
|
|
32
|
+
- Plain text contains `<html`, `<body`, `<div`, `<table`, or other HTML tags.
|
|
33
|
+
- A body contains fenced rendered source like `html`, `tsx`, `svg`, or `mermaid` that the recipient was meant to see rendered.
|
|
34
|
+
- HTML email has no render proof.
|
|
35
|
+
- Visual work has no visual inspection proof.
|
|
36
|
+
- Copy contains anti-slop kill-list terms such as `seamlessly`, `leverage`, `robust`, `game-changing`, or `at the end of the day`.
|
|
37
|
+
- The agent cannot show the exact final recipient, subject, body, and attachments before send.
|
|
38
|
+
|
|
39
|
+
## Validator
|
|
40
|
+
|
|
41
|
+
Run the cheap local gate before any human-facing send:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
node scripts/outbound-artifact-gate.js --channel email --format plain --body-file /path/to/body.txt
|
|
45
|
+
node scripts/outbound-artifact-gate.js --channel email --format html --body-file /path/to/body.html --proof-file /path/to/render-proof.txt
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The Gmail backend MIME fix is a transport safety net. Agents still need this gate before asking approval or sending.
|
|
@@ -52,9 +52,8 @@ Only use this path if the CLI is unavailable (stale install, broken login).
|
|
|
52
52
|
|
|
53
53
|
### Setup
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
```
|
|
55
|
+
Use this only from a trusted service workspace with AWS credentials already
|
|
56
|
+
configured. Do not ask end users to clone or run backend services locally.
|
|
58
57
|
|
|
59
58
|
```python
|
|
60
59
|
from dotenv import load_dotenv; load_dotenv('backend/.env')
|
|
@@ -2,16 +2,13 @@ Source receipt for atris/wiki/systems/atris-labs.md
|
|
|
2
2
|
Compiled: 2026-05-10
|
|
3
3
|
|
|
4
4
|
Local evidence checked:
|
|
5
|
-
-
|
|
6
|
-
-
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- /Users/keshavrao/arena/empire/atris-business/atris-labs-1/apps/
|
|
11
|
-
- /Users/keshavrao/arena/empire/atrisos-backend/backend/static/workspaces/atris-labs/instructions.md
|
|
12
|
-
- /Users/keshavrao/arena/empire/atrisos-backend/backend/atris-labs-1/.atris/business.json
|
|
5
|
+
- historical Atris Labs customer workspace docs
|
|
6
|
+
- historical Atris Labs context status and pipeline notes
|
|
7
|
+
- historical Atris Labs member profile notes
|
|
8
|
+
- historical Atris Labs app workspace inventory
|
|
9
|
+
- historical Atris Labs cloud workspace binding metadata
|
|
13
10
|
|
|
14
11
|
Notes:
|
|
15
|
-
- The previous wiki source
|
|
12
|
+
- The previous wiki source is missing in this workspace.
|
|
16
13
|
- Available status/pipeline files are historical March 2026 artifacts.
|
|
17
14
|
- Treat this page as orientation, not a live company operating report.
|
|
@@ -4,12 +4,11 @@ Compiled: 2026-05-10
|
|
|
4
4
|
Local evidence checked:
|
|
5
5
|
- atris/wiki/concepts/atris-labs-goals.md before refresh
|
|
6
6
|
- atris/wiki/log.md historical ingest notes for missing goals.md
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- /Users/keshavrao/arena/empire/atris-customers/atris-labs/fundraise/story.md
|
|
7
|
+
- historical Atris Labs context status and pipeline notes
|
|
8
|
+
- historical Atris Labs fundraising metrics notes
|
|
9
|
+
- historical Atris Labs fundraising story notes
|
|
11
10
|
|
|
12
11
|
Notes:
|
|
13
|
-
- The previous source
|
|
12
|
+
- The previous goals source is missing in this workspace.
|
|
14
13
|
- The page is retained as historical direction only.
|
|
15
14
|
- Revenue/customer counts require live verification before operational use.
|
package/atris.md
CHANGED
|
@@ -10,9 +10,9 @@ leave a trail another agent or human can trust.
|
|
|
10
10
|
On session start, before responding:
|
|
11
11
|
|
|
12
12
|
1. Read:
|
|
13
|
-
- `atris/logs/YYYY/YYYY-MM-DD.md
|
|
14
|
-
- `atris/MAP.md
|
|
15
|
-
- `atris/wiki/STATUS.md` if present
|
|
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
|
|
16
16
|
|
|
17
17
|
2. Show this box, then ask what to work on if no task was already given.
|
|
18
18
|
|
|
@@ -50,36 +50,13 @@ Then:
|
|
|
50
50
|
- do not call something complete without verification
|
|
51
51
|
- do not take irreversible actions without approval from the human
|
|
52
52
|
- do not hide state outside markdown, logs, diffs, or the journal
|
|
53
|
-
- do not edit the rules that judge you
|
|
53
|
+
- do not edit the rules that judge you — the reward config, the authority policy, or this file
|
|
54
54
|
|
|
55
55
|
If you cannot honor these rules, stop, write why in the journal, and ask the human before continuing.
|
|
56
56
|
|
|
57
57
|
Labels used below:
|
|
58
|
-
- `guarded
|
|
59
|
-
- `expected
|
|
60
|
-
|
|
61
|
-
## taste
|
|
62
|
-
|
|
63
|
-
What you ship should not read as generated. The test: if someone said "an AI made this," would they believe it instantly? If yes, that is the bug. The model has no words for restraint and it falls into gravity wells. Beat both.
|
|
64
|
-
|
|
65
|
-
- **Gate it.** `atris slop detect <path>` is deterministic: no model, exit 1 on a tell, built for CI and the review stage. A finding is a fact (file:line + rule), not an opinion. `--diff`/`--staged` scopes it to changed lines for a commit gate; `--fix` repairs the safe tells. `guarded` once wired into review.
|
|
66
|
-
- **Name the move.** Vague prompts make vague output. Direct with craft words: vertical rhythm, negative space, hierarchy, contrast, bolder here / quieter there, restraint. Precise language is the lever. Own it.
|
|
67
|
-
- **Refuse the wells** (named so you can): purple/indigo gradients, gradient-filled text, glassmorphism, Inter/Roboto defaults, claude-beige, neon-on-dark, hero-metric rows, identical card grids, eyebrow/tracked-caps labels, pulsing live-dots, em dashes.
|
|
68
|
-
- **Commit to constraints.** One distinctive font, one accent hue, a small spacing scale. Taste is subtraction, not addition.
|
|
69
|
-
- **Generate it right.** `atris deck` (slides), `atris deck from <doc.md> --html` (a web page from a plain doc, in the web app's design tokens), `atris site <dir>` (a whole markdown folder into a navigable site), and `atris recap --html` (a memory-updates page) all apply the system by default: own backgrounds and fonts, never the tool's stock template. Output as an AppBlock with `--block` to drop into a web app.
|
|
70
|
-
- **Compound it.** A new tell becomes a project rule in `.atris/slop.rules.json` (`atris slop rules --add`), and a project's brand lives in `.atris/theme.json` (`atris theme create` builds your own by feel, or `atris theme init` scaffolds one) so every deck, page, and site is on-brand by default, and one line of text becomes an on-brand image with `atris card` or a short video with `atris reel`. The gate and the look grow per project instead of leaning on memory. Taste lives in code, not vibes.
|
|
71
|
-
|
|
72
|
-
## voice
|
|
73
|
-
|
|
74
|
-
The same discipline for words. Output stays sharp no matter how bloated the context. A full context is not license to ramble.
|
|
75
|
-
|
|
76
|
-
- **Lead with the move.** Answer first, support after. No preamble, no agreement reflex ("great question", "you're absolutely right").
|
|
77
|
-
- **Specific over buzzy.** Name the exact thing. If you can't, you don't understand it yet; go look, don't hedge.
|
|
78
|
-
- **Cut filler.** Drop "it's worth noting", "in order to", "leverage", "seamless", "robust", "delve", stacked hedges, and em dashes. `atris slop` flags the prose tells (em-dash, hype-copy) too.
|
|
79
|
-
- **Bound verbosity by information, not context.** Say the load-bearing thing and stop. Length tracks what the reader needs to act, nothing more.
|
|
80
|
-
- **Match the register.** The operator wants the next move; a spec wants the contract; a journal wants one line. Jargon is a lever only when shared: use the reader's precise terms, define a new one once.
|
|
81
|
-
|
|
82
|
-
`expected`: this is how an Atris agent writes and builds. Shipping slop or rambling is a failure smell, same as drift or a stale task.
|
|
58
|
+
- `guarded` — checked by code or a pre-commit hook; bypassing is a bug
|
|
59
|
+
- `expected` — convention; honor it or stop
|
|
83
60
|
|
|
84
61
|
## task source of truth
|
|
85
62
|
|
|
@@ -144,10 +121,10 @@ The human is the constructor. You multiply. Handoff fidelity lives in the files,
|
|
|
144
121
|
|
|
145
122
|
Move one task at a time through plan → do → review.
|
|
146
123
|
|
|
147
|
-
- **plan
|
|
148
|
-
- **plan-review
|
|
149
|
-
- **do
|
|
150
|
-
- **review
|
|
124
|
+
- **plan** — read relevant files, produce an ASCII visualization, wait for approval. No code.
|
|
125
|
+
- **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]`.
|
|
126
|
+
- **do** — claim the task with `atris task claim <id> --as <agent>`, execute step by step, add notes as reality changes, update `MAP.md` and the journal when needed.
|
|
127
|
+
- **review** — run the task's verification, read the diff, run the relevant tests, finish with `atris task finish <id> --proof "..."`, and add the lesson/next task with `atris task review`.
|
|
151
128
|
|
|
152
129
|
Every stage runs the Confidence Gate before it advances:
|
|
153
130
|
|
|
@@ -200,7 +177,7 @@ Periodically, and before closing an endgame, clean:
|
|
|
200
177
|
- **I1:** Description
|
|
201
178
|
|
|
202
179
|
## Notes
|
|
203
|
-
[timestamped lines
|
|
180
|
+
[timestamped lines — one per discovery, decision, or tick]
|
|
204
181
|
```
|
|
205
182
|
|
|
206
183
|
Context is a cache. Disk is truth. Route discoveries as they happen:
|
|
@@ -218,13 +195,12 @@ Do not batch. Nothing important should live only in memory.
|
|
|
218
195
|
|
|
219
196
|
## failure smells
|
|
220
197
|
|
|
221
|
-
If you notice these, stop and flag
|
|
222
|
-
- **loop
|
|
223
|
-
- **drift
|
|
224
|
-
- **stale task
|
|
225
|
-
- **hidden side effect
|
|
226
|
-
- **unverifiable completion
|
|
227
|
-
- **slop**: output reads as generated: gradient text, purple gradients, em dashes, hype copy, eyebrow caps, or rambling filler. `atris slop detect` names it; fix it before shipping (see `## taste` and `## voice`)
|
|
198
|
+
If you notice these, stop and flag — do not continue:
|
|
199
|
+
- **loop** — the same suggestion fires tick after tick, nothing changes on disk
|
|
200
|
+
- **drift** — `MAP.md` file:line refs no longer match the code
|
|
201
|
+
- **stale task** — a backlog task references a file or symbol that no longer exists
|
|
202
|
+
- **hidden side effect** — an action changed external state (email sent, money moved, deploy) without a queued approval
|
|
203
|
+
- **unverifiable completion** — a task marked complete without a `Verify:` command that actually ran
|
|
228
204
|
|
|
229
205
|
Each has real examples in `lessons.md`. Before nontrivial execution, read the relevant recent lessons.
|
|
230
206
|
|
|
@@ -241,10 +217,10 @@ Pages that summarize or reference other files declare their sources in YAML fron
|
|
|
241
217
|
|
|
242
218
|
If any source was modified after `last_compiled`, the page is stale. Re-read the sources, update the page, bump `last_compiled`.
|
|
243
219
|
|
|
244
|
-
Compounding: when you answer a question that required synthesis across pages, file the answer back
|
|
220
|
+
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.
|
|
245
221
|
|
|
246
222
|
Linting during review catches stale pages, orphans, contradictions, and concepts mentioned but missing their own page.
|
|
247
223
|
|
|
248
224
|
---
|
|
249
225
|
|
|
250
|
-
*Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them
|
|
226
|
+
*Canonical copy: workspace root `atris.md`. Project copies are distributed; `atris update` syncs them. Full spec: `atrisDev.md`.*
|