@@ -29,7 +29,7 @@ deterministic payload. Finding IDs are stable for the same input pair and engine
2929## Binary decisions and grouped report (schema 3)
3030
3131The public decisions are ** ` flag ` ** and ** ` exempt ` ** . Uncertainty produces ` flag ` , with
32- the obstacle recorded in ` limitations ` . Schema and policy version ` 3 .0.0` , engine version ` 0.3 .0 ` , retain binary decisions
32+ the obstacle recorded in ` limitations ` . Schema version ` 3.0.0 ` , policy version ` 4 .0.0` , engine version ` 0.4 .0 ` , retain binary decisions
3333and add bounded values and explicit report truncation metadata.
3434
3535Each finding groups evidence by ** changed source file** . Several changed definitions in
@@ -112,6 +112,7 @@ scripts/design-diff/
112112 environment.ts Literal createEnv schema field comparison
113113 resolve.ts Bounded expression and import resolution
114114 inputs.ts Configured file-loaded documentation inputs
115+ document-content.ts Routine documentation authoring exemptions
115116 infrastructure.ts Rendering lockfile dependency closure
116117 report.ts Value previews and bounded JSON serialization
117118 semantic.ts Full semantic hashes without repeated tree expansion
@@ -150,12 +151,35 @@ TSX/CSS files that an application build or Tailwind source scan could consume.
150151| Shape/effects | Radius, border, shadow, opacity, filters | Flag |
151152| Layout | Wrapping, flex/grid sizing, stretching | Flag |
152153| Visibility | Hidden state, overflow, clipping, layering | Flag |
153- | Content | Visible copy, JSX/HTML/MDX structure, images, SVG, fonts | Flag |
154+ | Content | Product copy, new product controls, custom MDX UI, images, SVG, fonts | Flag |
155+ | Routine documentation | Prose, headings, tables, code samples, known content components, API-reference data | No finding |
154156| Motion | Keyframes, transitions, animation props | Flag |
155157| Infrastructure | Renderer dependencies, lockfile, CSS processors, module mappings | Flag |
156158| Movement | Coordinates, translation, margins, gaps, alignment | Flag unless the static proof succeeds |
157159| Nonvisual/equivalent | Comments, erased types, supported formatting and constant extraction | No finding |
158160
161+ Policy 4 exempts routine authoring in the ` documentationContent.roots ` directories. The parser
162+ projects out prose, Markdown tables, code samples and recognized frontmatter content fields.
163+ Configured Fumadocs/repository components are recognized by their import module and named export,
164+ including local import aliases. Only their declared content props with literal data are exempt;
165+ standard Callout types and tab labels are authoring options. Unknown widgets, appearance overrides,
166+ spreads, unresolved expressions, embedded images/media and unknown frontmatter fields remain in
167+ scope. YAML 2.9.0 uses its data-only core schema with custom tags disabled and aliases bounded;
168+ malformed or unsupported syntax produces a flag. Prose insertion does not renumber retained
169+ presentation definitions. A custom wrapper's opaque contents may still produce conservative flags.
170+
171+ The exemption concerns document instances. Shared documentation components, templates, styles,
172+ rendering infrastructure and screenshot assets are still analyzed. Product UI is unchanged by this
173+ policy: adding a search field/modal/panel flags even when it reuses EMCN; local appearance overrides,
174+ shared tokens and existing movement checks are retained. Product status/error wording and HTML
175+ policy/pricing pages remain in scope. Published Markdown article prose uses the same authoring
176+ exemption; embedded covers and other media remain visual assets.
177+
178+ The original 180-case manifest retains its policy-3 labels. New qualification rates must compare the
179+ same immutable source commits while reporting document-content exclusions separately; policy-3
180+ visual labels are not automatically policy-4 positives. Previous cloud smoke/evaluation runs do not
181+ validate this policy version.
182+
159183Babel parses JS/TS/JSX; PostCSS parses CSS; parse5 parses HTML; remark parses
160184Markdown/MDX/frontmatter/GFM. CSS selector, conditional and declaration order are retained.
161185JSX whitespace follows React's line handling. Class composition and JSX spread/attribute
@@ -202,8 +226,10 @@ unsupported dynamic schemas use ordinary conservative resolution. Whole-environm
202226settings therefore do not contaminate the signup page solely through this known adapter.
203227
204228The configured Fumadocs ` OPENAPI_SPEC_FILES ` list is parsed from Git in each revision. Listed
205- JSON inputs are compared semantically, retaining array order and attributing changes to both
206- the spec and configured renderer. Malformed/missing configured inputs flag with a limitation.
229+ JSON inputs are validated as data. The configured ` contentOnly ` convention exempts valid API-reference
230+ descriptions, schemas, enum lists and specification-list changes. Malformed/missing configured inputs
231+ still flag with a limitation. JSON consumed elsewhere by product UI remains subject to normal tracing.
232+ Renderer and list implementation changes remain subject to normal source/infrastructure analysis.
207233
208234The graph reuses up to 32,768 import/export snapshots keyed by source blob, resolving their
209235paths again for each revision. Each consumer resolver retains at most 32 parsed modules,
@@ -248,8 +274,9 @@ This engine is conservative, not a runtime equivalence prover:
248274- Dynamic module/asset paths, inherited/conditional export maps outside the supported forms,
249275 generated source and arbitrary imperative renderers cannot be fully followed. Directly
250276 detected DOM/canvas operations and configured native rendering use uncertainty fallbacks.
251- - MDX expressions and embedded HTML scripts are flagged, without running MDX components or
252- scripts. Plain HTML whitespace is preserved because CSS can make it meaningful.
277+ - Unresolved/custom MDX expressions and embedded HTML scripts are flagged, without running MDX
278+ components or scripts. Literal content in documented authoring components is exempt. Plain HTML
279+ whitespace outside the Markdown authoring exemption is preserved because CSS can make it meaningful.
253280- Lockfiles compare recognized rendering dependencies and their resolved transitive closure.
254281 Unrelated tooling/backend updates are clean. Unknown rendering configs/plugins still flag.
255282 Inactive variants, unused assets and an apparently inert removed class can also be flagged.
0 commit comments