Status
Upstream is merged: tig/bedside#11, merge commit c4c0381. Released as v0.2.0. This is ready to work on.
third_party/bedside here is pinned at 868e3b8, which predates all of it.
Full migration notes upstream: CHANGELOG.md.
Read this first: renaming the key alone is wrong
The meta.toml focus key changed from principles to tenets, and the rubric ids moved in the same release. A mechanical rename re-points every fixture at a different tenet, silently. Remap first:
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-R3 unchanged. R4 (no silent work) and R11 (compound, but ask first) are new. The invariant Rn scores tenet n holds throughout.
Good news for silico specifically: there are currently no meta.toml files outside third_party/bedside, so there is nothing to hand-migrate. The nine vendored fixtures are replaced wholesale by the re-vendor. The remapping table matters only if domain fixtures get added before this lands.
Blocker to decide before re-vendoring
third_party/bedside/src/bedside/commands/ask_cmd.py is not a clean copy of upstream. It carries a local behavior change from #84: any valid choice exits 0, where upstream has code = OK if matched else HUMAN_NEEDED. bedside.toml records this as pin = "silico-local-ask-explicit-yes-0".
A straight re-vendor silently reverts it. The symptom would surface later as an agent treating a deliberate non-recommended choice as a decline.
Decide first:
Stale references in silico's own prose
Line numbers as of 7dd1b5a:
What is new upstream that silico may care about
Tenet 4, "No silent work" — long or delegated work shows progress, an estimate, or per-worker status; subagents and background jobs report what each is doing. Directly relevant to long flashes, deploys, and multi-device work. The five-second threshold for a progress indicator is in surface/.
Tenet 11, "Compound what you learn" — notice friction, and with the operator's go-ahead file it upstream. This formalizes the customer-0 doctrine already in third_party/bedside/VENDOR.md, including the consent gate.
Also: "Day 2" is retired (now "tomorrow" / "leave-behind"), and the optional scorecard is now the first-run scorecard with an added status-visibility item.
Other breaking changes
bedside eval --json emits tenets instead of principles. Anything parsing that output needs updating.
- Python API renamed with no aliases:
TENET_IDS, ScoreReport.tenet_pass, FixtureMeta.tenets, overall_from_tenets.
- Unknown tenet ids in
meta.toml are now rejected rather than silently unscored.
Suggested order
- Decide the
ask_cmd.py question above, so the re-vendor is not the thing that loses the patch.
- Re-vendor
third_party/bedside from c4c0381 (or the v0.2.0 tag once cut).
- Update
VENDOR.md and the bedside.toml pin.
- Fix the stale references listed above.
- Run
bedside doctor and bedside eval; both should be green.
Status
Upstream is merged: tig/bedside#11, merge commit
c4c0381. Released as v0.2.0. This is ready to work on.third_party/bedsidehere is pinned at868e3b8, which predates all of it.Full migration notes upstream: CHANGELOG.md.
Read this first: renaming the key alone is wrong
The
meta.tomlfocus key changed fromprinciplestotenets, and the rubric ids moved in the same release. A mechanical rename re-points every fixture at a different tenet, silently. Remap first:R1-R3unchanged.R4(no silent work) andR11(compound, but ask first) are new. The invariantRnscores tenetnholds throughout.Good news for silico specifically: there are currently no
meta.tomlfiles outsidethird_party/bedside, so there is nothing to hand-migrate. The nine vendored fixtures are replaced wholesale by the re-vendor. The remapping table matters only if domain fixtures get added before this lands.Blocker to decide before re-vendoring
third_party/bedside/src/bedside/commands/ask_cmd.pyis not a clean copy of upstream. It carries a local behavior change from #84: any valid choice exits 0, where upstream hascode = OK if matched else HUMAN_NEEDED.bedside.tomlrecords this aspin = "silico-local-ask-explicit-yes-0".A straight re-vendor silently reverts it. The symptom would surface later as an agent treating a deliberate non-recommended choice as a decline.
Decide first:
Stale references in silico's own prose
Line numbers as of
7dd1b5a:AGENTS.md:70— "Normative portable manners (nine principles)" → eleven tenets.AGENTS.md:80— "Nine principles, anti-patterns, portable persona".AGENTS.md:178— "They do not soften or replace the nine principles."AGENTS.md:325— "Choice walls are contract violations (Bedside principle 2 / 4)". This one becomes actively wrong, not merely dated: tenet 4 is now "no silent work", and the human-acts tenet is now 5.AGENTS.md:511,BEDSIDE.md:3,BEDSIDE.md:19,BEDSIDE.md:90— "principles" → "tenets".What is new upstream that silico may care about
Tenet 4, "No silent work" — long or delegated work shows progress, an estimate, or per-worker status; subagents and background jobs report what each is doing. Directly relevant to long flashes, deploys, and multi-device work. The five-second threshold for a progress indicator is in
surface/.Tenet 11, "Compound what you learn" — notice friction, and with the operator's go-ahead file it upstream. This formalizes the customer-0 doctrine already in
third_party/bedside/VENDOR.md, including the consent gate.Also: "Day 2" is retired (now "tomorrow" / "leave-behind"), and the optional scorecard is now the first-run scorecard with an added status-visibility item.
Other breaking changes
bedside eval --jsonemitstenetsinstead ofprinciples. Anything parsing that output needs updating.TENET_IDS,ScoreReport.tenet_pass,FixtureMeta.tenets,overall_from_tenets.meta.tomlare now rejected rather than silently unscored.Suggested order
ask_cmd.pyquestion above, so the re-vendor is not the thing that loses the patch.third_party/bedsidefromc4c0381(or thev0.2.0tag once cut).VENDOR.mdand thebedside.tomlpin.bedside doctorandbedside eval; both should be green.