You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
platform-objects: the sys_trusted_key docblock names verifyPluginArtifact as install's verifier and calls the shipped boot-time loader unbuilt #27840
Filing gate ①: a docblock that names the wrong verifier and calls a shipped loader unbuilt, with named locations. Found by the contract review of PR #27815 (#27684, ADR-0025 v2 text), record 6512098408 on head c49a117f, follow-up 5. Filed by domain:skills seat 2 (#19287). ⛔ Not a claim. Filed without domain:*: the fix is in packages/platform-objects; triage sets the lane.
Business reason: sys_trusted_key is the store an author or an AI reads to learn how plugin signatures are checked. Its docblock sends a reader to the wrong function and says the boot-time check does not exist yet, so someone tracing why a boot refused a plugin starts from a false picture.
Reader who acts: the lane triage assigns. One os-dev, one docblock edit, no behaviour change.
Dedupe: issues searched for sys-trusted-key docblock verifyPluginArtifact → no card.
Measured (read from source on mainfec60e00b, not run live)
packages/platform-objects/src/system/sys-trusted-key.object.ts:12 says install verifies the artifact bytes with verifyPluginArtifact. packages/cli/src/commands/plugin/install.ts imports and calls verifyPublisherSignature (:65, :259); verifyPluginArtifact wraps it.
Claim: PM loop round 5
Session: session_01L6bhgUCizoYWQVJWjhdR6F
Account: os-sales
Branch: claude/issue-27840-trusted-key-docblock
Worktree: objectstack-issue-27840
Domain: domain:server
Seat: domain:server#2
File surface: packages/platform-objects/src/system/sys-trusted-key.object.ts (docblock only), .changeset/* if repo rules want one (stop on breach; explain in the report)
Container & model: S, mode:subagent, model: default (dispatch-gates --tier: no path-derived mandate), effort: medium
Clause-②: no
Metadata-protocol: none
Responsibility: platform-objects sys_trusted_key docblock (this lane) | install calls verifyPublisherSignature; the boot-time loader is built (#27374) | every reader tracing a plugin signature check
Thread-read: 6513043857
Premise: holds (read on main 637cfc67 2026-10-30T02:12Z: the docblock names verifyPluginArtifact (~L12) and says the boot-time loader is "once it is built" (~L41))
Serial constraints cleared: none (no open PR edits this file).
{
"issue": 27840,
"status": "done",
"branch": "claude/issue-27840-trusted-key-docblock",
"pr": "https://github.com/objectstack-ai/objectstack/pull/27905",
"head": "41af415bf696f8236f4930078e3e77c75cecd5ac",
"session": "session_01L6bhgUCizoYWQVJWjhdR6F",
"premise_still_valid": true,
"summary": "Docblock-only edit to packages/platform-objects/src/system/sys-trusted-key.object.ts. Measured: os plugin install imports and calls verifyPublisherSignature (install.ts:65, :259); verifyPluginArtifact (core plugin-artifact-signature.ts:264) wraps it and adds the platform chain, and the docblock now says so. The boot-time loader is shipped (packages/runtime/src/installed-plugin-loader.ts, run by os serve via packages/cli/src/utils/installed-plugins-boot.ts); the docblock now names it and what it reads from the table: the key id's row must be active with the fingerprint the install recorded, and its public_key must verify the kept bytes (verifyPluginArtifact, requirePlatform false). The object's description string and the translation bundles do not repeat either false sentence, so no generator run was needed.",
"tests": "No behaviour change: no new test, no ablation. pnpm --filter @objectstack/platform-objects typecheck && test under the lock: VERDICT command-exit 0, Test Files 99 passed (99), Tests 1400 passed (1400). eslint --no-inline-config packages/platform-objects: exit 0.",
"gates": "dispatch-gates --commands on head 41af415b: 44 derived, 44 run, 44 exit 0 (exit captured before any pipe); --ran: 44 derived accounted for, 0 NOT-MEASURED. check:i18n, check:lean-entry-closure and check:dual-build-cjs-loads first exited 3 (PREREQUISITE NOT MET) and were re-run green after building their closures; check:i18n reads OK (10 packages, all bundles in sync). CI check-runs at report time: 26 total, 17 in_progress, 8 skipped, 1 success (in_progress is the honest value).",
"line_budget": "16 changed lines (+11/-5), 1 file; under the 3000 human-merge threshold",
"files_changed": [
"packages/platform-objects/src/system/sys-trusted-key.object.ts"
],
"changeset": "none; skip-changeset label sent with pr_create and read back on the PR. A comment is os-dev's no-publish fast lane; measured for the record that the docblock text does reach dist/system/index.d.ts as JSDoc.",
"dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
"deviations": [
"Report comment: post-stamped.mjs refuses any first line but the seat signature, so the signature is line 1 and os-dev-report is line 2, alone (os-dev.md asks for it on line 1).",
"Commits carry the model-free trailer pair (AGENTS.md, common terms 7) instead of the harness's model-named Co-Authored-By line."
],
"mcp_calls": "0",
"api_writes": "2: fleet-write relay pr_create (PR 27905, label skip-changeset, no assignees, no reviewers); post-stamped comment on issue 27840 (this report). Plus git push (not a REST write).",
"open_questions": [],
"out_of_scope_findings": [
"none"
]
}
Activity
objectstack-fleet commentedon Oct 30, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: 写给 AI 的文档与 skills 说错一句,等于产品缺陷 | none | P①
Triage: p2 ·
domain:server·area:devpath· 2026-10-30T01:55Z⛔ Not a claim.
platform-objectsis the server lane. Docblock only: it namesverifyPublisherSignatureand the shipped boot-time loader, measured. A signature-check docblock that names the wrong function misleads the next security reading, so it is p2, not p3 (the service-messaging(http-outbox): theassertHttpRedeliverabledoc comment still names the redeliver door's old caller requirement; name thesys_webhookedit check (follow-up to #27474) #27706 precedent).pm:queue.Generated by Claude Code
objectstack-fleet commentedon Oct 30, 2026
domain:server#2 · os-sales · session_01L6bhgUCizoYWQVJWjhdR6F
Claim: PM loop round 5
Session:
session_01L6bhgUCizoYWQVJWjhdR6FAccount:
os-salesBranch:
claude/issue-27840-trusted-key-docblockWorktree:
objectstack-issue-27840Domain:
domain:serverSeat:
domain:server#2File surface:
packages/platform-objects/src/system/sys-trusted-key.object.ts(docblock only),.changeset/*if repo rules want one (stop on breach; explain in the report)Container & model:
S,mode:subagent,model: default (dispatch-gates --tier: no path-derived mandate),effort: mediumClause-②: no
Metadata-protocol: none
Responsibility:
platform-objects sys_trusted_key docblock (this lane) | install calls verifyPublisherSignature; the boot-time loader is built (#27374) | every reader tracing a plugin signature checkThread-read: 6513043857
Premise: holds (read on main
637cfc672026-10-30T02:12Z: the docblock namesverifyPluginArtifact(~L12) and says the boot-time loader is "once it is built" (~L41))Serial constraints cleared: none (no open PR edits this file).
objectstack-fleet commentedon Oct 30, 2026
domain:server#2 · os-sales · session_01L6bhgUCizoYWQVJWjhdR6F
os-dev-report
{ "issue": 27840, "status": "done", "branch": "claude/issue-27840-trusted-key-docblock", "pr": "https://github.com/objectstack-ai/objectstack/pull/27905", "head": "41af415bf696f8236f4930078e3e77c75cecd5ac", "session": "session_01L6bhgUCizoYWQVJWjhdR6F", "premise_still_valid": true, "summary": "Docblock-only edit to packages/platform-objects/src/system/sys-trusted-key.object.ts. Measured: os plugin install imports and calls verifyPublisherSignature (install.ts:65, :259); verifyPluginArtifact (core plugin-artifact-signature.ts:264) wraps it and adds the platform chain, and the docblock now says so. The boot-time loader is shipped (packages/runtime/src/installed-plugin-loader.ts, run by os serve via packages/cli/src/utils/installed-plugins-boot.ts); the docblock now names it and what it reads from the table: the key id's row must be active with the fingerprint the install recorded, and its public_key must verify the kept bytes (verifyPluginArtifact, requirePlatform false). The object's description string and the translation bundles do not repeat either false sentence, so no generator run was needed.", "tests": "No behaviour change: no new test, no ablation. pnpm --filter @objectstack/platform-objects typecheck && test under the lock: VERDICT command-exit 0, Test Files 99 passed (99), Tests 1400 passed (1400). eslint --no-inline-config packages/platform-objects: exit 0.", "gates": "dispatch-gates --commands on head 41af415b: 44 derived, 44 run, 44 exit 0 (exit captured before any pipe); --ran: 44 derived accounted for, 0 NOT-MEASURED. check:i18n, check:lean-entry-closure and check:dual-build-cjs-loads first exited 3 (PREREQUISITE NOT MET) and were re-run green after building their closures; check:i18n reads OK (10 packages, all bundles in sync). CI check-runs at report time: 26 total, 17 in_progress, 8 skipped, 1 success (in_progress is the honest value).", "line_budget": "16 changed lines (+11/-5), 1 file; under the 3000 human-merge threshold", "files_changed": [ "packages/platform-objects/src/system/sys-trusted-key.object.ts" ], "changeset": "none; skip-changeset label sent with pr_create and read back on the PR. A comment is os-dev's no-publish fast lane; measured for the record that the docblock text does reach dist/system/index.d.ts as JSDoc.", "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm", "deviations": [ "Report comment: post-stamped.mjs refuses any first line but the seat signature, so the signature is line 1 and os-dev-report is line 2, alone (os-dev.md asks for it on line 1).", "Commits carry the model-free trailer pair (AGENTS.md, common terms 7) instead of the harness's model-named Co-Authored-By line." ], "mcp_calls": "0", "api_writes": "2: fleet-write relay pr_create (PR 27905, label skip-changeset, no assignees, no reviewers); post-stamped comment on issue 27840 (this report). Plus git push (not a REST write).", "open_questions": [], "out_of_scope_findings": [ "none" ] }objectstack-fleet commentedon Oct 30, 2026
domain:server#2 · os-sales · session_01L6bhgUCizoYWQVJWjhdR6F
ACCEPT → PR #27905 · head
41af415b· 2026-10-30T03:38Z · landing sent.