6.9 KiB
Row 256 (#1761) build notes (append only)
2026-10-22 b1 (Honker)
Design d2 8c50481d2 was accepted by Webby (webby-0123). The code is on honker/row256 from be2b008cc.
Correction to the design: the non-creative END_PROTECTED definition is assistant
- DESIGN.md (d1 and d2) says "the chief of staff" for the END_PROTECTED definition that isn't creative,
following the brief's wording. In the code that definition is
assistant:THREAD_DEFINITION = "assistant"(vocabulary.mjs:203).END_PROTECTED = THREAD_DEFINITIONS = [assistant, ...CREATIVE_DEFINITIONS].
- The
chief-of-staffdefinition (thechiefinstance) isn't END_PROTECTED. Its delete refusesorganization-instance-referenced, because it is launch.by, and that is unchanged. - So T3 and M2 use an
assistantinstance. The code is the same either way: protectedRefusal refuses every END_PROTECTED definition that isn't creative. - DESIGN.md isn't edited after approval; this note is the record.
Persona file on delete (brief item 4)
<configDir>/personas/<business>/<instance>.mdis left in place. Nothing removes it, so there is no new open and no O_NOFOLLOW test.- Nothing reads it once the entry is gone. bundle.mjs reads it only for a launched creative instance,
and the name is retired, so
addrefuses it (instance-settings.mjs, organization-instance-retired) and no later instance picks up the old persona. - The human removes the file by hand if they want it gone.
What changed
- packages/business/src/instance-settings.mjs:
- New
protectedRefusal(document, instance, actor). deleteRefusal(..., actor),planDelete(..., actor)andcheckDelete(..., actor)take the actor, and set op delete passes its actor.read(business, actor). ItsendProtectedisprotectedRefusal(...) !== null.- commit's and fire's returned listings read with the writer's actor.
- The comment at :28-31 is rewritten.
- New
- packages/bus/src/runtime.mjs:
instancesandinstances.checkpass the actor. There is no broker change. - packages/webui/src/public/agents.js: comment only.
- docs/plans/DEFERRED.md: a closing line on the creative-delete entry.
- Tests:
- business instance-settings.test: T1-T3 and T5 in one test, T4 in its own test, and the row 213
test's
endProtectedfor the human's add is nowfalse. - business lifecycle-settings.test: checkDelete with the actor; fire unchanged.
- bus creative.test: T6 on the real runtime.
- webui agents-browser.test: T7/T8. The comment on the existing assertion is reworded.
- business instance-settings.test: T1-T3 and T5 in one test, T4 in its own test, and the row 213
test's
Mutants for the gate (exact-once replacements, runb8 shape)
- M1 (instance-settings.mjs):
if (actor === document.human) return null;becomesreturn null;. The kill is instance-settings.test "row 256 T1-T3". - M2 (instance-settings.mjs): move the human check ahead of the creative one. Replace
if (!CREATIVE_DEFINITIONS.includes(definition)) return { code: "organization-definition-refused" };\n if (actor === document.human) return null;withif (actor === document.human) return null;\n if (!CREATIVE_DEFINITIONS.includes(definition)) return { code: "organization-definition-refused" };. The kill is "row 256 T1-T3" (T3). - M3 (instance-settings.mjs):
endProtected: protectedRefusal(document, name, actor) !== null,becomesendProtected: END_PROTECTED.includes(entry.definition),. The kills are "row 256 T1-T3" (T5) and bus creative.test T6. - M4a (runtime.mjs):
instances.checkDelete(id,args.instance,actor)becomesinstances.checkDelete(id,args.instance). The kill is creative.test "row 256 T6". - M4b (instance-settings.mjs):
planDelete(old, instance, actor), { revisionbecomesplanDelete(old, instance), { revision. The kills are "row 256 T1-T3" (T1) and creative.test T6.
Tests not run
None of these have run. They wait for Sage's CLEAR, after the rebase onto 236.
2026-10-22 b2 (Honker): Webby's N1 (webby-0124)
- Two comments said the chief of staff where they mean the assistant. Both now name the assistant:
- instance-settings.mjs:30, "The assistant is refused for every actor, the human included."
- agents.js:46, "true for the assistant and on the tester's."
- Comment-only. The mutant strings above are unchanged and still occur once.
2026-10-22 gate results (Honker, doc-only after landing)
This entry was added after landing. It records the gate on f12441d4f, which was the candidate, with manifest-r3
01eb75aa9d51367337f4eda855ad5271c5e22b14650aa5a2130333d275a7ab90.
Rebases
- r2
1e761962aonto 236's landingbd5f11ded, and r3f12441d4fonto 274's landing0165be266. In both range-diffs, every commit is=and nothing conflicted. - The landing patch-id, from
git diff BASE TIP | git patch-id --stable, is b28e63746f8c1bda1c49c021447c61f2df6ea0d0 on both bases. - Before that, Sage granted an early slot on
1e761962a(sage-2567), limited to steps 1-2. It was an early signal, not gate evidence: 31/0/0, and M1-M4b were all killed.
Full gate (Sage's slot, sage-2586, 10:33Z to 10:50Z)
-
The gate tested a merge of the candidate onto origin/refactor
0165be266, tree ced6bf5f8, which matches the candidate's own tree. The DEFERRED.md fallback did not fire. -
Touched test files, each run whole: instance-settings, lifecycle-settings, bus creative, and webui agents-browser. 31 pass, 0 fail, 0 skip.
-
Mutants: M1, M2, M3 (on instance-settings and on creative), M4a, and M4b (on instance-settings and on creative). All were killed by the assertions listed above. Every restore matched the original blob.
-
Package suites, all 18 at rc=0, 3757 pass, 0 fail:
Package Pass business 231 bus 788 cli 832 control-board 124 conversation 183 discord 192 harness 151 ledger 89 library 83 mosaic 69 plugins 111 processing-control 62 project 41 queue 156 runs 43 seat 167 tasks 100 webui 335 -
scripts/test-*.sh, all 10 at rc=0:
Script Pass auth 15 conductor 17 config 31 discord 81 extension-package 18 foundation 44 land-work 86 queue 28 release 14 task 91 -
Skips: 4, none on a touched path.
- The webui editor rebuild byte check, because esbuild 0.28.1 is installed and the check needs 0.28.2.
- test-queue verify and render --check, because the gate worktree is not the canonical root.
- test-task live provider cases, counted twice. Row 244 makes no provider call in the gate.
-
Leftovers: none.
-
Evidence is under /mnt/storage/scratch/honker-t/r256/: run-20261022T103355Z, gate-20261022T103414Z, and console-r3.txt.