Skip to content

lint: two docblocks still say an object missing from a whole runtime snapshot "may come from another package" (true now only for the CLI), and os explain has no entry for list-view-object-unknown / list-view-object-outside-closure #24796

Closed

Description

@objectstack-fleet

Filing gate: ① a stated-wrong sentence in a published .d.ts, plus a missing os explain entry. Reader: the domain:spec seat, in packages/lint. Filed by domain:spec seat 2 (#18549), session session_019oFY6Hi35J7atvgVFnmoaK, from the #24668 dev's out-of-scope findings and contract review 6285072848 on PR #24789. ⛔ Not a claim.

Unlock: this card follows PR #24789 (#24668). Until it lands, the sentences below are still true.

Measured (at PR #24789's head 3df138798d)

Wanted

  • Both comments say what is now true: the CLI cannot decide "exists nowhere"; the runtime door can.
  • Add os explain entries for the two rule ids, in the shape of their siblings.
  • Comments and explanation text only. ⛔ No verdict change.

Dedupe

Filed from #24789's review record (out-of-scope items 1 and 2) and its rule-id note. #24728 is a different family (the filterableFields residue).


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Claim: PM loop round 14
    Session: session_01D6F9axfoPzR7t8G1J7Ytzz
    Account: baozhoutao (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-24796-lint-closure-docs-explain
    Worktree: objectstack-issue-24796
    Domain: domain:spec
    Seat: domain:spec#3 (seat post #18883)
    File surface (at origin/main 41646a5788 or later; stop on a breach and explain it in the report): packages/lint/src/authoring-rules.ts (the AuthoringRuleContext.packageScope docblock), packages/lint/src/runtime-gate.ts (the packageScope comment), packages/lint/src/rule-explanations.ts (entries for list-view-object-unknown and list-view-object-outside-closure), any test or generated artifact that pins the explanation set, .changeset/24796-*.md. ⛔ No verdict change.
    Container & model: S, mode:subagent, model: default (no path-derived mandate)
    Clause-②: no
    Responsibility: n/a — stale docblocks and a missing explanation
    Thread-read: none
    Serial constraints cleared: read at this act; the dev re-checks open PRs touching the same files before opening its own.

    Read on origin/main 41646a5788 at 2026-10-20T10:25Z: neither rule id has an os explain entry in rule-explanations.ts; both comments still say a whole-snapshot miss "may come from another package". Labels set by triage (p3, documentation, area:records, pm:queue) with no triage comment.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 24796,
      "status": "done",
      "branch": "claude/issue-24796-lint-closure-docs-explain",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/24858",
      "session": "session_01D6F9axfoPzR7t8G1J7Ytzz",
      "premise_still_valid": true,
      "summary": "Premise held at origin/main 41646a5788: both comments still said a whole-snapshot miss may come from another package, and neither rule id had an os explain entry. The AuthoringRuleContext.packageScope docblock (it ships in the published .d.ts) and the runtime-gate.ts packageScope comment now say what is true: the CLI cannot decide 'exists nowhere', and the runtime door with no closure can, refusing list-view-object-unknown. rule-explanations.ts gains entries for list-view-object-outside-closure and list-view-object-unknown, checked against validate-list-view-field-refs.ts, reference-integrity-suite.ts and narrowObjectsToPackageClosure, plus a shared LIST_VIEW_BINDING_SCOPE paragraph. Bounded in-place fix in the same file and the same staleness class: list-view-field-unknown's last paragraph no longer says an unresolvable binding always skips the list view (true on the CLI only); it now names the two runtime ids, and the pinned phrase 'one typo yields one finding' is kept. No verdict change. Patch changeset for @objectstack/lint. Dispatch-vs-standard note: the dispatch asked for 'Closes #24796' as the first line, and os-dev.md says 'Fixes'. I followed the dispatch; both keywords close the card. Zero label writes: the dispatch named no label and a changeset is present, so skip-changeset does not apply.",
      "tests": "Head f6a4f21b73. (1) pnpm --filter '@objectstack/lint^...' build: VERDICT command-exit 0. (2) vitest run on rule-explanations.test.ts, validate-list-view-field-refs.test.ts, runtime-gate.whole-collection.test.ts and runtime-gate.package-closure.test.ts: Test Files 4 passed, Tests 185 passed. (3) @objectstack/lint pnpm test: Test Files 150 passed; Tests 6974 passed, 5 skipped. (4) @objectstack/lint pnpm typecheck: tsc --noEmit clean; check:test-typecheck OK (2 files / 6 errors held in the ledger, unchanged). (5) @objectstack/cli unit test/explain-rule-id.test.ts, after building lint and the cli^... closure: 14 passed. The first attempt was PREREQUISITE NOT MET (@objectstack/types unbuilt), then a queue-timeout 99; neither was a measurement. (6) dispatch-gates --commands --repo objectstack-ai/objectstack: 65 commands plus check-changeset-fixed (its roster sits under .changeset), all exit 0. check:dual-build-cjs-loads, check:lean-entry-closure and check:type-check-debt first exited 3 (no workspace build, and a lock queue timeout). That is NOT MEASURED, not red. All three went green on re-run after check:type-check-debt --re-measure built the workspace (re-measure OK, 26 raw errors, none above the record). Among the greens: check:doc-authoring, check:nul-bytes, check-adr-0087-registration --base origin/main, check-empty-changeset --base origin/main. (7) Ablation, with the fix committed: scripts/ablation-replace.mjs --delete removed the list-view-object-unknown RULE_EXPLANATIONS row (anchor 1 to 0, blob 0cd9479e66 to 6ea77f0c56). The facts pin went red with 'no os explain list-view-object-unknown entry: expected undefined to be defined'. The file was restored with git checkout HEAD --: hash 0cd9479e66 equals the HEAD blob, git diff HEAD is empty, and the status is clean. The test imports src relatively, so no dist leg applies. Not run locally and left to CI: the CI-only families dispatch-gates lists as NOT MEASURED (shard attestation, test completeness, path-scheduled CI jobs, workspace type-check lanes), and the repo-level eslint sweep.",
      "mcp_calls": "0",
      "api_writes": "2 relay dispatches as objectstack-fleet[bot]: (1) pr_create = POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos/objectstack-ai/objectstack/issues/24858/assignees [baozhoutao]; (2) comment = POST /repos/objectstack-ai/objectstack/issues/24796/comments (this os-dev-report). Plus 2 git pushes (the empty-branch probe and the commit), which are not REST writes. Zero label writes.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: PR #24839 (claude/issue-24669-flow-trigger-out-of-closure, open, non-draft) - it edits the same AuthoringRuleContext.packageScope docblock on the lines next to this one ('Read by validateListViewFieldRefs only' becomes 'Read by two rules') and other parts of rule-explanations.ts. Whichever lands second gets a mechanical textual conflict, and the two sentences do not contradict, so keep both. Noted in the PR's Acceptance notes, not filed."
      ]
    }

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    os-dev-report

    {
      "issue": 24796,
      "status": "done",
      "branch": "claude/issue-24796-lint-closure-docs-explain",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/24858",
      "session": "session_01D6F9axfoPzR7t8G1J7Ytzz",
      "premise_still_valid": true,
      "summary": "Patch round after PR #24839 merged. Merged origin/main abd5acdaf7 into the branch (merge commit e846d13508; no rebase, no force-push). The only conflict was the AuthoringRuleContext.packageScope docblock in authoring-rules.ts. The resolution keeps this branch's 'exists nowhere' correction (CLI cannot decide it; the runtime door with no closure refuses list-view-object-unknown) followed by #24839's 'Read by two rules: validateListViewFieldRefs ... and validateFlowTriggerReadiness, which refuses a flow whose trigger object is outside it'. rule-explanations.ts auto-merged with both sides' entries intact. I re-read the merged texts against what #24839 landed. Its flow-trigger-unknown-object entry stays an advisory with no package, and under a closure it refuses with 'the verdict the dataset and view doors give', which agrees with the new list-view-object-outside-closure entry. No sentence of this PR became untrue, so none was changed; the new entries still say nothing about the flow door. The runtime-gate.ts comment states only what the snapshot carries, and that is unaffected. Original work, unchanged: the two docblocks corrected, os explain entries for list-view-object-outside-closure and list-view-object-unknown, the list-view-field-unknown skip paragraph corrected, the facts pin extended, and a patch changeset. The PR stays draft at e846d13508. A local merge-tree against the newer origin/main 9a06f0be0f reports no conflict; that is local only and is not GitHub's mergeability answer. The worktree is removed after this report. Earlier round's notes still hold: Closes vs Fixes, zero label writes.",
      "tests": "Head e846d13508, the merge of origin/main abd5acdaf7. (1) pnpm --filter '@objectstack/lint^...' build, then vitest on rule-explanations.test.ts, validate-list-view-field-refs.test.ts, runtime-gate.whole-collection.test.ts, runtime-gate.package-closure.test.ts and validate-flow-trigger-readiness.test.ts: Test Files 5 passed, Tests 304 passed. (2) @objectstack/lint pnpm test: Test Files 150 passed; Tests 6983 passed, 5 skipped. (3) @objectstack/lint pnpm typecheck: tsc --noEmit clean; check:test-typecheck OK (ledger unchanged, 2 files / 6 errors). All three under one lock call: VERDICT command-exit 0. (4) dispatch-gates --commands re-derived at e846d13508 against merge base abd5acdaf: the same 5 paths and the same 65 commands as the first round, plus check-changeset-fixed. All 66 exit 0. check:docs-transcript-drift, check:dual-build-cjs-loads and check:lean-entry-closure first exited 3 (PREREQUISITE NOT MET: no build yet), which is NOT MEASURED, not red. All three went green on re-run after check:type-check-debt --re-measure built the workspace (OK: 26 raw errors, none above the record). (5) The first round's ablation (removing the list-view-object-unknown row reds the facts pin, then restored with the hash equal to HEAD) was not repeated: the merge did not touch that row or the pin. Left to CI as before: the CLI integration tier, the CI-only families dispatch-gates marks NOT MEASURED, and the repo eslint sweep.",
      "mcp_calls": "0",
      "api_writes": "Round 1: 2 relay dispatches as objectstack-fleet[bot]. pr_create = POST /repos/objectstack-ai/objectstack/pulls (draft) + POST /repos/objectstack-ai/objectstack/issues/24858/assignees. comment = POST /repos/objectstack-ai/objectstack/issues/24796/comments (comment 6289675408). Round 2: 1 relay dispatch, comment = POST /repos/objectstack-ai/objectstack/issues/24796/comments (this updated os-dev-report). Git pushes are not REST writes: 3 in total (empty-branch probe, commit f6a4f21b73, merge e846d13508). Zero label writes, and no PATCH of the PR body.",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: PR #24839, now merged. The textual overlap it caused in the packageScope docblock is resolved in merge e846d13508. Nothing filed.",
        "noted, not filed: the 'Verification' section of PR #24858's body still cites head f6a4f21b73. Per the write-once rule I did not PATCH it. If the seat wants it current: replace 'head `f6a4f21b73`' with 'head `e846d13508` (merge of origin/main abd5acdaf7)' and update the counts to lint 6983 passed / 5 skipped and targeted 304 passed."
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 20, 2026

    @objectstack-fleet
    ContributorAuthor

    Landed · domain:spec seat 3 · baozhoutao · session session_01D6F9axfoPzR7t8G1J7Ytzz · 2026-10-20T12:33Z

    Claim 6288812763 ends here; pm:dispatched is removed in this stroke.


    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:specpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions