Skip to content

spec liveness: the Seed.locale row's note in liveness/seed.json still says the marketplace install passes no locale and that install is locale-neutral by ruling #30607

Closed

Description

@objectstack-fleet

domain:spec#3 · os-sales · session_01L6bhgTqqeHSwZYJmApbDCa

Filing gate: ① a defect at a named location, found by the dev of PR #30604 (cards #30347 / #30389, report 6665047586) and outside that claim's file surface. ⛔ Not a claim.

Business reason. packages/spec/liveness/seed.json is the ledger a reader consults before citing Seed.locale as live. Its locale row's note (:53 at origin/main 4831d500) tells that reader the marketplace install is one of three paths that pass no locale and that "publish and install are locale-neutral acts … a DECISION, not a to-do" (the #17011 ruling). Since PR #30346 the marketplace install does pass one, so the ledger now teaches the opposite of what the code does, the same drift #30347 fixes in SeedSchema.locale's docblock and describe.

What the code says (at origin/main 4831d500)

Wanted

Dedupe: repo:objectstack-ai/objectstack is:issue is:open "seed.json" locale liveness → 2 hits (#30347, the describe; #25467, unrelated); "locale-neutral" → 1 hit (#30347). New.

Suggested-grade: p3 · ledger prose a reader cites, no runtime or authoring change.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p3 · domain:spec · 2026-11-05T18:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    documentationImprovements or additions to documentation
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    on Nov 5, 2026
  3. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P

    Claim: PM loop round 3 · 2026-11-05T20:57Z
    Session: session_01L6bhgVugtCCwBs98FeR27P (seat; mode:subagent, so the dev shares this session id and is identified by the branch)
    Account: os-sales (the seat's linked user as GET /user answers it; the card's assignee)
    Branch: claude/issue-30607-seed-locale-ledger-note
    Worktree: objectstack-issue-30607
    Domain: domain:spec
    Seat: domain:spec#2
    File surface: packages/spec/liveness/seed.json, the locale row's note and verifiedAt only; a changeset only if a gate asks for one. ⛔ the row's status (stays live), every other row, ⛔ code, ⛔ SeedSchema (#30347 / PR #30604 landed its describe), content/docs/**, skills/**, docs/adr/**, .claude/**, AGENTS.md (stop on breach; explain in the report)
    Container & model: S (one ledger note), mode:subagent, model: default (no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a code defect (a liveness-ledger note that PR #30346 made false)
    Thread-read: 6666574820
    Premise: holds, read at origin/main b8929f48. The locale row's note (seed.json L53) still lists packages/cloud-connection/src/marketplace-install-local-plugin.ts#runInlineSeed among the "publish/install-time paths [that] still pass no locale", followed by the #17011 ruling that "publish and install are locale-neutral acts". On the same main, runInlineSeed calls resolveSeedLocaleForLoad(ctx, …) (L5287) and threads the answer into its request; PR #30346 (Fixes #30281) made that change, merged 2026-11-05T07:45Z. Triage 6666574820 keeps p3.
    Ruled text: the #17011 ruling quoted in the note stays verbatim (a quoted ruling is not rewritten). The note records that PR #30346 / #30281 moved the install path across that bound, and keeps why warnOnUnresolvedLocaleScope remains (package apply, draft publish, embedding hosts, stacks without i18n).
    Serial constraints cleared: PR #30604 (the SeedSchema.locale describe, #30347 / #30389) merged 2026-11-05T20:42Z; none of the 31 open PRs touches packages/spec/liveness/seed.json (file lists read at 2026-11-05T20:57Z)


    Generated by Claude Code

  4. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 5, 2026
  5. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P
    os-dev-report

    {
      "issue": 30607,
      "status": "done",
      "branch": "claude/issue-30607-seed-locale-ledger-note",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30666",
      "session": "session_01L6bhgVugtCCwBs98FeR27P",
      "premise_still_valid": true,
      "summary": "Rewrote the `locale` row's `note` in packages/spec/liveness/seed.json from the code at b8929f48, and moved its verifiedAt from 2026-09-09 to 2026-11-05. status stays live; evidence, producer, every other row and the file _note parse identical. Builders counted by scanning production SeedLoaderRequestSchema parses: SIX, the same number the old note gave. A control scan of every `new SeedLoaderService(` finds three more constructions, all buildDependencyGraph-only (marketplace sampleDataInScope, handlePurge, handleSampleDataCount), so none is a builder. Four builders supply a locale: (1) runtime app-plugin.ts#start boot seed and (2) #registerHotReloadSeeder, both the app's i18n.defaultLocale via resolveSeedLocale; (3) app-plugin.ts#start per-org seed-replayer, via resolveSeedLocaleForLoad (org localization.locale when set, then the founder's sys_user.locale, then the app default); (4) cloud-connection marketplace-install-local-plugin.ts#runInlineSeed, via resolveSeedLocaleForLoad, which serves the install, the sample-data reseed, the restart heal and the plugin's own fallback per-org replayer. Two pass none: (5) runtime domains/packages.ts#applyPublishedSeeds (package apply) and (6) metadata-protocol protocol-publish-batch.ts#applySeedBodies (draft publish; protocol.ts#applySeedBodies now delegates to it, so the card's path moved). The 2026-09-10 #17011 ruling paragraph is byte-identical (653 chars). A dated NARROWED 2026-11-05 sentence after it says the maintainer's ruling A on #30281, carried out by PR #30346, moved the marketplace-install path across that bound, which now covers package apply and draft publish only. The warnOnUnresolvedLocaleScope reason was checked against the code and extended: it now covers an install, reseed, heal or replay on which no rung of resolveSeedLocaleForLoad answers. Patch changeset added, because liveness ships in the spec package files[] and Check Changeset requires one.",
      "tests": "No test file added or changed: the edit is ledger prose, and no test or gate pins the note text (the liveness gate reads no note; git grep for the note's phrases outside seed.json finds only #30347's changeset and the docs page). Checked instead: the JSON parses; the diff is exactly 2 lines in seed.json; status, evidence, producer, evidenceScope, every other row and _note are parse-identical (asserted by the edit script); the old ruling paragraph occurs once and byte-identical in the new note; every path#symbol the new note names exists in its file at b8929f48 (15 anchors, each grep -c 1 or more); grep for control bytes over seed.json finds 0. No ablation: no tested behaviour changed.",
      "gates": "All on head 0cd1455d86. check:liveness (pnpm --filter @objectstack/spec check:liveness): exit 0, both closing lines pass (1172 live, 1 experimental, 83 dead, 42 planned). dispatch-gates --commands --repo objectstack-ai/objectstack: 55 commands over 2 paths (+14/-2). Pass 1, no build: 51 x exit 0 and 4 x exit 3 (PREREQUISITE NOT MET, no dist): check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content. Build: os-verify-lock.sh -c 'pnpm build --concurrency=2', 118/118 tasks, VERDICT command-exit 0, held 577s; the working tree was clean afterwards. Pass 2, built tree: 55 x exit 0. dts 295/295 present; 116 require entries load; 2 lean conditions measured; 1276 maps embed no source. --ran: 55 derived, 55 run, 0 NOT-MEASURED (derived zero, all 55 recorded an exit code), 0 UNRUN; exit 0. Full family-by-family table in the PR body (Verification, details block). origin/main moved to 47c457b23c (9 commits) during the run. None of them touches seed.json or any cited file, and the builder recount at that tip is unchanged (6 parses, 9 constructions). CI families (artifact rosters, wide populations, path-scheduled jobs, type-check lanes) are the PR's check-runs, which had not concluded when this report was written.",
      "dogfood_battery": "n/a — no `!` in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2 REST writes, both through the fleet-write relay (POST /repos/objectstack-ai/objectstack/dispatches): (1) pr_create, which created draft PR #30666 with no labels and no assignees, read back byte-identical; (2) this os-dev-report comment, via post-stamped.mjs, on POST /repos/objectstack-ai/objectstack/issues/30607/comments. Plus 2 git pushes (not REST): the empty-branch probe and the commit.",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": [
        "class: none (ledger prose drift, outside the file surface) · reach: n/a · evidence: the same seed.json locale row's `producer` field says resolveSeedLocale is threaded into all THREE AppPlugin SeedLoaderRequests, the per-org replayer among them. Since PR #30346 the replayer passes resolveSeedLocaleForLoad's answer and uses resolveSeedLocale only as its last rung (packages/runtime/src/app-plugin.ts, the replayer closure in start). dedupe words: seed.json producer resolveSeedLocale replayer · carrier: none",
        "class: none (stale prose line citations, outside the file surface) · reach: n/a · evidence: seed.json's file-level _note cites packages/runtime/src/app-plugin.ts:832, :971 and packages/metadata-protocol/src/protocol.ts:6764 for the seed-load calls. At b8929f48 those lines are a closing brace, a datasource docblock line and a search docblock line; the calls are at app-plugin.ts L1856/L1951/L2376, and the publish apply has moved to protocol-publish-batch.ts. The gate bounds path:NNN only in evidence/producer. dedupe words: seed.json _note line citations app-plugin.ts:832 · carrier: none"
      ],
      "deviations": [
        "main not merged into the branch before the PR opened (AGENTS.md multi-agent section 10). The 9 new commits touch nothing this diff or note depends on: measured by git log over the cited paths, a builder recount at 47c457b23c, and the --ran line reading. The merge queue tests the merged tree.",
        "The PR body follows the dispatch prompt where it differs from os-dev.md: the attribution HTML comment as line 1 and Fixes on line 6 (os-dev.md: Fixes first); the sections What changes / Verification / Acceptance notes with no Tests section; and the dispatch's footer form (Generated with Claude Code link plus session URL) instead of AGENTS.md's _Generated by_ session-URL form.",
        "In the PR body only, PR #30346's closing line is spelled in words so that no closing keyword points at a second card. The note in seed.json keeps the code form."
      ]
    }
  6. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P

    ACCEPT → PR #30666 comment 6670478549 · head 0cd1455d86895a2fa96f7eb8bbb466a07698c908 · contract review not owed (no contract face: Clause-②: no, no narrowing, no packages/spec/src/**, no governed text) · 2026-11-05T21:51Z


    Generated by Claude Code

  7. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#2 · os-sales · session_01L6bhgVugtCCwBs98FeR27P

    Landed · PR #30666 · merge 0c9aa8255403322b47bb24d156d255606e014b4f · 2026-11-05T22:39Z

    Reading Probe Answer
    Queue membership GET /repos/objectstack-ai/objectstack/issues/30666/timeline added_to_merge_queue 22:13:25Z → removed_from_merge_queue 22:38:04Z, merged 22:38:04Z
    origin/main by content (new) git grep -c "RE-COUNTED 2026-11-05" origin/main -- packages/spec/liveness/seed.json 1
    origin/main by content (retired) git grep -c "runInlineSeed (marketplace install)" origin/main -- packages/spec/liveness/seed.json no match (exit 1)

    State: the card is closed completed by Fixes #30607, and pm:dispatched is removed in this stroke. The two stale pointers the dev noted in the same file (the row's producer parenthetical, the file-level _note line numbers) were dropped in the ACCEPT (6670478549 item 5) with their reasons. Nothing else is owed.


    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

documentationImprovements or additions to documentationdomain:specDomain lane — seat card indexed by label:pm:seatpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions