You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
platform checklist RUNNER.md: two stale runner facts: the connector self-URL fact reads a baseUrl that GET /api/v1/automation/connectors does not carry, and the scheduled-work notes predate the OS_AUTOMATION_SCHEDULED_WORK_ENABLED opt-in #24119
Filing gate ①: a defect in the shipped QA runbook. reach: every checklist-test runner, who reads docs/qa/platform-checklist/RUNNER.md before any item. Both facts send a runner to a key or a behaviour that is not there.
Filed by the domain:devx seat 2 (#20163) · os-sales · session_016PVjjuVPte5XEJvaQx1E4t, from the #24036 half-A dev's open question 1. The seat answered option A: a small follow-up edit by the seat owning docs/qa/platform-checklist/**. ⛔ Not a claim; the lane and grade are triage's.
Reader who acts: the domain:devx seat (docs/qa/**). It is outside #24036's claimed area files, which is why it is a card of its own.
Connector self-URL.RUNNER.md tells a runner to read a baseUrl from GET /api/v1/automation/connectors, but that response carries no baseUrl. GET /api/v1/meta/connector shows the build-time http://127.0.0.1:3000.
Scheduled work.RUNNER.md's scheduled-work notes predate the OS_AUTOMATION_SCHEDULED_WORK_ENABLED opt-in, so a runner expects scheduled work to fire without setting it.
Done when
RUNNER.md states both facts as the runtime answers them on current main, cites the source for each, and keeps node scripts/check-platform-checklist.mjs green.
Dedupe
MCP search_issues on this repository, closed included, at this filing: platform checklist RUNNER.md stale connector self URL baseUrl scheduled work OS_AUTOMATION_SCHEDULED_WORK_ENABLED gave 48 hits. The top 10 are all qa-run records (#24100, #24103, #24115 …), and none is a RUNNER.md card.
Dedupe words: RUNNER.md connector baseUrl; RUNNER scheduled work opt-in; checklist runner stale fact.
Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
Why p2: every checklist-test runner reads RUNNER.md first, and both facts send a run to a key or a behaviour that is not there. The platform checklist's runs are the maintainer's standing priority (「平台测试清单反复变红,肯定要修啊」).
Claim: PM loop round 18 · domain:devx seat 2 · 2026-10-17T05:39Z · triage grade 6228246052 (priority:p2, domain:devx, area:devpath, documentation, pm:queue)
Session: session_016PVjjuVPte5XEJvaQx1E4t
Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
Branch: claude/issue-24119-runner-facts
Worktree: objectstack-issue-24119
Domain: domain:devx
Seat: domain:devx#2
File surface: docs/qa/platform-checklist/RUNNER.md only, the two passages the card names (the connector self-URL fact and the scheduled-work notes). ⛔ Not the "The record title" section, which #24127 may change. ⛔ No area files and no product code. Stop on breach and explain it in the report.
Container & model: M, mode:subagent, model: TIER_DEFAULT
Clause-②: no
Responsibility: two RUNNER.md facts that predate the product (a connector baseUrl that GET /api/v1/automation/connectors does not carry; scheduled-work notes without the OS_AUTOMATION_SCHEDULED_WORK_ENABLED opt-in) | none: check-platform-checklist reads anchors, not runner prose truth | every checklist-test runner, who reads RUNNER.md before any item
Thread-read: 6228246052
Serial constraints cleared:
os-dev-report
{
"issue": 24119,
"status": "done",
"branch": "claude/issue-24119-runner-facts",
"pr": "#24156",
"session": "session_016PVjjuVPte5XEJvaQx1E4t, the dispatching seat's session (subagent run). The commit carries it in its Claude-Session trailer.",
"premise_still_valid": true,
"summary": "RUNNER.md now states both facts as the runtime answers them on main 2889760, each with its source. Fact 1 was stale. The connector Check sentence pointed at GET /api/v1/automation/connectors, which serves getConnectorDescriptors() (name, label, type, description, icon, origin, state, degradedReason, actions) and never carries baseUrl. It now reads GET /api/v1/meta/connector/showcase_status_api, item.providerConfig.baseUrl, and records a measured boot pair. The card's other reading, that /meta/connector shows a BUILD-TIME 3000, is disproved for os dev. The value follows the serving process's environment: boot B answered 47312 while dist/objectstack.json still held 3000. The rest of that bullet (resolution order, -p alone is not enough, the OS_PORT fix) re-measured true and was left as written. Fact 2's premise is corrected. RUNNER.md had no scheduled-work passage at all: grep -ci schedul gives 0 at c91af8e, and the file is byte-identical to 2889760. The fact was missing rather than stale, so it was added as one new environment-fact bullet after the connector bullet, which meets the Done-when. The bullet gives the reader resolveScheduledWorkEnabled() in packages/types/src/env.ts (default off, truthy only for 1/true/on/yes), the binders that consume it, and the default/on boot pair.",
"tests": "Docs-only diff, so no product test applies and no ablation was run (no tested behaviour changed). Measurement: a full pnpm build under os-verify-lock (VERDICT command-exit 0, 76 tasks, 30 cached, 3m29s on a shared box), then two os dev boots of examples/app-showcase from the worktree on the canonical RUNNER line. Boot A, -p 47311 with the environment untouched: GET /api/v1/automation/connectors row keys = actions, description, icon, label, name, origin, state, type, with no baseUrl in the body. GET /api/v1/meta/connector/showcase_status_api item.providerConfig.baseUrl = http://127.0.0.1:3000. A showcase_task create fired showcase_declarative_connector_ping, which logged: Node 'ping' failed: connector_action(showcase_status_api.request) failed: fetch failed. Banner: Flows: 32 flow(s) 19 bound, plus the two NOT bound, disabled by deployment policy lines (showcase_task_due_reminder time_relative, showcase_scheduled_digest schedule). /_status answered bound:false for both, with the policy reason. Boot B, OS_PORT=47312 OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1 with -p 47312: /meta/connector baseUrl = http://127.0.0.1:47312 while the artifact held 3000. The ping flow run completed with ping.body status ok. Banner: 21 bound. /_status answered bound:true for both. showcase_scheduled_digest completed its first run at 2026-10-17T05:51:55Z, trigger.type schedule. Premise readings: c91af8e is an ancestor of 2889760 (exit 0, a self-proving answer), and the RUNNER.md diff between them is empty. Both servers were stopped by their recorded PIDs (5884/5900 and 6399/6415, whole trees verified dead) and both ports answer 000.",
"gates": "Local, on the final head 4094dd4: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths) derived 13 commands for a 1-path change set. All 13 exited 0, captured before any pipe: check-ci-filter-parity, check-closing-keyword-parity and its --self-test, check-comment-mask-corpus, @objectstack/lint check:doc-formula-expressions, check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist ('check-platform-checklist: OK — 16 areas, 327 items (322 active, 1 planned)'), check:refd-timer-probe, check:watch-hint-literal. The same 13 also exited 0 on d765481 before the merge of main 6dede7a. --ran: 13 derived famil(ies) accounted for, 13 run, 0 NOT-MEASURED (a DERIVED zero; all 13 recorded an exit code). node scripts/pm/check-governed-merges.mjs --branch claude/issue-24119-runner-facts: 0 of 1 path(s) hit the register, NOT governed, 42 changed lines. CI check-runs on 4094dd4 when this report was written: success for Auto Label, Dogfood Regression Gate, filter, The card this PR closes must claim this branch, Check PR Size, Part-of PR must not also close its card, No other open PR may claim the same single-writer path, No other open PR may claim the same issue, and Check Documentation Links. Still in_progress: Test Core 1-6/6, Type Check (workspace, debt ledger, consumer gates, source gates), Lint (repo & tooling, docs & code guards, slot lookup & corpus, PM dispatch-gates, tooling self-tests, CI release & engine, query-options erasure, ESLint), Governed Surface Queue Guard and Check Changeset. Check Changeset is expected to need the seat's skip-changeset label, since no changeset was written, as dispatched. Skipped by selector: Build Core, Build Docs, Console Pin Gate, Temporal Conformance, Dogfood Verify CLI and the dogfood shards.",
"mcp_calls": "0",
"api_writes": "3 REST requests in 2 fleet-write relay strokes, each sent as one repository_dispatch (POST /repos/objectstack-ai/objectstack/dispatches): POST /repos/objectstack-ai/objectstack/pulls (draft, read back identical, 11094 bytes); POST /repos//issues/24156/assignees (os-sales, listed in the answer); POST /repos//issues/24119/comments (this report). git push x3 (empty-branch probe, the edit, the merge) is not REST. Reads were gh api GETs only.",
"open_questions": [],
"out_of_scope_findings": [
"carrier: none · noted, not filed. On an os dev boot of a host config, serve.ts says the dev artifact door's copy replaces the config wrap's copy on the first artifact reload, so after a watch rebuild /meta/connector would follow the recompiled artifact. Whether that recompile sees an exported OS_PORT was not measured; both boots here were cold boots with no rebuild. It is in the PR's Acceptance notes."
],
"files_changed": [
"docs/qa/platform-checklist/RUNNER.md"
],
"changed_lines": "42 (+39 / -3, 1 file)",
"deviations": [
"Fact 2 had no passage to rewrite: RUNNER.md never mentioned scheduled work. The card's Done-when was met by adding one new bullet in the same Environment facts list, right after the connector bullet. It stays inside the dispatched file, outside The record title section and outside every area file. That section and the area files are untouched.",
"main moved once while the PR was being prepared (6dede7a, runtime/plugin-sharing only, no overlap with RUNNER.md or any cited path). It was merged, never rebased, before the PR opened. All 13 gates and the governed check were re-run on the merge head 4094dd4.",
"The system reminder's attribution lines (a model-named Co-Authored-By trailer and an emoji PR footer) were not used. AGENTS.md's model-free trailer pair and session-URL PR footer were followed, as the reminder defers to the repository's own instructions.",
"The boot needed a full pnpm build (54 cache misses) in the worktree. Boot state went only to gitignored paths (examples/app-showcase/dist, examples/app-showcase/.objectstack) and to the scratchpad, and leaves with the worktree. The worktree's node_modules was removed before this comment; git worktree remove runs right after it."
]
}
Landed: RUNNER.md states the connector self-URL and scheduled-work facts as the runtime answers them · domain:devx seat 2 · session_016PVjjuVPte5XEJvaQx1E4t · 2026-10-17T06:38Z
reading
value
merge
#24156 → c40506aac0 on origin/main, merged 2026-10-17T06:37Z from the merge queue
blob identity
docs/qa/platform-checklist/RUNNER.md on origin/main equals the PR head 4094dd433
Activity
objectstack-fleet commentedon Oct 17, 2026
Triage: first grade,
priority:p2·domain:devx·area:devpath·documentation·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-17T02:00ZTriage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.
checklist-testrunner reads RUNNER.md first, and both facts send a run to a key or a behaviour that is not there. The platform checklist's runs are the maintainer's standing priority (「平台测试清单反复变红,肯定要修啊」).domain:devx:docs/qa/**. It is outside platform-checklist: revise the items the #23878 full run and the #23879 since:v18 run found stale (knownGaps, steps, fixtures, oracles, source anchors across 15 areas; no clause red) — ledger follow-up #24036's claimed files, as the card says.Generated by Claude Code
objectstack-fleet commentedon Oct 17, 2026
Claim: PM loop round 18 ·
domain:devxseat 2 · 2026-10-17T05:39Z · triage grade6228246052(priority:p2,domain:devx,area:devpath,documentation,pm:queue)Session:
session_016PVjjuVPte5XEJvaQx1E4tAccount:
os-sales(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/issue-24119-runner-factsWorktree:
objectstack-issue-24119Domain:
domain:devxSeat:
domain:devx#2File surface:
docs/qa/platform-checklist/RUNNER.mdonly, the two passages the card names (the connector self-URL fact and the scheduled-work notes). ⛔ Not the "The record title" section, which #24127 may change. ⛔ No area files and no product code. Stop on breach and explain it in the report.Container & model:
M,mode:subagent,model: TIER_DEFAULTClause-②: no
Responsibility:
two RUNNER.md facts that predate the product (a connector baseUrl that GET /api/v1/automation/connectors does not carry; scheduled-work notes without the OS_AUTOMATION_SCHEDULED_WORK_ENABLED opt-in) | none: check-platform-checklist reads anchors, not runner prose truth | every checklist-test runner, who reads RUNNER.md before any itemThread-read: 6228246052
Serial constraints cleared:
6227745400on [PM seat] domain:devx · seat 2 — 🟢 os-sales · session_016PVjjuVPte5XEJvaQx1E4t · serial (maintainer) #20163). docs: no page tells a self-hosted operator how to connect their ObjectOS server to ObjectStack Cloud (Setup → Cloud Connection → Connect, then approve in the cloud account) #24066 landed (docs(deployment): Cloud Connection operator page — connect a self-hosted server to ObjectStack Cloud #24147) and closed. No other dispatch of this seat is in flight, and ci(rerun-safety-nightly): red three nights running on main and nobody was told — pass 1 fails @objectstack/cli and @objectstack/dogfood, pass 2 adds a different package set each night, 10-16 hit the 170-minute timeout #23880 waits on an external reading.pm:dispatchedcards' claims namesdocs/qa. None of the 6 open PRs touchesdocs/qa/platform-checklist/**.Generated by Claude Code
objectstack-fleet commentedon Oct 17, 2026
os-dev-report
{
"issue": 24119,
"status": "done",
"branch": "claude/issue-24119-runner-facts",
"pr": "#24156",
"session": "session_016PVjjuVPte5XEJvaQx1E4t, the dispatching seat's session (subagent run). The commit carries it in its Claude-Session trailer.",
"premise_still_valid": true,
"summary": "RUNNER.md now states both facts as the runtime answers them on main 2889760, each with its source. Fact 1 was stale. The connector Check sentence pointed at GET /api/v1/automation/connectors, which serves getConnectorDescriptors() (name, label, type, description, icon, origin, state, degradedReason, actions) and never carries baseUrl. It now reads GET /api/v1/meta/connector/showcase_status_api, item.providerConfig.baseUrl, and records a measured boot pair. The card's other reading, that /meta/connector shows a BUILD-TIME 3000, is disproved for os dev. The value follows the serving process's environment: boot B answered 47312 while dist/objectstack.json still held 3000. The rest of that bullet (resolution order, -p alone is not enough, the OS_PORT fix) re-measured true and was left as written. Fact 2's premise is corrected. RUNNER.md had no scheduled-work passage at all: grep -ci schedul gives 0 at c91af8e, and the file is byte-identical to 2889760. The fact was missing rather than stale, so it was added as one new environment-fact bullet after the connector bullet, which meets the Done-when. The bullet gives the reader resolveScheduledWorkEnabled() in packages/types/src/env.ts (default off, truthy only for 1/true/on/yes), the binders that consume it, and the default/on boot pair.",
"tests": "Docs-only diff, so no product test applies and no ablation was run (no tested behaviour changed). Measurement: a full pnpm build under os-verify-lock (VERDICT command-exit 0, 76 tasks, 30 cached, 3m29s on a shared box), then two os dev boots of examples/app-showcase from the worktree on the canonical RUNNER line. Boot A, -p 47311 with the environment untouched: GET /api/v1/automation/connectors row keys = actions, description, icon, label, name, origin, state, type, with no baseUrl in the body. GET /api/v1/meta/connector/showcase_status_api item.providerConfig.baseUrl = http://127.0.0.1:3000. A showcase_task create fired showcase_declarative_connector_ping, which logged: Node 'ping' failed: connector_action(showcase_status_api.request) failed: fetch failed. Banner: Flows: 32 flow(s) 19 bound, plus the two NOT bound, disabled by deployment policy lines (showcase_task_due_reminder time_relative, showcase_scheduled_digest schedule). /_status answered bound:false for both, with the policy reason. Boot B, OS_PORT=47312 OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1 with -p 47312: /meta/connector baseUrl = http://127.0.0.1:47312 while the artifact held 3000. The ping flow run completed with ping.body status ok. Banner: 21 bound. /_status answered bound:true for both. showcase_scheduled_digest completed its first run at 2026-10-17T05:51:55Z, trigger.type schedule. Premise readings: c91af8e is an ancestor of 2889760 (exit 0, a self-proving answer), and the RUNNER.md diff between them is empty. Both servers were stopped by their recorded PIDs (5884/5900 and 6399/6415, whole trees verified dead) and both ports answer 000.",
"gates": "Local, on the final head 4094dd4: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack (no paths) derived 13 commands for a 1-path change set. All 13 exited 0, captured before any pipe: check-ci-filter-parity, check-closing-keyword-parity and its --self-test, check-comment-mask-corpus, @objectstack/lint check:doc-formula-expressions, check:cross-package-test-inputs, check:doc-authoring, check:driver-memory-census, check:gitlink-declared, check:nul-bytes, check:platform-checklist ('check-platform-checklist: OK — 16 areas, 327 items (322 active, 1 planned)'), check:refd-timer-probe, check:watch-hint-literal. The same 13 also exited 0 on d765481 before the merge of main 6dede7a. --ran: 13 derived famil(ies) accounted for, 13 run, 0 NOT-MEASURED (a DERIVED zero; all 13 recorded an exit code). node scripts/pm/check-governed-merges.mjs --branch claude/issue-24119-runner-facts: 0 of 1 path(s) hit the register, NOT governed, 42 changed lines. CI check-runs on 4094dd4 when this report was written: success for Auto Label, Dogfood Regression Gate, filter, The card this PR closes must claim this branch, Check PR Size, Part-of PR must not also close its card, No other open PR may claim the same single-writer path, No other open PR may claim the same issue, and Check Documentation Links. Still in_progress: Test Core 1-6/6, Type Check (workspace, debt ledger, consumer gates, source gates), Lint (repo & tooling, docs & code guards, slot lookup & corpus, PM dispatch-gates, tooling self-tests, CI release & engine, query-options erasure, ESLint), Governed Surface Queue Guard and Check Changeset. Check Changeset is expected to need the seat's skip-changeset label, since no changeset was written, as dispatched. Skipped by selector: Build Core, Build Docs, Console Pin Gate, Temporal Conformance, Dogfood Verify CLI and the dogfood shards.",
"mcp_calls": "0",
"api_writes": "3 REST requests in 2 fleet-write relay strokes, each sent as one repository_dispatch (POST /repos/objectstack-ai/objectstack/dispatches): POST /repos/objectstack-ai/objectstack/pulls (draft, read back identical, 11094 bytes); POST /repos//issues/24156/assignees (os-sales, listed in the answer); POST /repos//issues/24119/comments (this report). git push x3 (empty-branch probe, the edit, the merge) is not REST. Reads were gh api GETs only.",
"open_questions": [],
"out_of_scope_findings": [
"carrier: none · noted, not filed. On an os dev boot of a host config, serve.ts says the dev artifact door's copy replaces the config wrap's copy on the first artifact reload, so after a watch rebuild /meta/connector would follow the recompiled artifact. Whether that recompile sees an exported OS_PORT was not measured; both boots here were cold boots with no rebuild. It is in the PR's Acceptance notes."
],
"files_changed": [
"docs/qa/platform-checklist/RUNNER.md"
],
"changed_lines": "42 (+39 / -3, 1 file)",
"deviations": [
"Fact 2 had no passage to rewrite: RUNNER.md never mentioned scheduled work. The card's Done-when was met by adding one new bullet in the same Environment facts list, right after the connector bullet. It stays inside the dispatched file, outside The record title section and outside every area file. That section and the area files are untouched.",
"main moved once while the PR was being prepared (6dede7a, runtime/plugin-sharing only, no overlap with RUNNER.md or any cited path). It was merged, never rebased, before the PR opened. All 13 gates and the governed check were re-run on the merge head 4094dd4.",
"The system reminder's attribution lines (a model-named Co-Authored-By trailer and an emoji PR footer) were not used. AGENTS.md's model-free trailer pair and session-URL PR footer were followed, as the reminder defers to the repository's own instructions.",
"The boot needed a full pnpm build (54 cache misses) in the worktree. Boot state went only to gitignored paths (examples/app-showcase/dist, examples/app-showcase/.objectstack) and to the scratchpad, and leaves with the worktree. The worktree's node_modules was removed before this comment; git worktree remove runs right after it."
]
}
Generated by Claude Code
objectstack-fleet commentedon Oct 17, 2026
Landed: RUNNER.md states the connector self-URL and scheduled-work facts as the runtime answers them ·
domain:devxseat 2 ·session_016PVjjuVPte5XEJvaQx1E4t· 2026-10-17T06:38Zc40506aac0onorigin/main, merged 2026-10-17T06:37Z from the merge queuedocs/qa/platform-checklist/RUNNER.mdonorigin/mainequals the PR head4094dd433Fixesclosed this card ascompleted.pm:dispatchedis removed in this act.GET /api/v1/meta/connector/<name>→item.providerConfig.baseUrl, never from/api/v1/automation/connectors.OS_AUTOMATION_SCHEDULED_WORK_ENABLED=1before scoring any clock-driven clause.os dev, by a measured boot pair.Generated by Claude Code