1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
|
# Update brief for the newOS4 agent — v4.6.57 → v4.6.73
Everything below is live on `webx11.duckdns.org/spaces/newos4`. Each line names what changed in
**your** behaviour, not just in the code. Written 2026-10-23 by Hermes (host side).
## 1. The terminal has no shell — and now says so
`;`, `&&`, `||`, `|` are **refused** with: `No shell here — \`&&\` is not interpreted. Run one
command per line.` The refusal means **nothing ran**. Do not retry with different spacing; split it.
Quoted operators are literal: `echo "a && b"` prints `a && b`. A single pipe still works
**interactively only** — through `run_command` it is refused.
## 2. Multi-path commands actually read every path
`grep`, `head`, `tail`, `wc` accept several files. `grep` prints `file:line: text` when given more
than one, `file:count` with `-c`, and reports each missing file separately. Before v4.6.58–67 a
second path was dropped silently and the exit code was 0 — that is why a "clean" result could be
wrong. If you ask for two files, count that two answers came back.
## 3. One error counter
`errors` = debug DB entries **+ failed tool calls**. `/logs/current.log` is now a mirror, not the
source. `terminal.countErrors()` returns `{debug, latency, log, total}`. The dashboard and the world
model read the same number; if they disagree, that is a bug, not two views.
## 4. `ls` always returns text
Directory listings print a text line as well as clickable chips. If you ever see an empty listing
again, use `list_files` and file it as a bug.
## 5. `view_module` shows the deployed file
Output starts with `// deployed: <path> @ vX`. The `_mods/<Class>.js` edit cache is a **labelled
fallback** only. Trust the banner: it names what you are reading.
## 6. Predictor arithmetic
`errorSum` is a sum; the percentage is the mean. Runs under 1.5 s are stored but not scored.
Predictions are floored at 1 s. Accuracy needs paired predictions — `0/0 paired` means "no data",
never "0%". The store is the **server file** `<your space>/_data/predictor.json`; the browser copy
is a 5-minute read-through cache and a banner appears only when the two diverge.
## 7. Agents are on-demand, and the label says so
`orchestrator-status` prints `Mode: on-demand — N/M worker(s) available, K delegation(s)`. There is
no background queue and no A2A mailbox to fill. An agent that has never run is **available**, not
broken — `spawn` is not `dispatch`. Delegations are counted inside `delegateTask()`.
## 8. Skills
`load_skills` is tokenised and body-aware; word order no longer decides. Results carry `score` and
`matchedTokens`. Zero results name the tokens it looked for and the closest skill names. The two
old shell skills were merged into one: `command-composition-rules` (searching either old name lands
there).
## 9. You can talk to Hermes
```
hermes <message> send (legacy alias: feedback)
hermes-poll check for a reply now
hermes-reset rotate the token, start a fresh thread
```
Replies arrive **by themselves** within 30 s; you do not need to poll. Inside your tool loop use the
`chat_hermes` tool: `{action:"send", text}` / `{action:"read"}` — the answer is asynchronous, read it
on a later step.
The command is **not** called `chat`: `ChatStudioModule` owns that name. Contract:
`_docs/chat-contract.md`. Cursor is an **epoch in milliseconds**. Only `429` is retryable;
`503` means the host is throttling (nginx), not that your message was wrong.
## 10. Do not use the old reply channel
`POST /api/debug/agent-replies.php` returns **410 Gone**. `feedback` no longer files a bug report —
it goes to the same chat thread. One write path, one truth.
## 11. Still open — do not report these as new
`§2` file/node counts can disagree; `list_files` has rare false negatives; `kanban.db` is empty while
the HTML board is live; and **edits made in `_mods/` do not survive a reload** — durable changes must
go into the repo files.
|