Repository navigation
Description
security#1 · os-tesla · session_01L9qibvynRbCtMndW8EHNGc
.claude/skills/pm-dispatch/references/lanes/security.md (⛔ not copied here). Never-public rules: .claude/skills/pm-dispatch/references/security-findings.md. This is security seat 1. This post carries no finding, path, object name or mechanism, by rule.
Current PM — 🟢 os-tesla
- Holder:
os-tesla·session_01L9qibvynRbCtMndW8EHNGc· seated 2026-11-06T04:59Z on the maintainer's summons in the os-tesla project (「现在开一个 security 车道」, 2026-11-06T04:52Z). The previous holder's clock-out brief (session_01L6bhgVfjk2i8T2D4RmxsKg, body revision of 2026-11-06T03:54Z) was the latest event on this post, so the seat was taken directly. - Advisory access: one relay
advisory_readopened in this session before seating (run 42165450033); nothing printed. - Patrol:
trig_01XPmzCAKGGtK6WQYTmcCaRt·58 * * * *(hourly, self-bound). - Mailbox: PR pm:mailbox — security#1 · os-tesla #30818 (subscribed).
- Concurrency: at most 5 card threads or subagents for this seat (this account's maintainer word, 2026-10-30, latest for this account).
- Takeover:
/pm-dispatch 接手, then read this post first. Advisory text is read only through the relayadvisory_read; this post carries no finding, path or mechanism. - Ledger rule: one row per advisory, opaque id · session · state, ⛔ no detail. Claims on advisory fixes live here, never in session memory.
Previous holder's clock-out (archived in the body revision of 2026-11-06T03:54Z): os-sales · session_01L6bhgVfjk2i8T2D4RmxsKg, seated 2026-11-05T10:45Z, clocked out 2026-11-06T03:52Z; mailbox #30424 closed; patrol deleted. Its in-flight PRs #30702, #30717 and #30783 are taken by this holder (Resume-from: the hand-over section below).
Ledger
| advisory | session | state |
|---|---|---|
| GHSA-pr58-fh6c-gq2w | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged; maintainer's standing order) |
| GHSA-v2v7-hqfg-w52f | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged; maintainer's standing order) |
| GHSA-xqhh-j48f-jjrj | session_01QSeKYn5CmmdShCJifm6WYj | published (relay runs 41944485343 reopen · 41944573358 versions · 41944661850 publish) |
| GHSA-3v9p-7m67-852m | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged; maintainer's standing order) · sibling doors: phone reset #29973 merged, sign-up #29975 merged; residual + anonymous resend on the maintainer's list |
| GHSA-8rj8-fch9-c2mw | session_01QSeKYn5CmmdShCJifm6WYj | published (relay runs 41944141606 reopen · 41944200038 versions · 41944243924 publish) |
| GHSA-xj95-6q7p-782x | session_01QSeKYn5CmmdShCJifm6WYj | published (relay runs 41873738957 reopen · 41873976222 versions · 41874125239 publish) |
| GHSA-2fm9-8g3q-7pjx | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged; maintainer's standing order) |
| GHSA-wv48-4g3p-w8cg | session_01QSeKYn5CmmdShCJifm6WYj | published (relay runs 41944294449 reopen · 41944351397 versions · 41944396736 publish) |
| GHSA-x637-7736-x47w | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged; maintainer's standing order) |
| GHSA-gwc4-gw6c-w5rj | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged; maintainer's standing order) |
| GHSA-24x3-pfgx-xmxm | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged; maintainer's standing order) |
| GHSA-7hhm-4cjx-xm5g | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged #30151; the cloud driver census is a pre-release item) |
| GHSA-pg7r-xfxx-25xw | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged: #29932 organization branch, #29950 delegated branch) |
| GHSA-gp32-mfp5-9h63 (public card #29761 moved in and closed on the maintainer's ruling) | session_01QSeKYn5CmmdShCJifm6WYj | closed (fix merged #29867; owner follow-up #30146 merged; docs #29866 awaits the maintainer's hand) |
| GHSA-m5r4-cjrf-239m | another session (maintainer-assigned) | received |
| GHSA-rcph-958x-q6j3 | — | closed (before this seat) |
| GHSA-p3w4-whfc-ff96 | — | closed (before this seat) |
| GHSA-h87h-xp7p-f8p4 | — | closed (before this seat) |
| GHSA-3p5q-jhx8-jc65 | session_01QSeKYn5CmmdShCJifm6WYj | closed (not a finding: a relay live test, card 29402) |
| (draft, id pending from the maintainer: change-email notice) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | merged (fix #30166); closes once the maintainer names the id |
| GHSA-c62f-x92q-ghm3 | session_01L9qibvynRbCtMndW8EHNGc (inherited) | received (fix shape goes to the maintainer after review) |
| GHSA-hw27-vpwp-f94h | session_01L6bhgVfjk2i8T2D4RmxsKg (inherited) | closed (high; API-key half #30287 merged f4cd4ec879, OAuth half #30360 merged b3d2f4bdb7; relay run 42110886309) |
| GHSA-f69p-r3wc-64f8 | session_01L6bhgVfjk2i8T2D4RmxsKg (inherited) | closed (medium; the server lane's PR #30447 merged b5765be311; relay run 42123822884) |
| GHSA-hjqw-gxfh-v4vp | session_01L9qibvynRbCtMndW8EHNGc (inherited) | fixing (predicate-write half merged #30219; the explain half awaits a maintainer ruling); the by-id re-read hardening #30307 merged 70981e63ed |
| GHSA-883m-4hm6-m2m2 (doorbell from domain:ui#6, mailbox #30424) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | fixing (low; the assignment-table half merged #30578 6dd2ca5788; a sibling grant path is NOT dispatched; close once it merges) |
| GHSA-c9q6-f2m6-rfh7 (doorbell from domain:server#6, mailbox #30424) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | fixing (medium; PR #30702, head 7b06b726ac, released at clock-out and taken by os-tesla, see hand-over) |
| GHSA-cxjx-wvh5-3jv4 (doorbell from domain:server#2, mailbox #30424) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | fixing (medium; PR #30717, head 4b2c6130c0, released at clock-out and taken by os-tesla, see hand-over) |
| GHSA-254j-2rxp-5mcx (doorbell from domain:server#3, mailbox #30424) | session_01L6bhgVfjk2i8T2D4RmxsKg | closed (medium; #30788 merged 2d04cd2b7b; relay run 42157942451; a disabled-package residual is in the seat's hand-over) |
| GHSA-4gjj-cw8r-9hc6 (this seat's read of PR #30672, asked by domain:server#2 on mailbox #30424) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | received (low; its continuation #30747 holds its queue until this seat clears it; fix not dispatched) |
| GHSA-vmfv-999r-f7g8 (same read) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | received (low) |
| GHSA-fwcx-33g5-wqcf (same read) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | received (low) |
| GHSA-5654-hg87-8g29 (doorbell from epic:#3600#1, mailbox #30424) | session_01L9qibvynRbCtMndW8EHNGc (inherited) | received (medium; the fix sets a registration contract, so it goes to the maintainer before any order) |
| GHSA-xhpc-rq73-365v (this seat's contract review of PR #30702) | session_01L9qibvynRbCtMndW8EHNGc | received (high; the fix shape goes to the maintainer first, after an isolated at-tier review of the analysis) |
Standing orders (inherited: the maintainer's, given in the previous holder's session session_01QSeKYn5CmmdShCJifm6WYj, verbatim):
- 「目前的修复都关闭」 and 「你处理完的可以都先关闭」: once an advisory's fix merges, the seat closes it through the relay
advisory_stateand records it here. - 「哪些高危要发布应该在我版本发布前决策吧」: before each version release, the seat puts a publish-or-not list to the maintainer, covering the closed advisories since the last release (high and moderate first), reviewed at
CONTRACT_REVIEW_TIERfirst. Publishing is the maintainer's: they reopen and publish in the advisory UI, since the relay cannot move a closed advisory. - 「同意,batch 调到 5」: the previous holder ran at most 5 slots. The os-sales holder ran at most 4 per seat (its maintainer's word at 2026-11-05T21:32Z); this holder runs at most 5 (see Current PM).
- 「只记录,暂停派发」 (2026-11-04), lifted by 「可以继续派发」: the fourth and fifth decision batches are ruled and recorded in the seat's private notes, and dispatch has resumed.
- 「changeset 改写确认都同意」 (2026-11-05): a pending-changeset DELIBERATE CORRECTION lands on the seat's own record, as
landing-operations.mdalready says (the ACCEPT quoting before and after, or the same-head at-tier PASS). The seat does not wait on the maintainer for it. Skills card: pm-dispatch skills: say who confirms a pending-changeset correction (the seat's record, never a maintainer wait) everywhere a dev or the gate is told to "get it confirmed", and keep PR bodies from narrating pre-fix behaviour on security fixes #30271. - Maintainer rulings 2026-11-05T21:32Z (decision cards in this seat's thread): an API-key credential whose owner record no longer exists is refused at verification (in flight, PR fix(core)!: an API key authenticates only as an owner who exists #30783); on the 2.8 detail-write master re-read, both legs report a store fault as a fault and only a real permission verdict answers 403 (not dispatched). Security seat concurrency 4.
Clock-out hand-over (2026-11-06T03:52Z), taken by os-tesla
In flight, released to the next security holder (Release: session_01L6bhgVfjk2i8T2D4RmxsKg · Resume-from: this section). Every PR is draft, base main, no closing keyword, opened by the relay; each dev's work is committed and pushed; the in-seat dev sessions ended with this session.
- fix(rest,runtime)!: the import doors and the catalog refresh read the walled-catalog verdict the metadata save door reads #30702 (GHSA-c9q6) head
7b06b726ac. Rule: under the walled tenancy postures, importing a remote table as an object and refreshing a datasource's external catalog are catalog writes reserved to the platform operator, at REST and MCP. A third door was folded in after the first head. Owed: ablations of the shared refusal, outage arm and the new wiring; package tests and typecheck at head;dispatch-gates --commands/--ran; full dogfood battery pinned to the head; a new PR body naming the third door (the current body and title describe the first head); then a full at-tier review, ACCEPT, landing, advisory close. - fix(plugin-auth)!: an allowed IP range that names no range is refused at save and never matches at the gate #30717 (GHSA-cxjx) head
4b2c6130c0. Rule: an allowed IP range entry is an address or an address with a decimal prefix within its family, saved only as text; anything else is refused at save and matches no address at the gate. Full at-tier review atad6e705bc7FAIL (6672830867, one test assertion, fixed); a value-type rule in the same family was folded in. Body refreshed at clock-out (states what is NOT MEASURED). Owed: gates 91-95 then--ran; full battery at head; a same-tier hop delta review of the merge plus the value-type rule; ACCEPT, landing, advisory close. - fix(core)!: an API key authenticates only as an owner who exists #30783 (maintainer ruling above, API-key half) head
d6d9728906, CI 57 success / 0 failure at that read. Owed: full battery at head; typecheck of the consumer packages after the last main merge; the body's battery block; a full at-tier review (Clause-②: yes (narrowing)per its changeset), ACCEPT, landing.
Holds this seat placed on other lanes' PRs: #30747 (continuation of #30672, domain:server#4) is held out of the queue until security#1 posts a clear there; the clear follows the fix for the low row tied to it.
Not dispatched (next orders, by priority):
- The fix for the low row fix(objectql)!: a non-system write may name, in a lookup or user field, only a record the caller can read #30747 waits on (lifts the hold), then the two other low rows from the same read.
- The 2.8 detail-write ruling above.
- The sibling grant path under the GHSA-883m row.
- Follow-ups on fix(runtime,plugin-auth)!: a banned user's OAuth access tokens and refresh grants are refused while the ban holds #30360's review shoulds (a branded 503 on one OAuth endpoint with a pin, a pairwise pin).
- Two residuals recorded privately from fix(runtime)!: an action that dispatches to a handler another declared action owns also answers with that owner's permission and activation gates #30788, one from fix(rest,runtime)!: the import doors and the catalog refresh read the walled-catalog verdict the metadata save door reads #30702 (none blocking).
- plugin-auth: an MCP JWT access token cannot be revoked — /oauth2/revoke answers 400 and delete-consent ends nothing, against IAuthService.verifyMcpAccessToken's 'falsy when revoked' (objectstack-ai/cloud#3606 ruling A) #30345 (p1, public card) and skills cards pm-dispatch skills: say who confirms a pending-changeset correction (the seat's record, never a maintainer wait) everywhere a dev or the gate is told to "get it confirmed", and keep PR bodies from narrating pre-fix behaviour on security fixes #30271, pm-dispatch SKILL.md: the seat invariant still names MCP rerun_failed_jobs as the one allowed MCP write, while a re-run leaves only through the relay #30159.
For the maintainer (decision or contract):
- GHSA-5654 (received): the fix extends a registration contract, so it needs the maintainer's contract first.
- GHSA-c62f (received): fix shape after review.
- GHSA-hjqw: the explain half awaits a ruling.
- Spec-layer parity for the self-registration audience schema (from fix(plugin-security, plugin-auth)!: a person-to-permission-set assignment refuses an agent ceiling set at every write door, and so does the self-registration permission set #30578); an ADR-0090 D12 amendment (Tier H).
- The previous holder's maintainer list below still stands where not marked merged.
- Before the next release: the publish-or-not list of advisories closed since the last release (standing order).
Earlier holder's hand-over (2026-11-05T07:48Z), status then: #30287, #30307, #30360 merged; its maintainer items (batch 7, the high advisory's three items, the controlled-by-parent master read, the old PR-body revisions on #30180 and #30219, the change-email notice id) remain with the maintainer; #30345 and skills cards as above.
Follow-ups owed by this holder (rule level, not dispatched): the ApiKeyRefusalReason docblock wording after #30783; the synchronous tenancy-posture read's fault classification at the REST import and refresh doors, and the refresh refusal's subject row, after #30702.
Hot-file serial queue
⛔ Re-derive from live claims and each open PR's file list before every dispatch.
- None held as a lane: fixes land in their owning packages through no-card orders.
- The skills-lane cards on
lanes/security.mdandsecurity-findings.mdthat the previous holder queued (pm/fleet-write: the relay publishes a security advisory on the maintainer's list: reopen, set the affected and patched versions, publish #30110, pm-dispatch skills: the security seat's triage of a non-finding, its ledger states after the close-on-merge order, a release's contents read by ancestry, and the CI recoveries the relay leaves #30111) are both closed; nothing is held on those files.
Notes
- Write path: the relay (
post-stamped.mjs,label-write.mjs,issue-create.mjs,fleet-write/dispatch.mjs). ⛔ No GitHub MCP writes. Advisory text is read only through the relayadvisory_read. domain:skills#2([PM seat] domain:skills · seat 2 — 🟢 os-tesla · 由 os-tesla 账户的项目负责 #19287), held by the previous holder's session for the security work's skills-lane cards, was handed back once they landed (clock-out brief 6598110373).
Activity
[-][PM seat] security — 🟢 os-justin[/-][+][PM seat] security — 🟢 os-sales[/+]objectstack-fleet commentedon Nov 5, 2026
security#1 · os-sales · session_01L6bhgVfjk2i8T2D4RmxsKg
Seat taken 2026-11-05T10:47Z by
os-sales(session_01L6bhgVfjk2i8T2D4RmxsKg), on the maintainer's summons in the os-sales project. The previous holder's clock-out brief (session_01QSeKYn5CmmdShCJifm6WYj, body revision of 2026-11-05T07:48Z) was the latest event on this post, so the seat was taken directly, with no takeover race.advisory_readopened in this session (run 42013075070); nothing printed.trig_01YS6drHYT3ZaoxSo6Zp9tJFhourly.[-][PM seat] security — 🟢 os-sales[/-][+][PM seat] security — ⏳ vacant[/+][-][PM seat] security — ⏳ vacant[/-][+][PM seat] security — 🟢 os-tesla[/+]objectstack-fleet commentedon Nov 6, 2026
security#1 · os-tesla · session_01L9qibvynRbCtMndW8EHNGc
Seat taken 2026-11-06T05:01Z by
os-tesla(session_01L9qibvynRbCtMndW8EHNGc), on the maintainer's summons in the os-tesla project (「现在开一个 security 车道」). The previous holder's clock-out brief (session_01L6bhgVfjk2i8T2D4RmxsKg, body revision of 2026-11-06T03:54Z) was the latest event on this post, so the seat was taken directly, with no takeover race.advisory_readopened in this session (run 42165450033); nothing printed.trig_01XPmzCAKGGtK6WQYTmcCaRthourly. Harness current at3da9a4c132(check-harness-current.mjs).Resume-from:the clock-out hand-over: takes the in-flight PRs fix(rest,runtime)!: the import doors and the catalog refresh read the walled-catalog verdict the metadata save door reads #30702, fix(plugin-auth)!: an allowed IP range that names no range is refused at save and never matches at the gate #30717 and fix(core)!: an API key authenticates only as an owner who exists #30783.Generated by Claude Code