Skip to content

QA run · studio-authoring.doc-on-app-menu (1/1) · f6ccca4a · 2026-09-30 · 1 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 0 NOT-RUN #20975

Closed

Description

@objectstack-fleet

Run record per docs/qa/platform-checklist/RUNNER.md 〈Run records — the GitHub issue is the report〉: a protocol carrier, not work. Filed by the domain:devx seat 2 PM (session_01JAhu8u8QfBvRjVZDox7CP9, seat post #20163) on behalf of the runner, the cloud dev session session_01RUy93pSQMTtKhN5paYkN1C: the runner's write budget did not include issue-create. Item: studio-authoring.doc-on-app-menu revision 1, authored by PR #20973 (card #20939). The text below is the runner's record, copied from that PR's body.

Env fingerprint

  • Backend: this repository's main showcase at f6ccca4a (the branch head adds docs only), not a published @objectstack/cli. Booted as objectstack dev --ui --seed-admin -p 38741 with OS_PORT=38741 on a fresh file DB.
  • Fork window. Pin .objectui-sha is db11afd4967c (unchanged on main at d7b98176). The console driven was objectui d6a1a80d5d054015097a5dd5dda83737e4b99858, the landing commit of objectui PR 11258, which carries PR 11241 (02fe8ca8a0). Both are ancestors of it; I checked with merge-base --is-ancestor exit 0.
  • The console was built by scripts/build-console.sh with OBJECTUI_ROOT at that revision and .objectui-sha set to it in the working tree only. It was restored afterwards and is not in this diff.
  • At the pin, the console source contains no "You do not have access to this documentation" heading and no renderer doc-target check. A run against the vendored pin would fail for a reason that is not this item's.
  • The console build needed npm_config_engine_strict=false. objectui's jsdom test dependency pins Node ^22.22.2 and this container runs 22.22.0; jsdom is not in the console bundle.

Scope. Selector studio-authoring.doc-on-app-menu, 1 runnable item, revision 1. There are three personas, each signed in through the form in its own browser context. Each identity was proven with GET /auth/get-session before its cells.

Fixtures.

  • The stock corpus was verified first: one book, showcase_manual (audience public), 9 docs, and no doc nav entry on any app. Everything below was authored at runtime and torn down. Afterwards the corpus reads back as that baseline.
  • Writable base com.qa.docs, created with POST /packages.
  • Books, all in com.qa.docs: qa_gated_book (audience permission set showcase_auditor, claims qa_gated_page); qa_open_book (org, claims qa_open_page); qa_empty_book (claims nothing). The labels sort A Empty / B Gated / C Open, so "the first book by label" would be the wrong book for both pages.
  • App qa_docs_app, with seven doc entries covering all three shapes over both corpora.
  • Members: a reader holding showcase_auditor (through a sys_user_permission_set row) and an outsider.
  • qa_gated_page was authored in the Studio doc editor: PUT …?mode=draft&package=com.qa.docs 200, then POST …/publish 200.
# clause oracle verdict evidence (text)
0 /meta/app carries no unreadable doc entry; the reader receives them api pass Reader: all 6 gated and open entries. Outsider: the 3 open entries. Admin (holds no app-declared set): the same 3. nav_empty_book (claims no page) is pruned for all three. Same-name reads: reader 200 on /meta/doc/qa_gated_page and /meta/book/qa_gated_book/tree; outsider 403 PERMISSION_DENIED on both.
1 UI mirror dom (after screenshot) pass Each shell was screenshotted settled. The rendered doc entries for reader 6, outsider 3 and admin 3 match /meta/app. Both diff directions are empty for all three personas.
2 page opens in its claiming book; book opens on its first readable page with a pruned sidebar dom pass {doc: qa_open_page} lands on /docs/qa_open_book/qa_open_page, the claiming book, not A/B by label. {doc: qa_gated_page} lands on /docs/qa_gated_book/qa_gated_page. Both {book} entries and both {book, doc} entries land on that page. Sidebars: the outsider on the open book sees only qa_open_page; the reader sees qa_open_page, qa_gated_page. Every sidebar entry is in that member's tree; none is wider.
3 outsider refused on every direct route; the control reads not found screenshot pass On all 6 gated routes (/docs/… and /apps/qa_docs_app/docs/… × page / book / book+page): a lock icon, the heading "You do not have access to this documentation", and the server's reason "This documentation is limited to holders of a permission set you do not have". The server answers 403 for the same names. Control qa_nothing_here on both route roots shows "Documentation not found"; GET /meta/doc/qa_nothing_here answers 404. There was no blank region and no "Failed to load documentation".

Derived item verdict: pass. No fail, so there is no reproduction rule to carry. The machine record, in RUNNER shape, is docs/qa/platform-checklist/runs/2026-09-30-doc-on-app-menu.json in the runner's workspace. The runs/ directory is git-ignored by contract, so it is not in this diff.

Extraction. No fail, so there are no product defects to extract. The fixture recipe measured by the run went into the item's fixtures.knownGaps. Two observations were not filed: they are recorded in PR #20973's Acceptance notes.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 6, 2026

    @objectstack-fleet
    ContributorAuthor

    Close-out: closed completed. Every clause passed, so there is no fail or partial to dispose

    Triage seat (objectstack-wide, seat post #6015) · session_01AavokzJ5DndAwitDXvKy4U · 2026-10-06T15:48Z. The maintainer, in the triage seat's chat, approved clearing the open qa-run records' close-out debt: 「同意,动手」.

    • Read at this write: the record's single clause is PASS, and its comment thread is empty.
    • Under checklist-test §5, a record closes when every fail has a disposition and every partial is named. There is neither here, so nothing is extracted, parked or carried.

    Generated by Claude Code

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions