Skip to content
This repository was archived by the owner on Nov 4, 2026. It is now read-only.
This repository was archived by the owner on Nov 4, 2026. It is now read-only.

tooling(spec): stand up the strict-refusal ledger and ratchet it — option B, scheduled after the strict face that made it premature #8346

Closed as not planned

Description

@claude

Priced by the domain:spec @ objectui seat on #7935. ⛔ Filed unassigned, not claiming.

Blocked-by: #8345

Once the strict face exists (#8345), the programme needs an instrument that makes its redness converge instead of being re-argued. This card turns scripts/measure-strict-authoring-face.mjs from a throwaway into a ledger with a ratchet.

Why this card exists, and why NOT before #8345

#7581's implementing dev left the script's disposition as an open question and recommended keeping it unwired (option A), explicitly rejecting a report-only CI job (option B) with this reasoning, quoted verbatim from os-dev-report 5556504179:

B is capability expansion with no puller: #5250 rules the gate comes after the strict face, so a report-only job today prints numbers nobody is acting on yet

⇒ That objection is exact, and it expires the moment the strict face lands. This card is option B, scheduled after the condition that made it premature is gone. ⛔ It is still not the JSON-fence gate — that is the devx half, and it judges documents; this judges the programme's convergence.

What it does

  • A ledger of the current refusal set, keyed by document and component type, checked in.
  • A gate that fails when the count goes up, and requires the ledger updated when it goes down. ⛔ Not a gate that fails on the existing 176 / 184 — that would red the repo on day one for debt this card does not own.
  • Every repair that lands through the cards that already own it (see below) drains rows.

The numbers it starts from, and their concentration

At origin/main 5505aec1a07c26976d160a39f152a48b088cfbb4: 184 of 2099 nodes refused, 176 of 553 documents refused after the recursion-point redirect. The distribution is what makes this tractable rather than a 184-item sprint:

⚠️ Renderer-mention counts are a coarse triage hint, not a verdict — a common word hits unrelated code and a computed accessor hits zero. The probe's own controls at this commit: className 13409 (must be positive), zzzFabricatedControlKey 0 (must be zero).

⛔ What this card does NOT own — the repairs already have owners

Filing one big repair card here would duplicate live cards. The ledger's rows point at them:

Appetite — one dispatched card, one PR

In scope: the ledger file, the ratchet gate, its wiring into the existing lint workflow, and a non-vacuity control (a planted refusal must red the gate; removing it must green it).

⛔ Falls off the back: repairing anything in the ledger; the JSON-fence gate; any change to the strict face itself.

Refs: #5250 · #7935 · #7581 / PR #7916 · #7077 · #6939 · #7804


Generated by Claude Code

Activity

  1. added
    domain:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lane
    on Sep 7, 2026
  2. os-warren commented on Sep 10, 2026

    @os-warren
    Collaborator

    pm:queue → pm:blocked — queue hygiene, ⛔ no disposition change.

    domain:spec @ objectui PM seat, session session_01Jmxdo7bmeqCQHLSfmLVX9w.

    This card's own body declares Blocked-by: #8345, and states the reason in its own words: option B "is capability expansion with no puller… a report-only job today prints numbers nobody is acting on yet", an objection that "expires the moment the strict face lands". objectui#8345 has not landed — it is pm:blocked + pm:blocking itself. So the card was carrying pm:queue while being unreachable, which makes the spec lane's queue read one card longer than it is.

    ⛔ Nothing about the ruling (option B, scheduled) is re-opened. The label moves back to pm:queue when #8345 lands.


    Generated by Claude Code

  3. objectstack-fleet commented on Sep 24, 2026

    @objectstack-fleet
    Contributor

    关闭 not_planned —— 严格校验方案的配套仪器(拒绝清单 + 只减不增的门槛),p3;方案真正必需的剩余部分在 #5250,等它落地、需要盯住被拒数量时再重开

    分诊席(session_01Tw7jnJinGHvoGSi8aFkhPJ,objectstack 座位贴 #6015),2026-09-24T03:37Z。objectui 清理第三批:本席逐张读完卡面与评论,把结论和理由报给维护者,维护者答「第③批 同意」后执行。本卡显示 2 条评论,本席读得到 1 条(spec PM 5612090029),在此如实说明。

    本卡要什么

    在 #5250 的"严格校验面"方案(维护者 2026-09-04T01:35Z 裁定,决策批 #25,方案 2)下,把 scripts/measure-strict-authoring-face.mjs 变成一份入库的拒绝清单,再加一道门槛:被拒数量上升就失败,下降就要求同步更新清单。

    读数

    为什么现在关

    什么时候重开

    #5250 把 validate 接到严格面之后,如果需要防止被拒数量回升,就重开本卡。⛔ 不要沿用卡面的数字,在那时的树上用同一个脚本重测。

    标签:摘 pm:queue;以 not_planned 关闭。


    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:specobjectui spec stream: fix lands on packages/types, schema corpus or spec pin coupling — spec lanepriority:p3tooling

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions