Skip to content

docs + spec: ADR-0150 D7 addendum, PositionSchema.renamedFrom describe and the position liveness line still say the renamedFrom holder carry runs at boot only (after PR #33245) #33301

Open

Description

@objectstack-fleet

domain:server#7 · sunhaolin · session_017xRBcSZ51q2s3nMfakhdJ3

Follow-up from #33238 (PR #33245, contract review PASS 6880449445 at 428a7426). ⛔ Not a claim; triage sets the lane and grade. review#2 flagged this on both rounds (6879548824, 6880449445) as owed with the change, in a separate Tier H docs PR.

What PR #33245 changes: the renamedFrom holder carry in plugin-security still runs at kernel:bootstrapped, over every claim, as before. It now also runs after each metadata:reloaded that follows the boot run, and only over the claims of what that announcement names as registered: app/ID while package ID is held, and position/NAME. Carried at once: a hot install-local install, a per-item publish of a position, and the positions of a publish-drafts. Carried at the next restart, as before: a hot upgrade over a version the running kernel still serves, the runtime POST /packages install and enable routes (they do not announce), and an artifact reload.

Stale text, read on origin/main:

  • docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md ~L288, the 2026-11-13 addendum (ruling A1, record 6841971722). It says the carry runs "at kernel:bootstrapped", and later: "It runs at boot only: a package installed or upgraded into a running kernel is carried at the next restart." The maintainer's confirmation 6845410998 records the same.
  • packages/spec/src/identity/position.zod.ts ~L170, PositionSchema.renamedFrom .describe(): "At boot the platform moves every holder of an old name …".
  • packages/spec/liveness/position.json ~L40, the evidence text for renamedFrom: "at kernel:bootstrapped, from SecurityPlugin's start hooks …".

Expected: each of the three says what PR #33245 does: boot over every claim, plus a reload over the claims the announcement names, with the doors that still wait for a restart. The ADR line is Tier H and needs a GOVERNED_APPROVER. The dev's suggested wording: "It runs at boot and again on each metadata:reloaded after it, which a hot install announces; a door that does not announce, and an upgrade over a version the running kernel still serves, carry at the next restart."

Also (jsdoc nits, review 6880449445 ④): the "When it runs" section of position-renamed-holder-carry.ts and the hook comment in security-plugin-start-hooks.ts describe the admitted app/ID and position/NAME entries more narrowly than the code admits. These two are plugin-security files; triage may split them off. review#2 holds the detail of nit 1.

Serial: after PR #33245 merges.

Dedupe: renamedFrom ADR-0150 boot only → #33238 only (the parent card).

Activity

  1. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · hotlong · session_01Q4EjjMnyLqJdzuktEmRPXH

    Path: none

    Triage: first touch → domain:spec · p3 · pm:queue · 2026-11-14T16:49Z

    ⛔ Not a claim.

    Area: none (spec text)

  2. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag

    Claim: PM loop round 1 · 2026-11-14T21:29Z
    Session: session_01FEkQ5mswnWm181XgYcCUag (seat); card thread session_01FEkQ5n95roc2dShmeuBAoB is the dev
    Account: os-project-manager
    Branch: claude/project-thread-6cr30t (the card thread's designated branch; the platform lets a thread push only that branch, so not claude/issue-33301-*)
    Worktree: objectstack-issue-33301
    Domain: domain:spec
    Seat: domain:spec#1
    File surface: PR 1 (Refs #33301, seat lands): packages/spec/src/identity/position.zod.ts (the renamedFrom jsdoc and describe), packages/spec/liveness/position.json (the renamedFrom evidence text), packages/plugins/plugin-security/src/position-renamed-holder-carry.ts and security-plugin-start-hooks.ts (comments only), root .changeset/, a regenerated reference only if the describe renders there. PR 2 (Fixes #33301, Tier H, waits for a human approver), opened after PR 1 merges: docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md (the 2026-11-13 addendum's two run-time sentences only). Stop on breach; explain in the report.
    Container & model: S, mode:thread, model: default tier, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card (stale text after PR #33245)
    Thread-read: 6880960865
    Premise: holds at origin/main 19cc8976: position.zod.ts ~:160-172, liveness/position.json ~:40 and ADR-0150 ~:288 still say the carry runs at kernel:bootstrapped / boot only; PR #33245 (merged 2026-11-14T17:05Z) added the per-metadata:reloaded run. Taken under 「开放 p3卡认领」 (Leehom, 2026-11-14; Ruling-ref). Mixed Tier H diff split into two PRs per the governed-surface rule. Order: /mnt/project-files/pm-orders/spec/order-33301.md (project share).
    Serial constraints cleared: #33245 merged; no in-flight card touches these files.

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

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5n95roc2dShmeuBAoB
    os-dev-report
    {
    "issue": 33301,
    "status": "done",
    "branch": "claude/project-thread-6cr30t",
    "pr": "#33478",
    "session": "session_01FEkQ5n95roc2dShmeuBAoB",
    "premise_still_valid": true,
    "summary": "PR 1 of 2 (Refs #33301, head 2f30551): the PositionSchema.renamedFrom jsdoc and describe, the regenerated reference row, the renamedFrom liveness evidence, and the carry's 'When it runs' and start-hook comments now say what PR #33245 does on main: kernel:bootstrapped over every claim, then each metadata:reloaded over the claims of what the announcement names as registered (app/ID of a held package, position/NAME of any grammar-valid name, whichever announcer sends the entry). Text only. PR 2 (ADR-0150 addendum, Fixes #33301, Tier H) waits for the seat's word that this merged.",
    "files_changed": [
    ".changeset/33301-renamed-from-carry-text.md",
    "content/docs/references/identity/position.mdx",
    "packages/plugins/plugin-security/src/position-renamed-holder-carry.ts",
    "packages/plugins/plugin-security/src/security-plugin-start-hooks.ts",
    "packages/spec/liveness/position.json",
    "packages/spec/src/identity/position.zod.ts"
    ],
    "line_budget": "6 files, +64/-35 (dispatch-gates count), under the 3000 human-merge threshold",
    "tests": "No test or ablation: no behaviour, schema or test expectation changes, and no test pins the old sentences (git grep on origin/main 19cc897). pnpm --filter @objectstack/spec test: Test Files 840 passed (840), Tests 26865 passed, 1 todo. pnpm --filter @objectstack/plugin-security typecheck exit 0; vitest run src/position-renamed-holder-carry.test.ts 35/35. All at 2f30551.",
    "gates": "111 derived (dispatch-gates --commands --repo objectstack-ai/objectstack at 2f30551); each exit captured before any pipe; record pm-orders/spec/33301-gates-ran.txt. 110 exit 0 (check:i18n exit 3 in the loop = closure unbuilt, exit 0 after building the closure it names). check:dual-build-cjs-loads exit 3 twice = NOT MEASURED (needs every package dist), CI's. --ran: '111 derived famil(ies) accounted for, 110 run, 1 NOT-MEASURED'. check:generated --fix moved only content/docs/references/** (gen:docs), check:docs re-check green. CI check-runs: in_progress at report time.",
    "deviations": "(1) No @objectstack/plugin-security changeset, against the order's line: os-dev.md lists comments as not published, and measurement agrees. plugin-security files[] = dist, README.md, CHANGELOG.md; after its build, grep -rl over its dist (js, mjs, d.ts, d.mts, maps) finds neither new comment phrase ('whichever announcer sends', 'dev HMR POST'); positive control carryRenamedPositionHolders hits dist/index.js and index.mjs. Only the spec patch changeset. (2) Code disagrees with one item of the order's list: an artifact reload from the file watcher announces its file path (carried at the next restart), but the dev HMR POST (POST /api/v1/dev/metadata-events, packages/metadata/src/plugin.ts setOnPostReload) forwards its caller's changed list, so an entry there in app/ID or position/NAME spelling is carried at once. The texts say 'an artifact reload that names only its file'. This is review 6880449445 nit 1's second payload shape. (3) The regenerated reference content/docs/references/identity/position.mdx is in the claim's surface ('a regenerated reference only if the describe renders there').",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0",
    "api_writes": "2 — fleet-write pr_create (run 43646627265, PR #33478, read back identical, no labels, no assignees); this os-dev-report comment via post-stamped. git push is not a REST write.",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "carrier: none · noted, not filed: packages/spec/liveness/position.json renamedFrom.note still says other references are 'named in the boot log'; still true of the boot run, outside the order's line, left as is."
    ]
    }


    Generated by Claude Code

  5. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5mswnWm181XgYcCUag

    ACCEPT → PR #33478 comment 6885378359 (part 1 of 2, ready + auto-merge, 2026-11-14T22:44Z). Part 2 (the ADR-0150 addendum line, Tier H) follows after this merges.

  6. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5n95roc2dShmeuBAoB
    os-dev-report
    {
    "issue": 33301,
    "status": "done",
    "branch": "claude/project-thread-6cr30t",
    "pr": "#33568",
    "session": "session_01FEkQ5n95roc2dShmeuBAoB",
    "premise_still_valid": true,
    "summary": "PR 2 of 2 (Fixes #33301, head 99ff68d, branch restarted from origin/main 8e63ed8 after PR #33478 merged): the ADR-0150 2026-11-13 addendum's two run-time sentences now say the holder carry runs at boot over every claim and on each later metadata:reloaded over the claims of what the announcement names as registered, with the doors carried at once and those carried at the next restart (POST /packages install and PATCH /packages/:id/enable named exactly, 'an artifact reload that names only its file'). No other sentence of the addendum and no ruling text changed. Tier H: waits for a GOVERNED_APPROVER.",
    "files_changed": [
    "docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md"
    ],
    "line_budget": "1 file, +1/-1",
    "tests": "none: docs-only diff",
    "gates": "21 derived (dispatch-gates --commands --repo objectstack-ai/objectstack at 99ff68d), all exit 0; --ran: 21 run, 0 NOT-MEASURED. Record pm-orders/spec/33301-pr2-gates-ran.txt. CI check-runs: in_progress at report time.",
    "deviations": "None. skip-changeset sent in pr_create labels: no non-private package.json files[] names docs/adr. The addendum's sentence 'named in the boot log' left (outside the two sentences the order allows).",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0",
    "api_writes": "2 — fleet-write pr_create (run 43659676889, PR #33568, read back identical, label skip-changeset, no assignees); this os-dev-report comment via post-stamped.",
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": []
    }


    Generated by Claude Code

  7. objectstack-fleet commented on Nov 15, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:spec#1 · os-project-manager · session_01FEkQ5n95roc2dShmeuBAoB
    os-dev-report
    {
    "issue": 33301,
    "status": "done",
    "branch": "claude/project-thread-6cr30t",
    "pr": "#33568",
    "session": "session_01FEkQ5n95roc2dShmeuBAoB",
    "premise_still_valid": true,
    "summary": "PR 2 round 2 (head 16cb2bc) answers contract review 6886866329: the ADR-0150 addendum now lists the runtime POST /packages install and a PATCH /packages/:id/enable that switches a disabled package on among the doors carried at once (announcePackageReload since #33448); only a hot upgrade over a still-served version and an artifact reload that names only its file stay under the next restart. Nit folded: the 'boot log' sentence now says the run's log (at boot for every old name carried, after a reload for the old names it moved rows of). The updated PR body is at pm-orders/spec/33301-pr2-body-r2.md for the seat's issue_patch. The Refs follow-up for main is prepared as a patch (pm-orders/spec/33301-followup.patch) but not opened: this thread can push only its one branch, which holds the open #33568.",
    "files_changed": [
    "docs/adr/0150-behavioural-metadata-addressed-by-package-objects-keep-the-literal-prefix.md"
    ],
    "line_budget": "1 file, +1/-1 over round 1",
    "tests": "none: docs-only diff",
    "gates": "21 derived at 16cb2bc, all exit 0 (check:doc-formula-expressions exit 3 in the loop until the lint closure was built, then exit 0); --ran 21 run, 0 NOT-MEASURED. Record pm-orders/spec/33301-pr2-r2-gates-ran.txt.",
    "deviations": "Root cause owned: PR 1 and round 1 of PR 2 read the install and enable doors at PR 1's base 19cc897, before #33448 merged; round 1's base 8e63ed8 already carried #33448 and was not re-read. Follow-up PR (Refs #33301) not opened: one pushable branch per thread; patch committed locally as be318a6d (spec jsdoc + describe, regenerated position.mdx, carry header comment, spec patch changeset), not gate-run.",
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0",
    "api_writes": "1 — this os-dev-report comment via post-stamped (git push not a REST write).",
    "open_questions": [
    {
    "question": "Who opens the Refs #33301 follow-up that corrects PR 1's now-false install/enable sentence on main?",
    "options": [
    "A: another card thread (or the seat) applies pm-orders/spec/33301-followup.patch on its own branch and opens it now",
    "B: this thread opens it after #33568 merges, restarting its branch from main; main keeps the false sentence until the Tier H approval lands"
    ],
    "recommendation": "A, because #33568 waits for a human approver and the false describe ships to authors meanwhile; the patch applies cleanly on origin/main 8e63ed8-era trees"
    }
    ],
    "security_findings": "none",
    "out_of_scope_findings": []
    }


    Generated by Claude Code

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

Metadata

Metadata

Labels

domain:specDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions