Skip to content

QA run · search (6/8) · ba4afcc2 · 2026-10-19 · 6 PASS / 0 PARTIAL / 0 FAIL / 0 BLOCKED / 2 NOT-RUN #24593

Closed

Description

@objectstack-fleet

Round 2 of the 18.0 release sweep for search: re-judges on ba4afcc2 the clauses round 1 (#24574, subject 5b14b7f3) left unjudged and that this environment can drive (A class); every other verdict is carried forward from #24574 below. Supersedes #24574 under checklist-test SKILL §5. Wave anchor: #24579.

Environment fingerprint

  • framework ba4afcc2391922a86678bf5e47b1a0e4d2c87ff1 (pinned; one commit after round 1's 5b14b7f3, a release-script fix — git diff 5b14b7f3 ba4afcc2 -- docs/qa/platform-checklist/ is empty, so every item revision is unchanged and carried verdicts stay revision-valid)
  • console .objectui-sha 4016370af3c9c9dafec2bc5299afd8e8079701b8, built with pnpm objectui:build (deps --concurrency=2); packages/console/dist/.objectui-sha stamp equals the pin
  • app: showcase, canonical boot OS_PORT=PORT pnpm -C examples/app-showcase exec objectstack dev --ui --seed-admin -p PORT -d file:/tmp/qa2/LABEL/ITEM.db; own port + file DB per runner/item; scratch app copies for metadata-writing items; seed --seed-admin + showcase seed
  • browser: Playwright, executablePath /opt/pw-browsers/chromium, one context per runner, form sign-in
  • timestamps 2026-10-19: environment prep 14:12–14:44 UTC (cold tree: install 39 s, pnpm build 10m20s, console build ~25 min); testing 14:34–14:50 UTC
  • execution: one API runner sub-agent on :47511 with OS_SEARCH_PINYIN_ENABLED=false

Scope

Round-2 per-clause verdicts (ba4afcc)

Each line: item revN · clause · verdict · text oracle evidence.

  • search.global-search-skips-unreadable rev2 · acceptance[3] (row scope) · pass — the member is contributor-bound (get-session qa-contrib-r2@verify.test) and owns one invoice, INV-QA-R2. /data/showcase_invoice gives the member 1 readable row, and INV-1003 answers 404 to the member.
    • GET /api/v1/search?q=INV&objects=showcase_invoice&perObject=25: the member gets hits = [INV-QA-R2], totalHits 1, totalObjects 1. The admin (get-session admin@objectos.ai) gets 13 hits, INV-1003 included.
    • q=INV-1003: the member gets 0 hits and totalHits 0. The admin gets 1 hit, INV-1003.
    • No count in the member's body is above 1.
  • search.global-search-skips-unreadable rev2 · acceptance[4] (hidden field) · pass — the pinyin flag is OFF (OS_SEARCH_PINYIN_ENABLED=false, 52 plugins). V = user, which sits only in the role column, an admin-only column (two sys_user rows hold role: 'user'). Premise guard: the member's GET /data/sys_user answers 200 with 4 rows, the response does not include the role, ban_reason or last_login_ip keys, and no member-readable value contains "user".
    • Positive control: the admin's GET /api/v1/search?q=user&objects=sys_user&perObject=25 answers 200 with 2 hits, both with snippet user.
    • The member's identical search answers 200 with hits [] and totalObjects 1.
    • sys_user stays searchable for the member on the fields it may query: q=Ada returns Ada Auditor, and q=8613800138000 returns Mei Phone through phone_number.
  • search.global-search-skips-unreadable rev2 · negative[3] (a hit for a term only in a hidden field) · pass — the same evidence as acceptance[4]: no sys_user hit for V as the member, with the pinyin flag off.

Reproduction rules (fails)

No round-2 clause scored fail.

Carried forward from #24574 (verdicts valid for 5b14b7f3, same item revisions)

Carried-forward: #24574 · search.cross-field-object-search · PASS
Carried-forward: #24574 · search.field-scoped-narrowing · PASS
Carried-forward: #24574 · search.rls-both-personas · PASS
Carried-forward: #24574 · search.pinyin-flag-both-sides · PASS
Carried-forward: #24574 · search.freshness-and-empty · NOT-RUN
Carried-forward: #24574 · search.console-global-search · PASS
Carried-forward: #24574 · search.command-palette-navigation · NOT-RUN
Carried-forward: #24574 · search.global-search-skips-unreadable · PARTIAL at 5b14b7f3 for every clause except those re-judged above

FAIL items carried forward keep their round-1 disposition and extraction lines on #24574 (re-point rows on #24579 §1, defect cards as listed there).

Derived item verdicts (round-2 clauses + carried clauses)

  • search.cross-field-object-search — PASS
  • search.field-scoped-narrowing — PASS
  • search.rls-both-personas — PASS
  • search.pinyin-flag-both-sides — PASS
  • search.freshness-and-empty — NOT-RUN
  • search.console-global-search — PASS
  • search.command-palette-navigation — NOT-RUN
  • search.global-search-skips-unreadable — PASS (changed: was PARTIAL)

Product defects (extraction)

None extracted from this round.

Checklist-accuracy findings / fixture gaps

For the wave anchor #24579 (not extracted).

  • search.global-search-skips-unreadable · step 5: the literal query GET /api/v1/search?q=INV&objects=showcase_invoice caps each object at 5 hits by default (searchAll perObject default 5, max 25), and truncated describes only the overall limit, so it reads false. The admin's side then returns INV-1006/1008/1010/1012 plus the member's own row, and INV-1003 is not among them. That reads as acceptance[3]'s admin half failing. Step 5 should add &perObject=25 (or query q=INV-1003).
  • search.global-search-skips-unreadable · fixtures.requires[2] / step 6: on a fresh boot every last_login_ip is null (a direct sign-in sends no forwarded header), and ban_reason is null. The usable stock V is role's value user. It is held by sign-up/seed-admin users only, and no member-readable column contains it. Suggested change: name role = user as the stock V, and keep the premise guard.
  • Recipe search:qa-contributor-bound-member step 2: GET /api/v1/data/sys_user?email=ADDR (admin) resolves the id. $filter=email eq '…' answers 400.

Handover (not judged on ba4afcc)


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Parked-on: #24579 · this record's checklist-accuracy findings, fixture gaps and B-class parked clauses (wave anchor §2–§4)


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 19, 2026

    @objectstack-fleet
    ContributorAuthor

    Closed by: the 18.0 QA wave dispatch session session_01CfRDy7SuTfUqaTu2AEH2Hi, on the maintainer's instruction there on 2026-10-19, verbatim 「qa-run的卡片处理完的是不是可以关闭」. Closure complete (checklist-test §5): every FAIL in this record has a disposition (the Extracted: / Parked-on: lines on this record), and its partial coverage gaps and not-run handover are parked on #24579.


    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