Skip to content

runtime gate: full runtime-safe rule snapshot for the publish door — the expensive half split out of the object-gating card #9612

Closed

Description

@os-support-ai

Split from the object-gating P2 card by maintainer ruling (2026-08-18, verbatim: 「objectstack cloud 还没有正式上线,简化开发。」→「同意」on the simplification package; adjudication record: #4716 comment 5328603673). The parent card narrows to gating 5 rules on object writes; THIS card carries the half the cost measurement showed to be expensive and severable.

Scope (was the parent card's second bullet)

  • RUNTIME_NEEDS_FULL_SNAPSHOT rule batch: construct the full registry snapshot (option (a) from the P1 design) so rules reading whole-stack collections (pages / dashboards / nav / translations / seeds) can run at the runtime write door.
  • The measured pricing this card must answer to (all origin/main @ 66beee0f3, thread comment 5309105113): option (a) per-save p50 = 201 ms at 306 items, 822 ms at 1530, 1.8 s at 3060; snapshot construction is free (0.001–0.011 ms) — 86% of the bill is at-gate rules being handed the whole stack (validateStackExpressions alone 70%). Any implementation must beat or bound this, or gate it (size threshold / caching + invalidation / per-rule scoping).
  • Known lazy-dep hazard: an object-write snapshot carrying a json_schema validation loads ajv + ajv-formats on the kernel path; the tripwire test's object leg landed via PR test(lint): give the runtime lazy-deps guard an object-write leg #9295 and must stay red-capable for any type this card widens onto.
  • Inherited constraint from the parent body: upgrading validateCapabilityReferences-class advisories to gating is a severity change — its own PR, never a rider here.

Not in this card

  • Gating the 5 RUNTIME_OBJECT_WRITES_P2 rules on object writes (the narrowed parent card).
  • The pre-existing linear cost of the shipped gate (506 ms per flow publish at 420 objects) — filed as its own finding today.

Triage note: lands where the parent lands (packages/metadata-protocol gate + packages/lint snapshot machinery) — suggested domain:metadata, triage decides; pm vocabulary intentionally only pm:queue here pending triage.

Activity

  1. os-support-ai commented on Aug 18, 2026

    @os-support-ai
    CollaboratorAuthor

    Triage: lands where the parent lands (packages/metadata-protocol gate + packages/lint snapshot machinery) → domain:metadata, matching parent #4716's routing; type Task (brings declared rules to the runtime write door under a measured performance bound — engineering task, not a contract-surface change).

    Blocked-by: #4716

    The narrowed parent is pm:dispatched on the same gate seam right now; this card is the severable expensive half split out by the 2026-08-18 maintainer ruling (adjudication record on #4716, comment 5328603673). Dispatching both concurrently would put two agents in the same gate files, so it holds pm:blocked until the parent's PR lands. Unlock discipline: on #4716's close, re-verify the file surface on the merged ref before dispatch — the parent's landing may absorb part of the snapshot scaffolding.

    (Blocked-by: line carried in this comment per the body-escape convention; unlock scans read comment-level lines.)


    Generated by Claude Code

  2. added
    domain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they land
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Aug 19, 2026
  3. os-warren commented on Aug 19, 2026

    @os-warren
    Collaborator

    Unlock scan (triage seat, 2026-08-19 ~09:1xZ round): declared blockers (#9851, #4716) closed; the stated gate PR #9920 merged 08:51Z today → pm:blocked removed, back to queue. Re-scope together with sibling #9613 on the post-#9920 ref, under the maintainer's input-narrowing ruling (08:08Z on this card's thread).


    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

No one assigned

    Labels

    domain:engineRetired 2026-10-22, alias of domain:server (engine surface); in-flight cards keep it until they landpm:dispatchedDispatched to a dev agent by /pm-dispatch

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions