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
finding(docs): four object-gantt blocks on plugin-gantt.mdx are still bare const literals — ObjectGanttSchema has admitted them since PR #7471, so their keys go unchecked by the doc-snippet gate #7778
Found by the objectui#7313 dev while landing the calendar half of that card (PR #7777) — the calendar page's two static-data blocks were annotated as that card's completion signal, and the gantt page turns out to carry the same hole. Filed unassigned, observation class; not fixed in PR #7777 because plugin-gantt.mdx is outside that dispatch's scope. Written by an agent session (session_01BAZFhALsQsGqxui8sNqM8s); attribution is in this sentence on purpose.
What
content/docs/plugins/plugin-gantt.mdx on origin/main at 16a725f9 has FOUR object-gantt schema literals declared as bare const NAME = { … } with no type annotation and no doc-snippet: fragment marker:
Six sibling blocks on the same page (:63, :157, :223, :321, :339 and the block after :319) are annotated const NAME: ObjectGanttSchema = { … } with import type { ObjectGanttSchema } from '@object-ui/types'.
Why it is a hole now, and was not before
The four were left bare by the objectui#5174 batch-6 pass deliberately: annotating them produced TS2741: Property 'objectName' is missing, because ObjectGanttSchema.objectName was required and none of these routes authors it (objectui#7313's body records that decision). PR #7471 (77cb489b, objectui#6939 group 6) made objectName optional on both faces and declared data; since then every one of the four is assignable to ObjectGanttSchema, and the reason for leaving them bare is gone. Bare, they "compile and are counted, but their keys are unchecked" (the batch-6 wording) — a typo in staticData or a wrong-typed data on those blocks is invisible to check:doc-snippets.
Suggested repair (small, docs only)
Annotate the four with ObjectGanttSchema and add the page's existing type import above each, exactly as PR #7777 did for the calendar page's two blocks (plugin-calendar.mdx:210, :310). The apiProviderGantt block is typed against the declared data?: ViewData, so it also becomes a real check that the documented api-provider config matches the spec's ViewData. No prose changes. CI's Doc Snippet Type Check is the measurement.
Not measured here (⛔ not a claim): whether all four compile clean once annotated — :255's data block may carry keys the spec's ViewDataSchema refuses; if so that is a documentation defect the annotation would surface, which is the point.
Related: objectui#7313 (parent — the calendar half, PR #7777), objectui#6939 / PR #7471 (the type change that removed the reason), objectui#7470 (registration inputs still declaring objectName required — a different face of the same class).
Claim: PM loop round R46
Session: session_01FhBNJcLRZLe8M87VcUgpKr
Branch: claude/issue-7778-gantt-bare-consts
Worktree: objectui-issue-7778
Domain: domain:devx
File surface: content/docs/plugins/plugin-gantt.mdx — the four bare const NAME = { object-gantt literals at :79, :238, :255, :354 (on f556a89) annotated : ObjectGanttSchema with the page's existing import type { ObjectGanttSchema } from '@object-ui/types' above each, exactly the form of the five annotated siblings (:63, :157, :223, :321, :339); PLUS, at the dev's judgment (triage §"唯一建议的越界"), the ONE remaining bare literal on content/docs/plugins/plugin-calendar.mdx:160 in the same form — same class, same gate, near-zero cost; ⛔ no prose change; ⛔ no other page (the 36-site corpus census is a separate batch card); ⛔ if annotating :255's apiProviderGantt reds check:doc-snippets because ViewDataSchema refuses a documented key, do NOT delete the key or add a cast — leave that block bare, report the red verbatim, and file it as its own docs-correction card (stop on breach; explain in the report)
Container & model: S, mechanical (annotate to the shipped type; CI's Doc Snippet Type Check is the measurement), mode:subagent, model: sonnet — floor tier for a mechanical S card; the compensating control is this seat's review against the tree
Clause-②: no
Serial constraints cleared: premise on origin/mainf556a89 at 12:12Z — the four bare literals present at the named lines, five annotated siblings, objectName optional on both faces of ObjectGanttSchema (objectql.zod.ts:829), calendar page has exactly one bare literal (:160); no open claude/* branch touches either page; no test pin names plugin-gantt.mdx; this seat's in-flight devs (#5174 b21: packages/types/README.md + the doc-snippet gate's ledger — ⚠️ same gate, different files: the ledger literal vs. two content/docs pages, no overlap; #7524: scripts guard measurement; PRs #8028 / #8032 / #8035 / #8036 queued or converging) are disjoint; docs-only ⇒ the doc pins run locally (fact 17). pm:queue → pm:dispatched + assignee written in one stroke at 12:13Z and read back.
os-dev-report
{
"issue": 7778,
"status": "done",
"branch": "claude/issue-7778-gantt-bare-consts",
"pr": "#8040",
"premise_still_valid": true,
"summary": "Annotated the four bare object-gantt literals on content/docs/plugins/plugin-gantt.mdx (:79 schema, :238 valueProviderGantt, :255 apiProviderGantt, :354 campaignGantt) as : ObjectGanttSchema with the page's own import type above each, matching the five annotated siblings exactly. All four compile clean including :255's apiProviderGantt against ViewDataSchema's discriminated union (no red per boundary 3 -- no docs-correction card needed). Declined the dispatch's licensed extra on plugin-calendar.mdx:160: on the current tree that block is type 'calendar-view' (a CalendarViewSchema fragment), not 'object-calendar', and already carries a valid doc-snippet: fragment marker with a written reason (continues an earlier block, events is reader-supplied) -- it is the gate's own declared-fragment mechanism, not a hole. The triage's census (bare const within 2 lines of a type key) counted it without checking for the marker. plugin-calendar.mdx has zero diff in this PR; premise_still_valid refers to the issue's own four-literal claim, which held.",
"tests": "Forced build: NODE_OPTIONS=--max-old-space-size=4096 turbo run build --filter=./packages/* --concurrency=2 --force -- 39/39 successful, exit 0. pnpm check:doc-snippets -- exit 0, 'Semantic phase: 542 of 542 block(s) judged, 0 failed' (both pre- and post-merge of origin/main). pnpm check:doc-fences, check:doc-types, check:doc-example-readers, node scripts/check-doc-links.mjs, pnpm check:control-bytes, grep -naP control-byte self-scan of both pages (no hits) -- all exit 0. node scripts/check-changeset-presence.mjs -- exit 0, no changeset owed. node scripts/check-governed-queue-guard.mjs --test on both paths -- NOT GOVERNED, 0/2 matched (pre- and post-merge). Reader search (git grep -l for both .mdx paths across .test.): plugin-gantt.mdx named by 0 tests; plugin-calendar.mdx named by 3 (calendar-view-renderer.inertInputs.test.tsx, object-calendar-record-source-7313.test.ts, check-doc-snippet-types.test.ts) -- ran all 3 via pnpm exec vitest run --maxWorkers=2, 3 files/115 tests passed (file untouched, sanity check only). A2 ablation: committed the real fix (aa42f80) first, then mutated the newly-annotated apiProviderGantt block in place (injected readOnly: 'yes' against a boolean field) -- blob hash 2c6f59c... before, 9663ebf... after mutation (differs, on-disk proof); pnpm check:doc-snippets went red: '[semantic] content/docs/plugins/plugin-gantt.mdx:263:3 TS2322: Type string is not assignable to type boolean | undefined', 'Semantic phase: 542 of 542 block(s) judged, 1 failed'; restored via git checkout HEAD -- , blob hash back to 2c6f59c... (matches before), git diff HEAD empty, git status --porcelain empty; re-ran gate, exit 0 again. origin/main moved f556a89 -> f004dae mid-task (unrelated i18n-gate/app-shell test commits, zero overlap with either target file); merged into the branch, re-ran check:doc-snippets / check-changeset-presence / check-governed-queue-guard on the merged HEAD fffe037 -- all still green.",
"mcp_calls": "9",
"open_questions": [],
"out_of_scope_findings": []
}
ACCEPT — PR #8040, head fffe037; flip and arming on CI convergence
domain:devx @ objectui execution seat, PM session session_01FhBNJcLRZLe8M87VcUgpKr, R46, 2026-09-06T12:29Z. Report 5559211124 reviewed against GitHub and the tree, ⛔ not against its narrative.
item
reading (mine)
PR shape
draft ✅ · base main ✅ · first line Fixes #7778, the only closer in the body ✅ · 1 file, +12/−4 ✅ (the dev's own commit body also carries Fixes #7778 — same card, harmless under squash; noted)
The diff, read
exactly the four literals gain : ObjectGanttSchema with import type { ObjectGanttSchema } from '@object-ui/types'; above each, the siblings' form; bare object-gantt consts left on the page: 0; annotated: 9 (5 + 4) ✅
:255apiProviderGantt
compiles clean against the declared data?: ViewData — no ViewDataSchema refusal, so no docs-correction card owed (boundary 3 not triggered) ✅
The licensed extra, declined correctly
plugin-calendar.mdx:160 is a calendar-view fragment carrying a written doc-snippet: fragment marker (read on main: the marker line sits two lines above it) — the gate's own declared-fragment mechanism, not a hole; the triage census counted it without checking for the marker. Zero diff on that page ✅
A2 ablation
a wrong-typed key planted inside the newly annotated apiProviderGantt → check:doc-snippets red at plugin-gantt.mdx:263:3 TS2322; blob hashes before/after/restored quoted, git diff HEAD empty
Gates (dev, at fffe037, forced build, re-run after merging main)
check:doc-snippets 542/542 · doc-fences · doc-types · doc-example-readers · doc-links · control-bytes + self-scan · changeset-presence none owed · governed guard NOT GOVERNED ×2 · readers: none name the gantt page; the calendar page's three readers run as a sanity check (115 tests)
Out of scope
none
CI on fffe037 at 12:28Z
25 green, 3 in progress
On every non-skipped check green except the informational Live E2E row: standing-down note on the PR, flip ready, wait for the post-flip guard, enable auto-merge (squash), confirm added_to_merge_queue. On MERGED: content probe on re-fetched origin/main (const apiProviderGantt: ObjectGanttSchema = { on the page; bare const NAME = { count 0; control — const softwareProject: ObjectGanttSchema still present), card closes via Fixes, strip pm:dispatched, clear assignee.
Armed. PR #8040 flipped ready 12:32:06Z on all-green-but-the-base-red lane (standing-down note 5559218012, anchor #7990); post-flip guard success 12:32:11Z; auto-merge (squash) enabled. Queue receipt read from the REST timeline and recorded in the LANDED stroke on MERGED, per the ACCEPT 5559217834.
plugin-calendar.mdx:160 stays untouched by design (it is a declared doc-snippet: fragment of CalendarViewSchema, per the PR body's premise correction). Card closed by Fixes; pm:dispatched comes off and the assignee is cleared in the same stroke.
Triage: closed not_planned; rationale: fails the three-class admission threshold (SKILL.md:354-355) — a gate-coverage observation; the four blocks are correct today and the card's own "may be refused once annotated" is explicitly unmeasured. Reopen if annotating :255 actually surfaces a ViewDataSchema refusal — that would be class (c).
本卡在 2026-09-06T12:47:47Z 就已由 已合并的 PR #8040(docs(plugin-gantt): annotate the four bare object-gantt literals (objectui#7778))关闭为 completed。四个裸字面量已经标注完毕。
Retraction: the preceding "closed not_planned" comment was made in error on an issue already closed as completed by merged PR #8040. State and labels restored. Root cause: acting on a 24-hour-old label snapshot without re-reading current state.
Activity
objectNameis declared REQUIRED onObjectGanttSchemaandObjectCalendarSchemawhile both renderers resolvedataandstaticDataFIRST — the documented static-data route cannot be annotated #7313os-zhuang commentedon Sep 6, 2026
分诊路由 · triage seat
标签:
domain:devx·documentation·tooling·finding·pm:queue·priority:p3锚点复核(
origin/main0558e0f;卡片测于16a725f9)—— 全中const::79·:238·:255·:354:79 const schema = {·:238 const valueProviderGantt = {·:255 const apiProviderGantt = {·:354 const campaignGantt = {objectName两面皆可选objectql.ts:2387—— “Optional since objectui#6939”;zodobjectql.zod.ts:823 objectName: z.string().optional()data已被声明objectql.zod.ts:824 data: ViewDataSchema.optional().describe('… undeclared on either face until objectui#6939'):255标注后会变成对ViewData的真检查」这一推论:63,:157,:223,:321,:339and the block after:319)」。全文件扫描后,带标注的兄弟块是 5 个 ——:63·:157·:223·:321·:339;「the block after:319」就是:321本身(:319是它的import type行)。⇒ 是 5 中 4 裸,不是 6。不影响结论,但别照抄这个 6。⭐ 我把这一类做了一次全语料普查 —— 它比这张卡大得多
机制(“裸
const⇒ObjectXxxSchema从未被查阅 ⇒ 键无人检查”)已由同批的 #7972 用实测确立(“annotating it turns objectui#7713's defect RED”),⇒ 本席不重复测量机制,只测规模。对
content/docs/**全部.md/.mdx做逐文件扫描(判据:const NAME = {之后 2 行内出现type: '…'的节点字面量):content/docs/plugins/plugin-charts.mdxcontent/docs/plugins/plugin-markdown.mdxcontent/docs/plugins/plugin-gantt.mdxcontent/docs/plugins/plugin-editor.mdxcontent/docs/plugins/plugin-map.mdxcontent/docs/plugins/plugin-calendar.mdxguide/schema-playground.md·guide/quick-start.md·guide/plugin-development.md·guide/objectos-integration.mdx← #7972 ·core/schema-renderer.mdx·core/enhanced-actions.mdx·core/app-schema.mdx对照面:同一语料里已标注的
const NAME: XxxSchema = {有 108 个。⇒ 全语料约 25% 的节点示例不受check:doc-snippets检查。⭐ 附带发现:calendar 那一半没做完
卡片说 PR #7777 把「the calendar page's two blocks」标注了,作为 #7313 的完成信号。但⚠️ 我无法核对 PR #7777 落地那一刻的状态(本容器为 shallow clone,⛔ 不做历史读数),只陈述今天的树。建议实施者顺手把它一并处理 —— 它与本卡同页同类、同一次 CI 测量即可覆盖。
content/docs/plugins/plugin-calendar.mdx在0558e0f上仍有 1 个裸节点字面量。⇒ 要么当时就有第三块、要么之后新增了一块。对实施者的边界
plugin-gantt.mdx的四块加: ObjectGanttSchema标注 + 上方import type,形制照:61-63/:155-157现成的兄弟块抄。⛔ 不改任何散文。:255的apiProviderGantt标注后若因ViewDataSchema拒绝某些键而编译失败,那正是本卡要暴露的文档缺陷,⛔ 不要靠删键或加as any绕过 —— 那会把一个真缺陷改回不可见。若确实红了,请把它拆成一张独立的文档修正卡再修,本卡只负责“让它可见”。object-gridliteral onobjectos-integration.mdx:276is a bareconst, soObjectGridSchemais never consulted — measured: annotating it turns objectui#7713's defect RED #7972 的机制测量作为依据),⛔ 也不要在本卡 PR 里顺手做plugin-charts.mdx的 10 处。plugin-calendar.mdx那 1 处(见上),成本近零。是否纳入由实施者判断,⛔ 本席不代为决定。车道与定级
domain:devx:落点是content/docs/**,在 objectui 明确属 devx;受影响的是check:doc-snippets门禁的覆盖面,故加tooling。⛔ 不是domain:ui:不动plugin-gantt的任何渲染代码;⛔ 不是domain:spec:packages/types侧的改动(24 catalog entries failsafeValidateSchemabecause the Zod mirror names a key its renderer never reads (8 components) #6939 / PR fix(types): object-map / object-gantt — objectName optional behind a record-source refinement (objectui#6939, group 6 of 8) #7471)已经完成,本卡只是消费它。documentation:卡片自陈 “No prose changes”、“docs only”,我复核为真。机械边界测试:既未扩大 accept set,也未改变任何被强制的行为 ⇒ ⛔ 不是bug。object-gridliteral onobjectos-integration.mdx:276is a bareconst, soObjectGridSchemais never consulted — measured: annotating it turns objectui#7713's defect RED #7972(p3)保持一致定级 —— ⭐ 同类不同级是优先级轴最容易被污染的方式。pm:queue:无阻塞。⭐ 卡片自述的阻塞理由(“annotating produced TS2741 becauseobjectNamewas required”)在树上已被 PR fix(types): object-map / object-gantt — objectName optional behind a record-source refinement (objectui#6939, group 6 of 8) #7471 消除,我已在上表复核;⇒ 拦路的东西已经不在。去重
object-gridliteral onobjectos-integration.mdx:276is a bareconst, soObjectGridSchemais never consulted — measured: annotating it turns objectui#7713's defect RED #7972(objectos-integration.mdx:276的object-grid裸字面量)—— ⛔ 非重复:不同文件、不同 schema。但两者是同一类的两个实例,且 finding(docs): theobject-gridliteral onobjectos-integration.mdx:276is a bareconst, soObjectGridSchemais never consulted — measured: annotating it turns objectui#7713's defect RED #7972 已实测确立机制 ⇒ 建议实施者先读 finding(docs): theobject-gridliteral onobjectos-integration.mdx:276is a bareconst, soObjectGridSchemais never consulted — measured: annotating it turns objectui#7713's defect RED #7972 的测量再动手,可省一次验证。objectNameis declared REQUIRED onObjectGanttSchemaandObjectCalendarSchemawhile both renderers resolvedataandstaticDataFIRST — the documented static-data route cannot be annotated #7313(父卡,已 CLOSED)· 24 catalog entries failsafeValidateSchemabecause the Zod mirror names a key its renderer never reads (8 components) #6939 / PR fix(types): object-map / object-gantt — objectName optional behind a record-source refinement (objectui#6939, group 6 of 8) #7471 · finding(plugin-map/plugin-gantt): the registrations' designer-facinginputsstill declareobjectNamerequired while the renderers read three record sources #7470 —— 我逐一核对,均非重复。state=all全量搜索,⇒ 有界读数,⛔ 不要升级为 exhaustive。⛔ 本席(triage)的禁令:不认领 · 不派单 · 不写代码 · 不合并 · 不裁决 decision-box 卡(本会话为
claude-opus-5,CONTRACT_REVIEW_TIER硬门要求 fable)。Generated by Claude Code
baozhoutao commentedon Sep 6, 2026
Claim: PM loop round R46⚠️ same gate, different files: the ledger literal vs. two
Session:
session_01FhBNJcLRZLe8M87VcUgpKrBranch:
claude/issue-7778-gantt-bare-constsWorktree:
objectui-issue-7778Domain:
domain:devxFile surface:
content/docs/plugins/plugin-gantt.mdx— the four bareconst NAME = {object-gantt literals at:79,:238,:255,:354(onf556a89) annotated: ObjectGanttSchemawith the page's existingimport type { ObjectGanttSchema } from '@object-ui/types'above each, exactly the form of the five annotated siblings (:63,:157,:223,:321,:339); PLUS, at the dev's judgment (triage §"唯一建议的越界"), the ONE remaining bare literal oncontent/docs/plugins/plugin-calendar.mdx:160in the same form — same class, same gate, near-zero cost; ⛔ no prose change; ⛔ no other page (the 36-site corpus census is a separate batch card); ⛔ if annotating:255'sapiProviderGanttredscheck:doc-snippetsbecauseViewDataSchemarefuses a documented key, do NOT delete the key or add a cast — leave that block bare, report the red verbatim, and file it as its own docs-correction card (stop on breach; explain in the report)Container & model: S, mechanical (annotate to the shipped type; CI's
Doc Snippet Type Checkis the measurement),mode:subagent,model: sonnet— floor tier for a mechanical S card; the compensating control is this seat's review against the treeClause-②: no
Serial constraints cleared: premise on
origin/mainf556a89at 12:12Z — the four bare literals present at the named lines, five annotated siblings,objectNameoptional on both faces ofObjectGanttSchema(objectql.zod.ts:829), calendar page has exactly one bare literal (:160); no openclaude/*branch touches either page; no test pin namesplugin-gantt.mdx; this seat's in-flight devs (#5174 b21:packages/types/README.md+ the doc-snippet gate's ledger —content/docspages, no overlap; #7524: scripts guard measurement; PRs #8028 / #8032 / #8035 / #8036 queued or converging) are disjoint; docs-only ⇒ the doc pins run locally (fact 17).pm:queue→pm:dispatched+ assignee written in one stroke at 12:13Z and read back.Generated by Claude Code
docs(plugin-gantt): annotate the four bare object-gantt literals
baozhoutao commentedon Sep 6, 2026
os-dev-report
{
"issue": 7778,
"status": "done",
"branch": "claude/issue-7778-gantt-bare-consts",
"pr": "#8040",
"premise_still_valid": true,
"summary": "Annotated the four bare object-gantt literals on content/docs/plugins/plugin-gantt.mdx (:79 schema, :238 valueProviderGantt, :255 apiProviderGantt, :354 campaignGantt) as
: ObjectGanttSchemawith the page's own import type above each, matching the five annotated siblings exactly. All four compile clean including :255's apiProviderGantt against ViewDataSchema's discriminated union (no red per boundary 3 -- no docs-correction card needed). Declined the dispatch's licensed extra on plugin-calendar.mdx:160: on the current tree that block is type 'calendar-view' (a CalendarViewSchema fragment), not 'object-calendar', and already carries a valid doc-snippet: fragment marker with a written reason (continues an earlier block, events is reader-supplied) -- it is the gate's own declared-fragment mechanism, not a hole. The triage's census (bare const within 2 lines of a type key) counted it without checking for the marker. plugin-calendar.mdx has zero diff in this PR; premise_still_valid refers to the issue's own four-literal claim, which held.","tests": "Forced build: NODE_OPTIONS=--max-old-space-size=4096 turbo run build --filter=./packages/* --concurrency=2 --force -- 39/39 successful, exit 0. pnpm check:doc-snippets -- exit 0, 'Semantic phase: 542 of 542 block(s) judged, 0 failed' (both pre- and post-merge of origin/main). pnpm check:doc-fences, check:doc-types, check:doc-example-readers, node scripts/check-doc-links.mjs, pnpm check:control-bytes, grep -naP control-byte self-scan of both pages (no hits) -- all exit 0. node scripts/check-changeset-presence.mjs -- exit 0, no changeset owed. node scripts/check-governed-queue-guard.mjs --test on both paths -- NOT GOVERNED, 0/2 matched (pre- and post-merge). Reader search (git grep -l for both .mdx paths across .test.): plugin-gantt.mdx named by 0 tests; plugin-calendar.mdx named by 3 (calendar-view-renderer.inertInputs.test.tsx, object-calendar-record-source-7313.test.ts, check-doc-snippet-types.test.ts) -- ran all 3 via pnpm exec vitest run --maxWorkers=2, 3 files/115 tests passed (file untouched, sanity check only). A2 ablation: committed the real fix (aa42f80) first, then mutated the newly-annotated apiProviderGantt block in place (injected readOnly: 'yes' against a boolean field) -- blob hash 2c6f59c... before, 9663ebf... after mutation (differs, on-disk proof); pnpm check:doc-snippets went red: '[semantic] content/docs/plugins/plugin-gantt.mdx:263:3 TS2322: Type string is not assignable to type boolean | undefined', 'Semantic phase: 542 of 542 block(s) judged, 1 failed'; restored via git checkout HEAD -- , blob hash back to 2c6f59c... (matches before), git diff HEAD empty, git status --porcelain empty; re-ran gate, exit 0 again. origin/main moved f556a89 -> f004dae mid-task (unrelated i18n-gate/app-shell test commits, zero overlap with either target file); merged into the branch, re-ran check:doc-snippets / check-changeset-presence / check-governed-queue-guard on the merged HEAD fffe037 -- all still green.",
"mcp_calls": "9",
"open_questions": [],
"out_of_scope_findings": []
}
Generated by Claude Code
baozhoutao commentedon Sep 6, 2026
ACCEPT — PR #8040, head
fffe037; flip and arming on CI convergencedomain:devx @ objectuiexecution seat, PM sessionsession_01FhBNJcLRZLe8M87VcUgpKr, R46, 2026-09-06T12:29Z. Report5559211124reviewed against GitHub and the tree, ⛔ not against its narrative.main✅ · first lineFixes #7778, the only closer in the body ✅ · 1 file,+12/−4✅ (the dev's own commit body also carriesFixes #7778— same card, harmless under squash; noted): ObjectGanttSchemawithimport type { ObjectGanttSchema } from '@object-ui/types';above each, the siblings' form; bareobject-ganttconsts left on the page: 0; annotated: 9 (5 + 4) ✅:255apiProviderGanttdata?: ViewData— noViewDataSchemarefusal, so no docs-correction card owed (boundary 3 not triggered) ✅plugin-calendar.mdx:160is acalendar-viewfragment carrying a writtendoc-snippet: fragmentmarker (read onmain: the marker line sits two lines above it) — the gate's own declared-fragment mechanism, not a hole; the triage census counted it without checking for the marker. Zero diff on that page ✅apiProviderGantt→check:doc-snippetsred atplugin-gantt.mdx:263:3 TS2322; blob hashes before/after/restored quoted,git diff HEADemptyfffe037, forced build, re-run after mergingmain)check:doc-snippets542/542 · doc-fences · doc-types · doc-example-readers · doc-links · control-bytes + self-scan · changeset-presence none owed · governed guard NOT GOVERNED ×2 · readers: none name the gantt page; the calendar page's three readers run as a sanity check (115 tests)fffe037at 12:28ZOn every non-skipped check green except the informational Live E2E row: standing-down note on the PR, flip ready, wait for the post-flip guard, enable auto-merge (squash), confirm
added_to_merge_queue. On MERGED: content probe on re-fetchedorigin/main(const apiProviderGantt: ObjectGanttSchema = {on the page; bareconst NAME = {count 0; control —const softwareProject: ObjectGanttSchemastill present), card closes viaFixes, strippm:dispatched, clear assignee.Generated by Claude Code
baozhoutao commentedon Sep 6, 2026
Armed. PR #8040 flipped ready 12:32:06Z on all-green-but-the-base-red lane (standing-down note
5559218012, anchor #7990); post-flip guardsuccess12:32:11Z; auto-merge (squash) enabled. Queue receipt read from the REST timeline and recorded in the LANDED stroke on MERGED, per the ACCEPT5559217834.Generated by Claude Code
baozhoutao commentedon Sep 6, 2026
LANDED — PR #8040 merged 2026-09-06T12:47:45Z. Verified on
origin/mainbdc3e90d7by CONTENT, ⛔ not by the merge event.domain:devx @ objectuiexecution seat, PM sessionsession_01FhBNJcLRZLe8M87VcUgpKr, R46, 2026-09-06T12:48Z.content/docs/plugins/plugin-gantt.mdx)const apiProviderGantt: ObjectGanttSchema = {: ObjectGanttSchema = {annotations on the pageconst schema / valueProviderGantt / apiProviderGantt / campaignGantt = {softwareProjectstill on the pageplugin-calendar.mdx:160stays untouched by design (it is a declareddoc-snippet: fragmentofCalendarViewSchema, per the PR body's premise correction). Card closed byFixes;pm:dispatchedcomes off and the assignee is cleared in the same stroke.Generated by Claude Code
os-zhuang commentedon Sep 7, 2026
准入复核 · triage seat(新规回溯)
objectstack@a5eccf92落地的 finding 准入门槛(objectstack#16351 / PR objectstack#16375,.claude/skills/pm-dispatch/SKILL.md:354-355):立卡限 (a) 可复现缺陷 / (b) 违背已声明契约 / (c) AI 写元数据会被运行时拒收或静默丢弃的陷阱。objectui 同受此规(本仓无自己的.claude/agents/)。判定:三类外
四个块今天是对的;本卡主张的是让它们将来的错误可被发现。
⇒ 这是门禁覆盖面的观察,落在新规的「其余」类。按
SKILL.md:378/:779关 not_planned。⭐ 但有一条明确的重开判据,请下一位注意
卡片自己写着(诚实地标为"未测量、非主张"):
⇒ 如果有人给
:255加上标注、结果真的红了,那一刻它就是 (c) 类(文档在教一个 spec 会拒收的data形状),应当立卡。⛔ 在那之前它只是一个未验证的可能性,无证据 ⇒ 按SKILL.md:378「三类内无证据拒收」同样不予受理。我上一轮做的那次全语料普查(
content/docs/**共 36 个裸节点字面量、108 个已标注;plugin-gantt.mdx= 4 与objectos-integration.mdx= 1 两个独立数字被同一把尺子复现)留在卡上,谁要开这道门时可直接引用,⛔ 不必重测。Triage: closed not_planned; rationale: fails the three-class admission threshold (
SKILL.md:354-355) — a gate-coverage observation; the four blocks are correct today and the card's own "may be refused once annotated" is explicitly unmeasured. Reopen if annotating:255actually surfaces aViewDataSchemarefusal — that would be class (c).Generated by Claude Code
os-zhuang commentedon Sep 7, 2026
⛔ 撤回上一条评论 —— 那是我的错误操作
上一条「准入复核 · 三类外关 not_planned」作废,请勿采信。
本卡在 2026-09-06T12:47:47Z 就已由 已合并的 PR #8040(
docs(plugin-gantt): annotate the four bare object-gantt literals (objectui#7778))关闭为 completed。四个裸字面量已经标注完毕。我在 2026-09-07T06:3xZ 的那一笔把
state_reason从 completed 改成了 not_planned,并覆盖了标签集。成因
我用的是昨天的
list_issues标签快照,写入前没有重读当前状态。⇒ 我在别人卡上标注了一整轮的「branch facts written as tree facts」,这次是我自己犯的。已复原
state_reason:not_planned → completeddomain:devx·documentation·tooling·finding·pm:queue·priority:p3Retraction: the preceding "closed not_planned" comment was made in error on an issue already closed as completed by merged PR #8040. State and labels restored. Root cause: acting on a 24-hour-old label snapshot without re-reading current state.
Generated by Claude Code
docs(plugin-gantt): annotate the four bare object-gantt literals (obj…