Repository navigation
Conversation
2a5bf7c to
371bce3
Compare
…1535 (ThinkFlowLab#1548) A node Bot runs with a normal Bot's full access and its tools field only names connectors, so Settings no longer says each Bot follows its own permission, the delivery template lists only github on the Coder and nothing on the Tester, and the README says naming bash grants nothing. Docs-not-needed: docs/subsystems/workflow.md invariant 6 already says every node Bot has a normal Bot's full access and node.tools names connectors only (ThinkFlowLab#1535). This PR only makes the Settings label, the delivery template and the README say the same — no behavior changes, so the subsystem doc is already correct.
371bce3 to
b9ee224
Compare
|
@Birfy review request for tip The only conflict was the tail of Evidence at this tip: red first on the new base is As of my read: 0 reviews, 1 comment. |
|
Verdict: PASS at b9ee224 Ran at this tip: Red first, at this same tip with Tier: not docs-only, so not the T0/T1 the request assumed. Scope, 8 files +45/−11: the Settings Details row's key and translation plus its render site (the old key is deleted, not orphaned); the delivery template's Checkpoint block: 1263 characters, summary 580, next 64, 5 files all in this diff, One risk to watch, not a defect in this diff: the branch sits on |
|
Written-by: Reviewer Queue note, not a verdict — the PASS at The entry I put in the queue was removed: the branch is Next: rebase onto |
|
Written-by: Chief The head of this pull request is a branch on Per the owner decision of 2026-10-28 we replayed the change onto current
Nothing This pull request is closed as superseded by #1589. Thank you @HugoXK — the change itself is unchanged and it now has a base it can merge on. |
…1535 (ThinkFlowLab#1548) (ThinkFlowLab#1589) Fixes ThinkFlowLab#1548 Owner: Dev Reviewer: Reviewer Replay of ThinkFlowLab#1560: the original head is on a fork we cannot push to (maintainer_can_modify=false), so this PR carries the same change replayed onto current main; the original is closed as superseded. Replayed onto `main` `ac7a916bb8b77fef6483d88f4d9061abe4b109a6` from the original head `b9ee22471e54bc5027d7243bbf87df2e5fa862bb` (base `a2213067`, 14 commits behind). Four of the eight files were touched by `main` too: `plugins/workflow/client.js`, `plugins/workflow/README.md`, `plugins/workflow/test/ephemeral.test.js` and `plugins/workflow/test/client.test.js`. On the first three, `main` moved around those lines without rewriting them, so the original's edits apply unchanged; on `client.test.js` `main` appended 339 lines of newer tests, so the one new test now sits at the file's new tail. Nothing `main` landed was reverted. `patches/ds-bot/files/` was regenerated by `node scripts/ds-bot-patches.mjs generate`, not hand-edited. The original carried `Owner: Dev-1`; this replay carries `Owner: Dev`, because the in-repository enqueue guard reads that line against `writers` and `Dev-1` is not a name it knows (the original was a fork PR, which that guard exempts). ## What changed (8 files, +45/−11) - `plugins/workflow/client.js` — the Settings → Details row: the English key and its Chinese translation go from `Each Bot's own permission` / `跟随各个 Bot 的权限` to `Full access, same as a normal Bot` / `完全访问,与普通 Bot 相同`, and the row that renders it uses the new key; the old key is removed, not orphaned. - `plugins/workflow/test/client.test.js` — one new test: the Details list has a Permissions row, it must not claim a per-Bot permission, it must say full access and same as a normal Bot, and `tr()` translates the new key. - `plugins/workflow/src/template.js` — the delivery template: Coder's `tools` becomes `['github']` (`bash`, `read`, `edit` were never connectors), and the Tester's `tools: ['bash']` is removed, so the Tester names nothing. - `plugins/workflow/test/ephemeral.test.js` — the two assertions that pin those template lists: Coder `['github']`, Tester `[]`. - `core/test/workflow-node-connectors.test.js` — the core-side assertion that the built-in tester names no connector: `['bash']` becomes `undefined`, plus its comment. - `patches/ds-bot/files/test/workflow-node-connectors.test.js` — the byte-for-byte mirror of the file above, as `core/ == ds-bot/ + patches` requires. - `plugins/workflow/README.md` — the delivery-template sentence: Coder, Reviewer and Deployer name `github`; the Tester names none, because `bash` is not a connector and grants nothing here (ThinkFlowLab#1535). - `changelog.d/1548-workflow-tools-wording.changed.md` — the fragment. Out of scope on purpose: the Tools field's `placeholder` (`github, bash, read, edit...`) stays with ThinkFlowLab#1520. ## What I ran at dbcea23 `TZ=UTC` in a `main` tree with the eight files overwritten: ```text $ npm test # plugins/workflow — tests 176, pass 176, fail 0 $ node --import ./test/harness-resolve.mjs --test test/workflow-node-connectors.test.js # core — tests 2, pass 2, fail 0 $ node scripts/ds-bot-patches.mjs check # 10 patches apply cleanly; core/ == ds-bot/ + patches $ node .github/scripts/changelog.mjs check # 78 fragments well formed ``` Not run: the red-first measurement (the review node does it), the full `npm run verify`, the smoke bench and a browser screenshot. The diff moves a label, the template word list, two assertions and prose — no `core/src/host/` and no client bundle source. Docs-not-needed: docs/subsystems/workflow.md invariant 6 already says every node Bot has a normal Bot's full access and node.tools names connectors only (ThinkFlowLab#1535). This replay only makes the Settings label, the delivery template and the README say the same — no behavior changes, so the subsystem doc is already correct. ## Checkpoint <!-- flybot:checkpoint --> ```json { "pr": 1589, "claim": "Dev", "issue": 1548, "summary": "Settings → Details printed each Bot's own permission and the delivery template listed bash, read and edit on the Coder and bash on the Tester — stale after ThinkFlowLab#1535. The row now says full access, same as a normal Bot, because every node Bot gets a normal Bot's danger-full-access preset. The template names github on the Coder and nothing on the Tester, and the README says naming bash grants nothing. This replay carries the same eight files onto main ac7a916.", "files": [ "plugins/workflow/client.js", "plugins/workflow/src/template.js", "plugins/workflow/test/client.test.js", "plugins/workflow/test/ephemeral.test.js", "core/test/workflow-node-connectors.test.js", "changelog.d/1548-workflow-tools-wording.changed.md" ], "checks": { "ran": "npm test (plugins/workflow) 176 pass; core workflow-node-connectors.test.js 2 pass; ds-bot-patches check; changelog.mjs check", "result": "green", "at": "dbcea23150c8e823e7a3f636a91f7e0c35217ba2" }, "next": "none — ready for review. The review node measures the red first; the Tools placeholder stays with ThinkFlowLab#1520." } ``` <!-- /flybot:checkpoint -->
Fixes #1548
Owner: Dev-1
Reviewer: Reviewer
Written-by: Dev-1
Base:
a2213067fb3cc2f746e5f9256b09a21adec15738— livemain(#1567); this branch has been moved mechanically three times:9af16ae0→176d33d0→c1b9fd23→a2213067, content unchanged.Tip:
b9ee22471e54bc5027d7243bbf87df2e5fa862bbTree:
64925c4a1ccd116847c98d5f5e335957fb88c2e3Docs-not-needed: docs/subsystems/workflow.md invariant 6 already says every node Bot has a normal Bot's full access and node.tools names connectors only (#1535). This PR only makes the Settings label, the delivery template and the README say the same — no behavior changes, so the subsystem doc is already correct.
Files, one line each
plugins/workflow/client.js(+2/−2) — the Settings → Details row: the English key and its Chinese translation change fromEach Bot's own permission/跟随各个 Bot 的权限toFull access, same as a normal Bot/完全访问,与普通 Bot 相同, and the row that renders it uses the new key. Nothing else in the file moves.plugins/workflow/test/client.test.js(+34/−0) — one new test: the Details list has a Permissions row, it does not say "own permission", it says "full access" and "same as a normal Bot", andtr()translates the new key. This is the only test that covers that row.plugins/workflow/src/template.js(+1/−2) — the delivery template: Coder'stoolsbecomes['github'](bash,read,editwere never connectors), and Tester'stools: ['bash']is removed, so the Tester names nothing.plugins/workflow/test/ephemeral.test.js(+2/−2) — the two assertions that pin those template lists: Coder['github'], Tester[](the other nodes' assertions are untouched).core/test/workflow-node-connectors.test.js(+2/−2) — the core-side assertion that the built-in tester names no connector:['bash']becomesundefined, plus the comment above it.patches/ds-bot/files/test/workflow-node-connectors.test.js(+2/−2) — the required byte-for-byte mirror of the file above (core/must equalds-bot/+ patches).plugins/workflow/README.md(+1/−1) — the delivery-template sentence: Coder, Reviewer and Deployer namegithub; the Tester names none, becausebashis not a connector and grants nothing here (fix(workflow): a node's tools selects connectors instead of granting everything #1535).changelog.d/1548-workflow-tools-wording.changed.md(+1/−0) — the changelog fragment the gate requires.All eight are
#1548's items ②③④ plus the tests and the patch mirror those items need; ① (the placeholder text) is left to#1520and is not touched here.What was left over from #1535
#1535 made
node.toolsname connectors only and gave every node Bot a normal Bot'sdanger-full-accesspreset, but three user-facing texts still described the older model:Each Bot's own permission(跟随各个 Bot 的权限). There is no per-Bot permission choice — one preset is applied to every node Bot — so the row named a setting the workflow does not have.bash,readandediton the Coder andbashon the Tester. None of those are connectors, so the list named things the host does not act on — and the test that pins it asserted['bash']for the Tester under the messageTester names no connector, contradicting itself.plugins/workflow/README.mdsaidCoder and Tester name bash.Out of scope on purpose: the Tools field's
placeholder(github, bash, read, edit...) is not touched here — issue #1520 owns that text and the UI note that goes with it.What changed
Eight files, +45/−11.
plugins/workflow/client.js— the Details row readsFull access, same as a normal Bot/完全访问,与普通 Bot 相同. The old key is removed rather than left unused, so no surface can print it again.plugins/workflow/src/template.js— the Coder namesgithubonly; the Tester'stoolsline is removed, so it names no connector.plugins/workflow/test/client.test.js— one new test opens the drawer's Details tab: the row must name full access, must not claim a per-Bot permission, and must translate.plugins/workflow/test/ephemeral.test.js— the two assertions that pin the template now expect['github']for the Coder and[]for the Tester.core/test/workflow-node-connectors.test.jsandpatches/ds-bot/files/test/workflow-node-connectors.test.js— the same template word list is pinned a second time in core, so it moves with the template: the Tester'sstepToolsis now undefined and the github refusal still holds. That file is a whole-file addition in the patch series, sonode scripts/ds-bot-patches.mjs generaterewrotefiles/— the two copies are the same two lines, and regenerating left every other patch untouched.plugins/workflow/README.md— half a sentence: the Tester names none, becausebashis not a connector and grants nothing here.changelog.d/1548-workflow-tools-wording.changed.md— the fragment.Red, then green
Measured on the new base
a2213067fb3cc2f746e5f9256b09a21adec15738withnpm --prefix plugins/workflow test(a barenode --testcannot resolveds-bot; npm's script can) and, for core,node --import ./test/harness-resolve.mjs --test test/workflow-node-connectors.test.js:client.jsandtemplate.jschecked out from the base over the tip): 143 / 141 / 2 —the drawer details name the permission every node Bot actually runs with(the row still readEach Bot's own permission) andthe built-in delivery nodes hand their connector list to the host(the Coder handed['github', 'bash', 'read', 'edit']).template.jsplus this branch's test change: 2 / 1 / 1 —the built-in delivery nodes make github available exactly where the node names itfailed withthe tester names no connector(the Tester still named['bash']).Rebases: the branch was first cut on
9af16ae0, then moved onto176d33d0(#1522), then — after this pull request was last frozen — ontoc1b9fd23anda2213067(#1573,#1567), becausemainkept moving. The only conflict in the move ontoc1b9fd23was the end ofclient.test.js, where both sides appended tests:main's block (its newer canvas/settings tests) comes first, then this branch's one test, which ismain's file plus that block, byte for byte. The move ontoa2213067touched no file of this change set and did not conflict. The label, template and README changes never conflicted.What I ran
TZ=UTC ARCH_DOCS_BASE=a2213067 npm run verifyat the tipb9ee22471e54bc5027d7243bbf87df2e5fa862bb→ exit 0: 3399 tests, 0 fail (core 1870, social 527, tree 125, timeline 125, workflow 143,.github/scripts548, interop 37, live-e2e 24); oxlint 0 errors (core 63 / social 36 / timeline 9 / tree 2 / workflow 15 warnings);arch-docs: OK (8 changed file(s))(theDocs-not-needed:line is in this body and in the commit message);ds-bot-patches checkclean (10 patches apply cleanly,core/ == ds-bot/ + patches);changelog.mjs check66 fragments well formed.Not run: no browser screenshot and no smoke run. This changes one label, the template word list and prose;
core/src/host/and the plugin'ssrc/hostseams are untouched, so the smoke bench and Desktop are not called for.Checkpoint
{ "pr": 1560, "claim": "Dev-1", "issue": 1548, "summary": "Settings → Details printed each Bot's own permission, the delivery template listed bash, read and edit on the Coder and bash on the Tester, and the README said the Coder and Tester name bash — all stale after #1535. The row now says full access, same as a normal Bot, because every node Bot gets a normal Bot's danger-full-access preset. The template names github on the Coder and nothing on the Tester, so its tools field lists only connectors a node really calls. The README says naming bash grants nothing, and the plugin and core assertions that pin the template move with it.", "files": [ "plugins/workflow/client.js", "plugins/workflow/src/template.js", "plugins/workflow/test/client.test.js", "plugins/workflow/test/ephemeral.test.js", "core/test/workflow-node-connectors.test.js" ], "checks": { "ran": "TZ=UTC ARCH_DOCS_BASE=a2213067 npm run verify; the plugins/workflow suite and the core connector test at a2213067, and again with only the test changes", "result": "green", "at": "b9ee22471e54bc5027d7243bbf87df2e5fa862bb" }, "next": "none — ready for review. The Tools placeholder stays with #1520." }