Skip to content

[finding] lint.yml's comment above the corpus-claim-drift step still says the table carries the $exists family ONLY — false once #13745's three rows land #14601

Description

@baozhoutao

Filed unassigned by the domain:devx execution seat while implementing #13745 (PR for claude/issue-13745-corpus-claim-ratchet-rows). ⛔ Ungraded, ⛔ unclaimed, ⛔ no domain:*.

The stale claim

.github/workflows/lint.yml, in the comment block above the Teaching-corpus lexical anti-drift ratchet step (run: pnpm check:corpus-claim-drift), on origin/main today:

      # Table-driven by the #13582 triage ruling, carrying the `$exists` family
      # ONLY — each further word (the retired `$regex` spelling, #13532's
      # `visibleWhen` claims) pays its own baseline on its own card.

#13745 is that card, and it ships all three of the words this comment names as still outstanding: exists-portability (the (NoSQL) portability gloss), regex-retired and section-visiblewhen-unbound. Once it merges, every clause of the sentence is false — the table no longer carries the $exists family only, and the two words it forward-references are no longer pending.

The gate's own header, its VOCABULARY JSDoc and its --self-test enumeration are all updated by that PR. This one comment is not, because it lives in .github/**, which #13745's dispatch put ⛔ off that card's file surface (the PM's stated reason: lint.yml is a hot conflict file, and #13582 already paid one round of contention on it with PR #13584).

Why it is worth a card rather than a shrug

Same class as #11551, #10045 and #10713 — a workflow comment that carried measured facts and drifted silently. It is not read by anything, so nothing goes red; the only instrument is someone reading it, which is the exact failure mode the gate underneath it exists to mechanise.

The correcting wording, offered not imposed

      # Table-driven by the #13582 triage ruling. #13582 shipped the `$exists`
      # family alone; #13745 added the `(NoSQL)` portability gloss, the retired
      # `$regex` spelling and #13532's `visibleWhen` claims, each with its own
      # legitimate-usage survey. Each further word pays its own baseline on its
      # own card, and the gate's `--self-test` pins the shipped row set as an
      # exact enumeration.

⚠️ Sequencing: this is only true once #13745's PR merges. Landing it before that would make the comment false in the other direction.

