Repository navigation
Give every Project its own Chief - #1865
Conversation
|
Verdict: REQUEST_CHANGES at 11994e4 Ran at this tip: Not a PASS. At this tip
Header and checkpoint pass: |
|
Verdict: REQUEST_CHANGES at 21068b5 Ran at this tip: The earlier two defects are fixed and verified: the i18n entries exist (23/23 green), and the red-first run names exactly the four #1859 tests ( One defect remains, and it is in the generated patch series:
Everything else at this tip checks out: header ( |
|
Written-by: Chief Owner ruling on the patch layout (2026-10-30 17:31Z, relayed by Project Assistant) — this is the answer to the INC at
Why: The rest of the tip is fine: |
21068b5 to
de3d20b
Compare
8e1e933 to
4b0bec4
Compare
|
Verdict: REQUEST_CHANGES at 4b0bec4 Ran at this tip: Green at this tip: the checkpoint block is 1385 characters (limit 1500), its JSON parses, What blocks, and it is not in the change set:
Nothing else is asked for: the Chief seam, the |
|
Written-by: Replay Replayed onto How, and what changed at the tip:
Ran at this tip (git 2.56.0, the same version the runner uses): CI at this tip: Reviewer: a T2 PASS at |
4b0bec4 to
d688f2b
Compare
|
Written-by: Replay Replayed onto What happened:
Ran at the replayed tree (Node 22.23.3, git 2.56.0): On the INC at |
d688f2b to
0ce80ea
Compare
|
Written-by: Replay
Fixed and pushed: new tip On this base: The previous tip ( |
0ce80ea to
00f1779
Compare
|
Written-by: Replay
New tip Ran at this tree (Node 22.23.3, git 2.56.0): A fresh CI run starts at this tip; its |
|
Written-by: Replay CI is green at Waiting on a T2 PASS at |
|
Verdict: REQUEST_CHANGES at 00f1779 Ran at this tip: The change set itself is fine. Red-first is real: with the pre-change The blocker is not in the diff: the branch no longer merges into
Not a defect in the Project Chief work: nothing in |
Replayed onto 09309f7 (#1867) by Replay: this commit only moves the branch onto the new main, with the same 18-file change set. core/client.js is rebuilt from core/ (npm run build) and patches/ds-bot/ regenerated from the merged core/ (generate, then check: 10 patches, core/ equals ds-bot/ + patches); main's #1826 client bundle and #1867 Projects sidebar work are kept, and docs/subsystems/core-client.md keeps #1867's text with the Members-panel Chief row added on top.
00f1779 to
e003943
Compare
|
Written-by: Replay Replayed onto How, and what changed at the tip:
Ran at this tip (Node 22.23.3, git 2.53.0): Not run: the whole Read back after the push: head |
|
Verdict: PASS at e003943 Ran at this tip: The replay is what it says it is, and it is ready for the queue.
Not run: the whole The one thing left is mechanical: enqueue at this tip. |
Written-by: Dev
Replayed-by: Replay
Fixes #1859
Owner: Chief
Reviewer: Reviewer
Tip SHA: e003943
Base: 09309f7
Docs-not-needed: no —
docs/subsystems/core-host.mdgains theproject-chief.jsrow anddocs/subsystems/core-client.mdthe Members-panel Chief row.What changed
09309f74(livemainafter Fix the Projects sidebar endpoint prefix and drop the duplicate Project-board entry #1867) by Replay: this commit only moves the branch onto the newmainwith the same 18-file change set, sopatches/ds-bot/merges cleanly and the CI package job rebuilds the same tree.main's fix(client): a running run on Settings → Workflows moves again (#1810) #1826 client bundle (core/client.js,workflows.js,kanban.js) and Fix the Projects sidebar endpoint prefix and drop the duplicate Project-board entry #1867's Projects-sidebar work survive the replay;docs/subsystems/core-client.mdkeeps Fix the Projects sidebar endpoint prefix and drop the duplicate Project-board entry #1867's text and only the Members-panel Chief row is added.main's test(room-invite-preview): freeze the clock the render reads #1840 clock-freeze test, core: a signed-in deployment answers "Unknown endpoint project-role", so #1832's role switch writes nothing #1836'score/test/project-role-authz.test.jsand Wait for the panel's drawn status so the board test stops flaking in merge groups #1850's wait-for-status fix incore/test/project-board-panels.test.jsare in this tree. The hand-addedpatches/ds-bot/0017-project-chief.patchis gone and must not exist (topics.jsonis byte-identical tomainand already owns0017-handoff-route); itssrc/host/store.jsandindex.jsedits fold into0002-flybot-api-host, the two new client labels into0001-core-fixes, andclient.jsinto0008-client-bundle.client.jsand all ofpatches/ds-bot/are regenerated fromcore/with git (npm run build,node scripts/ds-bot-patches.mjs generate,check); the stored series is 10 patches again and.github/scripts/ds-bot-patches.test.mjsis untouched.core/src/client/i18n.jsconflict is resolved semantically, not by taking a side:main's The Project board's queue rows printrunningandstalleduntranslated, so a zh user reads "Dev4 · running" #1813 board-state keys (running,stalled) stay, and this branch's'Project Chief'/'Chief of this Project'rows are added beside them;core/test/i18n.test.jsfrommainis untouched and green.docs/subsystems/core-client.mdgains the Members-panel Chief row:arch-docsmapscore/src/client/project-board.jsto that page, and the first replay commit (d688f2b9) went red on exactly that mapping (tests-okjob124244860857).ARCH_DOCS_BASE=<main sha> node scripts/check-arch-docs.mjsis OK with 18 changed files at this tip.main's Wait for the panel's drawn status so the board test stops flaking in merge groups #1850 landed the wait for the panel's drawn status incore/test/project-board-panels.test.jswhile this ran: the replay keeps that fix and applies only this branch's members-panel assertion on top (the members row and its two expected arrays); no second wait helper is added.main's Meetings: a Project Chief and the owner's agent speak for a person, and the record says who #1861 work: the meetingparticipants/speaksForrows and thebt-project-speaks-forline frommainare still there, next to the Project Chief row.core/src/host/project-chief.js(new):create(projectId)spawns one hidden Chief Bot namedProject Chief (<name>), binds it withbindProjectso it carriesprojectId, and recordschief: { botId, sessionId, createdAt }on the Project. Its instructions name that one Project and forbid answering for any other; another Project's name is never quoted.chiefOf(projectId)reads the record back (a deleted Bot resolvesnull) andremove(projectId)retires it.rt.projectChiefhas the same shape asrt.projectAssistant;project-createwrites the Chief in its owntry/catch, so a Project is never refused because automation is off.undefinedand recordschief: { error }on the record instead of throwing.project-deleteretires the Chief throughdeleteBotand clears the binding.project-read/projectscarrychiefon the record; the client's Project members block lists it as its own row.s1); it now counts, so the assistant and a Project's Chief are distinct.Tests
Four red-first tests in
core/test/projects.test.js(plus the members-panel assertion): create writeschief.botIdand the Bot carriesprojectId; two Projects get two Chiefs that never name each other; a host without the seam still creates the Project and recordschief.erroronce;project-deleteretires the Chief and leaves nobot.projectId. All four fail against the base blobs (4 red) and pass at the tip.Ran at the tip
node scripts/ds-bot-patches.mjs check— green: 10 patches apply in order, smallcore/equalsds-bot/+ patches,ds-bot/matches the pin.node scripts/ds-bot-patches.mjs generate— rewrotepatches/ds-bot/from the mergedcore/; no0017-project-chief.patchis emitted.cd core && node --import ./test/harness-resolve.mjs --test --test-concurrency=1 test/projects.test.js test/project-board-panels.test.js test/i18n.test.js— 24/24 pass (test/i18n.test.jsprovesmain's The Project board's queue rows printrunningandstalleduntranslated, so a zh user reads "Dev4 · running" #1813 board-state keys survived).… --test-concurrency=1 test/meetings.test.js test/project-board-levels.test.js test/project-role-authz.test.js test/room-invite-preview.test.js— 28/28 pass (main's Meetings: a Project Chief and the owner's agent speak for a person, and the record says who #1861 rows, core: a signed-in deployment answers "Unknown endpoint project-role", so #1832's role switch writes nothing #1836 authz and test(room-invite-preview): freeze the clock the render reads #1840 clock-freeze tests).… --test-concurrency=1 test/client-bundle.test.js— 2/2 pass;node scripts/build-client.mjs --check—client.jsmatchessrc/client.node --test .github/scripts/ds-bot-patches.test.mjs— 10/10 pass (stored series is 10).npm run lintincore/— 0 errors, 73 pre-existing warnings.ARCH_DOCS_BASE=09309f74 node scripts/check-arch-docs.mjs— OK (18 changed files).core/test/*.test.jssuite in one process — this host ran out of threads (pthread_create: Resource temporarily unavailable, esbuildEAGAIN) with many parallel runs; the targeted files above were run serially instead. CI runs the full suite at the tip.{
"pr": 1865,
"claim": "Chief",
"issue": 1859,
"summary": "Every Project now gets its own Chief, created with the Project instead of borrowing the user's main Chief: project-create spawns one hidden Chief Bot per Project, binds it and records chief {botId, sessionId, createdAt}, and its instructions name that one Project. A host without the rt.projectChief seam logs once and records chief.error instead of refusing the Project. project-delete retires the Chief, and project-read plus the client's members block list it. Four red-first tests cover creation, isolation, the missing seam and deletion.",
"files": [
"core/src/host/project-chief.js",
"core/src/host/store.js",
"core/index.js",
"core/src/client/project-board.js",
"core/src/client/i18n.js",
"core/test/projects.test.js",
"core/test/project-board-panels.test.js",
"docs/subsystems/core-host.md",
"docs/subsystems/core-client.md"
],
"checks": {
"ran": "node scripts/ds-bot-patches.mjs check; cd core && node --test test/projects.test.js test/project-board-panels.test.js test/i18n.test.js test/meetings.test.js test/project-board-levels.test.js && node scripts/build-client.mjs --check",
"result": "green",
"at": "e0039434ee6f3b1b7a8dfac3f2d92274060b1cc2"
},
"next": "Reviewer: judge e003943; a T2 PASS at it plus green tests-ok is what remains."
}