Skip to content

skills(objectstack-automation): the screen row does not teach that a paused screen's Next / Submit and step count are engine-served (follow-up owed by #26657) #26756

Closed

Description

@objectstack-fleet

Filing gate ①: a follow-up owed by work in flight. PR #26752 (Fixes #26657) declares Skills-docs: follow-up owed — skills/objectstack-automation/SKILL.md. It keeps skills/** (Tier H) out of the PR, so the PR stays under the seat's landing. Its contract review (6444906744) PASSed and judged the split correct. Filed by domain:spec seat 1 (#6017, session session_01WGufzfhobWEgUUrjz4rrbh). ⛔ Not a claim.

Blocked-by: #26752

Business reason: once #26752 lands, a paused flow screen carries an engine-served progress (ScreenProgressSpec { nextScreen: 'none' | 'possible' | 'certain'; step?; stepCount? }). The console's FlowRunner reads it, showing "Submit" on a last screen, "Next" otherwise, and "Step N of M" only when every path agrees. An agent authoring a flow from the skill is not told any of this. It may hand-roll button labels or step counters into screen fields, or try to author progress on a screen node, and nothing catches that.

Reader who acts: the skills lane (skills/** is Tier H).

Wanted

Dedupe: open issues grepped for ScreenProgressSpec and for objectstack-automation + screen: none besides #26657 itself.

Clause-②: no
Metadata-protocol: none

Activity

  1. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 1
    Session: session_01ADHkmSrRBdu9MdC6fc33Uu
    Account: os-steve (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-whp6tx (the card thread's harness push branch, self-reported at 2026-10-27T16:43Z — the measured platform exception to claude/issue-N-slug)
    Worktree: objectstack-issue-26756
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-automation/SKILL.md (the screen row: Next / Submit and the step count are engine-served off the graph, never authored; a branch, fault edge, loop back, non-screen pause or subflow answers possible), its row in scripts/check-skills-token-ratchet.mjs (fold first, then raise at the measurement under the standing ruling 「A:先削重复,余额按实测提高」), an eval prompt only if it fits with no raise, and a patch changeset for @objectstack/skills; nothing else (stop on breach; explain in the report)
    Container & model: XS, mode:thread, model: CONTRACT_REVIEW_TIER (dispatch-gates --tier: MANDATORY — skills/**, clause ①, no one-line exit), effort: high. Tier H (skills/**): draft PR; ⛔ the dev never readies, arms or enqueues it.
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (a follow-up owed by landed spec work)
    Thread-read: none
    Premise: holds (seat re-measure on origin/main 8b276385: PR #26752 merged (e438a55e); the screen rows at SKILL.md:48 and :91 say nothing about progress, Next, Submit or step counts)
    Serial constraints cleared: the Blocked-by PR #26752 merged; no open PR names skills/objectstack-automation/**

  2. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 26756,
      "status": "done",
      "branch": "claude/project-thread-whp6tx",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/26812",
      "head": "270df422512b9c5b9afda3a89f4666bc9d5eaa62",
      "session": "session_01ADHkmS7nPHShBb87HjHRf4",
      "premise_still_valid": true,
      "summary": "The `screen` node row of skills/objectstack-automation/SKILL.md now says Next / Submit and \"Step N of M\" are not authored: when the screen pauses the engine reads the graph and serves `progress` (`nextScreen: 'none' | 'possible' | 'certain'`; `step` / `stepCount` only when every path agrees), which alone labels the button and draws the counter; a `decision`, `fault` edge, loop back, non-screen pause (`approval`, `wait`) or `subflow` after a screen answers `possible` (Next, no count); `progress` in a node `config` is refused (ScreenConfigSchema is a strictObject); never hand-roll a label or counter into `fields`. Every key read off origin/main (contracts/automation-service.ts, api/automation-api.zod.ts, screen-nodes.ts readScreenProgress, FlowRunner.tsx). Paid under the standing ruling: three restatements folded first (-87 bytes of text, -2 of re-wrap whitespace, each with its surviving home named in the PR body), then the token ceiling re-pinned AT the measurement 6358 -> 6466 (25429 -> 25864 priced bytes, +524 / -89, +435 net; headroom was 3 bytes). Patch changeset for @objectstack/skills with both declaration lines. No eval prompt: evals/flows-triggers-approvals.json is at headroom 0 (2734 / 2734), so a prompt fits only with a raise the card excludes. Whole-file 452 -> 451 lines, 6358 -> 6466 tokens; whole-package (11 SKILL.md) 4606 -> 4605 lines, 56135 -> 56243 tokens.",
      "tests": "No test files in the diff (published skill text, a ratchet row, a changeset). node scripts/check-skills-token-ratchet.mjs on head 270df422: `skills/objectstack-automation/SKILL.md is 6466 tokens (ceiling 6466; headroom 0)`, `81 authored bundle file(s) within their ceilings`; --self-test exit 0. No ablation: no tested behaviour changed.",
      "gates": "Local subset on head 270df422 (worktree objectstack-issue-26756, merge base 8b276385): build closure `os-verify-lock.sh -c \"pnpm exec turbo run build --concurrency=2 --filter='./packages/**'\"` VERDICT command-exit 0 (75/75, 8m43s). `dispatch-gates --commands --repo objectstack-ai/objectstack` derived 63 commands; each ran serially with stdin closed, exit captured before any pipe: 63/63 exit 0 (incl. check:skills-token-ratchet + --self-test, check:skill-docs, check:empty-changeset, check:pm-skill-id-lint, check:doc-authoring, check:doc-formula-expressions, check:dual-build-cjs-loads, check:dts-closure, check:pm-dispatch-gates). `dispatch-gates --ran`: 63 derived, 63 run, 0 NOT-MEASURED, 0 UNRUN. --tier: MANDATORY (skills/**, clause ①, no one-line exit); changed lines 48. CI families (pnpm lint, type-check lanes, the farm): the PR's check-runs, not re-run locally; CI not awaited.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "4 — all reads: issue_read get #26756 (1), issue_read get_comments #26756 (3, waiting for the Claim). No MCP write.",
      "api_writes": "2 — git push origin claude/project-thread-whp6tx (not REST); relay with-fleet.sh --via dispatch pr_create -> #26812 (run 40548961043, 9641 bytes sent = stored, assignee os-steve); this os-dev-report comment via post-stamped.mjs --comment=26756 (relay). No labels sent: a changeset is included, so skip-changeset does not apply and the delta names no label.",
      "line_budget": "skills/objectstack-automation/SKILL.md 452 -> 451 lines; tokens 6358 -> 6466 (ceiling re-pinned at the measurement under 「A:先削重复,余额按实测提高」); package 4606 -> 4605 lines, 56135 -> 56243 tokens.",
      "deviations": [
        "The platform-assigned branch claude/project-thread-whp6tx is not claude/issue-N-slug (the claim records the exception); worktree objectstack-issue-26756 created on it after `git checkout --detach` in the shared checkout; no empty-branch probe push.",
        "origin/main moved to 0f0b9f55 after the branch was cut; dispatch-gates reports none of the visible upstream commits touched what the derivation reads, so main was not merged (AGENTS.md §10 conditions not met).",
        "The harness asks for issue_write / update_pull_request after pr_create (assignee + reviewer): not done — the standing order forbids GitHub MCP writes; the relay set the assignee, and on a Tier H diff the relay requests the governed approvers itself."
      ],
      "files_changed": [
        "skills/objectstack-automation/SKILL.md",
        "scripts/check-skills-token-ratchet.mjs",
        ".changeset/26756-automation-skill-screen-progress.md"
      ],
      "open_questions": [
        {
          "question": "Which screen row carries the teaching: the node row (L91) or the flow-type row (L48)?",
          "options": ["A: the node row, where config.fields[] is declared (chosen)", "B: the flow-type row"],
          "recommendation": "A, because the hand-rolled label or counter would be written into fields on the node row; the flow-type row only names the kind."
        }
      ],
      "out_of_scope_findings": [
        "carrier: none · noted, not filed — a future raise of evals/flows-triggers-approvals.json under the same ruling can add a prompt asserting an answer never spells a Submit / Next label or a step counter into screen fields."
      ]
    }
  3. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT → PR #26812 comment 6448715005 · domain:skills#1 · 2026-10-27T17:23Z · Tier H; draft until a GOVERNED_APPROVERS approval; contract review requested from the director seat.

  4. objectstack-fleet commented on Oct 27, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:skills#1 · session_01ADHkmSrRBdu9MdC6fc33Uu · 2026-10-27T23:22Z — PR #26812 merged through the queue (merge commit e269d3b652) on the os-zhuang approval, after the director's PASS 6448877682; the screen node row now says Next / Submit and the step count are engine-served from progress, never authored, its ratchet row at the measurement. The card closed by its Fixes line; pm:dispatched stripped in this act.

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions