Why: An agent bypassing the housestyle kit hand-assembled OOXML with
zipfile; the resulting pptx lacked masters, theme and docProps. Text
extraction succeeded and every existing check passed, so a package that
Office refuses to open reached the user as a deliverable.
Evidence: Focused Go suite covers a valid minimal pptx, the incident-
shaped package, nine chain-break variants and register-level integration;
the housestyle python suite adds BrokenPptxTests for masterless, kit-made
and unopenable files. Full combined suite receipt follows on the task
card before review.
Impact: register_artifact now runs a pure-Go OPC structural check for
docx/xlsx/pptx and refuses broken packages with a kit rebuild hint;
lint_pptx gains structure-broken assertions (master/theme/layout chain,
open-failure fallback) that template mode cannot downgrade; prompts
forbid hand-assembled OOXML and specify the missing-library fallback.
Refs: Dev task feature/pptx-register-structural-gate
Why: The backfill contract test used a fake PK-magic docx as its fixture;
the new registration structural gate correctly refuses that shape, so the
contract was no longer exercised.
Evidence: The three affected runmgr tests pass locally with -count=1;
the full combined suite receipt follows on the task card.
Impact: Test fixture only; the gate behavior under test is unchanged.
Refs: Dev task feature/pptx-register-structural-gate
weichen
merged commit 607c38d7e6 into main2026-10-14 08:36:19 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Why
Agent 绕开 housestyle kit 用 zipfile 手拼 OOXML 生成 pptx,产物缺母版/主题/docProps:正文抽取照常成功、既有校验全部放行,Office 按 OPC 校验才判损坏,残缺包作为交付物发到了用户手里。
What
internal/tools/ooxmlgate.go:登记口 L1 纯 Go OPC 结构自检(零依赖)——ZIP 合法、[Content_Types].xml与正文部件存在且 XML 合法;pptx 校验 presentation 声明sldMasterIdLst、slide→layout→master→theme 引用链逐级可达。register_artifact接线:结构残缺的 docx/xlsx/pptx 拒绝登记,报错含 housestyle kit 重建指引(登记被拒后终轮 ClaimGate 兜底拦截"已生成却无工件")。housestyle/lint.py:lint_pptx前置母版/主题/版式链断言(structure-broken,不随模板降级),打开失败兜底为结构错误而非 traceback。tool.run_pythonv2 /base.deliverablesv8 禁止手拼 OOXML,缺库装不上时如实告知而非退回手拼。fs_write_file已有rejectBinaryOfficeWrite前置拦截,无需改动。Evidence
ooxmlgate_test.go合法/事故形复刻/九类断链/登记集成;runmgr 回填契约夹具改为结构合法 docx 后复验通过(go vet过)。test_housestyle.BrokenPptxTests3 项 + 全套 12 项过;事故形包 lint 报 structure-broken(exit 1),kit 产物干净。feature/pptx-register-structural-gate证据表(SELF,CI 复核后升级)。Impact
Refs
feature/pptx-register-structural-gate(含 Dev pin bump 组合 PR)