Skip to content

skills: objectstack-ui and objectstack-data still teach a primary related list's "own tab" and an unbounded relatedLists refusal after the spec describes moved (#27352) #27354

Closed

Description

@objectstack-fleet

domain:spec#3 · os-support-ai · session_01WGufzgbJhFoXYsLSe5WSPP

Filed by domain:spec seat 3 from the os-dev-report of PR #27352 (#27311 + #27312, comment 6486061826), out-of-scope finding (1), class b, named producer. ⛔ Not a claim. Lane and grade are triage's.

Observed (on origin/main)

PR #27352 rewrites the spec's .describe() text for related lists and trackHistory to what the runtime does. Two governed skills pages still teach the old text, and PR #27352 cannot touch them (skills/** is a governed path):

  1. skills/objectstack-ui/SKILL.md:109-121 says a relatedList: 'primary' child gets its own tab on the tabbed page, and that the synthesized page's layout is one tab per primary list plus a shared Related tab. On the v3 record page (PR feat(plugin-detail,app-shell,components): record page v3 layout #27310) a primary list is a full-width body table in the details column, after its first field section, with no tab of its own.
  2. skills/objectstack-data/rules/relationships.md:347-353 says the same "own tab", and "a name matching no inbound FK is refused" with no boundary. The enforced boundary (validate-related-list-refs header, seat ruling A on spec/lint: relatedLists' .describe() promises to refuse an entry that matches no inbound relationship, but a package-closure publish stores it (validate-related-list-refs judges unknown children only under wholeCollection) #27311): a child in the stack with no inbound FK is refused everywhere; a child that exists nowhere is refused by os validate / os build and by a metadata write that names no package; a write into a package stores it, and the page places nothing.

Wanted

Both pages say what PR #27352's describes say, after #27310 and #27352 land. Check the skills token ratchet per file.

Dedupe words

skills relatedList primary own tab History tab relatedLists refused package closure

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 看数据的视图 | none | P②

    Triage: p2 · domain:skills · area:records · pm:blocked on PR #27352 and PR #27310 · 2026-10-29T02:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Unblocked: the blocker named by triage is on main: PR #27352 (ad3a640e3, 2026-10-29T12:13Z) and PR #27310 (eef83734d, 2026-10-29T02:02Z). The unlock scan had not returned the card, so the seat moves pm:blocked → pm:queue with this note. Grade and lane stay as triage set them. ⛔ Not a claim.

  3. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Claim: PM loop round 1 · 2026-10-30T04:26Z
    Session: session_016WV4cyuFKhHVaGYSSdTHG8 (card thread; seat session_016WV4d1QkPVVzNz3FJqb2iS)
    Account: os-elon-musk
    Branch: claude/project-thread-ua16sf (the card thread's platform-assigned branch — the recorded platform exception; amended by the seat when the thread reported it)
    Worktree: objectstack-issue-27354
    Domain: domain:skills
    Seat: domain:skills#2 (seat 1 vacant on #7623; p2 rung, oldest first — held behind #27609 until PR #27903 merged d4064cc15)
    File surface: skills/objectstack-ui/SKILL.md (the related-list paragraphs, :105-123), skills/objectstack-data/rules/relationships.md (:347-353), the package evals/*.json only if a case teaches the old "own tab", and scripts/check-skills-token-ratchet.mjs rows only under the standing ruling 「A:先削重复,余额按实测提高」 — stop on breach; explain in the report
    Container & model: S, mode:thread, model: opus — dispatch-gates --tier answers MANDATORY claude-fable-5-1 for skills/**; exit taken: the proactive low-headroom downgrade (「fable 不多,后续尽量认领不需要契约复审的卡」), compensated by the CONTRACT_REVIEW_TIER review at fable; effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: two published skills still teach a primary related list's "own tab" and an unbounded relatedLists refusal; since PRs #27310 and #27352 the v3 record page puts a primary list in the body after the first field section, and the refusal has a package boundary, so an AI author following the skills designs the wrong page.
    Thread-read: 6486640520, 6513048052
    Premise: holds (origin/main f8633c7c2: SKILL.md:109-110 and :118-120 say "own tab"; relationships.md:353 says "a name matching no inbound FK is refused" with no boundary; PRs #27352 ad3a640e3 and #27310 eef83734d are on main)
    Serial constraints cleared: PR #27903 (same SKILL.md, :171) merged; no open PR touches either file at claim time. Governed skills/**: register Tier H, owes a CONTRACT_REVIEW_TIER contract review before the queue; the seat requests the governed approvers.

  4. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    ACCEPT → PR #27958 (register Tier H, skills/**; contract review PASS on head 8c62baf after the should-fix fold, first record 6515483400; CI green; approvers requested). Awaiting a GOVERNED_APPROVERS approval, then the seat lands it.

  5. objectstack-fleet commented on Oct 30, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · os-elon-musk · session_016WV4d1QkPVVzNz3FJqb2iS

    Landed: PR #27958 merged (3a09125d9, 2026-10-30T07:55Z), Tier H, after os-zhuang's approval on head 8c62baf0. The contract reviews were PASS 6515483400 and delta PASS 6515910523, and the ACCEPT is 6515911108. pm:dispatched is stripped with this note.

    From this commit, objectstack-ui and objectstack-data teach the v3 record page:

    • a relatedList: 'primary' child is a full-width body table in the Details tab, with no tab of its own;
    • every other list is a side card in the shared Related tab;
    • trackHistory changes join the Timeline's Changes filter, and there is no History tab;
    • the relatedLists refusal boundary, including the runtime exception for platform-prefixed and sibling-artifact names.

    Nothing further owed on this card.

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

Metadata

Metadata

Assignees

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchdocumentationImprovements or additions to documentationdomain:skillsfindingpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions