Skip to content

skills(ui): pages.md Routing model says there is no doc nav-item type and eval 4 expects a url item, while the spec declares type: 'doc' (app.zod.ts:108) and SKILL.md lists it #22291

Description

@objectstack-fleet

Gate: ① — a product defect with a named landing point: published skill text that says a wrong sentence (North Star priority item 4 — a sentence a skill gets wrong is a product defect). Finding class (b): the published skill contradicts the declared contract. Triaged at filing by the skills seat (this lane's findings are triaged by its own seat): priority:p2, the level #22260 carried for the same defect class in the automation skill.

reach: a named real producer — skills/objectstack-ui/rules/pages.md ships to every project through npx skills add (the Studio author's skill). Its Routing model section, line 375 on origin/main fbcbcf124f, reads: "There is no dedicated doc nav-item type yet, so use a url item pointing at /docs/…"; and skills/objectstack-ui/evals/views-apps-actions-pages.json eval 4's expected_output expects "a type: 'url' nav item pointing at /docs/crm_user_guide". The contract: packages/spec/src/ui/app.zod.ts:108 declares 'doc' among the navigation-item types, with the two shapes documented at lines 681–686 ({ type: 'doc', book } opens the book as its first readable page with the book sidebar; { type: 'doc', doc } opens that page), and skills/objectstack-ui/SKILL.md line 176 already lists doc in its Navigation Item Types table ("book? / doc? (one required), label, icon — Package docs; inherits docs audience"). So the entry file teaches the type and the rules file tells the author it does not exist; an author following pages.md writes a url item where the platform has a typed one, and the eval pins the wrong answer.

Expected. pages.md Routing model teaches the doc item (the book and doc shapes; when a url item is still right, e.g. an anchor into a page), and eval 4 expects it. Both files are under the token ratchet (pages.md 5691 of 5692 after PR #22287; the eval file's ceiling is 1505): the edit pays inside each file by deleting restated content, no ceiling move.

Hands-on reader. This lane's next os-dev dispatch (skills seat 1). File surface: skills/objectstack-ui/rules/pages.md, skills/objectstack-ui/evals/views-apps-actions-pages.json; Tier H (skills/**). Serial constraint: PR #22287 (#22271) edits pages.md and leaves 1 token of headroom — dispatch after it lands.

Dedupe. REST listings (the search API is blocked from this seat): open domain:skills and domain:spec (37 cards), open finding (4), closed domain:skills (newest 200) and closed finding (newest 100) — titles grepped for nav, doc nav, type: 'doc', routing, nav-item: 0 hits (the one closed card the grep returned, #19715, is the SKILL.md split that created rules/pages.md, not this defect). Origin: the dev's out_of_scope_findings on #22271 (PR #22287, report comment 6059499743); filed and triaged by the skills seat 1, session_01CXydFDyiQwNbGFkmwrcRQq.


Generated by Claude Code

Activity

  1. added
    bugSomething isn't working
    documentationImprovements or additions to documentation
    area:studioChanging a running app without code — authoring, publish, docs and the portal
    and removed on Oct 8, 2026
  2. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 4
    Session: session_01CXydFDyiQwNbGFkmwrcRQq
    Account: huangyiirene (the seat's linked user as GET /user answers it; always the card's assignee)
    Branch: claude/issue-22291-ui-skill-doc-nav-item
    Worktree: objectstack-issue-22291
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-ui/rules/pages.md (Routing model: the sentence "There is no dedicated doc nav-item type yet, so use a url item" and its url example give way to the doc item the spec declares) and skills/objectstack-ui/evals/views-apps-actions-pages.json (eval 4's expected_output and assertions pin the doc item and refuse the url answer). Governed (skills/**, Tier H): the PR stays draft with ## 维护者速读(草稿) and lands on an authorized APPROVED or the maintainer's hand. ⛔ No packages/**, no content/docs/**, no SKILL.md (its nav table already lists doc); ⛔ no re-wrap as token payment (pages.md sits at 5691 of 5692 tokens after PR #22287 — headroom 1; the eval file at 1502 of 1505 — headroom 3; growth is paid by deleting content the same file restates, measured not assumed); stop on breach; explain in the report
    Container & model: S, mode:subagent, model: CONTRACT_REVIEW_TIER — dispatch-gates --tier --repo objectstack-ai/objectstack skills/objectstack-ui/rules/pages.md skills/objectstack-ui/evals/views-apps-actions-pages.json prints "Model tier — MANDATORY" for skills/** (the published catalog ships verbatim by npx skills add; derived from the file surface, not recalled)
    Clause-②: no
    Responsibility: the spec's declared contract produces the text (packages/spec/src/ui/app.zod.ts:108 declares the doc navigation-item type; its two targets are documented at :676-700; the console renders it at the .objectui-sha pin a58626c88 — packages/layout/src/NavigationRenderer.tsx case 'doc') | the platform path that already covers it: none — SKILL.md's nav table lists doc, but pages.md tells the author it does not exist and the eval pins the url answer, and nothing refuses a url item that points at /docs/ | who reaches it: every AI author linking package docs from an app menu, from the next npx skills add
    Thread-read: none
    Thread note: the card carries 0 comments at this read; its body (filed by this seat from the #22271 dev's class-b finding, dedupe 0 hits over open and closed domain:skills / domain:spec / finding) re-read whole at the claim's clock against app.zod.ts and the objectui pin
    Serial constraints cleared: PR #22287 (#22271) touched pages.md and is MERGED (2026-10-08T13:06Z, merge commit 238222d8cd412ca77c816fa1f849c991ed84f251) — this branch cuts from origin/main at or after it, and the card's Blocked-by-style wait on it is discharged; skills/objectstack-ui/** otherwise last moved by PR #22287 (this seat) — same-day churn on pages.md: 基于合并后的代码工作,先核对当前 main; no open PR touches skills/objectstack-ui/** (the open PRs' file lists read at 2026-10-08T13:10Z); the lane's other R4 card, #22260, is landed and file-disjoint; verify lock free; batch 1 of 3; the lane's open P0/P1: none ⇒ p2 is a top candidate. Readings taken at 2026-10-08T13:10Z.


    Generated by Claude Code

  3. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 22291,
      "status": "done",
      "branch": "claude/issue-22291-ui-skill-doc-nav-item",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/22303",
      "session": "session_01CXydFDyiQwNbGFkmwrcRQq — subagent of the PM loop round 4 skills seat 1 (the parent's id; the container's CLAUDE_CODE_REMOTE_SESSION_ID is cse_01CXydFDyiQwNbGFkmwrcRQq)",
      "premise_still_valid": true,
      "premise_check": "Branch cut from origin/main 238222d8cd = PR #22287's merge commit (git merge-base --is-ancestor 238222d8cd HEAD: exit 0; HEAD before edits == 238222d8cd). On that main pages.md:361-362 read 'There is no dedicated `doc` nav-item type yet, so use a `url` item pointing at `/docs/NAME`' and :366 was the url example (the card's line 375 was read on fbcbcf124f, before PR #22287 moved it); eval 4's expected_output and assertions unchanged. Contract: packages/spec/src/ui/app.zod.ts:108 names 'doc' in NavItemVariant; DocNavItemSchema at :715 (doc comment :676-714; book / doc optional strings, doc regex ^[a-z][a-z0-9_]*$, .refine(requiredOneOf(['book', 'doc'])); cross-variant remedy rows at :212 (book/doc on another variant) and :217 (docname/bookname/page/docs/books on the doc variant). Console at .objectui-sha a58626c88: packages/layout/src/NavigationRenderer.tsx case 'doc' at 498 and 917, resolveDocHref at 752 (/docs/DOC, /docs/BOOK, /docs/BOOK/DOC), packages/app-shell/src/views/nav-menu-renderer.tsx:281 (checkDocTarget hides an unreadable entry), packages/app-shell/src/hooks/useNavDocTargetCheck.ts present in the pin's tree. CLI: packages/cli/src/utils/collect-docs.ts lintDocNavTargets, rule docs/nav-target, severity error. SKILL.md:176 lists the doc row; rules/navigation.md teaches no nav item types (grep doc|url|/docs: 0 hits), so the file surface stays the two files the claim names.",
      "summary": "pages.md Routing model now teaches the declared doc navigation item — doc: 'NAME' opens that page, book: 'BOOK' opens the book at its first readable page, both keys that page in that book; the entry inherits the docs audience gate; os build refuses a target the package lacks (docs/nav-target); a url item stays for an external or custom URL — and its example becomes { id: 'nav_help', type: 'doc', doc: 'crm_user_guide', label: 'User Guide', icon: 'book-open' }. Eval 4's expected_output tail becomes 'surfaced by a `type: \\'doc\\'` nav item (`doc: \\'crm_user_guide\\'`)', must_contain swaps '/docs/' (measured dead: subsumed by the sibling entry 'src/docs/' under substring semantics) for 'type: \\'doc\\'', must_not_contain gains 'type: \\'url\\''. The +148-byte Routing block is paid inside pages.md by deleting the Page Types sentence 'Former roadmap-only types (dashboard, form, record_detail, record_review, overview, blank) were removed from the enum because they never shipped a renderer' (169 bytes), which the section's lead (exactly five values, only types with a dedicated renderer, ADR-0049) restates — the six former names are the one non-restated item, flagged in the PR body. Draft PR #22303 (Tier H, skills/**) carries Fixes #22291, Clause-②: no, the 维护者速读(草稿) section, skip-changeset and the assignee huangyiirene; nothing else in the skill moves.",
      "files_changed": [
        "skills/objectstack-ui/rules/pages.md — Routing model paragraph + example (3 lines → 5 lines), Page Types former-types sentence deleted (3 lines → 1); 433 → 433 lines; 22762 → 22741 bytes; 5691 → 5686 tokens (ceiling 5692, headroom 6)",
        "skills/objectstack-ui/evals/views-apps-actions-pages.json — eval 4 expected_output tail, must_contain, must_not_contain; 65 → 65 lines; 6006 → 6017 bytes; 1502 → 1505 tokens (ceiling 1505, headroom 0); JSON parses"
      ],
      "skills_readings": "measured on 238222d8cd (before) and 2bdf0f6317 (after, PR head), convention ceil(utf8 bytes / 4): whole package all skills/*/SKILL.md (10 files) 4409 → 4409 lines, 47524 → 47524 tokens; whole skills/objectstack-ui authored bundle (9 priced files) 2030 → 2030 lines, 26108 → 26106 tokens; bundle total (whole shipped tree, the gate's line) 154842 → 154840; no ceiling moved, no re-wrap counted as payment, no new file",
      "pm_assumptions_measured": [
        "1 shape: confirmed from the source — the doc variant's targets are the bare keys book / doc (not bookName / docName; those are remedy rows at :217), at least one required, both = that page in that book; the console consumer at the pin confirmed by git show a58626c88",
        "2 ratchet: the true sentence does NOT fit the budget the card names — the new Routing block (477 bytes) exceeds the replaced block (329 bytes) by 148 against 6 bytes of headroom (5691 of 5692); paid by one 169-byte deletion of restated content in the same file (listed with where it survives in the PR body); the eval's new tail is 9 bytes shorter than the old one, and the assertion change costs +20, inside its 14-byte headroom + 9 saved",
        "3 eval: '/docs/' in must_contain was a dead assertion (substring of the sibling entry 'src/docs/'), and with the doc item a correct answer writes no /docs/ route at all, so it was swapped for 'type: \\'doc\\'' rather than kept beside it (adding would overshoot the 1505 ceiling by 7 bytes); 'type: \\'url\\'' added to must_not_contain after reading the whole eval — eval 4's prompt needs no url item; evals 1-3, 5-6 untouched",
        "4 url clause: included ('a `url` item is for an external or custom URL', from UrlNavItemSchema.url 'Target external URL' and SKILL.md's row 'External or custom URL'), paid by the same deletion; the global /docs/NAME route paragraph, the *.md link rewriting line and the Live instances note are byte-identical"
      ],
      "tests": "Controls against the built @objectstack/spec dist (built by the lint-closure build at the head): NavigationItemSchema.safeParse — the skill's example { id: 'nav_help', type: 'doc', doc: 'crm_user_guide', label: 'User Guide', icon: 'book-open' } success=true parsed {\"type\":\"doc\",\"doc\":\"crm_user_guide\",...}; book: 'crm_manual' alone success=true; both keys success=true; neither key success=false 'A `doc` navigation item needs a target: set `book` (...), `doc` (...), or both (...)'; doc: 'docs/crm_user_guide' and doc: 'crm_user_guide.md' success=false 'A doc target is a doc NAME — the source filename stem in lowercase snake_case'; url key on a doc item success=false 'Unrecognized key(s) on this `doc` navigation item: `url`. Did you mean `url` → `type: \\'url\\' (with url)`?'; the old answer { type: 'url', url: '/docs/crm_user_guide' } success=true (nothing refuses it — the skill text was the only steer). Gates: node scripts/check-skills-token-ratchet.mjs exit 0 ('pages.md is 5686 tokens (ceiling 5692; headroom 6)', 'views-apps-actions-pages.json is 1505 tokens (ceiling 1505; headroom 0)', '54 authored bundle file(s) within their ceilings'); --self-test exit 0 (65 cases). check:doc-formula-expressions exit 0 after 'pnpm exec turbo run build --filter=@objectstack/lint --concurrency=2' under scripts/pm/os-verify-lock.sh (OS_VERIFY_LOCK_SLOT=issue-22291; VERDICT command-exit 0; 4 tasks; held 99 s, waited 0 s). No ablation (prose-only diff, no gate or test added). Not run locally, CI's own: the type-check lanes and pnpm lint (no TypeScript or source file in the diff).",
      "gates": [
        "node scripts/check-skills-token-ratchet.mjs :: exit 0",
        "node scripts/check-skills-token-ratchet.mjs --self-test :: exit 0",
        "pnpm check:skill-compatibility :: exit 0",
        "pnpm check:skill-frame-sync :: exit 0",
        "pnpm check:skill-identifier-liveness :: exit 0",
        "pnpm check:doc-authoring :: exit 0",
        "pnpm check:corpus-claim-drift :: exit 0",
        "pnpm check:nul-bytes :: exit 0",
        "node scripts/check-doc-route-spelling.mjs --advisory :: exit 0",
        "node scripts/check-doc-route-spelling.mjs --self-test :: exit 0",
        "pnpm check:role-word :: exit 0",
        "pnpm check:watch-hint-literal :: exit 0",
        "pnpm check:agent-test-spelling :: exit 0",
        "pnpm check:gitlink-declared :: exit 0",
        "pnpm check:pm-governed-merges :: exit 0",
        "pnpm check:refd-timer-probe :: exit 0",
        "pnpm check:driver-memory-census :: exit 0",
        "pnpm check:cross-package-test-inputs :: exit 0",
        "node scripts/check-ci-filter-parity.mjs :: 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",
        "pnpm --filter @objectstack/lint run check:doc-formula-expressions :: exit 0",
        "reconciliation: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack re-derived on this tree at 2bdf0f6317 → 23 commands, identical to the PM's list derived on 238222d8cd; --ran over the recorded list → '23 derived, 23 run, 0 NOT-MEASURED, 0 UNRUN', exit 0; every exit code captured by redirect before any pipe; each command spelled literally"
      ],
      "ci": "in_progress — PR #22303's checks were not waited for (the dispatch order: report at local verification; CI convergence is the PM's)",
      "deviations": [],
      "notes": [
        "commit 2bdf0f6317 authored as objectstack-fleet[bot] (set explicitly with -c user.name/user.email from origin/main's last commit; this container's git default identity is 'Claude / noreply@anthropic.com'); trailer pair model-free per AGENTS.md (Co-authored-by: Claude; Claude-Session: the session URL) — the harness attribution reminder's model-named Co-Authored-By trailer was not used and no model identifier is in any GitHub text",
        "the PR also carries the `documentation` label — applied by the path labeler, not by this seat's write; label-write's read-back matched its own target (labels size/s + skip-changeset, assignee huangyiirene) and noted size/s as another seat's additive write",
        "pr_create body read back identical by the relay (12145 bytes sent = stored); the PR body re-read via REST GET after label-write: draft=true, base main, footer block intact at the tail"
      ],
      "mcp_calls": "0 — no MCP GitHub tool called; reads were gh api / gh CLI REST GETs (issue 22291 + comments, PR 22287 body, comment 6059499743, PR 22303 read-back) and git/objectui show",
      "api_writes": "3 relay dispatches (each one POST /repos/objectstack-ai/objectstack/dispatches via scripts/pm/fleet-write, executed as objectstack-fleet[bot]) carrying 4 endpoint writes: ① pr_create → POST /repos/objectstack-ai/objectstack/pulls (#22303, draft forced by the relay; run 37785550057); ② label-write → POST /repos/objectstack-ai/objectstack/issues/22303/labels (skip-changeset) + POST /repos/objectstack-ai/objectstack/issues/22303/assignees (huangyiirene) (run 37785676724); ③ post-stamped → POST /repos/objectstack-ai/objectstack/issues/22291/comments (this report). Plus 2 git push (not REST): the empty-branch probe and commit 2bdf0f6317. No PATCH, no PUT, no bare curl, no MCP write.",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: none (observation, not a finding class) · eval 4's must_contain entry \"/docs/\" was subsumed by its sibling \"src/docs/\" (substring semantics per evals/README.md), so it had never been able to fail on its own — repaired inside this PR by the swap to \"type: 'doc'\" and recorded in the PR's Acceptance notes; no other entry in the two objectstack-ui eval files is subsumed by a sibling (read whole) · carrier: this PR · dedupe words: eval must_contain subsumed src/docs",
        "class: none (observation) · UrlNavItemSchema.url is described 'Target external URL' (app.zod.ts:605) while the console's resolveHref passes an internal path through it and SKILL.md's url row says 'External or custom URL' — describe-text wording with no behaviour behind it · carrier: none · noted, not filed · dedupe words: UrlNavItemSchema describe external custom"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    ACCEPT — PR #22303 (2bdf0f6317), reviewed against GitHub and origin/main by skills seat 1, session_01CXydFDyiQwNbGFkmwrcRQq, 2026-10-08T13:46Z

    Verdict: ACCEPT. Landing path: Tier H (skills/objectstack-ui/**, two files, +10/−10; dispatch-gates --tier MANDATORY), so the final four-piece set replaces a queue landing: ① the ## Contract review record is on PR #22303 (PASS, head 2bdf0f6317a2d2d414abc9801f993663669e9c62, served tier CONTRACT_REVIEW_TIER, in-seat); ② this ACCEPT; ③ needs-user-decision on the PR plus the final maintainer brief comment there; ④ review requested from os-zhuang and hotlong. The PR stays draft until an authorized APPROVED (GOVERNED_APPROVERS) or the maintainer's hand; on APPROVED this seat lands it unless the approver already has, and closes out either way.

    Checklist, read on the PR and the tree, not on the report:

    • PR form: draft, base main, one commit authored as objectstack-fleet[bot], first line Fixes #22291, Clause-②: no at the start of its own line; the body's only closing keyword is that first line (skills: the Studio author's page skill learns the print page (page.print, the printable block subset, its lint) now that #22158 has landed — #8346 ruling B′ #22271, skills(ui): the page skill learns the print page — print, the printable block subset and its lint (#22271) #22287, objectui#11197 appear as plain references). documentation, size/s, skip-changeset and assignee huangyiirene on the PR, read back — this time the dev's own label-write went through; the seat added only needs-user-decision.
    • Scope: git diff --numstat 238222d8cd..2bdf0f6317 = skills/objectstack-ui/rules/pages.md (+7/−7) and skills/objectstack-ui/evals/views-apps-actions-pages.json (+3/−3) — exactly the claim's file surface; SKILL.md untouched (its table already lists doc); no packages/**.
    • The edit, read in the diff and judged in the contract review (items 1–4): the Routing model paragraph says what DocNavItemSchema and its doc comment say (two targets, both keys, the inherited audience gate), names the build-time docs/nav-target check that exists in packages/cli, and keeps the url item for its true use; the example parses on the built dist (the dev's positive control) and the old url answer still parses too (nothing refuses it — the skill text was the only steer). Eval 4 pins the doc item and refuses the url one; the dead /docs/ assertion is replaced, not kept.
    • Premises: the card's reading (app.zod.ts:108, the console at the pin, SKILL.md:176) holds on origin/main; the dev reported premise_still_valid: true with the line numbers moved by PR skills(ui): the page skill learns the print page — print, the printable block subset and its lint (#22271) #22287 (the sentence at :361-362 on the base, unchanged).
    • Ratchet: seat-recomputed from the head blobs, pages.md 5686 of 5692, the eval 1505 of 1505 (headroom 0 — the next edit of that eval file pays by deletion); no ceiling moved; the +148-byte paragraph paid by deleting the six-name tombstone sentence in Page Types (its rule survives in the section's lead; the names are refused by PageTypeSchema at parse; record_detail stays in the Disambiguation sentence) — the one non-restated item, flagged in the brief.
    • Evidence: 23 path-derived commands re-derived on the dev's tree, identical to the seat's list, each exit captured, --ran reconciliation 23 derived / 23 run / 0 NOT-MEASURED; the lint build under the verify lock before check:doc-formula-expressions. mcp_calls 0; api_writes 3 relay dispatches as objectstack-fleet[bot] (pr_create, label-write, the report comment).
    • CI on the head at this reading: 38 check-runs, 21 success, 15 skipped, 2 in progress (Test Core (1/6), Lint & Repo Gates); no failure — skip-changeset was on before the changeset check ran. Landing waits on every check green regardless. origin/main moved past the base on non-skill paths only; merge-tree clean.
    • Contract faces: published skill text hit ⇒ at-tier contract review owed and written in-seat. Clause-②: no.
    • Governed-merge reading: check-governed-merges --pr 22303 lists the two skills/** paths, 20 changed lines under the human-merge threshold; Tier H. Not flipped ready, not armed.

    Deviations noted: none — the dev reported deviations: [], and the seat's reading agrees (the commit identity line of the order held).

    Acceptance notes: two dev observations, neither a finding class: eval 4's /docs/ assertion was subsumed by src/docs/ (repaired here); UrlNavItemSchema.url's describe text says "external" while the console also resolves internal paths through it (describe text only, no carrier).


    Generated by Claude Code

  5. objectstack-fleet commented on Oct 8, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed — PR #22303 MERGED, skills seat 1, session_01CXydFDyiQwNbGFkmwrcRQq, 2026-10-08T14:42Z

    Two readings, taken together: PR #22303 reads merged: true at 2026-10-08T14:40Z with merge commit fe72ad7828badcb38d032f9650f5e01d7dba3adb, and that commit is an ancestor of origin/main (single parent; content = the diff of head 2bdf0f6317, two files +10/−10; control: origin/main at fe72ad7828 at this reading). The queue entry gh-readonly-queue/main/pr-22303-a3bcbcf3ca rode behind pr-22297 (added_to_merge_queue 2026-10-08T14:03Z, twelve minutes after the head's CI completed; 37 minutes in the queue, its own queue runs green by 2026-10-08T14:20Z). Approval, ready flip and arming were all os-zhuang's (review 5457616541 on 2bdf0f6317, 2026-10-08T13:49Z; ready_for_review and auto_merge_enabled in the same minute) — the seat armed nothing. The contract review (PASS, 6061234821), the ACCEPT (6061280490) and the maintainer brief (6061255109) are the review record beside the approval; needs-user-decision stripped from the PR after the merge.

    Close-out in this act: this card closed by the merge through Fixes #22291 (read back below); pm:dispatched and the assignee stripped; the lane's open set compared before and after the landing: 7 open before (#22291 #22167 #22060 #22053 #22052 #19287 #17161, read 2026-10-08T13:25Z) and 6 open after (#22167 #22060 #22053 #22052 #19287 #17161): #22291 left by this merge; nothing else closed, and no card was closed by a stray keyword (this PR carried one).

    skills/objectstack-ui/rules/pages.md Routing model now teaches the declared doc navigation item (and keeps the url item for an external or custom URL), and eval 4 pins type: 'doc' while refusing type: 'url'; the eval file sits at its ceiling (1505 of 1505), so its next edit pays by deletion. This card was filed from the #22271 dev's class-b finding and closes the R4 second batch; the lane's queue is empty, the dispatchable set is 0 (the holds #22052 / #22053 / #22060 wait on the maintainer or the director; #22167 waits on #22060 W3).


    Generated by Claude Code

  6. added a commit that references this issue on Oct 9, 2026
    fe72ad7
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:studioChanging a running app without code — authoring, publish, docs and the portalbugSomething isn't workingdocumentationImprovements or additions to documentationdomain:skillspriority:p2Medium: important, M3

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions