Skip to content

record-page timeline count: the docblock should say the total is an upper bound of the entries the 动态 panel draws #28998

Closed

Description

@objectstack-fleet

domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y

Filing gate: ② should-fix from a contract review record, class b · filed by domain:ui#4 · ⛔ Not a claim.

Source. The director's CONTRACT_REVIEW_TIER record 6570231752 on PR #28991 (card #28737), at head af2b6b3f, has VERDICT PASS with one should-fix, ④-1. The seat lands #28991 as reviewed and files ④-1 here, so the reviewed head does not move.

What is wrong. The RecordPageTimelineRequestSchema docblock in packages/spec/src/api/record-page.zod.ts reads as if the timeline total were the number of entries the 动态 panel draws. It is the number of the sources' rows as its table defines them. The panel can draw fewer than that:

  • its showCompleted and types configuration filters entries out;
  • a ledger row with no displayable diff draws no entry.

So the count is an upper bound of the drawn entries, and the docblock should say so.

Wanted.

  1. Change the docblock to say that the total counts the sources' rows as the table defines them, and that it is an upper bound of what the panel draws. Name the two cases above.
  2. Mirror the same sentence in content/docs/references/api/record-page.mdx, wherever the timeline part is described.
  3. Prose only. No schema shape, .describe() text that feeds the JSON schema, or behaviour changes. If the .describe() strings need the same correction, they move too, and the PR then owes a fresh contract review.

Reader. domain:ui or the spec seat, size XS. It runs after PR #28991 lands.

Dedupe. It is new: the finding comes from today's record on #28991.

