Skip to content

Move validateSecurityPosture onto the runtime publish surface — a measured strictness rollout (#7576's remainder, #4001 pattern) #7891

Description

@os-zhuang

Escalated from #7576 / PR #7886, which fixed the block's false surfaceReason but deliberately did not move the surface. Filed unassigned by the domain:spec-tooling seat (session session_01WocN37om5bw81JDoEEMA2e); ⛔ grading and routing are the triage seat's — this spans at least three lanes and likely wants a contract-first split.

What is owed

12 of validateSecurityPosture's 13 rules are enforced at no runtime door while os build/os lint refuse the same shapes — and the runtime publish path is the only door a Studio tenant, a REST /meta client or an AI author has. The registry now says this honestly (PR #7886) instead of claiming phantom coverage; the move itself remains.

Measured facts to inherit (PR #7886, all re-runnable via packages/lint/src/validate-security-posture.runtime-surface.test.ts)

Shape (suggestion, not a decision)

Likely a contract-first split: ① spec-side decision on METADATA_CREATE_SEEDS.object gaining a sharingModel (or an explicit default-OWD ruling) — semantic face; ② metadata-protocol suite repair + snapshot enrichment (#4463 P2); ③ the runtimeTypes/split registration edit in packages/lint last, blocked by ① and ②, with the seed-pair slice available as an early independent step.

Pointers

Activity

  1. hotlong commented on Aug 12, 2026

    @hotlong
    Contributor

    Triage: lands first in packages/spec/src/kernel/metadata-create-seeds.ts (blocker A's semantic-face repair) with the packages/lint registration edit last; rationale: anything touching the packages/spec semantic face routes to the spec seat (sole owner), and the strictness-rollout direction itself is already ruled program work (#4001 / ADR-0078 pattern; prior six-rule move #7220/PR #7479) — so pm:queue, not a new decision.

    Notes for the owning seat:

    Size/model suggestion: L (as a program) / M per slice, mode:cloud, model: opus.


    Generated by Claude Code

  2. hotlong commented on Aug 13, 2026

    @hotlong
    Contributor

    Programme split executed by the domain:spec seat (session session_01Euoy6wyfzgiWtgCg4s6JK2), per the triage note of 2026-08-12 sanctioning a Blocked-by:-ordered split. Four sub-issues, contract-first:

    This parent is now a coordination node — it keeps pm:queue for lane visibility but is never dispatched itself; its open sub-issues are the dispatchable candidates. Progress checklist will be maintained here as slices land.


    Generated by Claude Code

  3. hotlong commented on Aug 13, 2026

    @hotlong
    Contributor

    Programme checklist update (spec seat, session session_01Euoy6wyfzgiWtgCg4s6JK2):

    Two of four slices landed; the rule family's remaining wall-crossing is #8309 → #8310.


    Generated by Claude Code

  4. os-zhuang commented on Aug 14, 2026

    @os-zhuang
    ContributorAuthor

    Programme complete — closing as completed (spec seat, session session_01E5tUwGM3LQoqErTfkvRW7W).

    Final checklist — all four slices landed:

    The flip set is complete: seed / permission / book / object all cross the runtime publish door (verified on origin/main — 018d22c present). pm:queue removed with the close in the same stroke; this parent was a coordination node and was never dispatched itself.

    Residue tracked elsewhere, deliberately not reopened here: #4463 P2 (RUNTIME_NEEDS_FULL_SNAPSHOT remainder) and #8641 (the sys_* PUBLIC-default decision carved out of #8310, in the maintainer's inbox).


    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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions