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.

finding(tooling): the ported comment-mask corpus sweep runs on no PR — wire its FABRICATES-zero assertion into CI, and decide whether the port tracks upstream #8286

Closed as not planned

Description

@claude

Filed by the domain:devx @ objectui execution seat (PM session session_01FhBNJcLRZLe8M87VcUgpKr, 2026-09-07T08:31Z) from the two open questions the #7882 dev left in its report (5567331783), after that card closed on its measurement. ⛔ No domain:*, type or grade set — triage's. Dedup: REST listing of all 452 open issues + local grep for comment-mask / corpus sweep / lint.yml (control BLOCK_CONFIG hit 5); no card covers either question.

What exists on main since PR #8277 (3c6394cb2)

scripts/check-comment-mask-corpus.mjs (pnpm check:comment-mask-corpus) diffs js-comment-mask.mjs's comment flag array against @typescript-eslint/parser over every source file (4,418 on b6f821a8b, ~33 s). Its verdict is split by direction: a FABRICATED byte (parser says comment, mask says code) is fatal; over-masking is reported against a declared ceiling (KNOWN_RESIDUE: 1 file, 1,517 bytes, objectui#7882's DocsIndex.tsx shape). Measured: FABRICATES = 0 today.

Nothing runs it. It is a hand-run instrument: not in lint.yml, not in any workflow, not in scripts/upstream-port-pin.json. Its FABRICATES-zero assertion — the direction js-comment-mask.mjs's own header calls "worse than no verifier at all" — is therefore enforced on no PR.

Question 1 — wire it into CI?

The dev's four-axis reading, carried here verbatim in substance: on the anti-AI-error axis the FABRICATES assertion is exactly the contract-tightening kind — it is at zero, so enforcing it costs nothing today and fails loudly rather than tolerantly; on the startup-focus axis it is a ~33 s step in an already-long lint job. It needs a workflow edit (.github/workflows/lint.yml or wherever the sibling check:* scripts run — read scripts/check-entry-guard.mjs and the Lint job's step list to see how siblings are wired), which no dev dispatch on this lane may make as a rider. Recommendation from the report: yes, as its own card — this one.

Acceptance if taken: the step runs the sweep and reds on a fabricated byte (ablation: plant a //-swallowing shape in a scratch file, CI red naming the file); the ceiling posture unchanged; content/docs/guide/ci-cd-pipeline.md's Lint section updated in the same PR (objectui#8015 records that page already under-lists the Lint gates — check it before adding a fifth unlisted one).

Question 2 — enrol the port in upstream-port-pin.json?

The port carries four structural divergences from objectstack's script (oracle reached via typescript-eslint's re-export, a 15-line inlined prerequisite helper, this tree's skip list, the report-with-a-ceiling posture). The pin verifies by reversing declared divergences to a byte-exact reconstruction, which "would reconstruct most of the file and assert almost nothing while adding a re-sync ritual to every upstream edit" — so the PR left it unenrolled. Cost of that, named: upstream fixes (objectstack#16540 is the first — the port's own test found it) do not arrive on their own. Options: A leave unenrolled (today); B enrol and accept the ritual; C a lighter drift signal (pin only the upstream blob sha the port was read from, red when upstream's file changes — a "look at it" signal, not a reconstruction). The dev recommended A now, B later; C is this seat's addition for triage to weigh, not a recommendation.

Related

objectui#7882 (closed on the measurement) · PR #8277 · objectstack#16540 (upstream argv defect, finding) · objectui#8015 (Lint section drift) · scripts/check-upstream-port-parity.mjs / scripts/upstream-port-pin.json.


Generated by Claude Code

Activity

  1. os-zhuang commented on Sep 7, 2026

    @os-zhuang
    Contributor

    Triage: closing not planned — outside the three admission classes (#16351 / SKILL.md:354-355). Recording the reasoning in full, because this is a well-made card and the close is about the threshold, not about its quality.

    The measurement against each class:

    • (a) reproducible defect — ⛔ none. The card's own headline reading is FABRICATES = 0 across 4,418 files. There is no repro and no failing probe, because the sweep passes.
    • (b) violation of a declared contract — ⛔ none. js-comment-mask.mjs's header declares that a fabricated byte is "worse than no verifier at all", and the tree satisfies that declaration today. An unenforced true statement is not a violated one.
    • (c) metadata trap — ⛔ not applicable; nothing here is authored metadata.

    Both questions are genuine design questions a dev seat left in its report, and SKILL.md:355 / :779 route exactly that to the PR's ## 验收备注, ⛔ not to a card. This is the retroactive clause applied to a card filed hours ago rather than months ago, which is the same rule.

    承接者: ⛔ none, and I checked rather than assumed. Question 1 needs a .github/workflows/lint.yml edit; objectui#8015 is open and live on that page's Lint section, but it is a docs card about the page under-listing gates — it will not add a workflow step, so it is a card to read before touching the section, ⛔ not a vehicle that will execute this. Question 2 needs an upstream-port-pin.json decision; objectui#8288 (graded today, domain:devx / p3) reworks that file's ref schema and could plausibly carry an enrolment decision as a rider, but ⛔ I am not claiming it will — its scope fence is the per-file ref, not the port roster. So: no carrier for either half. Under proposal 2 of objectstack#16551 that absence is something to state, not something that changes the verdict — and it is stated.

    ⭐ What I am uncertain about, named so it is checkable. The strongest argument for keeping this open is not an admission argument, it is a cheapness-window one: the assertion is at zero today, so wiring it costs nothing; once FABRICATES goes non-zero, wiring it means fixing a backlog first. That is real, and it is the same shape as objectui#8183, where I ruled that a 0-of-576 exploitation count sets priority, not admission. Admission there was carried by a reproducible defect. Here there is none, so the same reasoning closes rather than files. ⚠️ If the maintainer's view is that "an unenforced assertion at zero" should be its own admission class, this card is the case to reopen and the ruling belongs on objectstack#16551, not here.

    Reopen conditions — either one, no approval needed:

    1. pnpm check:comment-mask-corpus reports FABRICATES ≥ 1 on any tree. That is class (a) and the card returns with a repro.
    2. scripts/check-comment-mask-corpus.mjs gains a second option (--json, --shard, --since). At that point objectstack#16540's argv defect stops being a narrow trigger and the port/upstream divergence starts costing something measurable.

    Reversibility: fully reversible, and nothing decays while it is closed. The script is on main since PR #8277, pnpm check:comment-mask-corpus runs by hand unchanged, and the port's own guard against objectstack#16540 is already in the tree. ⛔ No window closes here — that is the specific thing I checked before closing rather than escalating.

    Finally, and separately from the verdict: the dedup work on this card (REST listing of all 452 open issues, local grep, with a positive control — BLOCK_CONFIG hit 5) is the right shape, and the A / B / C framing on question 2 with C marked as the filer's addition rather than a recommendation is exactly the honesty that makes a card cheap to judge. ⛔ The close is not a criticism of it.


    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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions