Skip to content

Commit 7531b4c

Browse files
committed
Restore native model autonomy and capability awareness
1 parent 1041737 commit 7531b4c

22 files changed

Lines changed: 235 additions & 416 deletions

CHANGELOG.md

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.0.5] - 2026-07-24
11+
12+
### Changed
13+
14+
- Agent turns now receive a compact factual capability map—identity, channel,
15+
Linux computer and `/workspace`, callable tools, memory, skill inventory, and
16+
authority scope—instead of large behavioral manifestos.
17+
- The skill arsenal is lazy-loaded. Models can list available skill metadata
18+
and explicitly read one full procedure when useful; 1Helm no longer injects
19+
the entire playbook library into every turn.
20+
- Removed runtime prose classifiers that rejected, rewrote, or forcibly
21+
re-entered otherwise valid model answers. Security, ownership, and human-only
22+
boundaries remain enforced in tool and server code.
23+
24+
### Fixed
25+
26+
- Human display names are no longer prefixed to user messages sent to models,
27+
preventing names such as the Captain's from contaminating generated search
28+
queries.
29+
- A public web/news search with no parsed results now retries once with a
30+
concise query, so ordinary conversational wording does not consume the turn
31+
or force an immediate refusal.
32+
- Real-model acceptance covers the exact West Hollywood sinkhole prompt,
33+
Skipper's computer awareness in `#main`, lazy skill discovery, and autonomous
34+
resident work on its Linux machine.
35+
1036
## [0.0.4] - 2026-07-24
1137

1238
### Added
@@ -107,7 +133,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
107133
notarization, stapled tickets, Gatekeeper verification, persistent
108134
Application Support, and isolated Apple container machines.
109135

