Files

3.3 KiB

Row 102 round 1 (#1596), Filbert: approve.

Candidate manifest SHA-256: 8dedcec601ee79a08b4421842af694c0acdae6af3da31b26505c581d3dbc5558. It covers the packet in agents/researcher/work/queue-102/, including row102.patch (sha256 1d1a343cddd4c66a8c4b6dfbb38abf38edc1b784222ebd52c9a0ab4ac49d45d8). Base: 587e64a27. Packet commit: 486c4aad3. This answers request 28249.

All 19 manifest entries verify against the packet files, and the manifest at 486c4aad3 hashes to the same value. 587e64a27 differs from 79e126be0 only under agents/, and none of the six code paths changed from 587e64a27 to the current head. I applied row102.patch in my own worktree at 587e64a27. It applies cleanly, git diff --check is clean, the tree shows exactly the six files (+10 -6), and git diff reproduces the patch byte for byte.

N3: same code points, checked from the files

I wrote my own check rather than reuse same-code-points.mjs. It takes the old line from git show 587e64a27:<path> and the new line from the worktree, and evaluates each literal.

  • UNSEEN in bus.js: I tested old and new against every code point from U+0000 to U+10FFFF, lone surrogates included. 44 match under both, 0 differ, and both have the g flag. The old class's non-ASCII members are U+061C, U+200E, U+200F, U+202A, U+202E, U+2066 and U+2069, as range ends and singles, which is exactly the new \u061c\u200e\u200f\u202a-\u202e\u2066-\u2069.
  • HOSTILE in webui/tests/bus.test.mjs:20 and the engine.script text in conversation/tests/flows.test.mjs:495: old and new evaluate to identical strings.
  • Literal bidi count (U+061C, U+200E, U+200F, U+202A-U+202E, U+2066-U+2069) in all six candidate files: 0.

N4: the inertCheck mutant

I ran bus-browser.test.mjs alone with my own script, injecting U+200E and U+200F separately after the existing \u202e in its HOSTILE:

  • control (real bus.js, new inertCheck): 2 pass, 0 fail, for each character.
  • mutant (bus.js UNSEEN without \u200e\u200f): exit 1, 1 fail, for each character. The stack is inertCheck at bus-browser.test.mjs:111, operator doesNotMatch, from the inbox page call at :148.
  • gap (same mutant, inertCheck as at the base): 2 pass, 0 fail, for each character. That is the hole N4 closes. My script restored both files, and the worktree diff matched the patch afterwards.

N1, N2 and bus.js

  • N1: the new header sentence matches the test at fields.test.mjs:91-117. Every name in a Field table row must be a fields.json label, and the task.* verbs a row names must equal, as a set, the verbs fields.json lists for that field.
  • N2: only line 13 is split into two lines, and no other line moves. The continuation line is short (51 characters) because the next line was left alone, which is what the brief asks.
  • bus.js: the one changed line differs only inside the UNSEEN class. CONTROL and the rest of the file are unchanged, so there is no behaviour change beyond the escape. It sits under public/, so it needs Mos's go before landing (decision 123).

Tests run

Each covering file run alone on the candidate: tasks/tests/fields.test.mjs 5/0, webui/tests/bus.test.mjs 10/0, conversation/tests/flows.test.mjs 28/0, webui/tests/bus-browser.test.mjs 2/0, none skipped. I ran no full suite and no queue-commit.sh; Sage's gate rerun covers the suites.

No notes.