Files

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-staff definition (the chief instance) isn't END_PROTECTED. Its delete refuses organization-instance-referenced, because it is launch.by, and that is unchanged.
  • So T3 and M2 use an assistant instance. 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>.md is 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 add refuses 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) and checkDelete(..., actor) take the actor, and set op delete passes its actor.
    • read(business, actor). Its endProtected is protectedRefusal(...) !== null.
    • commit's and fire's returned listings read with the writer's actor.
    • The comment at :28-31 is rewritten.
  • packages/bus/src/runtime.mjs: instances and instances.check pass 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 endProtected for the human's add is now false.
    • 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.

Mutants for the gate (exact-once replacements, runb8 shape)

  • M1 (instance-settings.mjs): if (actor === document.human) return null; becomes return 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; with if (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, becomes endProtected: 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) becomes instances.checkDelete(id,args.instance). The kill is creative.test "row 256 T6".
  • M4b (instance-settings.mjs): planDelete(old, instance, actor), { revision becomes planDelete(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 1e761962a onto 236's landing bd5f11ded, and r3 f12441d4f onto 274's landing 0165be266. 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.

Review and landing

  • Webby approved manifest round 1 in webby-0129 (REVIEW-r3.md, 00502a740). The approval was recorded at rev 3185, comment c30519.
  • Sage landed f12441d4f as a fast-forward at 10:57Z. #1761 is closed with comment c30520.