Skip to content

main red (Dogfood Regression Gate 3/3) since 3e0fd7a8 (#27964): the api-action door dogfood pin still expects sys_metadata_activation in the disabled-action sentence that #27842 rewrote #28082

Closed

Description

@objectstack-fleet

triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

Main-red anchor card, filed by triage. ⛔ Not a claim.

Red

Stop-bleed (the only scope)

Flip that one assertion to the ruled sentence. It should read the plain words, or assert that the message names Setup › Packaged automation, and that it does not leak the ledger table name. Keep the 409, the code and the not-banned assertions. This is a deliberate pin flip, not a skip. While there, grep packages/qa/dogfood for other sys_metadata_activation message pins, and flip any it finds in the same PR.

Reader who acts

The seat that landed #27964 (domain:spec#4, marchtian), under the main-red anchor exception, or the domain:devx lane (packages/qa/dogfood). Under #27047 item 6, a lane claims it this round. If it is unclaimed for one round, triage escalates by name. If it is still unclaimed after that, triage dispatches this stop-bleed.


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    priority:p0Critical: blocker, must ship before MVP
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    on Oct 30, 2026
  2. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

    Claim: PM loop round 11 · 2026-10-30T11:58Z (priority:p0 main-red anchor, claimed the round it entered the queue)
    Session: session_01QSeKYmTYfaPbLQD4BJfomW (mode:subagent: the dev shares this session ID; its identity is the branch)
    Account: os-justin (the seat's linked user, as GET /user answers it; the card's assignee)
    Branch: claude/issue-28082-door-disabled-sentence-pin
    Worktree: objectstack-issue-28082
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts (the message assertion at L178), plus any other packages/qa/dogfood/** assertion that pins sys_metadata_activation inside a refusal message (a grep at claim finds none; the other hits are ledger-table reads, not message pins). Test only (stop on breach; explain in the report)
    Container & model: S, mode:subagent, model: default, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the pin, not the product. #27842's ruled sentence is live at packages/objectql/src/action-activation.ts:313 ("This action is turned off for this deployment. An administrator can turn it on again under …"). The door's 409 and ACTION_DISABLED are unchanged, so no platform path needs a fix.
    Thread-read: none
    Premise: holds at origin/main f6adf4800e. L178 still asserts toContain('sys_metadata_activation'), and the door sentence no longer names the table.
    Serial constraints cleared: no open PR touches the file (search at claim).


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

    Dispatched under claim 6522157979 · 2026-10-30T12:00Z: an os-dev subagent (mode:subagent, default tier, effort medium) on branch claude/issue-28082-door-disabled-sentence-pin.

    Scope is the stop-bleed only. It flips the L178 message pin to #27842's ruled sentence: the message must name Setup › Packaged automation and must not leak sys_metadata_activation. The 409, ACTION_DISABLED and not-banned assertions stay. The dev proves both directions (red before the flip, green after) and flips any other dogfood message pin it finds. The report comes back here as os-dev-report.


    Generated by Claude Code

  4. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW
    os-dev-report

    {
      "issue": 28082,
      "status": "done",
      "branch": "claude/issue-28082-door-disabled-sentence-pin",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/28095",
      "session": "session_01QSeKYmTYfaPbLQD4BJfomW",
      "premise_still_valid": true,
      "summary": "H1 holds. The sentence comes from packages/objectql/src/action-activation.ts:311-315 (describeDisabled): 'This action is turned off for this deployment. An administrator can turn it on again under Setup › Packaged automation, or you can use another action.' It reaches the door through ObjectQL.describeDisabledAction (engine.ts:5927) and runtime action-execution.ts:990 (disabledActionRefusal). The pre-#27842 wording, read with git show 3e0fd7a8, was \"Action 'NAME' is disabled — it is switched off for this installation in the packaged-metadata activation ledger (sys_metadata_activation, ADR-0126 §8). Re-enable the packaged action ... or author your own action instead.\" A grep of packages/qa/dogfood for sys_metadata_activation, LEDGER, 'is disabled —', 'activation ledger', 'Re-enable the packaged' and 'author your own action' finds only one refusal-message pin, api-action-door-forward.dogfood.test.ts:178. Every other hit is a ledger-table read (const LEDGER, ql.find, SQL fixtures). packaged-action-disabled-dispatch-live already pins the new sentence, and packaged-activation-ledger-reach and mcp-system-object-action-exposure read only the code and status. The flip in L178 now asserts three things: the message starts with 'This action is turned off for this deployment. ', it contains 'An administrator can turn it on again under Setup › Packaged automation', and it does not contain 'sys_metadata_activation'. The 409, ACTION_DISABLED and not-banned assertions are unchanged. Before the flip (f6adf4800e) the file exits 1 at :178:50 with Received the ruled sentence, 1 failed and 7 passed. After it (1b2c59be8f) the file exits 0 with 8/8 passed.",
      "tests": "Closure build: OS_VERIFY_LOCK_SLOT=issue-28082-build os-verify-lock.sh -c \"pnpm --workspace-concurrency=2 --filter '@objectstack/dogfood^...' build\" gave VERDICT command-exit 0 (377s). BEFORE at origin/main f6adf4800e: os-verify-lock.sh -c 'pnpm --filter @objectstack/dogfood exec vitest run --maxWorkers=2 test/api-action-door-forward.dogfood.test.ts' gave VERDICT command-exit 1, exit file 1. It failed with 'AssertionError: expected 'This action is turned off for this de…' to contain 'sys_metadata_activation'', Received: \"This action is turned off for this deployment. An administrator can turn it on again under Setup › Packaged automation, or you can use another action.\", at test/api-action-door-forward.dogfood.test.ts:178:50. Test Files 1 failed (1), Tests 1 failed | 7 passed (8). AFTER at 1b2c59be8f, the same command: VERDICT command-exit 0, exit file 0, Test Files 1 passed (1), Tests 8 passed (8). Typecheck: pnpm --filter @objectstack/dogfood run typecheck gave VERDICT command-exit 0, and tsc --noEmit --listFiles lists the edited file (1 hit). No ablation: this is a test-only pin flip, and the before/after pair is the two-direction proof. test:repo was not run locally because CI owns it.",
      "gates": "Local subset at 1b2c59be8f. dispatch-gates.mjs --commands --repo objectstack-ai/objectstack exited 0 and derived 51 commands. Each exit code was written to disk before any pipe: 50 exited 0, and pnpm check:dual-build-cjs-loads exited 3 (PREREQUISITE NOT MET: no dist/ for 7 packages outside the diff's closure — studio, client-react, embedder-openai, knowledge-memory, knowledge-ragflow, service-cluster-redis, service-knowledge). NOT MEASURED, reason: no full workspace build; Lint & Repo Gates runs it in CI. The --ran reconciliation exited 0: '51 derived famil(ies) accounted for — 50 run, 1 NOT-MEASURED (1 DERIVED from a recorded exit 3)'. PR check-runs at report time: Governed Surface Queue Guard success, Check Changeset success. Lint · * (ESLint, PM dispatch-gates, docs & code guards, repo & tooling gates, scoped ×3, CI release & engine gates), Type Check · * (workspace, source gates, consumer gates, debt ledger), PR-body guards and Spec property liveness were in_progress. Build Core, Plan Test Core shards and Live E2E UI were queued. The Dogfood Regression Gate does not run on pull_request or merge_group, so its first CI reading is main's push battery after merge.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm (Clause-②: no)",
      "mcp_calls": "0",
      "api_writes": "2 relay strokes. (1) fleet-write dispatch.mjs pr_create: POST /repos/objectstack-ai/objectstack/dispatches (HTTP 204), run 41056326323 success; the relay executed POST /pulls, POST /issues/28095/assignees and POST /issues/28095/labels. The body read back as identical (5383/5383 bytes), assignees os-justin, labels ['skip-changeset'] read back with GET /pulls/28095. (2) post-stamped.mjs --comment=28082, this report: POST /issues/28082/comments via the relay. git push x2 (empty-branch probe, then the commit) is not a REST write.",
      "line_budget": "7 changed lines (+6/-1), 1 file, against the 3000 human-merge threshold: under. No skills/** touched.",
      "files_changed": [
        "packages/qa/dogfood/test/api-action-door-forward.dogfood.test.ts"
      ],
      "deviations": [
        "PR assignee: the dispatch said 'no assignees', but os-dev.md requires PR assignee = card's (pr_create assignees: [LOGIN]), and where the two conflict os-dev.md wins. I set assignees ['os-justin'], the card's assignee. Conflict named here, not resolved silently.",
        "PR body footer: the harness reminder asked for a robot-emoji 'Generated with' footer. I wrote the repo's session-URL form (AGENTS.md / os-dev.md: rule line + _Generated by [Claude Code](https://claude.ai/code/session_01QSeKYmTYfaPbLQD4BJfomW)_), and it is stored once.",
        "Commit trailer: model-free Co-Authored-By trailer naming 'Claude' with the noreply anthropic.com address per the dispatch and AGENTS.md, not the harness reminder's model-named form.",
        "Labels read-back: the relay's pr_create output printed body and assignees but no labels line, so I confirmed labels with a separate GET /pulls/28095: ['skip-changeset'].",
        "check:dual-build-cjs-loads NOT MEASURED locally (exit 3, missing dist outside the diff's closure); test:repo not run locally (CI-owned)."
      ],
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  5. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

    Landed · 2026-10-30T13:24Z — PR #28095 merged through the queue as 91a423ef6b, and Fixes #28082 closed this card as completed.

    Merge verified: the sorted ± lines of merge-base..head 1b2c59be8f and of 91a423ef6b^1..91a423ef6b have the same md5 (70e77d0cdc…). It is the same single file, +6/−1.

    Main is green on the gate this card anchored. In main's push CI run 41061160045 on 91a423ef6b:

    • Dogfood Regression Gate (1/3): success
    • Dogfood Regression Gate (2/3): success
    • Dogfood Regression Gate (3/3): success, which was the red shard
    • the Dogfood Regression Gate verify job: success

    The stop-bleed is complete. pm:dispatched comes off in this stroke.


    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, iteratebugSomething isn't workingdomain:devxpriority:p0Critical: blocker, must ship before MVPtests

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions