atris 3.23.0 → 3.25.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.
@@ -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
- ```bash
56
- cd ~/arena/atrisos-backend && source venv/bin/activate
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
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/CLAUDE.md
6
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/context/STATUS.md
7
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/context/PIPELINE.md
8
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/team/keshav/MEMBER.md
9
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/team/justin/MEMBER.md
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 /Users/keshavrao/arena/atris-business/atris-labs-1/atris/MEMBER.md is missing in this workspace.
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
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/context/STATUS.md
8
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/context/PIPELINE.md
9
- - /Users/keshavrao/arena/empire/atris-customers/atris-labs/fundraise/metrics.md
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 /Users/keshavrao/arena/atris-business/atris-labs/goals.md is missing in this workspace.
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`: today's journal
14
- - `atris/MAP.md`: navigation
15
- - `atris/wiki/STATUS.md` if present: current memory snapshot
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: the reward config, the authority policy, or this file
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`: checked by code or a pre-commit hook; bypassing is a bug
59
- - `expected`: convention; honor it or stop
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`. 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**: read relevant files, produce an ASCII visualization, wait for approval. No code.
148
- - **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]`.
149
- - **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.
150
- - **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`.
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: one per discovery, decision, or tick]
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, do not continue:
222
- - **loop**: the same suggestion fires tick after tick, nothing changes on disk
223
- - **drift**: `MAP.md` file:line refs no longer match the code
224
- - **stale task**: a backlog task references a file or symbol that no longer exists
225
- - **hidden side effect**: an action changed external state (email sent, money moved, deploy) without a queued approval
226
- - **unverifiable completion**: a task marked complete without a `Verify:` command that actually ran
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: as a new page or into an existing one. Explorations accumulate.
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`.*