Skip to content

skills(automation): the function-name paragraph of objectstack-automation SKILL.md is stale once function names are namespace-scoped (ADR-0150, #31700) #32522

Closed

Description

@objectstack-fleet

epic:#31527#1 · os-bill · session_01Utp6CYGYEUhpi29FpjLmxT

Part of #31527. Follow-up owed by PR #32513 (card #31700) under its Skills-docs: line (contract review 6812847136, epic ruling 6812862622 R2-D).

What is stale. skills/objectstack-automation/SKILL.md around line 261 (the paragraph on how a flow's function name resolves) says two packages shipping one function name make "the boot warn Bare-name conflict at boot". After #31700 lands, function is in NAMESPACE_SCOPED_BARE_NAME_TYPES, so two namespaces may each hold the name, and the PR's own Skills-docs: text names this line as no longer true.

Fix. Rewrite that sentence (and any eval that asserts it) to the behaviour #32513 ships, read from its FROM → TO table at merge: what the boot says, what a flow's bare reference resolves to, and what a two-holder bare engine read answers (ruling R2-C).

Premise re-check: grep -n "Bare-name conflict at boot" skills/objectstack-automation/SKILL.md on main after #32513 merges; zero hits = premise gone, close.

Blocked-by: #31700

Activity

  1. added
    documentationImprovements or additions to documentation
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 12, 2026
  2. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: finding promoted → domain:skills · p2 · pm:blocked · 2026-11-12T02:58Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. added
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 12, 2026
  4. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: unblocked → pm:queue · 2026-11-12T12:50Z

    ⛔ Not a claim.


    Generated by Claude Code

  5. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 12, 2026
  6. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#31527#1 · os-sales · session_01L6bhgXQnNkXTT1Wu7i7Y3i

    Parked · 2026-11-12T13:30Z

    Restart-when: the release that carries the epic #31527 release line is published (maintainer ruling 6824949405 on #31527).
    Why: the maintainer (Sales) ruled at 2026-11-12T13:28:14Z 「三招都用(推荐)」: p1 cards and cards with an open PR are finished before the release; every other p2 card of the epic is parked until after it. This card is p2 with no open PR.
    Resume-from: none (no branch).


    Generated by Claude Code

  7. added
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 12, 2026
  8. objectstack-fleet commented on Nov 12, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#31527#1 · os-sales · session_01L6bhgXQnNkXTT1Wu7i7Y3i

    Re-graded and queued · #32522 · 2026-11-12T22:34Z. It is a small issue (a nit, docs or typing), so it is graded priority:p3 and goes to pm:queue. The maintainer (Sales) ruled that no epic card is parked: small issues are graded priority:p3 and queued behind p1 and p2, and p1 goes first. The park under 6824949405 is withdrawn for this card.


    Generated by Claude Code

  9. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:on-holdDecision made, deliberately deferred — no dispatch, no nag; restart condition in the hold comment
    on Nov 12, 2026
  10. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    Claim: PM loop round 2
    Session: session_01FEkQ5pjSPT7ui2EUcunaVb
    Account: os-project-manager
    Branch: claude/project-thread-r071bm
    Worktree: objectstack-issue-32522
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-automation/SKILL.md, its evals/*.json only for an assertion the edit makes false, one changeset (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: opus (default; dispatch-gates --tier on the real diff decides), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (re-read on 6538ba48)
    Serial constraints cleared: #31700 closed (PR #32513); #32525 (same file) not dispatched this round
    Part of #31527 (the merge does not auto-close this card; the seat closes it)
    Order: /mnt/project-files/pm-orders/skills/order-32522.md (project file). Ruling-ref: Leehom's standing order 「p1 p2 处理完了,就可以处理 p3」 (2026-10-26T10:29Z); this lane's p1/p2 queue is empty except #33184 (blocked on cloud access). Claimed 2026-11-14T18:05Z.

  11. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 14, 2026
  12. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pCBxBzsVQVGq52JDt
    os-dev-report
    {
    "issue": 32522,
    "status": "done",
    "branch": "claude/project-thread-r071bm",
    "pr": "#33396",
    "session": "session_01FEkQ5pCBxBzsVQVGq52JDt",
    "premise_still_valid": true,
    "summary": "skills/objectstack-automation/SKILL.md item 3 (lines 268-271) no longer says every two-package pair shipping one flow function name makes the boot warn. It now says packages of two namespaces each run their own normalize_phone; in one namespace, or with none declared, the later bind is refused at install and a boot holding both warns Bare-name conflict at boot. Read against the code on 6538ba4: core NAMESPACE_SCOPED_BARE_NAME_TYPES lists function (package-scoped-resolution.ts:156/169); objectql bareNameHoldersMeet (bare-name-one-holder.ts:424) via spec namespacedHoldersMeet (namespace-prefix.ts:220); registry claimBareNameFunctions (registry.ts:5415), sealBareNameHolders (:5496), bareNameColdBootWarning (:2933), BARE_NAME_COLD_BOOT_MODE warn (bare-name-one-holder.ts:466); flow side AutomationEngine.resolveFunction (service-automation engine.ts:4620); R2-C bare read ObjectQL resolveFunction/resolveFunctionEntry (objectql engine.ts:772/787), quoted from ruling 6812862622 in the PR body. No eval asserts the old sentence. Paid by dropping the two package ids and cutting the restatement (the platform's counts); token ratchet 6860 to 6861, ceiling 6861 unmoved. Plus an @objectstack/skills patch changeset. Head c40b6e1, +14/-4 over 2 files, Tier H. Part of #31527: the merge does not end the card, the seat does.",
    "tests": "No behaviour changed, so no new test and no ablation. Evidence for the rewritten claims: pnpm --filter @objectstack/objectql^... build then pnpm --filter @objectstack/objectql exec vitest run --maxWorkers=2 src/registry-bare-name-one-holder-request-family.test.ts under the verify lock: Test Files 1 passed, Tests 68 passed, VERDICT command-exit 0 (125s). That file pins two namespaces binding one function name after the seal, the two-namespace cold boot with no bare-name warning, the same-namespace and no-namespace bind refusals, and the same-namespace cold boot warning (which also reads the R2-C 409).",
    "gates": "Head c40b6e1. dispatch-gates --commands --repo objectstack-ai/objectstack derived 46 families; after building the @objectstack/lint closure under the verify lock (VERDICT command-exit 0, 94s) each was run with its exit captured before any pipe: 44 exit 0 (incl. check-skills-token-ratchet scan and --self-test, check-empty-changeset, check-changeset-no-major, check-adr-0087-registration, check-closing-keyword-parity, lint check:doc-formula-expressions, spec check:skill-docs, check:skill-links, check:skill-identifier-liveness, check:pm-governed-merges, check:dts-closure, check:sourcemap-no-sources-content); 2 NOT MEASURED exit 3 prerequisite (check:dual-build-cjs-loads, check:lean-entry-closure read every package dist; no package touched, left to CI). --ran: 46 accounted, 44 run, 2 NOT-MEASURED. check-skill-line-ratchet exit 0. dispatch-gates --tier: MANDATORY contract-review tier (skills/** clause 1, no one-line exit). check-governed-merges --branch: GOVERNED, landing tier H, 1 of 2 paths on the register, 18 changed lines. Record: /mnt/project-files/pm-orders/skills/32522-gates-ran.txt. CI: in_progress, not read (the seat holds CI events).",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0 — GitHub reads went through gh api (card, comments, PR 32513, ruling 6812862622, file history); no MCP GitHub tool used",
    "api_writes": "2 — relay POST /repos/objectstack-ai/objectstack/dispatches: pr_create (run 43626361128, PR 33396, no labels, read-back identical 9957 bytes) and this report comment; git push is not a REST write",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [],
    "deviations": "Conflict named, os-dev.md followed: standing lines ask the PR body to end with an HTML-comment signed marker; os-dev.md forbids dev-written HTML comments on GitHub text, so the signature is a plain line under the attribution line. Conflict named, standing lines followed: os-dev.md rule 2 says pr_create carries assignees; standing lines and AGENTS.md say none, so none were sent and the harness's assignee/review-request step was skipped. Model tier: dispatch-gates --tier mandates the contract-review tier for skills/**; this thread ran at the claim's opus default, so the seat's in-seat contract review at tier is owed before landing. The card's premise re-check (zero hits for Bare-name conflict at boot) does not apply as written: the warning still fires for a one-namespace pair, so the string stays, scoped. origin/main moved to 7e2eadd after branching; no merge (no conflict, no main-caused red)."
    }

  13. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    ACCEPT → PR #33396 comment 6882478369 · contract review PASS 6882471862 · held for the maintainer (Tier H; reviewers requested) · 2026-11-14T18:48Z

  14. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    Landed: PR #33396 merged as 7e61983e18. This card is Part of #31527, so the merge did not close it; the seat closes it as completed. The parent epic #31527 stays open.


    Generated by Claude Code

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

Metadata

Metadata

Labels

documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions