Skip to content

Bare-name phase 2: the published authoring skills teach one rule, every metadata name carries the namespace (ruling C on #30798) #30805

Closed

Description

@objectstack-fleet

epic:#3600#1 · hotlong · session_01Q4EjjPXwX1YfHyKJUh4agu

Filing-gate category: ② execution of a maintainer ruling. Decision #30798 ruled C, maintainer verbatim (Claude Code session, 2026-11-06): 「同意 c」: every package-authored metadata name carries its namespace, phased. Routing, verbatim: 「能交给车队开发的你不要自己开发」.

Phase 2 of 3, the AI-authoring half. Under C the AI writes one rule: every name starts with the package namespace. The published skills must teach it before phase 3 makes it a refusal.

Ask

  1. Update the published authoring skills under skills/** and their examples so every metadata name they show or generate carries the namespace prefix (crm_send_email, crm_sales_rep), stated as one rule beside the existing object rule. Exceptions: fields, object extensions, container views, translations.
  2. Fix every example in those skills that shows a bare non-object name.
  3. skills/** is a governed surface: land it through the governed path.

Reader: the domain:skills lane seat, from pm:queue.


Generated by Claude Code

Activity

  1. added
    priority:p1High: required for production / M2
    pm:queueReady for the PM dispatch loop
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    area:devpathThe road — create, dev, verify, publish/install, connect an agent, iterate
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 6, 2026
  2. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk

    Claim: PM loop round 5 · 2026-11-06T04:53Z
    Session: session_016WV4d1mkgEris4MHHLjtnk
    Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: the card thread's designated claude/project-thread-* branch; the seat re-posts this claim whole with the Branch line once the thread reports it
    Worktree: objectstack-issue-30805
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/** (the published authoring skills, their references, rules, examples and evals), one root .changeset/ file. ⛔ packages/**, ⛔ content/docs/**, ⛔ docs/adr/**, ⛔ every ceiling (compress, do not raise) (stop on breach)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: MANDATORY CONTRACT_REVIEW_TIER for skills/** clause ①; exit taken = the proactive low-headroom downgrade under the maintainer's standing posture of this project: develop on the default tier, the contract-review tier runs the final contract review; the compensating control is the seat's at-tier review before ACCEPT), effort: xhigh (p1)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (phase 2 of ruling C on decision #30798)
    Thread-read: none
    Premise: holds: skills/objectstack-platform/SKILL.md L121 states the namespace rule for object.name only and calls bare UI/automation names a non-fatal lint warning, on origin/main 3da9a4c1
    Serial constraints: phase 2 lint #30804 (domain:devx, dispatched) may widen the naming/namespace-prefix lint; the skill states only the lint coverage main has when this PR pushes, so merge origin/main before pushing. Phase 3 refusal #30806 waits for this card. PR #30764 and the #30772 PR (both Tier H) edit skills/objectstack-platform/**: merge origin/main before pushing and re-measure the ratchet.

    Tier H (skills/**): draft until a governed approver approves; the seat's at-tier contract review precedes ACCEPT. p1: lands before the next release.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk

    Claim: PM loop round 5 · 2026-11-06T04:55Z
    Session: session_016WV4d1mkgEris4MHHLjtnk
    Account: os-elon-musk (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/project-thread-i5fmg5 (the card thread's designated branch; dev session session_016WV4cw4B24PbS5MZbX1r5j)
    Worktree: objectstack-issue-30805
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/** (the published authoring skills, their references, rules, examples and evals), one root .changeset/ file. ⛔ packages/**, ⛔ content/docs/**, ⛔ docs/adr/**, ⛔ every ceiling (compress, do not raise) (stop on breach)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier: MANDATORY CONTRACT_REVIEW_TIER for skills/** clause ①; exit taken = the proactive low-headroom downgrade under the maintainer's standing posture of this project: develop on the default tier, the contract-review tier runs the final contract review; the compensating control is the seat's at-tier review before ACCEPT), effort: xhigh (p1)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (phase 2 of ruling C on decision #30798)
    Thread-read: 6677257043
    Premise: holds: skills/objectstack-platform/SKILL.md L121 states the namespace rule for object.name only and calls bare UI/automation names a non-fatal lint warning, on origin/main 3da9a4c1
    Serial constraints: phase 2 lint #30804 (domain:devx, dispatched) may widen the naming/namespace-prefix lint; the skill states only the lint coverage main has when this PR pushes, so merge origin/main before pushing. Phase 3 refusal #30806 waits for this card. PR #30764 and the #30772 PR (both Tier H) edit skills/objectstack-platform/**: merge origin/main before pushing and re-measure the ratchet.

    Tier H (skills/**): draft until a governed approver approves; the seat's at-tier contract review precedes ACCEPT. p1: lands before the next release.

    Re-posted whole with the Branch line; supersedes claim 6677257043 (same claim, branch now named).


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p1 kept · domain:skills · 2026-11-06T04:56Z

    ⛔ Not a claim.


    Generated by Claude Code

  5. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-elon-musk · session_016WV4cw4B24PbS5MZbX1r5j
    os-dev-report

    {
      "issue": 30805,
      "status": "done",
      "branch": "claude/project-thread-i5fmg5",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30831",
      "head": "b31889fc631363764677964823fa20391c9e7e07",
      "session": "session_016WV4cw4B24PbS5MZbX1r5j",
      "premise_still_valid": true,
      "summary": "objectstack-platform/SKILL.md states one rule beside the object rule: every metadata name a package authors starts with its namespace, with four exceptions (fields, object extensions, container views, translations), taught as the authoring contract with main's actual enforcement (defineStack refuses bare object names, os build bare doc names, os lint naming/namespace-prefix warns only on intra-package duplicates; an action only twice on one object). About 95 bare non-object names across skills/** examples and evals now carry crm_ (todo_ for the app-todo i18n mirror), cross-references and eval must_contain tokens included. Every ratcheted file paid by same-file deletion of restatements; no ceiling moved. Round 2 (b31889fc) applies the contract review's must-fix (upgrade decision row skill name) and should-fix (action lint wording).",
      "tests": "No code change, no unit tests owed. Gate readings below; skills-specific: check-skills-token-ratchet exit 0 (every ratcheted file at or under its ceiling), ui check:skill-eval-tokens exit 0 ('Every must_contain token is taught by its own skill bundle'), spec check:skill-examples exit 0 after the client-react closure build.",
      "gates": {
        "derived": "48 families from dispatch-gates --commands at 7fd40067",
        "local_round1_head_7fd40067": [
          "pnpm --filter '@objectstack/client-react...' build :: exit 0",
          "pnpm --filter '@objectstack/lint...' build :: exit 0",
          "node scripts/check-adr-0087-registration.mjs --base origin/main :: exit 0",
          "node scripts/check-adr-0087-registration.mjs --self-test :: exit 0",
          "node scripts/check-changeset-no-major.mjs --base origin/main :: exit 0",
          "node scripts/check-closing-keyword-parity.mjs :: exit 0",
          "node scripts/check-closing-keyword-parity.mjs --self-test :: exit 0",
          "node scripts/check-comment-mask-corpus.mjs :: exit 0",
          "node scripts/check-doc-route-spelling.mjs --advisory :: exit 0",
          "node scripts/check-doc-route-spelling.mjs --self-test :: exit 0",
          "node scripts/check-dts-emitted.mjs --self-test :: exit 0",
          "node scripts/check-empty-changeset.mjs --base origin/main :: exit 0",
          "node scripts/check-empty-changeset.mjs --self-test :: exit 0",
          "node scripts/check-skills-token-ratchet.mjs :: exit 0",
          "node scripts/check-skills-token-ratchet.mjs --self-test :: exit 0",
          "node scripts/ci/assert-turbo-remote-cache.mjs --self-test :: exit 0",
          "node scripts/ci/plan-test-core-shards.mjs --self-test :: exit 0",
          "node scripts/ci/prune-turbo-cache.mjs --self-test :: exit 0",
          "node scripts/pm/release-rehearsal-clone.mjs --self-test :: exit 0",
          "node scripts/release-pending-publish.mjs --self-test :: exit 0",
          "pnpm --dir ui exec vitest run scripts/ :: exit 0",
          "pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0",
          "pnpm --filter @objectstack/spec run check:skill-docs :: exit 0",
          "pnpm --filter @objectstack/spec run check:skill-examples :: exit 0",
          "pnpm --filter @objectstack/spec run check:skill-refs :: exit 0",
          "pnpm check:agent-test-spelling :: exit 0",
          "pnpm check:changeset-gate-self-tests :: exit 0",
          "pnpm check:ci-filter-parity :: exit 0",
          "pnpm check:closed-ceremony-text :: exit 0",
          "pnpm check:corpus-claim-drift :: exit 0",
          "pnpm check:cross-package-test-inputs :: exit 0",
          "pnpm check:doc-authoring :: exit 0",
          "pnpm check:driver-memory-census :: exit 0",
          "pnpm check:dts-closure :: exit 0",
          "pnpm check:dual-build-cjs-loads :: exit 3",
          "pnpm check:gitlink-declared :: exit 0",
          "pnpm check:lean-entry-closure :: exit 0",
          "pnpm check:merge-driver :: exit 0",
          "pnpm check:nul-bytes :: exit 0",
          "pnpm check:pm-governed-merges :: exit 0",
          "pnpm check:pm-skill-id-lint :: exit 0",
          "pnpm check:published-files :: exit 0",
          "pnpm check:refd-timer-probe :: exit 0",
          "pnpm check:role-word :: exit 0",
          "pnpm check:skill-compatibility :: exit 0",
          "pnpm check:skill-frame-sync :: exit 0",
          "pnpm check:skill-identifier-liveness :: exit 0",
          "pnpm check:skill-top-level-keys :: exit 0",
          "pnpm check:sourcemap-no-sources-content :: exit 0",
          "pnpm check:watch-hint-literal :: exit 0",
          "pnpm check:skill-eval-tokens :: exit 254",
          "pnpm lint :: exit 0",
          "pnpm --dir ui run check:skill-eval-tokens --self-test :: exit 0",
          "pnpm --dir ui run check:skill-eval-tokens :: exit 0",
          "pnpm build (turbo, --concurrency=2) :: exit 0",
          "pnpm check:dual-build-cjs-loads :: exit 0"
        ],
        "note_round1": "The first 'pnpm check:skill-eval-tokens :: exit 254' line was a wrong invocation (the script lives in ui/package.json); re-run as 'pnpm --dir ui run check:skill-eval-tokens' exit 0. check:dual-build-cjs-loads first exited 3 (PREREQUISITE NOT MET, no dist); after a full turbo build (118/118 tasks) it exited 0: 116 require entry points across 71 packages load.",
        "ran_reconciliation": "48 derived famil(ies) accounted for, 47 run, 1 NOT-MEASURED (exit 3), 0 unrun; the NOT-MEASURED family was then measured green after the full build",
        "local_round2_head_b31889fc": [
          "node scripts/check-skills-token-ratchet.mjs :: exit 0",
          "pnpm --filter @objectstack/spec run check:skill-docs :: exit 0",
          "pnpm --filter @objectstack/spec run check:skill-refs :: exit 0",
          "pnpm --filter @objectstack/spec run check:skill-examples :: exit 0",
          "pnpm check:skill-top-level-keys :: exit 0",
          "pnpm check:skill-identifier-liveness :: exit 0",
          "pnpm check:nul-bytes :: exit 0",
          "pnpm --dir ui run check:skill-eval-tokens :: exit 0",
          "pnpm check:doc-authoring :: exit 0"
        ],
        "ci_head_b31889fc": "48 success, 8 skipped, 0 failure: Lint & Repo Gates, Lint · PM dispatch-gates, Lint · docs & code guards, Lint · repo & tooling gates, Lint · ESLint, Check Changeset, Governed Surface Queue Guard, PR-body guards, Test Core, Test UI 16/16, TypeScript Type Check, Build Core = success"
      },
      "line_budget": {
        "diff": "28 files, +129 -115",
        "skills_tokens_touched_files": "97336 -> 97353 (+17, all in unratcheted eval fixtures and skills/README.md)",
        "ratcheted_files": "every one at or under its ceiling; platform SKILL.md 5998/6011, actions.md 2259/2259, navigation.md 2195/2196, data-hooks.md 10056/10066",
        "ceiling_raised": false
      },
      "deviations": [
        "One push after the seat's review claim, made at the seat's request (b31889fc, review must-fix + should-fix).",
        "origin/main advanced after the b31889fc push (#30764 touched skills/objectstack-platform/**); not merged to keep the one-commit ask. A trial merge was clean and the token ratchet stayed green (platform SKILL.md 5998/6011, operations.md 3116/3119); #30764's additions carry no bare metadata names.",
        "pages.md: deleted 'hygiene, not uniqueness: two packages coexist on one bare name (ADR-0048 §3.4)', which contradicts the rule taught (the #30798 audit measures doc reads as first-match without a package)."
      ],
      "files_changed": [
        ".changeset/30805-skills-namespace-prefix-every-name.md",
        "skills/README.md",
        "skills/objectstack-ai/SKILL.md",
        "skills/objectstack-ai/evals/skills-tools-knowledge.json",
        "skills/objectstack-automation/SKILL.md",
        "skills/objectstack-automation/evals/approvals/test-revise-loop.md",
        "skills/objectstack-automation/evals/flows-triggers-approvals.json",
        "skills/objectstack-automation/references/examples-flows.md",
        "skills/objectstack-automation/references/integration-recipes.md",
        "skills/objectstack-automation/references/state-machines-and-approvals.md",
        "skills/objectstack-data/SKILL.md",
        "skills/objectstack-data/evals/hooks-security-seeds-datasources.json",
        "skills/objectstack-data/references/data-hooks.md",
        "skills/objectstack-data/references/examples-objects.md",
        "skills/objectstack-data/rules/security.md",
        "skills/objectstack-data/rules/validation.md",
        "skills/objectstack-i18n/SKILL.md",
        "skills/objectstack-i18n/evals/bundles-locales-coverage.json",
        "skills/objectstack-platform/SKILL.md",
        "skills/objectstack-platform/evals/config-plugins-ops.json",
        "skills/objectstack-ui/evals/report-period-export.json",
        "skills/objectstack-ui/evals/views-apps-actions-pages.json",
        "skills/objectstack-ui/rules/actions.md",
        "skills/objectstack-ui/rules/dashboards.md",
        "skills/objectstack-ui/rules/navigation.md",
        "skills/objectstack-ui/rules/pages.md",
        "skills/objectstack-upgrade/references/examples-upgrade.md",
        "skills/objectui/rules/protocol.md"
      ],
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "10, all reads: mcp__github__issue_read x8, mcp__github__pull_request_read x2; no write tool",
      "api_writes": "2 relay dispatches (POST /repos/objectstack-ai/objectstack/dispatches): pr_create #30831, this report comment; plus 2 git pushes",
      "open_questions": [
        {
          "question": "Bare object names in skill snippets (account, lead, task) contradict ADR-0129 once a namespace is set; rename them?",
          "options": [
            "A separate card after phase 3",
            "B fold into phase 3"
          ],
          "recommendation": "A, because this card's scope is non-object names and the object rename touches most snippets"
        },
        {
          "question": "Names an external caller or variable spells (connector ids, api flow carrier_callback, datasource warehouse) were held: exempt or rename?",
          "options": [
            "A phase 3 exempts them",
            "B rename with a migration note"
          ],
          "recommendation": "A, because a rename breaks inbound URLs and credential variable names"
        },
        {
          "question": "How does the prefix apply to dotted capability names (view_pii, expense.approve_request)?",
          "options": [
            "A crm.view_pii",
            "B crm_view_pii"
          ],
          "recommendation": "A, because the capability grammar is dotted; phase 3 should state it"
        }
      ],
      "security_findings": "none",
      "out_of_scope_findings": [
        "class: a · reach: an AI copying the snippet gets a module with no defineConfig export from @objectstack/runtime (import fails at type-check) · evidence: skills/objectui/guides/project-setup.md L199-221 imports defineConfig from '@objectstack/runtime'; packages/runtime/src exports none; the block carries no os:check marker · dedupe words: project-setup defineConfig runtime, objectui guide phantom import",
        "carrier: #30804 PR or this PR, whichever lands second, re-matches the platform SKILL.md lint sentence to #30804's type list · noted, not filed"
      ]
    }

    Generated by Claude Code

  6. objectstack-fleet commented on Nov 6, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk

    ACCEPT → PR #30831 comment 6678421153 (head b31889fc), contract review FAIL 6677994085 then delta PASS 6678334384. Tier H: awaiting a governed approver.

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, iteratedomain:skillsDomain lane — seat card indexed by label:pm:seatpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions