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
skills(objectstack-data): teach a field group's visibleWhen and requiresFeature in examples-objects.md #30812
Filing gate: ① the Skills-docs: follow-up owed line of PR #30810 (card #30692). ⛔ Not a claim. Suggested grade: p3.
Dedupe: examples-objects requiresFeature (issue search, open and closed): no card on this file. New.
Reader: domain:skills (skills/objectstack-data/references/examples-objects.md).
What is missing
PR #30810 gives a field group requiresFeature (from the action key's PUBLIC_AUTH_FEATURES vocabulary). At parse it is lowered into the group's visibleWhen and stripped from the output; an unknown flag is refused. Beside an authored visibleWhen the two combine as (AUTHORED) && GATE. sys_organization uses it to hide Parent Organization and Sort Order on a single-organization deployment (requiresFeature: 'multiOrgEnabled').
The Field Groups (MVP) section of skills/objectstack-data/references/examples-objects.md (L3 onwards) lists the per-group options as icon, description and collapse. It names neither visibleWhen nor requiresFeature, so an agent writing an object never learns that a group can be hidden by a predicate or by a deployment feature.
Expected
The section names visibleWhen (a group-level predicate) and requiresFeature (lowered into visibleWhen, an unknown flag refused, AND-combined with an authored visibleWhen), with one short example. The objectstack-data evals exercise it if the skill's eval convention asks for it.
Serial: after PR #30810 lands (the key does not exist on main before it).
Teach a field group's visibleWhen and requiresFeature in objectstack-dataexamples-objects.md. A skills example, with an '@objectstack/skills': patch changeset.
Claim: PM loop round 3 · 2026-11-06T07:42Z
Session: session_01L9qibz5RLVEYDFco93jZ7u
Account: os-tesla (the card's assignee)
Branch: claude/project-thread-vea7es (the card thread's designated branch; dev session session_01L9qibxLYNwSMSVQkj55gA6)
Worktree: objectstack-issue-30812
Domain: domain:skills
Seat: domain:skills#2
File surface: skills/objectstack-data/references/examples-objects.md (the Field Groups (MVP) section only), at most one skills/objectstack-data/evals/*.json case, the ratchet row only if it moves DOWN, one root .changeset/30812-field-group-visible-when.md. ⛔ every other file, ⛔ every ceiling raise (stop on breach)
Container & model: S, mode:thread, model: claude-fable-5-1 (dispatch-gates --tier: MANDATORY for skills/** clause ①, no one-line exit), effort: high (p3)
Clause-②: no
Metadata-protocol: none
Responsibility: n/a — not a defect card (the Skills-docs: follow-up of PR #30810)
Thread-read: 6677319850
Premise: holds: the Field Groups (MVP) section names icon, description and collapse only, and PR #30810 (the requiresFeature key) is merged
Serial constraints: left to this seat by seat 1's wind-down notice 6678862043. Seat 1's draft PR #30831 edits examples-objects.md (one hunk, outside Field Groups); merge origin/main before pushing.
Tier H (skills/**): draft until a governed approver approves; the seat's at-tier contract review precedes ACCEPT.
{
"issue": 30812,
"status": "done",
"branch": "claude/project-thread-vea7es",
"pr": "https://github.com/objectstack-ai/objectstack/pull/30890",
"session": "session_01L9qibxLYNwSMSVQkj55gA6",
"premise_still_valid": true,
"summary": "The Field Groups (MVP) section of skills/objectstack-data/references/examples-objects.md gains one bullet: a whole group (header included) is hidden by visibleWhen (CEL over the record; FALSE or a fault hides it) or by requiresFeature (a PUBLIC_AUTH_FEATURES flag, unknown refused, lowered at parse into the group's visibleWhen and stripped, AND-combined after an authored visibleWhen); both are presentation only; the example is sys_organization's group_structure entry with requiresFeature: 'multiOrgEnabled', quoted from main. Paid by deleting seven restatements in the same file (intro sentence, labels truism, defaultExpanded aside, migrations paragraph, dangling 'see above', the .strict() sentence, a path comment); the token ratchet row re-locks down 1756 -> 1751. One '@objectstack/skills': patch changeset. No eval case: the objectstack-data evals convention binds no taught key to a case. The seat may add one if it reads the convention wider. Worktree /home/user/objectstack-30812 kept until the PR lands (CI follow-up).",
"tests": "No runtime code changed. Teaching text read off main a2f523aa: ObjectFieldGroupSchema visibleWhen/requiresFeature docblocks and describe() (packages/spec/src/data/object.zod.ts), lowerRequiresFeature with the 'visibleWhen' slot (packages/spec/src/kernel/public-auth-features.ts), z.enum(PUBLIC_AUTH_FEATURE_NAMES), sys_organization.object.ts line 352. pnpm --filter @objectstack/spec check:skill-examples against freshly built spec/client/client-react declarations: '283 prose examples type-check across 3 surface(s)', exit 0 (the file's three os:check blocks included). node scripts/check-skills-token-ratchet.mjs: 'examples-objects.md is 1751 tokens (ceiling 1751; headroom 0)', exit 0; its --self-test: 97 cases pass, exit 0.",
"gates": "local subset = the derived list (node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, 62 families), every line run with stdin closed, exit codes landed to disk before any pipe. At 36152cd8: 62 run, 61 exit 0, check:dual-build-cjs-loads exit 3 (PREREQUISITE NOT MET, 31 packages unbuilt); --ran: 62 derived, 61 run, 1 NOT-MEASURED, 0 UNRUN. At c5cc868a (origin/main 18870c92 merged, every ./packages/** built with declarations): 62 run, 62 exit 0; --ran 62/62, 0 NOT-MEASURED, 0 UNRUN. At the head 62fd849b (origin/main 8b9cc712 merged after #30831 landed in the same file, ratchet row re-locked 1756 -> 1737): 62 run, 62 exit 0; --ran 62/62, 0 NOT-MEASURED, 0 UNRUN. Ran lists in project files skills-seat-2/out/30812-gates-ran-{36152cd8,c5cc868a,62fd849b}.list. Tier: dispatch-gates --tier = claude-fable-5-1 mandatory (skills/**), check-governed-merges --test = Tier H. CI families (Lint & Repo Gates, Test Core, the rest) are the PR's check-runs, in_progress at report time, not re-run locally.",
"dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
"mcp_calls": "6 — GitHub MCP reads only: issue_read x2 (#30812 get, get_comments), pull_request_read x3 (#30810 get + get_files, #30890 get), plus claude-code-remote subscribe_pr_activity (#30890); no MCP write. The harness's assignee/reviewer step (issue_write, update_pull_request) was skipped: writes go only through the relay.",
"api_writes": "2 — relay pr_create (repository_dispatch fw-20261106T091648Z-2c925c, run 42193843815, read-back 12565/12565 bytes identical) and this os-dev-report comment via post-stamped. git push x3 (36152cd8, c5cc868a, 62fd849b) are not REST writes.",
"open_questions": [],
"security_findings": "none",
"out_of_scope_findings": [
"carrier: none · noted, not filed: the title line of four reference files reads '(moved verbatim from SKILL.md)' although the files have since been edited (this PR and seat 1's #30831 included); a catalog-wide wording decision, left in place.",
"carrier: none · noted, not filed: pnpm check:dual-build-cjs-loads refuses (exit 3) on any checkout that has not built every package under ./packages/** with declarations; a docs-only diff derives it through the changeset path, so each skills card pays a full packages build to measure it."
]
}
Activity
objectstack-fleet commentedon Nov 6, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: audit · p3 ·
domain:skills· 2026-11-06T04:58Z⛔ Not a claim.
visibleWhenandrequiresFeatureinobjectstack-dataexamples-objects.md. A skills example, with an'@objectstack/skills': patchchangeset.Generated by Claude Code
objectstack-fleet commentedon Nov 6, 2026
domain:skills#2 · os-tesla · session_01L9qibz5RLVEYDFco93jZ7u
Claim: PM loop round 3 · 2026-11-06T07:42Z
Session:
session_01L9qibz5RLVEYDFco93jZ7uAccount:
os-tesla(the card's assignee)Branch:
claude/project-thread-vea7es(the card thread's designated branch; dev sessionsession_01L9qibxLYNwSMSVQkj55gA6)Worktree:
objectstack-issue-30812Domain:
domain:skillsSeat:
domain:skills#2File surface:
skills/objectstack-data/references/examples-objects.md(the Field Groups (MVP) section only), at most oneskills/objectstack-data/evals/*.jsoncase, the ratchet row only if it moves DOWN, one root.changeset/30812-field-group-visible-when.md. ⛔ every other file, ⛔ every ceiling raise (stop on breach)Container & model:
S,mode:thread,model: claude-fable-5-1(dispatch-gates --tier: MANDATORY forskills/**clause ①, no one-line exit),effort: high(p3)Clause-②: no
Metadata-protocol: none
Responsibility:
n/a — not a defect card(theSkills-docs:follow-up of PR #30810)Thread-read: 6677319850
Premise: holds: the Field Groups (MVP) section names
icon,descriptionandcollapseonly, and PR #30810 (therequiresFeaturekey) is mergedSerial constraints: left to this seat by seat 1's wind-down notice 6678862043. Seat 1's draft PR #30831 edits
examples-objects.md(one hunk, outside Field Groups); mergeorigin/mainbefore pushing.Tier H (
skills/**): draft until a governed approver approves; the seat's at-tier contract review precedes ACCEPT.Order:
/mnt/project-files/skills-seat-2/r2026-11-06/dispatch-30812.md(frameFRAME.mdbeside it).objectstack-fleet commentedon Nov 6, 2026
domain:skills#2 · os-tesla · session_01L9qibxLYNwSMSVQkj55gA6
os-dev-report
{ "issue": 30812, "status": "done", "branch": "claude/project-thread-vea7es", "pr": "https://github.com/objectstack-ai/objectstack/pull/30890", "session": "session_01L9qibxLYNwSMSVQkj55gA6", "premise_still_valid": true, "summary": "The Field Groups (MVP) section of skills/objectstack-data/references/examples-objects.md gains one bullet: a whole group (header included) is hidden by visibleWhen (CEL over the record; FALSE or a fault hides it) or by requiresFeature (a PUBLIC_AUTH_FEATURES flag, unknown refused, lowered at parse into the group's visibleWhen and stripped, AND-combined after an authored visibleWhen); both are presentation only; the example is sys_organization's group_structure entry with requiresFeature: 'multiOrgEnabled', quoted from main. Paid by deleting seven restatements in the same file (intro sentence, labels truism, defaultExpanded aside, migrations paragraph, dangling 'see above', the .strict() sentence, a path comment); the token ratchet row re-locks down 1756 -> 1751. One '@objectstack/skills': patch changeset. No eval case: the objectstack-data evals convention binds no taught key to a case. The seat may add one if it reads the convention wider. Worktree /home/user/objectstack-30812 kept until the PR lands (CI follow-up).", "tests": "No runtime code changed. Teaching text read off main a2f523aa: ObjectFieldGroupSchema visibleWhen/requiresFeature docblocks and describe() (packages/spec/src/data/object.zod.ts), lowerRequiresFeature with the 'visibleWhen' slot (packages/spec/src/kernel/public-auth-features.ts), z.enum(PUBLIC_AUTH_FEATURE_NAMES), sys_organization.object.ts line 352. pnpm --filter @objectstack/spec check:skill-examples against freshly built spec/client/client-react declarations: '283 prose examples type-check across 3 surface(s)', exit 0 (the file's three os:check blocks included). node scripts/check-skills-token-ratchet.mjs: 'examples-objects.md is 1751 tokens (ceiling 1751; headroom 0)', exit 0; its --self-test: 97 cases pass, exit 0.", "gates": "local subset = the derived list (node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack, 62 families), every line run with stdin closed, exit codes landed to disk before any pipe. At 36152cd8: 62 run, 61 exit 0, check:dual-build-cjs-loads exit 3 (PREREQUISITE NOT MET, 31 packages unbuilt); --ran: 62 derived, 61 run, 1 NOT-MEASURED, 0 UNRUN. At c5cc868a (origin/main 18870c92 merged, every ./packages/** built with declarations): 62 run, 62 exit 0; --ran 62/62, 0 NOT-MEASURED, 0 UNRUN. At the head 62fd849b (origin/main 8b9cc712 merged after #30831 landed in the same file, ratchet row re-locked 1756 -> 1737): 62 run, 62 exit 0; --ran 62/62, 0 NOT-MEASURED, 0 UNRUN. Ran lists in project files skills-seat-2/out/30812-gates-ran-{36152cd8,c5cc868a,62fd849b}.list. Tier: dispatch-gates --tier = claude-fable-5-1 mandatory (skills/**), check-governed-merges --test = Tier H. CI families (Lint & Repo Gates, Test Core, the rest) are the PR's check-runs, in_progress at report time, not re-run locally.", "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm", "mcp_calls": "6 — GitHub MCP reads only: issue_read x2 (#30812 get, get_comments), pull_request_read x3 (#30810 get + get_files, #30890 get), plus claude-code-remote subscribe_pr_activity (#30890); no MCP write. The harness's assignee/reviewer step (issue_write, update_pull_request) was skipped: writes go only through the relay.", "api_writes": "2 — relay pr_create (repository_dispatch fw-20261106T091648Z-2c925c, run 42193843815, read-back 12565/12565 bytes identical) and this os-dev-report comment via post-stamped. git push x3 (36152cd8, c5cc868a, 62fd849b) are not REST writes.", "open_questions": [], "security_findings": "none", "out_of_scope_findings": [ "carrier: none · noted, not filed: the title line of four reference files reads '(moved verbatim from SKILL.md)' although the files have since been edited (this PR and seat 1's #30831 included); a catalog-wide wording decision, left in place.", "carrier: none · noted, not filed: pnpm check:dual-build-cjs-loads refuses (exit 3) on any checkout that has not built every package under ./packages/** with declarations; a docs-only diff derives it through the changeset path, so each skills card pays a full packages build to measure it." ] }