Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 15 additions & 13 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Context is finite. **Do not** open every manners file into the active window.
| Priority | Open | Job | Skip when |
|----------|------|-----|-----------|
| 1 | This file (`AGENTS.md`) | Silico spine: first-ship stages, silico CLI, plate, host/metal DoD | — |
| 2 | `bedside.toml` + contract path it names | Normative portable manners (nine principles) | Already summarized below and you are not changing manners |
| 2 | `bedside.toml` + contract path it names | Normative portable manners (eleven tenets) | Already summarized below and you are not changing manners |
| 3 | `BEDSIDE.md` | **Metal domain pack only** (COM, first-flash, deploy identity) | Already in first-ship metal sections of this file for the current step |
| 4 | One topic under `silico/knowledge/` | Board/host caps (ESP32 audio, first-flash notes) | Open **only** the topic you need; never dump the whole tree |
| — | `third_party/bedside/README.md`, vendored stub `AGENTS.md`/`BEDSIDE.md`, full `eval/` docs | Upstream product / scoring | Almost always — use `bedside doctor|eval|ask|step` instead of loading prose |
Expand All @@ -77,10 +77,10 @@ Context is finite. **Do not** open every manners file into the active window.

| Topic | Canonical owner | Silico may hold |
|-------|-----------------|-----------------|
| Nine principles, anti-patterns, portable persona | **tig/bedside** `contract/` | One short summary + pin (no kinder soft-fork) |
| Eleven tenets, anti-patterns, portable persona | **tig/bedside** `contract/` | One short summary + pin (no kinder soft-fork) |
| Operator gates (`ask` / `step`) | **tig/bedside** surface + CLI | One short pointer here; agent host pickers OK if same contract |
| first-ship stages, silico verbs, plate, mpy-cross, deploy manifest | **silico AGENTS** + code | Not bedside |
| Operator language (first prompt orient, first-use term defs, big-step why/where) | **silico AGENTS** + [lexicon](specs/lexicon.md) | Not bedside principles; domain on top of contract |
| Operator language (first prompt orient, first-use term defs, big-step why/where) | **silico AGENTS** + [lexicon](specs/lexicon.md) | Not bedside tenets; domain on top of contract |
| COM / first-flash (UF2 **or** esptool) / board identity / metal deploy | **silico BEDSIDE.md** + `silico/knowledge/first-flash.md` + CLI | AGENTS first-ship metal sections may point here; avoid full restatement |
| GCU `bedside.toml` pin (sibling paths to silico vendor) | **plate** ships it; GCU keeps it | Do not leave GCU without a pin and then invent a prose path |
| Board/host capability notes (audio, bridges, …) | **silico/knowledge/** (self-improving) | Product must not soft-fork; agents **append** host truths here |
Expand Down Expand Up @@ -160,22 +160,24 @@ We follow **[Bedside](https://github.com/tig/bedside)**. Load rules per **Agent
Summary (full contract is normative; do not soft-fork):

1. Assume low ops literacy, high judgment.
2. No wall of unexplained shell.
2. No walls of shell or choice.
3. Prefer doing over instructing — **run checks and installs yourself; do not paste command walls.** This is **not** a license to mutate, commit, push, scaffold, or flash past an open or declined operator gate.
4. Human acts: explicit, one step, dumb-simple.
5. Own first-time setup from zero.
6. Own scary surfaces in plain language.
7. Confirm in their words before irreversible or physical steps.
8. Never leave them at a cliff.
9. Teach only what the update path requires.
4. No silent work — long or delegated work shows progress, an estimate, or per-worker status.
5. Human acts: explicit, one step, dumb-simple.
6. Own first-time setup from zero.
7. Own scary surfaces in plain language.
8. Confirm in their words before irreversible or physical steps.
9. Never leave them at a cliff.
10. Teach only what tomorrow / the update path requires.
11. Compound what you learn — with the operator's go-ahead, file friction upstream.

Silico domain (metal / host path) details: **BEDSIDE.md** and first-ship stages below. Host tools that encode manners: `silico welcome`, `silico doctor`, `wait-device`, `inspect`, `deploy --yes`, plus Bedside operator gates below.

Prove manners: `bedside doctor` and `bedside eval` (vendored fixtures include `operator-gate-ask` / `operator-gate-step`). On **first ship Stage 0**, a missing GCU pin does **not** block `silico welcome` / 0a. Fix the pin **after go** (plate ships `bedside.toml` → sibling silico vendor; or `pip install -e` the CLI). Do **not** pre-go `bedside init` / full vendor so doctor is green before orientation.

### Operator language (silico domain — not a second contract)

These rules sit **on top of** Bedside for this product. They do not soften or replace the nine principles. Phrase book: [specs/lexicon.md](specs/lexicon.md).
These rules sit **on top of** Bedside for this product. They do not soften or replace the eleven tenets. Phrase book: [specs/lexicon.md](specs/lexicon.md).

#### First prompt orients the operator

Expand Down Expand Up @@ -322,7 +324,7 @@ Nothing in this file licenses: *system said declined → I still committed, push

Non-interactive / CI: `--answer` on `ask`, `--confirm` / `--decline` / `--no-wait` on `step` (see `bedside ask --help`).

**Choice walls are contract violations** (Bedside principle 2 / 4), including at stage boundaries. Do **not** end a status message with a free-text numbered menu such as:
**Choice walls are contract violations** (Bedside tenets 2 / 5), including at stage boundaries. Do **not** end a status message with a free-text numbered menu such as:

> Say when you want to:
> 1. Review/merge the PR
Expand Down Expand Up @@ -508,7 +510,7 @@ Also called **[compound](specs/lexicon.md#compound)** (lexicon name for this ten
- Bedside: gh issue create -R tig/bedside ...
- Silico: gh issue create -R tig/silico ...
- Good issues: what you were doing, what went wrong, recovery, proposed change.
4. **Do not soft-fork Bedside principles** into a kinder local AGENTS section. Pin the contract; improve upstream.
4. **Do not soft-fork Bedside tenets** into a kinder local AGENTS section. Pin the contract; improve upstream.
5. **Do not invent a parallel spine** in the GCU to avoid filing upstream.

Leaving tribal recovery in chat only violates **Make it better than you found it** / fails to **compound**.
Expand Down
6 changes: 3 additions & 3 deletions BEDSIDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# BEDSIDE.md (silico metal domain notes only)

This file is **not** a fork of the Bedside principles.
This file is **not** a fork of the Bedside tenets.

| Need | Open once |
|------|-----------|
Expand All @@ -16,7 +16,7 @@ This file is **not** a fork of the Bedside principles.

## Operator language (pointer)

Plain-language orientation, **first-use term definitions**, and **why + where-we-are** on big steps live in root **AGENTS.md** → *Operator language (silico domain)*. This file stays metal glossary only — do not soft-fork Bedside principles here.
Plain-language orientation, **first-use term definitions**, and **why + where-we-are** on big steps live in root **AGENTS.md** → *Operator language (silico domain)*. This file stays metal glossary only — do not soft-fork Bedside tenets here.

When prompting plug-USB, first-flash, confirm-board, or confirm-deploy: always state **why** the step is needed and **where** first ship is (host done vs metal still open).

Expand Down Expand Up @@ -87,5 +87,5 @@ Good: host gate green; device `FW_VERSION` matches host; **operator-confirmed pr

## Customer 0 → tig/bedside

Portable manners gaps (contract, surface, `bedside` CLI, eval): file **tig/bedside**, do not soft-fork principles here.
Portable manners gaps (contract, surface, `bedside` CLI, eval): file **tig/bedside**, do not soft-fork tenets here.
Metal/host-spine gaps: fix **tig/silico** (including `silico/knowledge/` for board caps).
2 changes: 1 addition & 1 deletion bedside.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# Refresh: replace third_party/bedside from a new commit; update pin below + VENDOR.md

# Vendored ask semantics: valid non-recommended choice is exit 0 (silico#84); pin is local tree SHA note.
# Upstream base: v0.2.0 / c4c0381. Overlay documented in third_party/bedside/VENDOR.md.
pin = "silico-local-ask-explicit-yes-0"
contract_path = "third_party/bedside/contract"
surface_path = "third_party/bedside/surface"
eval_path = "third_party/bedside/eval"
domain_notes = "BEDSIDE.md"
agents_stub = true

2 changes: 1 addition & 1 deletion silico/plates/gcu-c/BEDSIDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# BEDSIDE.md (GCU domain notes only)

Portable manners (nine principles, ask/step) live in the Bedside **contract**
Portable manners (eleven tenets, ask/step) live in the Bedside **contract**
pinned by `bedside.toml`. Do not soft-fork them here.

**Metal / host path for this C / ESP-IDF product:** follow the Silico spine
Expand Down
3 changes: 2 additions & 1 deletion silico/plates/gcu-c/bedside.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
# If Silico lives elsewhere, adjust the three paths below (or set absolute paths).
# Keep pin in sync with the silico checkout's bedside.toml when you re-vendor.

pin = "868e3b8"
# Match silico root bedside.toml (v0.2.0 vendor + silico#84 ask overlay).
pin = "silico-local-ask-explicit-yes-0"
contract_path = "../silico/third_party/bedside/contract"
surface_path = "../silico/third_party/bedside/surface"
eval_path = "../silico/third_party/bedside/eval"
Expand Down
2 changes: 1 addition & 1 deletion silico/plates/gcu/BEDSIDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# BEDSIDE.md (GCU domain notes only)

Portable manners (nine principles, ask/step) live in the Bedside **contract**
Portable manners (eleven tenets, ask/step) live in the Bedside **contract**
pinned by `bedside.toml`. Do not soft-fork them here.

**Metal / host path for this product:** follow the Silico spine
Expand Down
3 changes: 2 additions & 1 deletion silico/plates/gcu/bedside.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
# If Silico lives elsewhere, adjust the three paths below (or set absolute paths).
# Keep pin in sync with the silico checkout's bedside.toml when you re-vendor.

pin = "868e3b8"
# Match silico root bedside.toml (v0.2.0 vendor + silico#84 ask overlay).
pin = "silico-local-ask-explicit-yes-0"
contract_path = "../silico/third_party/bedside/contract"
surface_path = "../silico/third_party/bedside/surface"
eval_path = "../silico/third_party/bedside/eval"
Expand Down
2 changes: 1 addition & 1 deletion specs/lexicon.md
Original file line number Diff line number Diff line change
Expand Up @@ -167,7 +167,7 @@ See also: [host-first](#host-first), [metal](#metal).

Also **bedside manners.** Assume low ops literacy; do the work when you can; one step at a time for physical/browser steps; never dump a wall of unexplained shell. Violating this violates Agents operate the host path.

In **Silico**, agent docs add domain operator language on top of Bedside (not a fork of the nine principles): (1) the **first prompt** reminds what Silico is and summarizes **this** [GCU](#gcu); (2) Silico terms ([GCU](#gcu), [host](#host), [plate](#plate), [scaffold](#scaffold), [first ship](#first-ship), [stage](#stage), [gate](#gate), [host gate](#host-gate), [metal](#metal), [product face](#product-face), [pin](#pin), …) are **defined on first use** and spoken as their **canonical lexicon names** (no invented short forms such as bare “face” for product face); (3) big human steps include **why** and **where** on the first-ship map. Canonical rules: Silico root `AGENTS.md` → Operator language.
In **Silico**, agent docs add domain operator language on top of Bedside (not a fork of the eleven tenets): (1) the **first prompt** reminds what Silico is and summarizes **this** [GCU](#gcu); (2) Silico terms ([GCU](#gcu), [host](#host), [plate](#plate), [scaffold](#scaffold), [first ship](#first-ship), [stage](#stage), [gate](#gate), [host gate](#host-gate), [metal](#metal), [product face](#product-face), [pin](#pin), …) are **defined on first use** and spoken as their **canonical lexicon names** (no invented short forms such as bare “face” for product face); (3) big human steps include **why** and **where** on the first-ship map. Canonical rules: Silico root `AGENTS.md` → Operator language.

See also: [operator](#operator), [Grady](#grady).

Expand Down
24 changes: 13 additions & 11 deletions third_party/bedside/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,35 +13,37 @@ Human index: [README.md](README.md). Writing style: follow Tig voice mechanics (
We follow [Bedside](https://github.com/tig/bedside): manners for agents
operating tools for smart, high-judgment non-experts.

- Pin: see `bedside.toml` (do not soft-fork principles).
- Pin: see `bedside.toml` (do not soft-fork tenets).
- Normative contract path: `contract`
- Human gates: call `bedside ask` / `bedside step` (or the host structured choice UI).

Summary (full contract is normative):

1. Assume low ops literacy, high judgment.
2. No wall of unexplained shell (or free-text choice walls).
2. No walls of shell or choice.
3. Prefer doing over instructing.
4. Human acts: explicit, one step, dumb-simple.
5. Own first-time setup from zero.
6. Own scary surfaces in plain language.
7. Confirm in their words before irreversible or physical steps.
8. Never leave them at a cliff.
9. Teach only what Day 2 requires.
4. No silent work.
5. Human acts are explicit and dumb-simple.
6. Own first-time setup from zero.
7. Own scary surfaces in plain language.
8. Confirm what they can see, in their words.
9. Never leave them at a cliff.
10. Teach only what tomorrow requires.
11. Compound what you learn.

### Domain notes (this repo only)

- First-run: `pip install -e ".[dev]"` then `bedside doctor` and `bedside eval`.
- Scary surfaces: none physical; prefer doing install and tests yourself.
- Day-2 leave-behind: `pytest -q` and `bedside eval` (one proof path for manners).
- Leave-behind: `pytest -q` and `bedside eval` (one proof path for manners).

## CLI architecture

- `bedside.cli`: argparse adapter only.
- `bedside.commands.*`: UI-agnostic command cores (future tui-cs/cli should call these).
- `bedside.eval_engine`: rule-based R1-R9 scoring.
- `bedside.eval_engine`: rule-based R1-R11 scoring.
- Operator gates: `ask` (structured choice) and `step` (one human act + confirm).
- Exit codes: 0 ok, 10 human-needed / non-recommended ask / declined step, 20 manners fail, 30 setup error.
- Exit codes (silico#84 overlay): 0 any valid ask choice or confirmed step; 10 still needed / step declined; 20 manners fail; 30 setup error. Branch ask on `choice=` / `matched_recommended`, not on exit 0 alone.

## Definition of done

Expand Down
4 changes: 2 additions & 2 deletions third_party/bedside/BEDSIDE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# BEDSIDE.md (domain notes only)

This file is **not** a fork of the Bedside principles.
This file is **not** a fork of the Bedside tenets.

Pin and paths: see `bedside.toml`. Normative rules live at `contract/`.

Expand All @@ -9,4 +9,4 @@ Pin and paths: see `bedside.toml`. Normative rules live at `contract/`.
- Operator persona: smart, high-judgment; may not know Python packaging or pytest.
- First-run from zero: install Python 3.11+, `pip install -e ".[dev]"`, run `bedside doctor`, run `bedside eval`.
- Scary surfaces: none for metal; explain venv only if install fails.
- Day-2 leave-behind: `pytest -q` and `bedside eval` (what good looks like: all fixtures OK).
- Leave-behind: `pytest -q` and `bedside eval` (what good looks like: all fixtures OK).
46 changes: 46 additions & 0 deletions third_party/bedside/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Changelog

## 0.2.0

Breaking. Vendored consumers should read the migration notes before re-vendoring.

### Breaking

1. Rubric ids renumbered. Old `R4` through `R9` are now `R5` through `R10`. `R4` and `R11` are new. The invariant that rule `Rn` scores tenet `n` still holds.
2. `meta.toml` key `principles` is now `tenets`. A fixture still carrying the old key fails with exit 30 rather than being ignored, because an unrecognized key leaves the focus list empty, and an empty focus list means "score against every tenet".
3. Unknown tenet ids in `meta.toml` are rejected. Previously an id such as `R12` sat in the focus list, was never scored, and let a failing transcript report ok.
4. `bedside eval --json` emits `tenets` instead of `principles`.
5. Python API renamed with no aliases: `PRINCIPLE_IDS` to `TENET_IDS`, `ScoreReport.principle_pass` to `.tenet_pass`, `FixtureMeta.principles` to `.tenets`, `overall_from_principles` to `overall_from_tenets`.

### Migration

Renaming the key alone is not enough, because the ids moved in the same release. Remap first, then rename:

```text
principles = ["R4"] -> tenets = ["R5"] # explicit human acts
principles = ["R5"] -> tenets = ["R6"] # first-run owned
principles = ["R6"] -> tenets = ["R7"] # scary surfaces
principles = ["R7"] -> tenets = ["R8"] # confirm in their words
principles = ["R8"] -> tenets = ["R9"] # no cliff
principles = ["R9"] -> tenets = ["R10"] # leave-behind
```

`R1` through `R3` are unchanged. `R4` (no silent work) and `R11` (compound, but ask first) are new and have no predecessor.

### Added

1. Tenet 4, "No silent work": long or delegated work shows progress, an estimate, or per-worker status. Scored as `R4`.
2. Tenet 11, "Compound what you learn": notice friction, and with the operator's go-ahead file it upstream. Scored as `R11`, consent half only; whether the agent noticed anything worth filing stays judge-only.
3. Surface pattern for progress and status, including the five-second threshold.
4. Fixtures: `known-bad/silent-work`, `known-good/visible-progress`, `known-bad/filed-without-asking`, `known-good/compound-with-consent`.

### Changed

1. Wording pass across all tenets: present tense, one idea each, no jargon needing a glossary.
2. "Day 2" retired. The tenet is now "Teach only what tomorrow requires" and the artifact is the "leave-behind".
3. "Principles" is "tenets" throughout the prose.
4. The optional scorecard is the first-run scorecard and gained an item for status visibility.

## 0.1.2

Initial published CLI: `init`, `doctor`, `eval`, `ask`, `step`. Three layer artifacts, vendor-copy, multi-root fixtures, rule-based `R1` through `R9`.
Loading
Loading