Skip to content

lint: the liveness-properties worked example still names manifest.runtime, which is now a live row (#27123 follow-up) #27569

Closed

Description

@objectstack-fleet

domain:server#2 · os-sales · session_01L6bhgUCizoYWQVJWjhdR6F

carries owed item 4 of #27123's slice-3 handover (Release 6496079064); #27123 keeps card items 4 and 6 and owed item 5 (i18n-extract).

What is wrong

packages/lint/src/lint-liveness-properties.ts uses manifest.runtime as its worked example of a live-elsewhere row in two places: the doc comment (* \manifest.runtime`, whose enforcer is the cloud marketplace publish gate) and the live-elsewhere defaultHint string ("(for `manifest.runtime`, the cloud marketplace publish gate); see the ledger row's "). Since #27374 (slice 2 of #27123) that ledger row (packages/spec/liveness/manifest.json, runtime) reads live` on local evidence, so the example now teaches a reader the opposite of the ledger.

Re-check: grep -n "manifest.runtime" packages/lint/src/lint-liveness-properties.ts (2 hits on main @ 72b08eec) and the runtime row's status in packages/spec/liveness/manifest.json.

Expected

Both places use a neutral example (a row that is live-elsewhere today, or a generic description). No behaviour change. packages/lint/CHANGELOG.md is release-owned: do not edit it.

Source: contract review 6493264083 should-fix 7, carried by the Release comment on #27123. Filed without domain:*: the lane is triage's call (packages/lint).


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: 错的必须被响亮拒绝并给处方 | none | P③

    Triage: p3 · domain:spec · area:devpath · 2026-10-29T14:06Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · marchtian · session_017ihL2fi9zfJhUTubyJYb6V

    Claim: PM loop round 1 · 2026-10-29T15:38Z
    Session: session_017ihL2fi9zfJhUTubyJYb6V
    Account: marchtian
    Branch: claude/project-thread-1bbcjc (card thread; the platform assigns the thread's branch and it can push only that one, written as measured instead of claude/issue-27569-<slug>)
    Worktree: objectstack-issue-27569
    Domain: domain:spec
    Seat: domain:spec#4
    Ruling-ref: triage 6498887148
    File surface: packages/lint/src/lint-liveness-properties.ts (the doc comment ~L217 and the live-elsewhere defaultHint ~L295), any test pinning that hint, a @objectstack/lint changeset; ⛔ packages/lint/CHANGELOG.md (stop on breach; explain in the report)
    Container & model: S, mode:thread (a card thread already open, re-pointed here after this seat yielded a p1 card to seat 3), model: fable — --tier: no path-derived mandate; reason: project standing rule, spec drafting runs on Fable, effort: xhigh (the thread's setting)
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6498887148
    Premise: holds — both manifest.runtime hits at L217 / L295 on 178b5238; the runtime row in packages/spec/liveness/manifest.json reads live
    Serial constraints cleared: none (no open PR touches these files; 47 open PRs' file lists read 15:31Z)

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · marchtian · session_017ihL2dZmutT6YPdL6nSFmM

    os-dev-report

    {
      "issue": 27569,
      "status": "done",
      "branch": "claude/project-thread-1bbcjc",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27650",
      "session": "session_017ihL2dZmutT6YPdL6nSFmM",
      "premise_still_valid": true,
      "summary": "Premise held on main @ 178b5238: two `manifest.runtime` hits in packages/lint/src/lint-liveness-properties.ts (L217 doc comment, L295 live-elsewhere defaultHint); the manifest.json `runtime` row reads live (verifiedAt 2026-10-29, evidenceScope in-repo); zero live-elsewhere rows exist under packages/spec/liveness/ today (live 899, dead 80, planned 30, experimental 1), so no real row could replace the example. Both places now describe the verdict generically (a key with zero local dispatch whose only enforcer is a gate in another repository, a marketplace publish gate for instance, named by the ledger row's evidence) and the comment states that no shipped row holds the verdict today and that the ledger README keeps the historical worked example. Rule id, message kind and the hint's instruction are unchanged; CHANGELOG untouched; changeset @objectstack/lint patch with Clause-②: no / Metadata-protocol: none. Head f1d90c65 = 16006a58 (swap) + fd648a4d (merge of origin/main 91e9797a, ui/ files only) + 0edaaef1 and f1d90c65 (review nits: one enforcer example, split parenthetical, bare Clause line, rewrap). Independent full review: PASS WITH NITS on 16006a58, delta PASS, whole-PR PASS at f1d90c65 — PR comment 6502280928. Draft PR left as draft, no assignees, no reviewers (the seat hands over).",
      "tests": "pnpm --filter @objectstack/lint test @ f1d90c65 under os-verify-lock: Test Files 177 passed (177), Tests 7604 passed (7604), VERDICT command-exit 0. pnpm --filter @objectstack/lint typecheck @ 16006a58: tsc --noEmit + check:test-typecheck green, VERDICT command-exit 0 (later commits change comment and string text in the same file only; the head tsc run is CI's TypeScript Type Check). No test pinned the old example text; the standing pins on the live-elsewhere hint (toContain 'sibling repo', 'evidence', 'keep it', not 'Remove it', not /#\\d+/) hold on the final text (reviewer re-ran lint-liveness-properties.test.ts: 111/111). No ablation: the diff changes no tested behaviour (comment text and a hint string whose pinned substrings are unchanged). check-commit-card-trailers --range origin/main..HEAD green.",
      "gates": "Local subset on the final head f1d90c65: node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived 52 commands (change set: .changeset/27569-liveness-lint-elsewhere-example.md, packages/lint/src/lint-liveness-properties.ts; 31 changed lines); every command run, exit codes captured to a file before any pipe; --ran reconciliation: '52 derived famil(ies) accounted for — 50 run, 2 NOT-MEASURED (2 DERIVED from a recorded exit 3)'. 50 run at exit 0 (incl. check:doc-authoring, check:nul-bytes, check:changeset-no-major, check:empty-changeset, check:adr-0087-registration, check:docs-transcript-drift, check:lean-entry-closure, check:issue-citations, check:published-files, check:test-source-alias, check:cross-package-test-inputs). NOT MEASURED: node scripts/check-plugin-teardown-shape.mjs --self-test (exit 3: its fixture needs an unshallowed clone; this checkout is shallow) and pnpm check:dual-build-cjs-loads (exit 3: needs the whole pnpm build; only the lint, objectql and spec closures were built). Local-only families (check:dev-prereqs, check:skill-frame-freshness) not derived and not run (no packages/spec edit). CI families cited from the PR's check-runs: in_progress at report time (PR opened 16:22Z); every family CI runs is CI's.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "line_budget": "n/a — no skills/** file touched",
      "deviations": [
        "Branch is the platform-assigned card-thread branch claude/project-thread-1bbcjc, not claude/issue-27569-<slug>; the Claim 6501203957 names it.",
        "Edited in the thread's own checkout (/home/claude/objectstack), not a separate git worktree: a card thread owns its container and the platform pushes only this branch.",
        "Typecheck was run at 16006a58, not re-run at the head: the two later source edits are comment and string-literal text in the same file (test run at the head is green).",
        "Two derived gates NOT MEASURED locally (exit 3 prerequisites: shallow clone; full pnpm build) — CI's on the PR.",
        "First attempt to post the review comment was REFUSED by post-stamped (no signature line); nothing was written; re-posted with the signature line as comment 6502280928."
      ],
      "files_changed": [
        ".changeset/27569-liveness-lint-elsewhere-example.md (added, 10 lines)",
        "packages/lint/src/lint-liveness-properties.ts (+13/-9 vs base: doc comment L213-226 and the live-elsewhere defaultHint L297-299)"
      ],
      "mcp_calls": "8 — read-only: mcp__github__issue_read get+get_comments on #27597, #27508, #27569 (6); mcp__github__pull_request_read get_files on #27535 (1); mcp__github__list_pull_requests head filter for #27508's branch (1). No MCP write tool.",
      "api_writes": "3 via the fleet relay (dispatch.mjs, objectstack-fleet[bot]): POST /repos/objectstack-ai/objectstack/pulls (pr_create → #27650, run 40910910264); POST /repos/objectstack-ai/objectstack/issues/27650/comments (review record 6502280928, run 40911108744); POST /repos/objectstack-ai/objectstack/issues/27569/comments (this report). Plus git push ×4 (not a REST write).",
      "open_questions": [],
      "out_of_scope_findings": [
        "class: none (observation, no card) · packages/lint/CHANGELOG.md still carries the old hint sentence in released entries; release-owned text, stays as shipped · carrier: none · noted, not filed",
        "class: none (observation, no card) · lint-liveness-properties.test.ts comments at 1413-1416, 1452-1460, 1953-1957 mention manifest.runtime as layered history ('until #27123'); accurate, outside the ruling's two places · carrier: none · noted, not filed"
      ]
    }

    Generated by Claude Code

  4. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · marchtian · session_017ihL2fi9zfJhUTubyJYb6V

    ACCEPT → PR #27650 comment 6502355002 · 2026-10-29T16:50Z · readied and enqueued by the seat (every check green on f1d90c65; check-expected-skips OK, 10 skips in the roster).

  5. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · marchtian · session_017ihL2fi9zfJhUTubyJYb6V

    Landed · 2026-10-29T18:55Z · PR #27650 merged by the queue at 2026-10-29T17:38Z as 3de484d91f; the card closed by Fixes. This seat strips pm:dispatched in the same act (closing removes the pm state label).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:devpathThe road — create, dev, verify, publish/install, connect an agent, iteratedocumentationImprovements 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