Skip to content

spec + cli: seed mode text still says replace deletes every row and omits the landed-keys rule (seed.zod.ts, os diff note) #31099

Closed

Description

@objectstack-fleet

domain:skills#3 · huangyiirene · session_01J8VVAj7CvjkGXvgXzd6RZ7

Filing gate: item 3 of #31090 (comment 6702892720, from the contract review of PR #31083): the packages/spec seed text is spec-lane work and is not edited from the skills lane. Wording measured by the #31090 card thread and checked by the contract review of PR #31097 (6703924081). ⛔ Not a claim. Triage sets the grade and the lane, and may split item 2.
class: c · reach: every reader of the seed schema's docs and .describe() text (authors, agents, generated references), and every os diff user.

What is owed

On main 9c1edbcd. Facts: ignore is the default (#30081); replace deletes nothing, it inserts into a table the caller cleared (seed-loader.ts); since PR #31083, the AppPlugin loads (single-tenant boot, the seed-replayer service, hot reload) record the keys that landed per organization and do not insert again a recorded row that is now gone; the deliberate re-seed is seed-replayer(organizationId, { reseed: true }). The package publish apply, the runtime package install and the marketplace install-local loads keep no record.

  1. packages/spec/src/data/seed.zod.ts (spec lane).
    • L24 insert comment ("fail on duplicate") and L27 replace comment ("Delete ALL records in object then insert"): align with the loader. replace deletes nothing.
    • L171–172 docstring and L195–196 .describe() ("a missing row is inserted and an existing row is left as it is"): add the landed-keys exception for the AppPlugin loads, and the re-seed door.
    • L116–117 history string: historical, optional.
  2. packages/cli/src/commands/diff.ts L81 (seedModeNote): "a replay deletes every row of the object and inserts these" is false for replace. Owner: the CLI lane.

Re-read packages/metadata-protocol/src/seed-loader.ts and packages/runtime/src/app-plugin.ts before rewording. Text only, no behaviour change.

Level: '@objectstack/spec': patch (docs text) and '@objectstack/cli': patch (message), Clause-②: no, Metadata-protocol: none (triage to confirm).

Related: #31090, PR #31097, #31021, PR #31083, #30081.

Activity

  1. added
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    documentationImprovements or additions to documentation
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    and removed
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Nov 7, 2026
  2. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: audit · p2 · domain:spec · fold · 2026-11-07T07:53Z

    ⛔ Not a claim.


    Generated by Claude Code

  3. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · marchtian · session_017ihL2eHDXrsKgGAUHq956U

    Claim: PM loop round 1 · 2026-11-07T13:07Z
    Session: session_017ihL2dzed5sJnRTmwXHWV7 (card thread; dispatched by seat session session_017ihL2eHDXrsKgGAUHq956U)
    Account: marchtian
    Branch: claude/project-thread-nd6b2f
    Worktree: the card thread's own container checkout
    Domain: domain:spec
    Seat: domain:spec#4
    File surface: packages/spec/src/data/seed.zod.ts (comments, docstring, .describe()), packages/cli/src/commands/diff.ts (seedModeNote line only) and any test pinning that note, the generated references the .describe() feeds, one .changeset/*.md. Cross-seat: packages/cli is folded in by triage 6704154593; the CLI seat gets a Notify: serial.
    Container & model: S docs card, mode:thread, model: default tier (dispatch-gates --tier: no path-derived mandate; floor sonnet · default opus · ceiling fable), reason: text only, no behaviour change; full Fable review of the diff before ACCEPT per the maintainer's standing spec rule, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (schema and CLI prose lagging PR #31083)
    Thread-read: 6704154593
    Premise: holds
    Serial constraints cleared: none (sibling #31094 is file-disjoint; no open claim or PR on packages/cli/src/commands/diff.ts)

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

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · marchtian · session_017ihL2dzed5sJnRTmwXHWV7

    os-dev-report

    {
     "issue": 31099,
     "status": "done",
     "branch": "claude/project-thread-nd6b2f",
     "pr": "https://github.com/objectstack-ai/objectstack/pull/31135",
     "head": "68060aa22b",
     "session": "session_017ihL2dzed5sJnRTmwXHWV7",
     "premise_still_valid": true,
     "summary": "Text only. seed.zod.ts: insert comment (no 'fail on duplicate': each replay inserts again, a refused row is that row's error), replace comment (deletes nothing, inserts into a table the caller cleared), mode docstring gains the landed-keys paragraph (AppPlugin boot seed / seed-replayer replay / dev hot reload where sys_seed_landed_key is registered; publish and package install keep no record; seed-replayer(organizationId, { reseed: true })), mode .describe() carries the same facts with no tracker number. diff.ts seedModeNote replace line corrected; its test pin updated. 4 references regenerated. Changeset spec patch + cli patch.",
     "tests": "pnpm --filter @objectstack/cli exec vitest run --project unit on 89162ffb :: exit 0 (Test Files 396 passed, Tests 5576 passed). Post-merge 68060aa22b, closure rebuilt: diff-upgrade-plan + connect-agent-both-halves-wire.pin :: exit 0 (2 files, 9 tests); authoring-rule-command-parity is integration-layer, declared to CI. Integration layer declared to CI. No ablation: no tested behaviour changed (a message string and its pin).",
     "gates": "dispatch-gates --commands: 108 derived, all run, all exit 0 on 89162ffb (first pass 12 exit 3 = prerequisites: spec dist stale after the docstring commit, shallow clone, unbuilt dists; rebuilt spec + git fetch --unshallow, reran, all exit 0). dispatch-gates --ran :: exit 0, 108 run, 0 NOT-MEASURED (also on the post-merge tree). Post-merge: pnpm --filter @objectstack/spec check:generated :: exit 0. eslint on the 3 touched source/test files :: exit 0. PR check-runs at report time on 68060aa22b: 7 success, 7 skipped, 20 in_progress, 0 failure.",
     "line_budget": "8 files, +37/-10 vs origin/main (47 changed lines, under 3000)",
     "deviations": [
      "pnpm lint repo-wide not run locally (CI's Lint & Repo Gates); eslint ran on the touched files only.",
      "check:test-typecheck OOMs at node's default heap when check:generated is run without NODE_OPTIONS; with --max-old-space-size=4096 it is green (inside the gate sweep and post-merge)."
     ],
     "files_changed": [
      ".changeset/spec-cli-seed-replace-deletes-nothing.md",
      "content/docs/references/api/package-api.mdx",
      "content/docs/references/data/seed-loader.mdx",
      "content/docs/references/data/seed.mdx",
      "content/docs/references/kernel/manifest.mdx",
      "packages/cli/src/commands/diff.ts",
      "packages/cli/test/diff-upgrade-plan.test.ts",
      "packages/spec/src/data/seed.zod.ts"
     ],
     "open_questions": [],
     "security_findings": "none",
     "out_of_scope_findings": [
      "carrier: none · noted, not filed: os diff seedModeNote prints nothing for mode insert, which also inserts every record again on each replay (card item 2 names only the replace line).",
      "carrier: none · noted, not filed: docs/qa/platform-checklist/areas/platform-core.json quotes the old replace text inside a historical declared-not-implemented clause."
     ],
     "mcp_calls": "0",
     "api_writes": "2 relay writes + this report: pr_create (POST /repos/objectstack-ai/objectstack/pulls + POST issues/31135/assignees), comment on PR 31135 (Fable verdict 6707877121), comment on issue 31099 (this report). git push is not a REST write.",
     "pr_number": 31135,
     "fable_review": "PR comment 6707877121: round 1 PASS with should-fix (2 applied in 89162ffb, 1 nit no change); delta round PASS",
     "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm"
    }
  6. objectstack-fleet commented on Nov 7, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#4 · marchtian · session_017ihL2eHDXrsKgGAUHq956U

    Landed · domain:spec#4 · 2026-11-07T15:08Z

    reading value
    PR #31135 merged 2026-11-07T15:08:34Z through the queue, merge commit 6ffe37ea1836b275340f02a0c371168ea75ce141, reviewed head 68060aa22b (contract review PASS + ACCEPT on that head)
    origin/main contains 6ffe37ea1

    State: card closed completed by Fixes; pm:dispatched removed. Should-fix follow-ups filed: #31139 (os diff note for insert), #31140 (platform-core.json stale clause).

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:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions