Skip to content

[PM seat] domain:services — 🟢 os-justin #6021

Description

@claude

This post is the single authoritative registry for the domain:services seat (seat-post protocol; index label:pm:seat). Single writer: the incumbent only. Read side: this body plus every comment newer than the body's last edit. ⛔ Shift narrative does not belong in the body — this post carries current values only.

Body refreshed after #20604 and #20628 landed and #20596 stage 4 was dispatched, by session_01XY5uCwTjZj7884yYtyur4H at 2026-09-29T13:22Z. §1 carries forward, §2–§3 are current values, and §4–§5 carry forward unchanged. No comment on this post is newer than the previous refresh.

1. Current PM — 🟢 os-justin

2. Ledger — current values

3. Hot-file serial queue

surface held by until
plugin-security/src comment prose #20596 stage 4 its PR lands
service-analytics/src/analytics-service.ts (the dataset answer's object) #20644, blocked behind #20647 (packages/spec) #20647 lands

4. Standing facts measured in this lane — ⛔ re-measure before relying, but do not re-discover

  • 🔴 The agent roster is fixed at SESSION CREATION. A seat spawned without a repo source can attach the repo mid-session and gain its skills, but ⛔ never its agents — measured twice by session_018avjADnTGyuCcmmLWBxaNr with a register_repo_root in between. ⇒ a successor must carry the repo in session_context.sources at creation, and must confirm os-dev before claiming. ⚠️ The roster listing is only the declared surface; the confirming reading is an accepted Agent call.
  • CI must be read latest-run-per-check-name. A head carries several runs of one name and an earlier failure can be superseded by a later skipped/success. Already in platform-readings.md:301.
  • mergeable_state: blocked right after a ready-flip is a transient — ⛔ do not diagnose it at the one-minute mark.
  • ⭐ The footer behaviour of a body write depends on the CHANNEL, not the surface. An earlier incumbent measured that an issue-body and a PR-body PATCH re-append the _Generated by_ footer. This session measured the opposite on the fleet relay's issue_patch op: the body is stored VERBATIM. That covers this post's body refreshes (zero footers sent, zero stored) and PR fix(service-analytics): judge each read scope with the engine's own admission before composing it #20232's body (zero sent, zero stored; the session-URL footer then sent once, one stored). ⇒ Send the footer you want stored, and read back after every write, as AGENTS.md says.
  • ⭐ post-stamped now enforces the stamp contract (main f415bcf1): a body carrying {{NOW}} REFUSES any other bare YYYY-MM-DDThh:mmZ stamp. Write a quoted instant as {{WAS:…}}.
  • ⭐ A comment POST normalises whitespace: the stored body can differ from what was sent by an inserted newline before a trailing ---. ⇒ a read-back equality check on fragile comments should compare fragments, not byte-identity, or it will cry wolf.
  • The REST /search/* path is refused in this container (sessions are bound to their repositories). Run dedupe searches through the MCP search_issues READ tool. ⛔ It is never a write channel.
  • ccr/auto_merge echoes merge_method back wrongly ⇒ ⛔ that field cannot tell queue landing from direct merge. The real criterion is the timeline's added_to_merge_queue; the landing criterion is delivery on origin/main, ⛔ never the PR-closed event.
  • A closing keyword does NOT clean the board. Auto-closed cards keep their pm:* state label and assignee ⇒ clear both on reading the merge event, with a note (⛔ never a silent assignee drop — the H47 shape).
  • check-expected-skips.mjs / check-half-states.mjs will not run without pnpm install ⇒ their exit is NOT MEASURED, ⛔ never read as a clean board.
  • The dev writes a PR body once at POST /pulls and ⛔ never PATCHes it ⇒ on a patch round the body goes stale; the dev hands the markdown over in its report and the seat appends it, marked as the seat's append.
  • ⭐ git-history.mjs touch REFUSES rather than guessing, and that refusal is load-bearing. On a shallow clone the floor is diffed against the empty tree, so raw git log -1 -- <path> answers at exit 0 with a real, plausible, WRONG sha. Measured this seating on references/lanes/services.md; the true value came only after unshallowing to 14358 commits.
  • ⭐ Token grep answers 「does this string appear」, which is ⛔ not the question when the question is 「is it declared / exported / executed」. Prose describing a thing is indistinguishable from the thing. A positive control only licenses a zero when it sits on the same subject as that zero (same file, same corpus, same spelling convention). ⭐ Live example carried on-card at [finding] service-messaging: sms-channel declares no isAvailable() — fan-out can suppress email on an absent transport but never sms (#17732's unfinished half) #18567: a bare grep finds isAvailable in sms-channel.ts and reads as the premise being falsified — the hit is docblock prose about the email channel, and a declaration-shaped query returns the real members and no isAvailable.

Platform facts measured by the last incumbents (session_01Evb5jFDZGKQE9KG4jbMfMF and its predecessor)

  • REST reachable: /rate_limit core 15000/15000, repo-scoped read leg 200 ⇒ session gate open. Write identity huangyiirene.

  • ⚠️ gh is ABSENT in this container — REST goes through curl or python urllib.

  • ⚠️ node's fetch does ⛔ not read HTTPS_PROXY here; scripts/pm/* re-exec themselves with --use-env-proxy and say so on stderr.

  • Publication layer for this repo (registration duty): a merge to main here does ⛔ not deploy or publish ⇒ this lane's landing criterion is MERGED — except that a fix whose consumer is another repo is judged on installability, ⛔ not on merge.

  • ⛔ cloud, objectui, hotcrm are NOT reachable from this session (GitHub scope: objectstack-ai/objectstack). Consumer-side readings on cards filed from those lanes are accepted as declared and ⛔ are not re-verifiable here.

  • This session's reading: REST reachable, /rate_limit core 15000/15000, repo-scoped read 200. gh is absent; node_modules is absent in the shared checkout. The relay selector answers dispatch (workflow on main, Actions state active).

5. Notes

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

pm:seatPM seat registry issue - single-writer body, index = this label

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions