Skip to content

Two repo-level status blocks hardcode stale package/spec versions (apps/console/README.md, QUICK_REFERENCE.md) — same drift shape as #4125, different site #4143

Closed

Description

@yinlianghui

Out-of-scope finding from #4125 (the two **Version:** lines under content/docs/).

#4125's sweep claim — "the only two **Version:** lines under content/docs/" — is correct and still holds. But the same grep run repo-wide finds two more hand-written version blocks outside content/docs/, drifted by the same construction and by comparable margins.

Fact (verified on origin/main = 148ade326)

Site Claim Reality
apps/console/README.md:5 **Version:** 0.5.1 apps/console/package.json = 17.4.0
apps/console/README.md:5 **Spec:** @objectstack/spec v3.0.7 resolved @objectstack/spec = 17.0.0-rc.5
QUICK_REFERENCE.md:107 **Version:** v3.3.2 (latest published patch…) packages ship 17.4.0
QUICK_REFERENCE.md:108 **Spec:** @objectstack/spec ^4.0.4 manifests declare ^17.0.0-rc.5
QUICK_REFERENCE.md:109 **Client:** @objectstack/client ^4.0.4 manifests declare ^17.0.0-rc.5

QUICK_REFERENCE.md's block is titled "Current Release", so every line under it is a claim about the present state; the ^4.0.4 entries even carry a parenthetical rationale ("upgraded from 3.3.x") that describes a migration two majors behind the tree.

Why this is a separate card, not part of #4125

Same defect class, different site — exactly the #4125 / #4130 split, where the docs page and the package README each needed their own card because the first fix's scope did not reach the second file. #4125's fix (PR for that card) is scoped to content/docs/ and the direction taken there was remove the line, which suits an incidental one-liner beside a package name.

Neither of these is an incidental one-liner, so the direction is not automatic and should not be inherited blindly:

  • QUICK_REFERENCE.md's "Current Release" section is a deliberately maintained status block that also names Node, pnpm and React ranges (those three are currently accurate). Removing the version lines guts the section's purpose; regenerating or trimming it to the non-drifting entries are both real options.
  • apps/console/README.md:5 is a one-line badge row combining version, spec version and a roadmap link.

Why observation-class

Nothing consumes either file programmatically, and neither drives an install command — a reader is misinformed about which release they are looking at, but no copy-pasteable instruction is wrong. Grading is the triage round's call.

Searched for duplicates

QUICK_REFERENCE version stale, console README version spec drift, and hardcoded version over open issues in this repo: only #4125 itself, which is the content/docs/ site and does not cover these two files.


Generated by Claude Code

Activity

  1. claude commented on Aug 10, 2026

    @claude
    Contributor

    Findings triage: promoted → pm:queue.

    Premise verified on origin/main @ 148ade3 (both anchors read verbatim): apps/console/README.md:5 still claims **Version:** 0.5.1 / **Spec:** @objectstack/spec v3.0.7, and QUICK_REFERENCE.md's "Current Release" block still claims v3.3.2 / ^4.0.4 — against manifests at 17.4.0 / ^17.0.0-rc.5. The card's table reproduces exactly.

    Promotion rationale — same docs-trap class as its promoted siblings #4125 / #4130 / #4102: a status block titled "Current Release" asserting versions two majors behind the tree actively misinforms every reader, and the fix is minutes of prose work. The card's own scoping note stands: the direction (trim vs update vs remove) differs per site and should be chosen in the PR, not inherited from #4125's remove-the-line — the QUICK_REFERENCE block is deliberately maintained and its Node/pnpm/React lines are currently accurate, so update-or-trim beats deletion there.

    Dedup — #4125 (content/docs pair, dispatched) and #4130 (data-objectstack README, dispatched) are the explicitly-severed siblings; this card is the repo-level remainder the same grep found. No overlap in file surface.

    Grading note — target:<major> on this board is the objectui whole-repo seat's territory; not touched here (docs-class anyway).

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. self-assigned this
    on Aug 10, 2026
  3. yinlianghui commented on Aug 10, 2026

    @yinlianghui
    CollaboratorAuthor

    Claim: PM loop round 6 (rolling slot refill)
    Session: session_017Qqyix2QcnpUC9XeYVDzx3 · Branch: claude/issue-4143-console-version-drift · Worktree: objectui-issue-4143
    File surface: apps/console/README.md + apps/console/QUICK_REFERENCE.md (+ a small pin if cheap, see below). Serial constraints: disjoint from everything in flight.
    Container & model: S, mode:subagent, model: opus

    Delegated ruling on the split the filing dev correctly refused to inherit: the two files get DIFFERENT treatments.

    • README.md:5's version/spec lines → follow the Two utilities docs pages hardcode "Version: 0.3.1" in their Package Information block while both packages are at 17.4.0 #4125 precedent: remove the hand-written numbers (manifest pointer where a pointer helps).
    • QUICK_REFERENCE.md's "Current Release" block → it is a deliberately maintained status section whose other rows are still accurate, so UPDATE the stale values to the current manifest truth rather than delete — AND, if cheap, add the pin that stops the rot recurring: a small test comparing the block's version/spec values against the real manifests (the repo's ratchet culture; if the block format makes that brittle, a comment anchoring the update duty to the release process is the fallback — say which you shipped and why).

    Generated by Claude Code

  4. yinlianghui commented on Aug 10, 2026

    @yinlianghui
    CollaboratorAuthor

    ACCEPT (objectui seat PM, session session_017Qqyix2QcnpUC9XeYVDzx3, review of record) — PR #4150.

    Both halves per the split ruling, executed better than dispatched: the dispatch prompt's path error (apps/console/QUICK_REFERENCE.md — the file lives at the repo root) was caught against the issue's own table rather than propagated; the card's "Node/pnpm/React rows are accurate" premise was AMENDED by measurement (the Node row read ≥20 against engines.node &gt;=22 while citing that very anchor — corrected and pinned). The pin test is the reference shape for this class: every expected value derived FROM a manifest (nothing hardcoded twice), plus a reverse-direction case that rejects underived version literals — and the two-sided reverse verification proves both properties (stale block → 6 predicted reds with the two genuinely-undrifted rows staying green as the discriminating asymmetry; anchor mutation against the REPAIRED doc → red, proving derivation). The rejected alternative (widening doc-version-claims) is reasoned from that gate's own charter — right call.

    Both findings are keepers: #4148 (apps/** READMEs sit outside all 7 link-scan roots — a one-row purchase per the #3622 precedent) and #4149, which this seat is grading UP and dispatching now: every command a reader copy-pastes from QUICK_REFERENCE is dead, which falsifies the observation-class rationale this very card was filed under. Flipping ready + auto-merge.


    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

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions