feat(notion-react): experimental JSX-to-Notion-Markdown projection - #1099
feat(notion-react): experimental JSX-to-Notion-Markdown projection#1099schickling wants to merge 8 commits into
Conversation
#1097) Add renderToNotionMarkdown at the new @overeng/notion-react/markdown entry point: a read-only, pure, network-free projector that reuses the production buildCandidateTree pass and serializes the CandidateTree to a readable Notion-enhanced-Markdown body with typed diagnostics for lossy constructs. - dedicated serializer over the shared CandidateTree; spellings aligned with the pull-side dialect where sound (delegation to treeToMarkdown rejected: no diagnostics channel, wire-drift risk) - structured result { body, diagnostics }: unsupported-block, media-without-url, color-dropped, flattened - drop-with-diagnostics fidelity: blockKey absent from body, toggleable headings and child pages flatten with diagnostics, Raw blocks emit HTML-comment placeholders - composition test via @overeng/notion-md devDependency (renderNmdFile); production imports stay clean, no reverse coupling - golden tests across headings/rich text/lists/toggles/tables/code/callouts/ links/nesting + determinism check (17 new tests) - VRS: spec section, decision 0001, experiment 0001 (strict-profile clean) - refresh pnpm-deps FOD hashes staled by the lockfile change Closes #1097 Filed #1098 for spelling centralization when a second consumer lands.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 086dc06cd0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Storybook Previews
Report historyPR 1099 · 2026-08-22 11:33 UTC
PR 1099 · 2026-08-22 09:16 UTC
PR 1099 · 2026-08-22 08:43 UTC
PR 1099 · 2026-08-21 20:23 UTC
|
CI Measurementspartial - advisory gate - readiness
devenv / quality gates
nix / closures / packages
Unchanged / 0-impact measurements (16)These rows had compatible baseline data, but their semantic impact rounded to 0.00x because the movement was below the configured budget, below the noise floor, or inside the robust noise band. devenv / devenv cli
devenv / devenv shell
devenv / genie
devenv / quality gates
devenv / workspace setup
nix / closures / packages
Diagnostic / ungated measurements (7)source / effect-utils
devenv / devenv shell
All measurements
Previous runs
Source-of-truth JSON{
"schemaVersion": 1,
"title": "CI Measurements",
"status": "partial",
"gate": "advisory",
"readiness": "partial (17/26 enabled observations gateable)",
"commit": {
"shortSha": "0121708",
"sha": "0121708c89b3b64fce49f0eefe89abdfcd99ded0"
},
"run": {
"id": "32564330286",
"attempt": "1",
"url": "https://github.com/overengineeringstudio/effect-utils/actions/runs/32564330286"
},
"baseline": null,
"protocol": "devenv-perf-warm-median-v2",
"chart": {
"meaning": "semantic-impact",
"zeroImpactMeaning": "no actionable PR impact after budgets, noise floor, and robust evidence checks",
"svg": "https://raw.githubusercontent.com/overengineeringstudio/effect-utils/ci-measurement-assets/ci-measurements/pr-1099/0121708c89b3b64fce49f0eefe89abdfcd99ded0/run-32564330286-attempt-1/ci-measurements.svg",
"lightPng": "https://raw.githubusercontent.com/overengineeringstudio/effect-utils/ci-measurement-assets/ci-measurements/pr-1099/0121708c89b3b64fce49f0eefe89abdfcd99ded0/run-32564330286-attempt-1/ci-measurements.png",
"darkPng": "https://raw.githubusercontent.com/overengineeringstudio/effect-utils/ci-measurement-assets/ci-measurements/pr-1099/0121708c89b3b64fce49f0eefe89abdfcd99ded0/run-32564330286-attempt-1/ci-measurements-dark.png"
},
"measurements": [
{
"id": "task_check_quick_forced",
"label": "Forced check:quick",
"group": "devenv / quality gates",
"path": [
"devenv",
"quality gates",
"check:quick"
],
"groupPath": [
"devenv",
"quality gates"
],
"status": "pass",
"direction": "regressed",
"gateable": true,
"gateReason": "eligible",
"confidence": "paired_uncertain",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 17.046,
"current": 22.078,
"delta": 5.032,
"ratio": 1.2952012202276193,
"semanticImpactScore": 0.08213070515076856,
"semanticImpactKind": "below_warn_boundary",
"baselineSources": 3,
"currentSamples": 3,
"pairedSamples": 3,
"evidenceDeltaLower": 0.21,
"evidenceDeltaUpper": 3.025,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"workload": "forced-task-cache",
"taskCacheMode": "refresh",
"probe": "task_check_quick_forced",
"probeLabel": "Forced check:quick",
"status": 0,
"sampleCount": 6,
"warmupCount": 0,
"measuredSampleCount": 3,
"pairedSampleCount": 3,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "nix.closure.nar_size",
"label": "Total closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"megarepo",
"total",
"closure-size",
"nix closure"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 174113880,
"current": 174115928,
"delta": 2048,
"ratio": 1.0000117624166436,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10483712,
"evidenceDeltaUpper": 10487808,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total"
}
},
{
"id": "nix.closure.serialized_nar_size",
"label": "Total serialized NAR size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"megarepo",
"total",
"serialized-nar-size",
"nix closure diagnostics"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "regressed",
"gateable": true,
"gateReason": "eligible",
"confidence": "within_budget",
"comparisonMode": "diagnostic",
"unit": "bytes",
"baseline": 174113880,
"current": 174115928,
"delta": 2048,
"ratio": 1.0000117624166436,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -17409340,
"evidenceDeltaUpper": 17413436,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total",
"sizeKind": "nar"
}
},
{
"id": "source.lines",
"label": "Genie CI workflow helpers lines",
"group": "source / effect-utils",
"path": [
"source",
"effect-utils",
"genie",
"ci-workflow",
"source / ci"
],
"groupPath": [
"source",
"effect-utils"
],
"status": "pass",
"direction": "regressed",
"gateable": false,
"gateReason": "disabled",
"confidence": "diagnostic",
"comparisonMode": "budget",
"unit": "lines",
"baseline": 8374.5,
"current": 8863,
"delta": 488.5,
"ratio": 1.0583318407069078,
"semanticImpactScore": null,
"semanticImpactKind": "diagnostic",
"baselineSources": 6,
"currentSamples": 11,
"pairedSamples": 0,
"evidenceDeltaLower": -348.95000000000005,
"evidenceDeltaUpper": 1325.95,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"scope": "genie_ci_workflow"
}
},
{
"id": "source.lines",
"label": "Genie runtime lines",
"group": "source / effect-utils",
"path": [
"source",
"effect-utils",
"packages",
"genie",
"source / genie"
],
"groupPath": [
"source",
"effect-utils"
],
"status": "pass",
"direction": "regressed",
"gateable": false,
"gateReason": "disabled",
"confidence": "diagnostic",
"comparisonMode": "budget",
"unit": "lines",
"baseline": 27507.5,
"current": 27636,
"delta": 128.5,
"ratio": 1.0046714532400254,
"semanticImpactScore": null,
"semanticImpactKind": "diagnostic",
"baselineSources": 6,
"currentSamples": 95,
"pairedSamples": 0,
"evidenceDeltaLower": -2622.25,
"evidenceDeltaUpper": 2879.25,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"scope": "genie_runtime"
}
},
{
"id": "source.files",
"label": "Genie CI workflow helpers files",
"group": "source / effect-utils",
"path": [
"source",
"effect-utils",
"genie",
"ci-workflow",
"source / ci"
],
"groupPath": [
"source",
"effect-utils"
],
"status": "pass",
"direction": "regressed",
"gateable": false,
"gateReason": "disabled",
"confidence": "diagnostic",
"comparisonMode": "budget",
"unit": "count",
"baseline": 10.5,
"current": 11,
"delta": 0.5,
"ratio": 1.0476190476190477,
"semanticImpactScore": null,
"semanticImpactKind": "diagnostic",
"baselineSources": 6,
"currentSamples": 11,
"pairedSamples": 0,
"evidenceDeltaLower": -0.55,
"evidenceDeltaUpper": 1.55,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"scope": "genie_ci_workflow"
}
},
{
"id": "genie_check_task",
"label": "Genie check task",
"group": "devenv / genie",
"path": [
"devenv",
"genie"
],
"groupPath": [
"devenv",
"genie"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "within_budget",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 4.56,
"current": 4.699,
"delta": 0.13900000000000023,
"ratio": 1.030482456140351,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 5,
"currentSamples": 5,
"pairedSamples": 5,
"evidenceDeltaLower": 0.032,
"evidenceDeltaUpper": 0.078,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"probe": "genie_check_task",
"probeLabel": "Genie check task",
"status": 0,
"sampleCount": 11,
"warmupCount": 1,
"measuredSampleCount": 5,
"pairedSampleCount": 5,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "task_pnpm_install",
"label": "pnpm install task",
"group": "devenv / workspace setup",
"path": [
"devenv",
"workspace setup"
],
"groupPath": [
"devenv",
"workspace setup"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "within_budget",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 0.966,
"current": 0.86,
"delta": -0.10599999999999998,
"ratio": 0.8902691511387164,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 5,
"currentSamples": 5,
"pairedSamples": 5,
"evidenceDeltaLower": -0.069,
"evidenceDeltaUpper": -0.013,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"probe": "task_pnpm_install",
"probeLabel": "pnpm install task",
"status": 0,
"sampleCount": 11,
"warmupCount": 1,
"measuredSampleCount": 5,
"pairedSampleCount": 5,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "task_genie_run",
"label": "Genie run task",
"group": "devenv / genie",
"path": [
"devenv",
"genie"
],
"groupPath": [
"devenv",
"genie"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 1.804,
"current": 1.784,
"delta": -0.020000000000000018,
"ratio": 0.9889135254988913,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 5,
"currentSamples": 5,
"pairedSamples": 5,
"evidenceDeltaLower": -0.04,
"evidenceDeltaUpper": 0.046,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"probe": "task_genie_run",
"probeLabel": "Genie run task",
"status": 0,
"sampleCount": 11,
"warmupCount": 1,
"measuredSampleCount": 5,
"pairedSampleCount": 5,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "task_check_quick_warm",
"label": "Warm cached check:quick",
"group": "devenv / quality gates",
"path": [
"devenv",
"quality gates",
"check:quick"
],
"groupPath": [
"devenv",
"quality gates"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 8.175,
"current": 8.182,
"delta": 0.006999999999999673,
"ratio": 1.0008562691131497,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 5,
"currentSamples": 5,
"pairedSamples": 5,
"evidenceDeltaLower": -0.157,
"evidenceDeltaUpper": 0.051,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"workload": "cached-no-op",
"taskCacheMode": "warm",
"probe": "task_check_quick_warm",
"probeLabel": "Warm cached check:quick",
"status": 0,
"sampleCount": 11,
"warmupCount": 1,
"measuredSampleCount": 5,
"pairedSampleCount": 5,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "shell_eval_warm",
"label": "Warm shell eval",
"group": "devenv / devenv shell",
"path": [
"devenv",
"devenv shell"
],
"groupPath": [
"devenv",
"devenv shell"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 8.354,
"current": 8.359,
"delta": 0.005000000000000782,
"ratio": 1.000598515681111,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 5,
"currentSamples": 5,
"pairedSamples": 5,
"evidenceDeltaLower": -0.02,
"evidenceDeltaUpper": 0.017,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"probe": "shell_eval_warm",
"probeLabel": "Warm shell eval",
"status": 0,
"sampleCount": 11,
"warmupCount": 1,
"measuredSampleCount": 5,
"pairedSampleCount": 5,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "tasks_list",
"label": "devenv tasks list",
"group": "devenv / devenv cli",
"path": [
"devenv",
"devenv cli"
],
"groupPath": [
"devenv",
"devenv cli"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 0.04,
"current": 0.042,
"delta": 0.0020000000000000018,
"ratio": 1.05,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 9,
"currentSamples": 9,
"pairedSamples": 9,
"evidenceDeltaLower": -0.001,
"evidenceDeltaUpper": 0.001,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"probe": "tasks_list",
"probeLabel": "devenv tasks list",
"status": 0,
"sampleCount": 19,
"warmupCount": 1,
"measuredSampleCount": 9,
"pairedSampleCount": 9,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "processes_help",
"label": "devenv processes --help",
"group": "devenv / devenv cli",
"path": [
"devenv",
"devenv cli"
],
"groupPath": [
"devenv",
"devenv cli"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "paired",
"unit": "seconds",
"baseline": 0.02,
"current": 0.021,
"delta": 0.0010000000000000009,
"ratio": 1.05,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 9,
"currentSamples": 9,
"pairedSamples": 9,
"evidenceDeltaLower": -0.001,
"evidenceDeltaUpper": 0.002,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"probe": "processes_help",
"probeLabel": "devenv processes --help",
"status": 0,
"sampleCount": 19,
"warmupCount": 1,
"measuredSampleCount": 9,
"pairedSampleCount": 9,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
},
{
"id": "source.files",
"label": "Genie runtime files",
"group": "source / effect-utils",
"path": [
"source",
"effect-utils",
"packages",
"genie",
"source / genie"
],
"groupPath": [
"source",
"effect-utils"
],
"status": "pass",
"direction": "unchanged",
"gateable": false,
"gateReason": "disabled",
"confidence": "diagnostic",
"comparisonMode": "budget",
"unit": "count",
"baseline": 95,
"current": 95,
"delta": 0,
"ratio": 1,
"semanticImpactScore": null,
"semanticImpactKind": "diagnostic",
"baselineSources": 6,
"currentSamples": 95,
"pairedSamples": 0,
"evidenceDeltaLower": -9.5,
"evidenceDeltaUpper": 9.5,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"scope": "genie_runtime"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Nix sources closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"genie",
"buckets",
"nix-sources",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "nix-sources"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Nix sources closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"megarepo",
"buckets",
"nix-sources",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "nix-sources"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Nix sources closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"oxlint-npm",
"buckets",
"nix-sources",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "nix-sources"
}
},
{
"id": "source.files",
"label": "Nix workspace tools files",
"group": "source / effect-utils",
"path": [
"source",
"effect-utils",
"nix",
"workspace-tools",
"source / nix"
],
"groupPath": [
"source",
"effect-utils"
],
"status": "pass",
"direction": "unchanged",
"gateable": false,
"gateReason": "disabled",
"confidence": "diagnostic",
"comparisonMode": "budget",
"unit": "count",
"baseline": 16,
"current": 16,
"delta": 0,
"ratio": 1,
"semanticImpactScore": null,
"semanticImpactKind": "diagnostic",
"baselineSources": 6,
"currentSamples": 16,
"pairedSamples": 0,
"evidenceDeltaLower": -1.6,
"evidenceDeltaUpper": 1.6,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"scope": "nix_workspace_tools"
}
},
{
"id": "source.lines",
"label": "Nix workspace tools lines",
"group": "source / effect-utils",
"path": [
"source",
"effect-utils",
"nix",
"workspace-tools",
"source / nix"
],
"groupPath": [
"source",
"effect-utils"
],
"status": "pass",
"direction": "unchanged",
"gateable": false,
"gateReason": "disabled",
"confidence": "diagnostic",
"comparisonMode": "budget",
"unit": "lines",
"baseline": 4291,
"current": 4291,
"delta": 0,
"ratio": 1,
"semanticImpactScore": null,
"semanticImpactKind": "diagnostic",
"baselineSources": 6,
"currentSamples": 16,
"pairedSamples": 0,
"evidenceDeltaLower": -429.1,
"evidenceDeltaUpper": 429.1,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"scope": "nix_workspace_tools"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Node / pnpm closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"genie",
"buckets",
"node",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "node"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Node / pnpm closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"megarepo",
"buckets",
"node",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "node"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Node / pnpm closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"oxlint-npm",
"buckets",
"node",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "node"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Rust closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"genie",
"buckets",
"rust",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "rust"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Rust closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"megarepo",
"buckets",
"rust",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "rust"
}
},
{
"id": "nix.closure.bucket.nar_size",
"label": "Rust closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"oxlint-npm",
"buckets",
"rust",
"nix closure buckets"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "unknown",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "unknown",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 0,
"current": 0,
"delta": 0,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": "unknown",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "rust"
}
},
{
"id": "nix.closure.path_count",
"label": "Total closure path count",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"genie",
"total",
"path-count",
"nix closure"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "budget",
"unit": "count",
"baseline": 83,
"current": 83,
"delta": 0,
"ratio": 1,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10,
"evidenceDeltaUpper": 10,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total"
}
},
{
"id": "nix.closure.path_count",
"label": "Total closure path count",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"megarepo",
"total",
"path-count",
"nix closure"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "budget",
"unit": "count",
"baseline": 5,
"current": 5,
"delta": 0,
"ratio": 1,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10,
"evidenceDeltaUpper": 10,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total"
}
},
{
"id": "nix.closure.path_count",
"label": "Total closure path count",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"oxlint-npm",
"total",
"path-count",
"nix closure"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "budget",
"unit": "count",
"baseline": 8,
"current": 8,
"delta": 0,
"ratio": 1,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10,
"evidenceDeltaUpper": 10,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total"
}
},
{
"id": "nix.closure.nar_size",
"label": "Total closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"genie",
"total",
"closure-size",
"nix closure"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 612328280,
"current": 612328280,
"delta": 0,
"ratio": 1,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -12246565.6,
"evidenceDeltaUpper": 12246565.6,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total"
}
},
{
"id": "nix.closure.nar_size",
"label": "Total closure size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"oxlint-npm",
"total",
"closure-size",
"nix closure"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "budget",
"unit": "bytes",
"baseline": 159040112,
"current": 159040112,
"delta": 0,
"ratio": 1,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -10485760,
"evidenceDeltaUpper": 10485760,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total"
}
},
{
"id": "nix.closure.serialized_nar_size",
"label": "Total serialized NAR size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"genie",
"total",
"serialized-nar-size",
"nix closure diagnostics"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "diagnostic",
"unit": "bytes",
"baseline": 612328280,
"current": 612328280,
"delta": 0,
"ratio": 1,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -61232828,
"evidenceDeltaUpper": 61232828,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total",
"sizeKind": "nar"
}
},
{
"id": "nix.closure.serialized_nar_size",
"label": "Total serialized NAR size",
"group": "nix / closures / packages",
"path": [
"nix",
"closures",
"packages",
"oxlint-npm",
"total",
"serialized-nar-size",
"nix closure diagnostics"
],
"groupPath": [
"nix",
"closures",
"packages"
],
"status": "pass",
"direction": "unchanged",
"gateable": true,
"gateReason": "eligible",
"confidence": "noise_floor",
"comparisonMode": "diagnostic",
"unit": "bytes",
"baseline": 159040112,
"current": 159040112,
"delta": 0,
"ratio": 1,
"semanticImpactScore": 0,
"semanticImpactKind": "neutral",
"baselineSources": 6,
"currentSamples": 1,
"pairedSamples": 0,
"evidenceDeltaLower": -15904011.200000001,
"evidenceDeltaUpper": 15904011.200000001,
"pairedEvidenceQuantile": 0.25,
"dimensions": {
"bucket": "total",
"sizeKind": "nar"
}
},
{
"id": "shell_eval_traced",
"label": "Shell eval with OTEL trace",
"group": "devenv / devenv shell",
"path": [
"devenv",
"devenv shell"
],
"groupPath": [
"devenv",
"devenv shell"
],
"status": "missing_baseline",
"direction": "unknown",
"gateable": false,
"gateReason": "missing_baseline",
"confidence": "missing_baseline",
"comparisonMode": "historical",
"unit": "seconds",
"baseline": null,
"current": 117.078,
"delta": null,
"ratio": null,
"semanticImpactScore": null,
"semanticImpactKind": null,
"baselineSources": 0,
"currentSamples": 1,
"pairedSamples": null,
"evidenceDeltaLower": null,
"evidenceDeltaUpper": null,
"pairedEvidenceQuantile": null,
"dimensions": {
"probe": "shell_eval_traced",
"probeLabel": "Shell eval with OTEL trace",
"status": 0,
"sampleCount": 2,
"warmupCount": 0,
"measuredSampleCount": 1,
"pairedSampleCount": 1,
"pairedOrderProtocol": "balanced-seeded-alternating-v1",
"pairedOrderSeed": "32564330286-1-bfdf965a00686308c6b10f62f8c6a9e04a6c8a3c",
"measurementProtocol": "devenv-perf-warm-median-v2",
"aggregation": "median",
"phase": "warm",
"devenvRev": "2cf62a010000b70f15c78a72761fad7c9e6fb47a",
"otelServiceName": "devenv-perf-ci"
}
}
]
} |
…tion Review fixes (Codex P2s on #1099): - mentions: infer type from keys for type-less authored envelopes; never double-prefix '@' when plainText already carries it; read href from item level (response shape) - code fences: lengthen fence past embedded backtick runs (CommonMark) - callouts: diagnose external icon drops instead of fabricating default icon - toggleable headings: emit color-dropped before the early return VRS foundation: - requirements.md: A11 (offline fidelity reference), T10 (two spelling tables), R31-R36 projection constraint group - ontology.md: Language layer (projection/body/diagnostic/dialect/envelope, sync-vs-project leitwort) + structure diagram - spec section now traceable to R31-R36 User-facing docs: - concepts/markdown-projection.md: mental model, diagnostics table, fidelity matrix, .nmd composition - api.md: entry point + result shape - README.md: integrator reading path
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 2428b3836b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Missed in the initial lockfile-driven sweep; caught by CI nix-fod-check with the corrected hash printed in the job log.
- escape authored Markdown metacharacters in literal text runs (inline set + line-initial block markers) so '<Paragraph># literal</Paragraph>' stays a paragraph; $ deliberately left bare (documented) - preserve annotation frames wrapping mentions and inline equations (flattenRichText bakes them onto the item); color drops diagnosed - render span-array ChildPage titles from the normalized node.title spans instead of substituting Untitled - diagnose has_row_header loss (no GFM spelling) - diagnose empty toggleable headings (toggle affordance lost regardless of children) - report root <Page> metadata omission (belongs to .nmd envelope/page properties), keeping the projection loss-accounted per R33 27 module tests green; fidelity matrix updated in concepts doc.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 055615e0a9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- inline code: serialize from raw content with a delimiter run strictly longer than any embedded backticks (CommonMark renders backslashes literally inside code spans, so escaped cores displayed stray backslashes); padded when content starts/ends with a backtick - mentions without plainText: fall back to typed labels (@user/@page/ @database); href-less page/database mentions resolve a deterministic notion.so/<id> link offline so authored identity survives - metadata-free <Page> wrappers no longer emit the root-metadata diagnostic (buildCandidateTree records an empty rootPage object; diagnose only actual title/icon/cover fields) 30 module tests green; fidelity matrix updated.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a8bb2d991b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- paragraphs with nested blocks now render the children as sibling blocks (blank-line separated) with a flattened diagnostic instead of dropping them silently - list items (bulleted/numbered/to-do) insert a blank line before nested content so children parse as distinct blocks rather than lazy continuation of the item paragraph; quotes/callouts separate quoted children with a '>' line so they stay distinct paragraphs - explicit color='default' on callouts/headings no longer emits color-dropped (nothing to lose; matches inline text behavior) 33 module tests green.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 0121708c89
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
- callouts: absent icon stays absent instead of fabricating the default information icon; dead constant removed - mentions: escape plainText before interpolating into link syntax so authored '[Q3]' / '*ops*' labels survive verbatim - entity neutralization: escape ampersands that begin entity-like sequences (©, #, &#x..;) while leaving bare '&' untouched - media captions: no second round of bracket escaping after renderRichText (doubled backslashes); bookmark URL-as-label fallback still escaped once - tables: render each row exactly once so cell-level diagnostics are not duplicated across width/header/body derivation 37 module tests green.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 7a0f461005
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| }) | ||
|
|
||
| const withAnnotations = `${leading}${wrapped}${trailing}` | ||
| return item.text.link === null ? withAnnotations : `[${withAnnotations}](${item.text.link.url})` |
There was a problem hiding this comment.
Escape link destinations before emitting Markdown
When a valid href contains an unbalanced closing parenthesis, such as https://example.com/a)b, interpolating it directly produces [label](https://example.com/a)b), so the link ends early and part of the URL becomes visible text. Encode or safely angle-wrap Markdown destinations before interpolation; the same treatment should be applied consistently to the other URL-producing branches.
Useful? React with 👍 / 👎.
| // length, so the fence must be strictly longer than any run inside. | ||
| const longestRun = Math.max(0, ...[...code.matchAll(/`+/g)].map((m) => m[0].length)) | ||
| const fence = '`'.repeat(Math.max(3, longestRun + 1)) | ||
| return `${fence}${typeof props.language === 'string' ? props.language : ''}\n${code}\n${fence}` |
There was a problem hiding this comment.
Avoid adding a blank line to newline-terminated code
When <Code> content already ends in \n, this template appends another newline before the closing fence. For example, authored "x\n" becomes a fenced block containing x followed by an extra empty line, changing the literal code content; add the separator only when the rendered code does not already end with a newline.
Useful? React with 👍 / 👎.
| if (item.type === 'text') return item.text.content | ||
| if (item.type === 'equation') return item.equation.expression | ||
| return typeof item.plain_text === 'string' ? item.plain_text : '' |
There was a problem hiding this comment.
Diagnose annotations discarded inside code fences
When supported inline components such as <Bold>, <Color>, or <Link> occur inside <Code>, the candidate rich-text items retain those semantics, but this plain-text path discards every annotation and link without a diagnostic. Since fenced Markdown cannot preserve that formatting, emit a typed loss diagnostic rather than presenting this projection as lossless.
Useful? React with 👍 / 👎.
| return `[${label ?? 'Video'}](${url})` | ||
| case 'audio': | ||
| return `[${label ?? 'Audio'}](${url})` | ||
| case 'pdf': | ||
| return `[${label ?? 'PDF'}](${url})` | ||
| case 'file': | ||
| return `[${label ?? 'File'}](${url})` |
There was a problem hiding this comment.
Flatten linked captions before wrapping media links
When a video, audio, PDF, or file caption contains <Link>, renderRichText returns link syntax and this branch embeds it inside another link, for example [[source](caption-url)](video-url). Markdown does not support nested links, so parsers commonly preserve only the inner link and expose or misparse the outer syntax; flatten the caption link with a diagnostic or render the caption separately.
Useful? React with 👍 / 👎.
| case 'link_preview': { | ||
| const url = (mention.link_preview as { url?: unknown } | undefined)?.url | ||
| return typeof url === 'string' ? `[${plain}](${url})` : plain |
There was a problem hiding this comment.
Give link-preview mentions a visible fallback
When an authored link_preview mention omits the optional plainText, this returns [](url), which has no visible label and effectively removes the mention from the rendered sentence. Fresh evidence beyond the earlier mention fallback fix is that only user/page/database mentions received fallbacks; use the preview URL or a typed label here as well.
Useful? React with 👍 / 👎.
| const md = renderNode({ node, ordinal, state: opts.state }) | ||
| if (md !== '') out.push(md) |
There was a problem hiding this comment.
Diagnose empty paragraphs instead of dropping them
When the JSX contains an empty <Paragraph />, renderNode returns an empty fragment and this filter removes the block entirely, producing the same body and diagnostics as a document with no paragraph. Empty Notion paragraphs can represent deliberate blank blocks, so preserve a documented placeholder or emit a loss diagnostic instead of silently erasing them.
Useful? React with 👍 / 👎.
Closes #1097. Follow-up filed: #1098.
What
New
@overeng/notion-react/markdownentry point exposingrenderToNotionMarkdown(element)— a read-only, pure, network-free projection of authored JSX to a readable Notion-enhanced-Markdown body for review artifacts, CLI previews/exports, and optional.nmdenvelope composition.Design (recorded in docs/vrs/.decisions/0001)
buildCandidateTreepass (no HTML scraping, no mutation-op reconstruction). Delegation to the pull-sidetreeToMarkdownwas rejected: no diagnostics channel, silent unknown-type drop, hardcoded list numbering, non-GFM tables — and modifying it risks.nmdwire drift (notion-react/markdown: centralize block spellings with pull-side renderer when second consumer lands #1098 tracks eventual centralization).{ body, diagnostics }with typed kinds:unsupported-block,media-without-url,color-dropped,flattened. Nothing disappears silently; nothing fails hard.blockKeyabsent from the body; toggleable headings and child pages flatten with diagnostics;Rawblocks emit HTML-comment placeholders.renderNmdFile({frontmatter, body}); notion-md is a devDependency used only by the colocated composition test — production imports stay clean.@experimentalJSDoc + CHANGELOG note).Verification
check:allgreenNon-goals honored
No Markdown in any production sync chain, no CacheTree/sync-safety claims from Markdown equality, no second identity/cache/sync model, no round-trip fidelity promise.