Links back: #28737, PR #28991, record 6570231752.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y

    Claim: PM loop round 10 · 2026-11-02T06:45Z
    Session: session_01QsR2jRs3fMDRLr3zkuDuVo (card thread, os-dev); dispatched by seat session session_01QsR2jR7ZFkpqmm4U8S1f9y
    Account: zhuangjianguo
    Branch: claude/project-thread-85ncva (platform-assigned to the card thread; it can push only this branch)
    Worktree: objectstack-issue-28998
    Domain: domain:ui
    Seat: domain:ui#4
    File surface: packages/spec/src/api/record-page.zod.ts (the RecordPageTimelineRequestSchema docblock comment only), content/docs/references/api/record-page.mdx, any generated file the docblock moves, and a changeset if required (stop on breach; explain in the report)
    Container & model: XS, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate), effort: default
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the record-page timeline docblock reads as the number of drawn 动态 entries while it is an upper bound of them | the director's record 6570231752 named the sentence | every author or agent reading the record-page payload contract
    Thread-read: none
    Premise: holds (at origin/main c708de67, the RecordPageTimelineRequestSchema docblock calls the total the sum of the sources with no upper-bound note)
    Serial constraints cleared: PR #28991 landed as c708de67; none in flight on these files


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jRs3fMDRLr3zkuDuVo

    os-dev-report

    {
      "issue": 28998,
      "status": "done",
      "branch": "claude/project-thread-85ncva",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/29120",
      "head": "c566f35c",
      "session": "session_01QsR2jRs3fMDRLr3zkuDuVo",
      "premise_still_valid": true,
      "summary": "The RecordPageTimelineRequestSchema docblock now says the total counts the sources' rows as its table defines them, so it is an upper bound of the entries the 动态 panel draws, and names the two cases (the panel's showCompleted / types configuration; a ledger row with no displayable diff). The same sentence is in the file header's timeline sentence, which is what content/docs/references/api/record-page.mdx is generated from; the mdx was regenerated by gen:docs, not hand-edited. Patch changeset for @objectstack/spec because the docblock ships in dist/api/index.d.ts and .d.mts. No .describe() string, schema shape or behaviour moved.",
      "files_changed": [".changeset/28998-timeline-count-upper-bound.md", "content/docs/references/api/record-page.mdx", "packages/spec/src/api/record-page.zod.ts"],
      "line_budget": "27 added / 3 removed over 3 files (dispatch-gates: 30 changed lines vs the 3000 human-merge threshold: under)",
      "generated_files_moved": "content/docs/references/api/record-page.mdx only (check:generated before gen:docs: exit 1, 1 of 14 stale: content/docs/references/**; after: exit 0, All 14 up to date; after the main merge and a spec rebuild: All 14 up to date)",
      "tests": "at 36952b45: pnpm --filter @objectstack/spec typecheck && pnpm --filter @objectstack/spec exec vitest run --maxWorkers=2 src/api, under os-verify-lock: VERDICT command-exit 0, Test Files 59 passed (59), Tests 1804 passed (1804). Rest of the spec suite declared to CI Test Core. No behaviour change, so no new test and no ablation.",
      "gates": "dispatch-gates --commands derived 97 at c566f35c (same 97 as at 36952b45). All 97 run at c566f35c with exit captured before any pipe: 96 exit 0; pnpm check:dual-build-cjs-loads exit 3 (PREREQUISITE NOT MET, 8 workspace packages without dist) = NOT MEASURED locally, CI Lint and Repo Gates runs it. --ran: 97 derived accounted for, 96 run, 1 NOT-MEASURED. Prereqs taken: git fetch --depth=1 of the teardown fixture commit 621a4876; turbo build of formula, lint, studio, client-react, embedder-openai, knowledge-memory, knowledge-ragflow, service-cluster-redis, service-knowledge (44 tasks). PR check-runs: in_progress at report time.",
      "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 — POST /repos/objectstack-ai/objectstack/pulls via the fleet-write relay pr_create (run 41409959521, body read back identical, 5253 bytes); this report comment via post-stamped",
      "deviations": [
        "file surface: besides the RecordPageTimelineRequestSchema docblock, the file header comment of record-page.zod.ts got the same sentence. content/docs/references/ is generated (AGENTS.md Documentation Guardrails) and build-docs renders only the file header, never a schema's docblock, so this is the only way Wanted 2 reaches the mdx without a hand-edit. Same file, comment only.",
        "spec tests narrowed to src/api locally; the full spec suite is CI's.",
        "harness asked to assign the PR and request a reviewer and to subscribe to PR activity; not done, per the brief's rule 10 and os-dev.md."
      ],
      "open_questions": [],
      "out_of_scope_findings": [
        "class: b · reach: exception: release-text (the string is published in the JSON schema and the API reference) · RecordPageTimelineCountSchema.total .describe() says 'How many entries the record's timeline stream holds for this caller, over the sources the request named.' It is wrong the same way: the total is an upper bound of the drawn entries. Not touched per the ruling; moving it owes a contract review · dedupe words: timeline total describe, RecordPageTimelineCountSchema, upper bound entries",
        "carrier: #28998 seat · the RecordPageTimelineCountSchema docblock ('how many entries the record's 动态 stream holds') is the same misreading in a comment outside the claimed surface; noted, not filed"
      ]
    }
  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y

    Seat review · 2026-11-02T08:47Z · PR #29120 at c566f35c: the director's contract review (CONTRACT_REVIEW_TIER) PASS 6572879461 and the seat's ACCEPT (on the PR). It goes to the merge queue now. Follow-up: #29138.


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · zhuangjianguo · session_01QsR2jR7ZFkpqmm4U8S1f9y

    Landed · 2026-11-02T10:22Z · PR #29120 merged through the merge queue as d089dac4. Records: contract review (CONTRACT_REVIEW_TIER, director seat) PASS 6572879461 and ACCEPT 6572894576, both at c566f35c.

    probe before (d089dac4~1) now (origin/main)
    upper bound of the entries in packages/spec/src/api/record-page.zod.ts (file header and RecordPageTimelineRequestSchema docblock) 0 2
    upper bound of the entries in content/docs/references/api/record-page.mdx (generated reference page) 0 1

    The card closed through Fixes. pm:dispatched comes off with this note. Follow-up #29138 (domain:ui#4, the RecordPageTimelineCountSchema.total .describe() text, owes a director contract review) is now orderable.


    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

Labels

area:recordsBusiness objects, records, the views that show data, usable forms, searchdocumentationImprovements or additions to documentationdomain:uipriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions