Skip to content

Docs: record the secret-injection boundary for scheduled turns and relays - #591

Merged
Birfy merged 1 commit into
mainfrom
docs/581-secret-boundary
Oct 21, 2026
Merged

Birfy merged 1 commit into
mainfrom
docs/581-secret-boundary

Conversation

@Birfy

@Birfy Birfy commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator

Risk: T0 (docs/** only: 1 file, 2 lines).

Refs #581 (that issue is closed separately by the maintenance round with the "no code change, runtime route" conclusion; this PR only records the boundary so the next routine does not re-derive it).

What changes

docs/subsystems/core-host.md records the measured boundary in the two places that decide it (secrets.js resolveEnv / owneresTurn and turn-origin.js settled), in the wording the routine verified against the running code and the observed turn table:

  • key scope: an unshared Bot's own scheduled turn already counts as the owner's, so a routine whose timer fires in its own Session gets the keys; a group round inherits the initiator's verdict, so a round a shared Bot opened on a scheduled turn arrives as other for every member — the shared initiator by design, the unshared members only because the relay carries that verdict — and none of them gets the keys.
  • turn origin: the scheduled clause now says the same thing about relays, and why the routines schedule their own Sessions instead (runtime route, no code change).

No code, no patches, no client.js: ds-bot/ untouched.

Checks (at this content, TZ=UTC)

  • ARCH_DOCS_BASE=HEAD~1 node core/scripts/check-arch-docs.mjs — OK (1 changed file).
  • node scripts/ds-bot-patches.mjs check — OK (ds-bot pin v0.1.5, 10 patches apply, core/ == ds-bot/ + patches).
  • node .github/scripts/changelog.mjs check — OK (12 fragments well formed); no new fragment, docs-only.
  • node --test .github/scripts/*.test.mjs — 93/93 (the 4 patch-format tests need the portable git on PATH).
  • The pushed blob equals the tree the checks ran on (blob sha match).

Not run: one-shot npm run verify (2 GiB OOM in this container; run per step), the full core suite (no code touched), the CI package job, smoke, Desktop.

…lays (#581)

The measured boundary is: an unshared Bot's own scheduled turn already counts as the owner's, a shared Bot's does not, and a group round inherits the initiator's verdict, so a round opened by a shared Bot's scheduled turn is `other` for every member. The routines schedule themselves in their own Sessions instead of changing the code.
@Birfy Birfy self-assigned this Oct 21, 2026
@Birfy Birfy added agent-pr Pull request opened by an agent area:docs Documentation area:security Auth, grants, approvals, secrets labels Oct 21, 2026
@Birfy

Birfy commented Oct 21, 2026

Copy link
Copy Markdown
Collaborator Author

PASS at 97cc815fd37ef812d0405e813a8ad70ee2c9a76f (maintenance self-review, Birfy).

Tier: the PR is docs/** only — T0, which the repo merges on green CI without a PASS; this is the routine's own gate recorded anyway, so the next reader knows what was checked.

Reviewed: the diff at the tip, docs/subsystems/core-host.md, +2 -2. Every claim in the added text is a direct reading of the code at main 127676e2 — core/src/host/secrets.js (resolveEnv → owneresTurn), core/src/host/turn-origin.js (settled: SCHEDULED && rt.sharedWith(bot.id).length > 0 → OTHER, otherwise the owner's), core/src/host/connector-access.js (rt.agentOrigin, originOfWho = settled(...) ?? OTHER) and core/src/host/groups.js (post.origin === OWNER || post.origin === SCHEDULED ? OWNER : OTHER). The wording states the boundary and the runtime route; it promises no behavior change.

Ran at this content, TZ=UTC:

  • ARCH_DOCS_BASE=HEAD~1 node core/scripts/check-arch-docs.mjs — OK (1 changed file).
  • node scripts/ds-bot-patches.mjs check — OK (pin v0.1.5, 10 patches, core/ == ds-bot/ + patches; no code touched).
  • node .github/scripts/changelog.mjs check — OK (12 fragments), no new fragment (docs-only, not user-visible).
  • node --test .github/scripts/*.test.mjs — 93/93 (the 4 patch-format tests need the portable git on PATH; without it they fail spuriously).
  • Pushed blob 848ecad0 equals the tree the checks ran on.

CI at the tip: tests-ok green (test, plugins (social|tree|timeline), package all success), mergeable: clean.

Not run: one-shot npm run verify (2 GiB OOM in this container), the full core suite (no code changed), the package job locally, smoke, Desktop.

@Birfy
Birfy added this pull request to the merge queue Oct 21, 2026
Merged via the queue into main with commit 645a291 Oct 21, 2026
8 checks passed
@Birfy
Birfy deleted the docs/581-secret-boundary branch October 21, 2026 03:42
@Birfy Birfy removed the agent-pr Pull request opened by an agent label Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:docs Documentation area:security Auth, grants, approvals, secrets

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant