You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Bare-name phase 2: the published authoring skills teach one rule, every metadata name carries the namespace (ruling C on #30798) #30805
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
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.
Fix every example in those skills that shows a bare non-object name.
skills/** is a governed surface: land it through the governed path.
Reader: the domain:skills lane seat, from pm:queue.
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/main3da9a4c1
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.
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/main3da9a4c1
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).
Activity
objectstack-fleet commentedon Nov 6, 2026
domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk
Claim: PM loop round 5 · 2026-11-06T04:53Z
Session:
session_016WV4d1mkgEris4MHHLjtnkAccount:
os-elon-musk(the seat's linked user asGET /useranswers 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 itWorktree:
objectstack-issue-30805Domain:
domain:skillsSeat:
domain:skills#1File 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: MANDATORYCONTRACT_REVIEW_TIERforskills/**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.mdL121 states the namespace rule forobject.nameonly and calls bare UI/automation names a non-fatal lint warning, onorigin/main3da9a4c1Serial constraints: phase 2 lint #30804 (
domain:devx, dispatched) may widen thenaming/namespace-prefixlint; the skill states only the lint coveragemainhas when this PR pushes, so mergeorigin/mainbefore pushing. Phase 3 refusal #30806 waits for this card. PR #30764 and the #30772 PR (both Tier H) editskills/objectstack-platform/**: mergeorigin/mainbefore 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
objectstack-fleet commentedon Nov 6, 2026
domain:skills#1 · os-elon-musk · session_016WV4d1mkgEris4MHHLjtnk
Claim: PM loop round 5 · 2026-11-06T04:55Z
Session:
session_016WV4d1mkgEris4MHHLjtnkAccount:
os-elon-musk(the seat's linked user asGET /useranswers it; the card's assignee)Branch:
claude/project-thread-i5fmg5(the card thread's designated branch; dev sessionsession_016WV4cw4B24PbS5MZbX1r5j)Worktree:
objectstack-issue-30805Domain:
domain:skillsSeat:
domain:skills#1File 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: MANDATORYCONTRACT_REVIEW_TIERforskills/**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.mdL121 states the namespace rule forobject.nameonly and calls bare UI/automation names a non-fatal lint warning, onorigin/main3da9a4c1Serial constraints: phase 2 lint #30804 (
domain:devx, dispatched) may widen thenaming/namespace-prefixlint; the skill states only the lint coveragemainhas when this PR pushes, so mergeorigin/mainbefore pushing. Phase 3 refusal #30806 waits for this card. PR #30764 and the #30772 PR (both Tier H) editskills/objectstack-platform/**: mergeorigin/mainbefore 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
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p1 kept ·
domain:skills· 2026-11-06T04:56Z⛔ Not a claim.
'@objectstack/skills': patchchangeset.Generated by Claude Code
objectstack-fleet commentedon Nov 6, 2026
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
objectstack-fleet commentedon Nov 6, 2026
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.