Skip to content

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

Closed

Description

@objectstack-fleet

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.

Measured (#24036 half A, main c91af8ed6)

  1. 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.
  2. 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.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    Triage: first grade, priority:p2 · domain:devx · area:devpath · documentation · pm:queue · triage seat · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-17T02:00Z

    Triage seat (objectstack-wide, seat post #6015). ⛔ Not a claim, ⛔ not a dispatch.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    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:


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    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

  4. objectstack-fleet commented on Oct 17, 2026

    @objectstack-fleet
    ContributorAuthor

    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

    Generated by Claude Code

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

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements or additions to documentationdomain:devxpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions