@jasonbelmonti/markdown-engine 2.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +45 -1
- package/README.md +132 -57
- package/dist/api/contracts.d.ts +2 -1
- package/dist/api/contracts.d.ts.map +1 -1
- package/dist/api/contracts.js +1 -0
- package/dist/api/contracts.js.map +1 -1
- package/dist/api/declarative-validation.d.ts +2 -2
- package/dist/api/declarative-validation.d.ts.map +1 -1
- package/dist/api/declarative-validation.js +53 -31
- package/dist/api/declarative-validation.js.map +1 -1
- package/dist/api/document-set-validation-types.d.ts +32 -0
- package/dist/api/document-set-validation-types.d.ts.map +1 -0
- package/dist/api/document-set-validation-types.js +2 -0
- package/dist/api/document-set-validation-types.js.map +1 -0
- package/dist/api/document-set-validation.d.ts +4 -0
- package/dist/api/document-set-validation.d.ts.map +1 -0
- package/dist/api/document-set-validation.js +60 -0
- package/dist/api/document-set-validation.js.map +1 -0
- package/dist/api/serialize.d.ts +2 -1
- package/dist/api/serialize.d.ts.map +1 -1
- package/dist/api/serialize.js.map +1 -1
- package/dist/cli/declarative-validation.d.ts.map +1 -1
- package/dist/cli/declarative-validation.js +7 -12
- package/dist/cli/declarative-validation.js.map +1 -1
- package/dist/declarative-validation/applicability/classifier.d.ts +18 -0
- package/dist/declarative-validation/applicability/classifier.d.ts.map +1 -0
- package/dist/declarative-validation/applicability/classifier.js +37 -0
- package/dist/declarative-validation/applicability/classifier.js.map +1 -0
- package/dist/declarative-validation/applicability/index.d.ts +2 -0
- package/dist/declarative-validation/applicability/index.d.ts.map +1 -0
- package/dist/declarative-validation/applicability/index.js +2 -0
- package/dist/declarative-validation/applicability/index.js.map +1 -0
- package/dist/declarative-validation/assertions/context.d.ts +2 -2
- package/dist/declarative-validation/assertions/context.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/diagnostics.d.ts +7 -4
- package/dist/declarative-validation/assertions/diagnostics.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/diagnostics.js +26 -1
- package/dist/declarative-validation/assertions/diagnostics.js.map +1 -1
- package/dist/declarative-validation/assertions/evaluator.d.ts +2 -2
- package/dist/declarative-validation/assertions/evaluator.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/evaluator.js +9 -0
- package/dist/declarative-validation/assertions/evaluator.js.map +1 -1
- package/dist/declarative-validation/assertions/frontmatter-shape.d.ts +9 -0
- package/dist/declarative-validation/assertions/frontmatter-shape.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/frontmatter-shape.js +105 -0
- package/dist/declarative-validation/assertions/frontmatter-shape.js.map +1 -0
- package/dist/declarative-validation/assertions/group-evaluator.d.ts +6 -0
- package/dist/declarative-validation/assertions/group-evaluator.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/group-evaluator.js +57 -0
- package/dist/declarative-validation/assertions/group-evaluator.js.map +1 -0
- package/dist/declarative-validation/assertions/id-targets.d.ts +15 -0
- package/dist/declarative-validation/assertions/id-targets.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/id-targets.js +18 -55
- package/dist/declarative-validation/assertions/id-targets.js.map +1 -1
- package/dist/declarative-validation/assertions/ids.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/ids.js +100 -14
- package/dist/declarative-validation/assertions/ids.js.map +1 -1
- package/dist/declarative-validation/assertions/index.d.ts +1 -0
- package/dist/declarative-validation/assertions/index.d.ts.map +1 -1
- package/dist/declarative-validation/assertions/index.js +1 -0
- package/dist/declarative-validation/assertions/index.js.map +1 -1
- package/dist/declarative-validation/assertions/table-column-coverage.d.ts +9 -0
- package/dist/declarative-validation/assertions/table-column-coverage.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/table-column-coverage.js +108 -0
- package/dist/declarative-validation/assertions/table-column-coverage.js.map +1 -0
- package/dist/declarative-validation/assertions/text-format.d.ts +9 -0
- package/dist/declarative-validation/assertions/text-format.d.ts.map +1 -0
- package/dist/declarative-validation/assertions/text-format.js +75 -0
- package/dist/declarative-validation/assertions/text-format.js.map +1 -0
- package/dist/declarative-validation/compiler/applicability-plan.d.ts +5 -0
- package/dist/declarative-validation/compiler/applicability-plan.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/applicability-plan.js +22 -0
- package/dist/declarative-validation/compiler/applicability-plan.js.map +1 -0
- package/dist/declarative-validation/compiler/assertion-builders.d.ts +2 -1
- package/dist/declarative-validation/compiler/assertion-builders.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/assertion-builders.js +88 -13
- package/dist/declarative-validation/compiler/assertion-builders.js.map +1 -1
- package/dist/declarative-validation/compiler/assertion-shapes.d.ts +5 -1
- package/dist/declarative-validation/compiler/assertion-shapes.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/assertion-shapes.js +120 -0
- package/dist/declarative-validation/compiler/assertion-shapes.js.map +1 -1
- package/dist/declarative-validation/compiler/assertions.d.ts +2 -1
- package/dist/declarative-validation/compiler/assertions.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/assertions.js +16 -4
- package/dist/declarative-validation/compiler/assertions.js.map +1 -1
- package/dist/declarative-validation/compiler/compatibility.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/compatibility.js +3 -0
- package/dist/declarative-validation/compiler/compatibility.js.map +1 -1
- package/dist/declarative-validation/compiler/group-plans.d.ts +6 -0
- package/dist/declarative-validation/compiler/group-plans.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/group-plans.js +67 -0
- package/dist/declarative-validation/compiler/group-plans.js.map +1 -0
- package/dist/declarative-validation/compiler/index.d.ts +1 -1
- package/dist/declarative-validation/compiler/index.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/index.js +70 -35
- package/dist/declarative-validation/compiler/index.js.map +1 -1
- package/dist/declarative-validation/compiler/plan.d.ts +80 -5
- package/dist/declarative-validation/compiler/plan.d.ts.map +1 -1
- package/dist/declarative-validation/compiler/rule-fields.d.ts +6 -0
- package/dist/declarative-validation/compiler/rule-fields.d.ts.map +1 -0
- package/dist/declarative-validation/compiler/rule-fields.js +40 -0
- package/dist/declarative-validation/compiler/rule-fields.js.map +1 -0
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts +0 -1
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.d.ts.map +1 -1
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js +8 -2
- package/dist/declarative-validation/diagnostics/profile-config-diagnostics.js.map +1 -1
- package/dist/declarative-validation/evidence/index.d.ts +3 -3
- package/dist/declarative-validation/evidence/index.d.ts.map +1 -1
- package/dist/declarative-validation/evidence/index.js +6 -6
- package/dist/declarative-validation/evidence/index.js.map +1 -1
- package/dist/declarative-validation/profile/applicability-schema.d.ts +4 -0
- package/dist/declarative-validation/profile/applicability-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/applicability-schema.js +24 -0
- package/dist/declarative-validation/profile/applicability-schema.js.map +1 -0
- package/dist/declarative-validation/profile/assertion-schema.d.ts +2 -1
- package/dist/declarative-validation/profile/assertion-schema.d.ts.map +1 -1
- package/dist/declarative-validation/profile/assertion-schema.js +194 -14
- package/dist/declarative-validation/profile/assertion-schema.js.map +1 -1
- package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts +3 -1
- package/dist/declarative-validation/profile/direct-profile-diagnostics.d.ts.map +1 -1
- package/dist/declarative-validation/profile/direct-profile-diagnostics.js +10 -2
- package/dist/declarative-validation/profile/direct-profile-diagnostics.js.map +1 -1
- package/dist/declarative-validation/profile/frontmatter-shape-schema.d.ts +8 -0
- package/dist/declarative-validation/profile/frontmatter-shape-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/frontmatter-shape-schema.js +178 -0
- package/dist/declarative-validation/profile/frontmatter-shape-schema.js.map +1 -0
- package/dist/declarative-validation/profile/group-schema.d.ts +5 -0
- package/dist/declarative-validation/profile/group-schema.d.ts.map +1 -0
- package/dist/declarative-validation/profile/group-schema.js +55 -0
- package/dist/declarative-validation/profile/group-schema.js.map +1 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.d.ts +12 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.d.ts.map +1 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.js +32 -0
- package/dist/declarative-validation/profile/ids-assertion-contract.js.map +1 -0
- package/dist/declarative-validation/profile/index.d.ts +63 -2
- package/dist/declarative-validation/profile/index.d.ts.map +1 -1
- package/dist/declarative-validation/profile/index.js.map +1 -1
- package/dist/declarative-validation/profile/materialization.d.ts.map +1 -1
- package/dist/declarative-validation/profile/materialization.js +13 -10
- package/dist/declarative-validation/profile/materialization.js.map +1 -1
- package/dist/declarative-validation/profile/schema.d.ts.map +1 -1
- package/dist/declarative-validation/profile/schema.js +73 -12
- package/dist/declarative-validation/profile/schema.js.map +1 -1
- package/dist/declarative-validation/profile/syntax-version.d.ts +7 -0
- package/dist/declarative-validation/profile/syntax-version.d.ts.map +1 -0
- package/dist/declarative-validation/profile/syntax-version.js +11 -0
- package/dist/declarative-validation/profile/syntax-version.js.map +1 -0
- package/dist/declarative-validation/profile/text-format-contract.d.ts +4 -0
- package/dist/declarative-validation/profile/text-format-contract.d.ts.map +1 -0
- package/dist/declarative-validation/profile/text-format-contract.js +6 -0
- package/dist/declarative-validation/profile/text-format-contract.js.map +1 -0
- package/dist/declarative-validation/results/clone-rule-result.d.ts +6 -0
- package/dist/declarative-validation/results/clone-rule-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/clone-rule-result.js +125 -0
- package/dist/declarative-validation/results/clone-rule-result.js.map +1 -0
- package/dist/declarative-validation/results/create-result.d.ts +15 -0
- package/dist/declarative-validation/results/create-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/create-result.js +58 -0
- package/dist/declarative-validation/results/create-result.js.map +1 -0
- package/dist/declarative-validation/results/index.d.ts +3 -25
- package/dist/declarative-validation/results/index.d.ts.map +1 -1
- package/dist/declarative-validation/results/index.js +2 -1
- package/dist/declarative-validation/results/index.js.map +1 -1
- package/dist/declarative-validation/results/skipped-rule-result.d.ts +10 -0
- package/dist/declarative-validation/results/skipped-rule-result.d.ts.map +1 -0
- package/dist/declarative-validation/results/skipped-rule-result.js +18 -0
- package/dist/declarative-validation/results/skipped-rule-result.js.map +1 -0
- package/dist/declarative-validation/results/types.d.ts +77 -0
- package/dist/declarative-validation/results/types.d.ts.map +1 -0
- package/dist/declarative-validation/results/types.js +2 -0
- package/dist/declarative-validation/results/types.js.map +1 -0
- package/dist/declarative-validation/selectors/table-targets.d.ts +23 -0
- package/dist/declarative-validation/selectors/table-targets.d.ts.map +1 -1
- package/dist/declarative-validation/selectors/table-targets.js +52 -9
- package/dist/declarative-validation/selectors/table-targets.js.map +1 -1
- package/dist-bundled/markdown-engine-cli.mjs +27373 -0
- package/docs/contracts/api.md +79 -15
- package/docs/contracts/declarative-validation.md +462 -40
- package/fixtures/declarative-validation/examples/okf-v0.1/fail/invalid-log-date/log.md +5 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/fail/missing-concept-type/concepts/customer-metric.md +8 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/fail/non-root-index-frontmatter/datasets/index.md +7 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/pass/datasets/index.md +3 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/pass/datasets/sales.md +16 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/pass/index.md +8 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/pass/log.md +9 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/pass/playbooks/incident-response.md +17 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/profiles/concept.yaml +14 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/profiles/log.yaml +10 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/profiles/non-root-index.yaml +9 -0
- package/fixtures/declarative-validation/examples/okf-v0.1/profiles/root-index.yaml +12 -0
- package/package.json +9 -3
- package/scripts/install-markdown-engine-cli.sh +113 -0
- package/skills/profile-backed-markdown/SKILL.md +54 -0
- package/skills/profile-backed-markdown/assets/profiles/operational-spec.yaml +98 -0
- package/skills/profile-backed-markdown/references/repair-brief.md +14 -0
- package/skills/profile-backed-markdown/scripts/validate-profile-backed-markdown.mjs +590 -0
package/docs/contracts/api.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Public API Contract
|
|
2
2
|
|
|
3
|
-
Status: package
|
|
4
|
-
Last updated: 2026-05
|
|
3
|
+
Status: package 3.0.0, document contract 1.0.0
|
|
4
|
+
Last updated: 2026-06-05
|
|
5
5
|
|
|
6
6
|
This document defines the public `@jasonbelmonti/markdown-engine` package
|
|
7
|
-
contract for the `
|
|
7
|
+
contract for the `3.0.0` package release. The serialized rich IR document
|
|
8
8
|
contract remains `documentVersion: "1.0.0"`. The stable public surface is the
|
|
9
9
|
package export from `@jasonbelmonti/markdown-engine`, not internal adapter
|
|
10
10
|
modules or raw parser output. The 1.0 rich IR design is tracked in
|
|
@@ -22,6 +22,7 @@ The package root exports the API functions, helpers, and types from `src/api/**`
|
|
|
22
22
|
- `validateAnnotations(document, annotations)`
|
|
23
23
|
- `parseValidationProfile(input, options?)`
|
|
24
24
|
- `validateWithProfile(document, profile, options?)`
|
|
25
|
+
- `validateDocumentSet(entries, options?)`
|
|
25
26
|
|
|
26
27
|
The package root also exports the public result, document, diagnostic, config,
|
|
27
28
|
and function types declared in `src/api/**`.
|
|
@@ -72,7 +73,7 @@ normalize(parsed: ParsedMarkdown, options?: NormalizeOptions): NormalizeResult
|
|
|
72
73
|
```
|
|
73
74
|
|
|
74
75
|
`NormalizeOptions.documentVersion` selects the document contract version.
|
|
75
|
-
Package
|
|
76
|
+
Package 3.0 keeps omitted `documentVersion` defaulting to the rich IR
|
|
76
77
|
`"1.0.0"` contract. The retained `0.1.0`-compatible path is `"0.0.0"` and must
|
|
77
78
|
be requested explicitly.
|
|
78
79
|
|
|
@@ -227,7 +228,9 @@ validateWithProfile(
|
|
|
227
228
|
|
|
228
229
|
`parseValidationProfile` accepts YAML text or JSON-safe profile objects. The
|
|
229
230
|
top-level profile keys are `syntaxVersion`, `documentVersion`, and `rules`.
|
|
230
|
-
`syntaxVersion` must be `"markdown-engine.validation@v1"
|
|
231
|
+
`syntaxVersion` must be `"markdown-engine.validation@v1"` or
|
|
232
|
+
`"markdown-engine.validation@v2"`; v2 admission is limited to the existing flat
|
|
233
|
+
rule shape.
|
|
231
234
|
`documentVersion` is optional; when provided it must be `"0.0.0"` or
|
|
232
235
|
`"1.0.0"`. The parser preserves omission and does not inject a default into
|
|
233
236
|
the parsed profile.
|
|
@@ -247,6 +250,64 @@ defaults, so an omitted `documentVersion` and an explicit matching
|
|
|
247
250
|
`documentVersion` produce the same profile hash for the same document version
|
|
248
251
|
and rules.
|
|
249
252
|
|
|
253
|
+
## `validateDocumentSet`
|
|
254
|
+
|
|
255
|
+
Signature:
|
|
256
|
+
|
|
257
|
+
```ts
|
|
258
|
+
validateDocumentSet(
|
|
259
|
+
entries: readonly ValidateDocumentSetEntry[],
|
|
260
|
+
options?: ValidateDocumentSetOptions,
|
|
261
|
+
): ValidateDocumentSetResult
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
`validateDocumentSet` is a pure aggregate API for caller-supplied Markdown
|
|
265
|
+
documents and caller-supplied validation profiles. Each entry contains:
|
|
266
|
+
|
|
267
|
+
- `path`: caller-owned document path or stable identifier
|
|
268
|
+
- `markdown`: Markdown text to parse and normalize
|
|
269
|
+
- `profile`: YAML profile text, JSON-safe profile data, or parsed
|
|
270
|
+
`ValidationProfile`
|
|
271
|
+
- `profilePath`: optional caller-owned profile path or stable identifier for
|
|
272
|
+
profile diagnostics
|
|
273
|
+
|
|
274
|
+
The function processes entries in the supplied order and returns `entries` in
|
|
275
|
+
that same order. It does not read directories, expand globs, watch files, write
|
|
276
|
+
persistent state, add CLI behavior, classify OKF paths, or choose profiles for
|
|
277
|
+
callers. Consumers own discovery, routing, and IO.
|
|
278
|
+
|
|
279
|
+
For OKF-style bundles, `validateDocumentSet` stays a generic aggregation API.
|
|
280
|
+
Callers must classify each path before calling the function and provide the
|
|
281
|
+
profile for that caller-classified role. A non-reserved concept document can use
|
|
282
|
+
a concept profile that requires `type` frontmatter, the bundle-root `index.md`
|
|
283
|
+
can use a root-index profile that accepts the `okf_version: "0.1"` exception, a
|
|
284
|
+
non-root `index.md` can use a no-frontmatter profile, and `log.md` can use a
|
|
285
|
+
log profile that checks date headings.
|
|
286
|
+
|
|
287
|
+
The API does not infer those roles from paths.
|
|
288
|
+
|
|
289
|
+
`ValidateDocumentSetOptions` forwards supported document normalization and
|
|
290
|
+
validation options:
|
|
291
|
+
|
|
292
|
+
- `documentVersion`
|
|
293
|
+
- `preserveSourceLocations`
|
|
294
|
+
- `includeEvidence`
|
|
295
|
+
|
|
296
|
+
Each `ValidateDocumentSetEntryResult` contains:
|
|
297
|
+
|
|
298
|
+
- `path` and optional `profilePath`
|
|
299
|
+
- `parseDiagnostics`
|
|
300
|
+
- `normalizationDiagnostics`
|
|
301
|
+
- `profileDiagnostics`
|
|
302
|
+
- `validationDiagnostics`
|
|
303
|
+
- aggregate entry `diagnostics`
|
|
304
|
+
- `validationResult` when profile parsing succeeds without error-severity
|
|
305
|
+
diagnostics
|
|
306
|
+
|
|
307
|
+
Profile-stage failures on one entry do not stop later entries from processing.
|
|
308
|
+
The aggregate `valid` field is `false` when any aggregate diagnostic has
|
|
309
|
+
severity `error`; otherwise it is `true`.
|
|
310
|
+
|
|
250
311
|
## `serialize`
|
|
251
312
|
|
|
252
313
|
Signature:
|
|
@@ -258,6 +319,7 @@ serialize(
|
|
|
258
319
|
| NormalizeResult
|
|
259
320
|
| ValidationResult
|
|
260
321
|
| DeclarativeValidationResult
|
|
322
|
+
| ValidateDocumentSetResult
|
|
261
323
|
| EngineDocument
|
|
262
324
|
| AnnotationValidationResult,
|
|
263
325
|
options?: SerializeOptions,
|
|
@@ -309,7 +371,7 @@ code nodes with `kind: "fenced"`. Raw parser node objects are not public.
|
|
|
309
371
|
|
|
310
372
|
## 1.0 Contract
|
|
311
373
|
|
|
312
|
-
The final 1.0 document contract is selected by default in package
|
|
374
|
+
The final 1.0 document contract is selected by default in package 3.0, remains
|
|
313
375
|
available explicitly as `documentVersion: "1.0.0"`, and is checked with
|
|
314
376
|
`compatibilityMode: "default"`.
|
|
315
377
|
|
|
@@ -536,8 +598,8 @@ serialization behavior.
|
|
|
536
598
|
|
|
537
599
|
### Compatibility And Migration
|
|
538
600
|
|
|
539
|
-
The current package version is `
|
|
540
|
-
version remains `"1.0.0"`. Package
|
|
601
|
+
The current package version is `3.0.0`. The serialized document contract
|
|
602
|
+
version remains `"1.0.0"`. Package 3.0 selects that rich IR contract by
|
|
541
603
|
default for `normalize(parsed)`; callers may also request it explicitly with
|
|
542
604
|
`normalize(..., { documentVersion: "1.0.0" })`. Serialization gates check it
|
|
543
605
|
with `compatibilityMode: "default"`.
|
|
@@ -550,7 +612,7 @@ compatibility from the absence of rich IR fields.
|
|
|
550
612
|
Migration from the `0.1.0` document shape, or from pre-2.0 API callers that
|
|
551
613
|
depended on implicit legacy normalization, requires consumers to:
|
|
552
614
|
|
|
553
|
-
- use package
|
|
615
|
+
- use package 3.0's default `normalize(parsed)` rich IR output or request
|
|
554
616
|
`documentVersion: "1.0.0"` during normalization;
|
|
555
617
|
- read `target`, `sections`, `textSpans`, `tables`, `lists`, `links`,
|
|
556
618
|
`linkReferences`, and `source` from the normalized document instead of
|
|
@@ -609,10 +671,10 @@ exit with code `2`. Validation success exits with code `0`; validation or
|
|
|
609
671
|
normalization error diagnostics exit with code `1`. Validation JSON includes
|
|
610
672
|
`profile`, `ruleResults`, `diagnostics`, and `evidence`.
|
|
611
673
|
|
|
612
|
-
Semver classification: package
|
|
613
|
-
normalization output while retaining the document contract version
|
|
614
|
-
`"1.0.0"`.
|
|
615
|
-
expect the legacy `0.0.0` document shape
|
|
674
|
+
Semver classification: package 3.0 keeps the rich IR contract as the default
|
|
675
|
+
API normalization output while retaining the document contract version
|
|
676
|
+
`"1.0.0"`. The 2.0 migration remains applicable for API consumers that call
|
|
677
|
+
`normalize(parsed)` and expect the legacy `0.0.0` document shape: consume the
|
|
616
678
|
rich IR fields or pin `documentVersion: "0.0.0"` until the downstream consumer
|
|
617
679
|
is ready. CLI consumers can still pin `--document-version 0.0.0` for explicit
|
|
618
680
|
legacy output.
|
|
@@ -651,8 +713,10 @@ The `0.1.0` contract was review-gated by WP-2, MS-2, and MS-3 before first
|
|
|
651
713
|
publication. From the published `0.1.0` baseline forward, changes to public API
|
|
652
714
|
signatures, result fields, diagnostic schema, source-location semantics,
|
|
653
715
|
validation config semantics, or serialized output shape require
|
|
654
|
-
semantic-version classification. The
|
|
655
|
-
|
|
716
|
+
semantic-version classification. The 1.0 rich IR document contract is now the
|
|
717
|
+
retained default document contract for package 3.0, and the explicit legacy
|
|
718
|
+
`0.0.0` path remains the compatibility boundary for consumers that still need
|
|
719
|
+
the first package-line output shape.
|
|
656
720
|
|
|
657
721
|
The `@jasonbelmonti/markdown-engine` package boundary remains limited to
|
|
658
722
|
parsing, normalization, deterministic validation, diagnostics, and
|