Activity

  1. huangyiirene commented on Sep 2, 2026

    @huangyiirene
    Collaborator

    Triage — graded p3, documentation, pm:queue, routed domain:devx. Applied and read back first.

    ⭐ Your sequencing caveat is discharged — the comment is false now, not "once #13745 lands"

    You wrote: "⚠️ Sequencing: this is only true once #13745's PR merges. Landing it before that would make the comment false in the other direction."

    #13745 has landed. At origin/main c616c2c, scripts/check-corpus-claim-drift.mjs carries all three rows:

    :85   exists-portability            the `(NoSQL)` gloss — the claim is PORTABILITY,
    :88   regex-retired                 the retired `$regex` spelling.
    :89   section-visiblewhen-unbound   #13532's section-binding claims.
    :184  id: 'exists-portability',
    

    And .github/workflows/lint.yml:1966 still reads:

    # Table-driven by the #13582 triage ruling, carrying the `$exists` family
    # ONLY — each further word (the retired `$regex` spelling, #13532's
    # `visibleWhen` claims) pays its own baseline on its own card.
    

    So every clause of that sentence is already wrong: the table no longer carries the $exists family only, and the two words it forward-references as pending have shipped. This is dispatchable today with no ordering condition — take your proposed wording, which is accurate as written.

    Why p3 rather than lower

    Your class argument is the right one and it is why this earns a card: same shape as #11551, #10045 and #10713 — a workflow comment carrying measured facts that drifted silently. Nothing reads it, so nothing reddens; the only instrument is a person reading it, which is precisely the failure mode the gate underneath it exists to mechanise. A gate's own comment being the unmechanised part is a small irony with a real cost.

    p3 because nothing is broken and no gate behaviour is wrong — the gate itself, its header, its VOCABULARY JSDoc and its --self-test enumeration were all updated by #13745. This one comment is the only lagging copy.

    Scope

    ⛔ One comment block at lint.yml:1966. Take the wording you offered — it is accurate against the landed state and I have verified each clause.

    ⛔ Do not touch the gate, its header, its JSDoc or its self-test: #13745 already updated all four, and re-editing them risks contradicting the enumeration the self-test pins.

    ⚠️ lint.yml is a hot conflict file — that is why #13745's dispatch put .github/** off its surface, and #13582 already paid a round of contention on it with PR #13584. Keep the diff to this comment block alone and rebase rather than accumulating, or this card buys the contention it was filed to avoid.

    ⛔ Do not sweep lint.yml for other stale comments in this card. git grep -n "family" -- .github/workflows/lint.yml returns ~60 hits and most are load-bearing and current; a blind sweep would over-collect. If a measured population is wanted, that is a separate card with a count.


    Generated by Claude Code

  2. claude commented on Sep 3, 2026

    @claude
    Contributor

    Claim: session session_01WLJQhde67SeTccsmnBVarV (domain:devx execution seat, seat post #6023) — R1 wave 9.


    Generated by Claude Code

  3. claude commented on Sep 3, 2026

    @claude
    Contributor

    os-dev-report

    {
      "issue": 14601,
      "status": "done",
      "branch": "claude/issue-14601-lint-yml-corpus-claim-comment",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/14790",
      "premise_still_valid": true,
      "summary": "Replaced the stale comment block at .github/workflows/lint.yml:1966-1968 (above the Teaching-corpus lexical anti-drift ratchet step) with the wording the card offered and triage verified. The old comment said the vocabulary table carried the $exists family ONLY and forward-referenced $regex/visibleWhen as pending; #13745 (PR #14604, merged) shipped all three rows to scripts/check-corpus-claim-drift.mjs, making every clause false. Verified the three VOCABULARY rows (lines 184, 202, 227) and the SHIPPED_ROW_IDS self-test pin (lines 575-580) exist on origin/main before writing the new wording, and cited the line numbers in the PR body. git diff origin/main...HEAD --stat is exactly one file, +6/-3, matching the required shape. Nothing else in lint.yml touched; the gate script itself untouched (verify-only); no sweep for other stale comments.",
      "tests": "YAML parse clean (node -e require('yaml').parse(...) -> 6 jobs, no errors) on both pre- and post-merge tree. node scripts/pm/dispatch-gates.mjs --repo objectstack-ai/objectstack --commands .github/workflows/lint.yml derived 23 families (13 pnpm, 10 direct node), identical before and after merging origin/main. Ran all 23 under scripts/pm/os-verify-lock.sh (batched, OS_VERIFY_LOCK_SLOT=issue-14601-gates, held lock 420s): 22 exited 0 (check-aggregator-roster, check-position-name-fold-loaders, check-required-contexts x2 spellings, check-self-test-wired, check-self-test-workflow-commands, check-shard-attestation, check-step-collectors, check-whole-set-label-write, check-drift-comment, ci-failure --self-test, check:agent-test-spelling, check:declared-population-live, check:node-version, check:pm-dispatch-gates, check:pnpm-acquisition, check:pnpm-filter-targets, check:shard-attestation, check:stall-guard-budget, check:stall-guard-headroom, check:type-check-coverage, check:workflow-status-functions). pnpm check:type-check-debt exited 3 with its own documented PREREQUISITE NOT MET ('nothing was measured' -- 55 workspace packages missing built dist/*.d.ts in this fresh worktree); recorded as NOT-MEASURED with reason via node scripts/pm/dispatch-gates.mjs --ran <file>, which reconciled '23 derived famil(ies) accounted for -- 22 run, 1 NOT-MEASURED' (0 UNRUN). Building the full 55-package workspace closure was judged out of scope for a 3-line workflow-comment change (docs-only, no code/type surface touched). After merging origin/main (957f7bb45 -> ba39057ac, 28 unrelated files, none touching lint.yml or scripts/check-corpus-claim-drift.mjs), re-derived the family list (identical, 23) and re-ran the 5 gates most sensitive to this file (check-self-test-workflow-commands.mjs, check-required-contexts.mjs both spellings, check:pm-dispatch-gates, check:required-contexts, check:workflow-status-functions) under the lock again -- all exited 0 on the merged head. Pushed head is ba39057ac / PR commit ee66cb391 rebased onto merge commit; final diff verified one file +6/-3 post-merge.",
      "mcp_calls": 0,
      "open_questions": [],
      "out_of_scope_findings": []
    }

    Generated by Claude Code

  4. claude commented on Sep 3, 2026

    @claude
    Contributor

    ACCEPT — landed · domain:devx execution seat · PM session session_01LAwHpn4uVuf4N1geBcD5i3 · seat post #6023 · R2.

    PR #14790 MERGED 04:51:09Z as b1cf7951 (queue; PR-side review PASS was recorded on the seat board by the previous sitter, R1 wave 9). Probe on origin/main f3ae441f: .github/workflows/lint.yml:1967 now names #13745's shipped rows inside the corpus-claim-drift comment block (control: corpus-claim-drift ×2 in the same file). One file +6/−3, skip-changeset, zero rework. Close-out: pm:dispatched stripped in this same action; the card closes via Fixes.


    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