110-
[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.4...HEAD
136+
[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.5...HEAD
137+
[0.0.5]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.5
111138
[0.0.4]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.4
112139
[0.0.3]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.3
113140
[0.0.2]: https://github.com/gitcommit90/1Helm/releases/tag/v0.0.2

README.md

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ else that deserves an owner. 1Helm provisions a complete world around it:
4949
| **One permanent resident** | Threads are sessions; the employee identity survives them. |
5050
| **One private Linux computer** | Chat tools and Terminal use the same persistent `/workspace`. |
5151
| **Memory with provenance** | Decisions, corrections, preferences, files, and outcomes become continuity. |
52-
| **A serious skill arsenal** | Relevant playbooks activate automatically; routine tool use is not an approval ritual. |
52+
| **A serious skill arsenal** | The agent sees what exists and loads a full procedure only when it chooses one. |
5353
| **Durable obligations** | Follow-ups, timers, workflows, and services can wake the computer back up. |
5454
| **Skipper at the boundary** | Host work, credentials, fleet operations, and cross-channel work route themselves. |
5555

@@ -98,7 +98,9 @@ discovery, memory, research, email, calendar, contacts, messaging, documents,
9898
spreadsheets, PDFs, meetings, projects, personal operations, travel, finance,
9999
support, software delivery, data, media, infrastructure, security, and more.
100100

101-
1Helm selects only what the task needs. It can also:
101+
The model receives a compact inventory of the arsenal—not all 34 procedures in
102+
every prompt. It can inspect metadata and load one complete skill when useful.
103+
It can also:
102104

103105
- search the focused SkillsMD catalog of ready GitHub-backed repositories;
104106
- install ready skills only after immutable revision pinning, bounds,
@@ -156,9 +158,10 @@ does not run on the laptop or phone viewing the web UI.
156158
- Durable files, threads, curated memory, Mnemosyne long-term recall,
157159
corrections, follow-ups, and recurring workflows.
158160
- Direct resident → Skipper escalation and automatic Skipper → resident return.
159-
- A bounded outcome gate that keeps operational work moving when a model tries
160-
to stop at a tutorial, unevidenced blocker, unresolved tool failure, or
161-
“Skipper could help.”
161+
- Compact, factual model context: identity, channel, Linux computer and
162+
`/workspace`, callable tools, memory, and the skill arsenal. Security and
163+
ownership boundaries are enforced by the tools and server rather than a
164+
prose grader rewriting model answers.
162165
- Outcome-first Activity with expandable work evidence and a tamper-evident
163166
SHA-256 chain for new operational events.
164167
- Local-first collaboration through an optional workspace domain routed to the
@@ -228,7 +231,7 @@ A fresh data directory opens first-run setup. The source runtime defaults to
228231
| `PORT` | `8123` | HTTP/WebSocket control-plane port. |
229232
| `CTRL_DATA_DIR` | `./data` | Databases, routing state, uploads, and narrow workspace mirrors. |
230233
| `HELM_CHANNEL_COMPUTER_BACKEND` | `apple` on macOS, `native` elsewhere | Explicit development/test backend override. |
231-
| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.4` | Versioned Apple channel-machine image. |
234+
| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.5` | Versioned Apple channel-machine image. |
232235

233236
### Agent-first JSON CLI
234237

@@ -276,7 +279,7 @@ npm run benchmark:autonomy
276279
```
277280

278281
The autonomy benchmark emits deterministic machine-readable JSON covering the
279-
shipped playbook arsenal, narrow human-blocker gate, bounded outcome gate,
282+
shipped skill arsenal, compact capability map, narrow human-blocker boundary,
280283
resident autonomy tools, wakeable recurring work, and audit-chain invariants
281284
for its fixture. It is deliberately not presented as a live-model success rate
282285
or a complete security score.

docs/RELIABILITY.md

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,25 @@ runtimes, including Hermes Agent. 1Helm keeps its own identity and product
99
model; the useful lesson is to encode dependable behavior in runtime state,
1010
ownership, recovery, and tests rather than depend on a prompt alone.
1111

12-
## Partner behavior
12+
## Model capability context
1313

14-
- Stable identity and persona are separate from operating policy and volatile
15-
channel, memory, and task context. A new task must not accidentally rewrite
16-
who the resident or Skipper is.
17-
- Skipper and residents are reliable operating partners: calm, candid,
18-
resourceful, and accountable for closure. They do not mimic momentary user
19-
frustration, another agent's persona, or untrusted recalled text.
20-
- Safe, reversible action is the default. The agent inspects authoritative
21-
state, acts through the capability already available, verifies the observable
22-
result, and reports it.
23-
- `ask_user` is reserved for evidenced human judgment, credentials, external
24-
authority, or irreversible commitment. Difficulty, harmless ambiguity, and
25-
work the agent or Skipper can inspect are not blockers.
26-
- Read-only questions never install skills, packages, or integrations. A
27-
capability question is answered from authoritative state.
28-
- Tool results are evidence. Transient failures permit a bounded retry with a
29-
changed strategy; an unchanged failed call is not repeated forever; expected
30-
human blockers and permanent failures produce one useful final explanation.
31-
- Memory is provenance-bearing reference data, never a higher-priority source
32-
of instructions. Memory and behavior review happen after the user's answer is
33-
safely delivered.
14+
- Every turn identifies the model as Skipper or the channel's resident and
15+
states the current channel and authority scope.
16+
- A resident is told that it owns an isolated persistent Linux computer, that
17+
its durable workspace is `/workspace`, and that `run_command` executes there.
18+
Skipper in `#main` is told that the lack of a resident VM does not remove its
19+
assigned computers or native tools.
20+
- The model receives the callable tool schemas as its capability surface. Hard
21+
isolation, ownership, credential, and destructive-action boundaries live in
22+
those tool and server implementations.
23+
- The prompt names the size and categories of the skill arsenal. Skill metadata
24+
is available through `list_skills`; a complete procedure enters context only
25+
when the model calls `read_skill` for that skill.
26+
- Channel memory and agent recall are provenance-bearing reference data, never
27+
higher-priority instructions.
28+
- `ask_user` is a validated tool for evidenced human judgment, credentials,
29+
external authority, or irreversible commitment. Routine ambiguity does not
30+
satisfy that boundary.
3431

3532
## Turn lifecycle
3633

@@ -89,9 +86,9 @@ Every release that touches agent behavior must keep automated coverage for:
8986
| Stop | Stop changes only its selected lane while another turn on the same agent completes. |
9087
| Writers | A stale generation cannot change finalized body or progress state. |
9188
| Restart | Queued work survives and drains; running work is never blindly replayed. |
92-
| Blockers | A legitimate connector/credential blocker preserves the first useful response without an outcome-gate rewrite loop. |
89+
| Blockers | A legitimate connector/credential blocker remains useful without a prose-grading rewrite loop. |
9390
| Questions | Selecting and submitting a structured option works after a live message repaint. |
9491
| Connectors | A final reply is returned once; pending delivery recovers; interrupted delivery becomes visibly uncertain rather than duplicating. |
9592
| Scheduling | Due workflows and follow-ups remain wakeable obligations across restart and computer sleep. |
96-
| Persona | Stable partner identity/action policy remain unchanged when volatile channel/task context changes. |
93+
| Capability map | Identity and machine/tool/skill facts remain compact and correct when volatile channel/task context changes. |
9794
| Product controls | Skipper uses native inventory/lifecycle tools; terminal paths, file Open/Download, trusted skill search, provider routing, and channel deletion are end-to-end tested. |

docs/USER_GUIDE.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,10 @@ stand in for a news photograph.
193193

194194
## Skills and Learn a new skill
195195

196-
Every resident permanently owns the safe built-in operational arsenal. The
197-
runtime activates only relevant playbooks for the current task.
196+
Every resident permanently owns the built-in operational arsenal. The model
197+
sees a compact inventory, can list the available skills, and loads the full
198+
procedure for one skill only when it chooses to use it. The procedures are not
199+
injected wholesale into every turn.
198200

199201
![Built-in skills and the focused SkillsMD catalog](assets/guide/skills.png)
200202

@@ -206,8 +208,9 @@ repository-specific procedure is unavailable, choose **Learn a new skill** so
206208
Skipper can inspect supplied local sources, web URLs, and notes in a visible
207209
thread and author a workspace-specific procedure.
208210

209-
A question such as “do we have a calendar skill?” is read-only: it must not
210-
install a package, install a skill, or open an interview.
211+
A question such as “do we have a calendar skill?” can be answered directly
212+
from the agent's actual arsenal inventory without installing anything or
213+
opening an interview.
211214

212215
## Gmail
213216

docs/VISION.md

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ resident, which verifies the original end-to-end outcome. The Captain is
2020
involved only for consequential human judgment, credentials that only they can
2121
provide, external authority, or an irreversible commitment.
2222

23-
Prompting is not the only enforcement layer. For operational requests, a
24-
bounded deterministic outcome gate objects when a model tries to stop at a
25-
tutorial, an unevidenced blocker, an unresolved tool failure, or a suggestion
26-
that the Captain call Skipper. It keeps the turn open at most three times,
27-
leaves the objection in the work log, and yields normally for explanatory
28-
questions or a genuine structured human boundary.
23+
The runtime gives the model a compact factual capability map: its identity,
24+
channel, Linux computer and `/workspace`, callable tools, memory, skill arsenal,
25+
and authority scope. It does not inject a behavioral manifesto or grade and
26+
rewrite the model's prose. Tool and server implementations enforce isolation,
27+
ownership, credentials, destructive-action confirmation, and human-only
28+
boundaries.
2929

3030
If work depends on time passing, it becomes a persisted obligation. 1Helm does
3131
not equate a model ending a turn with background execution. Follow-ups and
@@ -34,9 +34,10 @@ and observable completion or failure.
3434

3535
## Durable growth
3636

37-
Residents start with a substantive safe operational arsenal selected by task,
38-
not a handful of generic prompt snippets. Skills define activation, execution,
39-
authority boundaries, recovery, retained state, and verification. Trusted
37+
Residents start with a substantive operational arsenal, not a handful of
38+
generic prompt snippets. The model sees concise skill metadata and chooses when
39+
to load one full procedure. Skills define activation, execution, authority
40+
boundaries, recovery, retained state, and verification. Trusted
4041
external procedures may be discovered and installed automatically only through
4142
bounded, provenance-pinned, scanned, hashed ingestion beneath runtime policy.
4243
Community popularity is not trust.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "1helm",
33
"productName": "1Helm",
4-
"version": "0.0.4",
4+
"version": "0.0.5",
55
"private": true,
66
"type": "module",
77
"description": "1Helm is the self-hosted home for durable AI employees: one resident, one private computer, compounding memory and skills, and Skipper for every boundary.",

public/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,6 @@
3434
</head>
3535
<body class="h-screen w-screen overflow-hidden antialiased">
3636
<div id="app" class="h-full w-full"></div>
37-
<script type="module" src="/bundle.js?v=44190c5b5255"></script>
37+
<script type="module" src="/bundle.js?v=b053ad3e9c4b"></script>
3838
</body>
3939
</html>

scripts/autonomy-benchmark.mjs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ try {
1717
db = database.db;
1818
const { q1, run, now, seed } = database;
1919
const { BUILTIN_SKILLS } = await import("../src/server/builtin-skills.ts");
20-
const { outcomeGateObjection, validateAskUserInput, runtimeToolNamesForChannel } = await import("../src/server/bots.ts");
20+
const { runtimePromptTiersForChannel, validateAskUserInput, runtimeToolNamesForChannel } = await import("../src/server/bots.ts");
2121
const { createWorkflow, setWorkflowStatus, stopWorkflowLoop } = await import("../src/server/workflows.ts");
2222
const { verifyAuditChain } = await import("../src/server/audit.ts");
2323

@@ -45,12 +45,13 @@ try {
4545
});
4646
record("structured_human_boundary", !routine.valid && realBoundary.valid, { routine, real_boundary: realBoundary });
4747

48-
const handHolding = outcomeGateObjection({ request: "Install and verify the CLI", response: "You can run npm install yourself." });
49-
const directBoundary = outcomeGateObjection({ request: "Deploy the site", response: "Skipper completed the host change.", successfulTools: ["call_skipper"] });
50-
record("bounded_outcome_gate", /rejected an operational reply/i.test(handHolding) && directBoundary === "", {
51-
hand_holding_objection: handHolding,
52-
completed_boundary_objection: directBoundary,
53-
rejection_budget: 3,
48+
const prompt = runtimePromptTiersForChannel(botId, channelId, false, "Install and verify the CLI");
49+
const promptLength = prompt.identity.length + prompt.operating.length + prompt.context.length;
50+
record("compact_capability_map", promptLength < 2_000 && /isolated persistent Linux computer/i.test(prompt.operating) && /skill-arsenal count=/i.test(prompt.context) && !/active-skill-playbooks|### /.test(prompt.context), {
51+
characters: promptLength,
52+
has_linux_computer: /isolated persistent Linux computer/i.test(prompt.operating),
53+
has_skill_inventory: /skill-arsenal count=/i.test(prompt.context),
54+
injects_full_playbooks: /active-skill-playbooks|### /.test(prompt.context),
5455
});
5556

5657
const toolNames = runtimeToolNamesForChannel(botId, channelId);
@@ -89,7 +90,7 @@ const report = {
8990
validates: [
9091
"shipped built-in playbook completeness",
9192
"structured human-blocker validation",
92-
"bounded runtime objection to operational hand-holding",
93+
"compact factual capability-map delivery",
9394
"resident autonomy tool availability",
9495
"wakeable recurring-work persistence",
9596
"audit-chain integrity for the executed fixture",

src/client/settings.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,11 +169,11 @@ function skillsPanel(): HTMLElement {
169169
h("div", { class: "flex flex-col gap-3 rounded-lg border border-accent/30 bg-accent-soft p-4 sm:flex-row sm:items-center sm:justify-between" },
170170
h("div", {}, h("h3", { class: "font-semibold text-fg" }, "Teach 1Helm from your own material"), h("p", { class: "mt-1 text-sm leading-5 text-muted" }, "Give Skipper a folder or file, a web page, pasted notes, or any combination. It will inspect the sources and author one reusable workspace skill in a visible #main thread.")),
171171
h("button", { class: "btn-primary shrink-0 text-sm", onclick: learnSkillDialog }, icon("sparkles", 15), "Learn a new skill")),
172-
h("p", { class: "text-sm leading-6 text-muted" }, "Every resident permanently owns the safe built-in operational library. 1Helm activates only the playbooks relevant to the current task and can search the focused SkillsMD catalog for ready-to-install GitHub-backed skills."));
172+
h("p", { class: "text-sm leading-6 text-muted" }, "Every resident permanently owns the built-in operational library. Agents see a compact inventory and load a full procedure only when they choose that skill. You can also search SkillsMD for GitHub-backed skills."));
173173
void api<{ skills: Array<Skill & { arsenal_locked?: number; arsenal_reason?: string; assigned_agents?: number }>; catalog: SkillCatalogStatus }>("/api/skills").then(({ skills, catalog }) => {
174174
wrap.append(skillCatalogBrowser(catalog));
175175
const shipped = h("section", { class: "space-y-3" },
176-
h("div", { class: "flex flex-wrap items-end justify-between gap-2" }, h("div", {}, h("h3", { class: "font-display text-lg text-fg" }, "Installed arsenal"), h("p", { class: "text-sm text-muted" }, `${skills.length} complete playbooks · permanently available · selected automatically per task`))));
176+
h("div", { class: "flex flex-wrap items-end justify-between gap-2" }, h("div", {}, h("h3", { class: "font-display text-lg text-fg" }, "Installed arsenal"), h("p", { class: "text-sm text-muted" }, `${skills.length} complete procedures · permanently available · loaded on demand`))));
177177
for (const skill of skills) shipped.append(h("article", { class: `card p-4 ${skill.arsenal_locked ? "opacity-80" : ""}` },
178178
h("div", { class: "flex flex-wrap items-center gap-2" },
179179
h("h3", { class: "font-semibold text-fg" }, skill.name),

0 commit comments

Comments
 (0)