@wildo-ai/saas-technical-doc 1.1.4 → 1.1.5

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.
Files changed (131) hide show
  1. package/dist/esm/build/csp-emit.d.ts.map +1 -1
  2. package/dist/esm/build/load-materialized-frontend-providers.d.ts.map +1 -1
  3. package/dist/esm/companion/application-documentation/application-administration-documentation.d.ts.map +1 -1
  4. package/dist/esm/companion/application-documentation/application-administration-documentation.js.map +1 -1
  5. package/dist/esm/companion/application-documentation/application-authentication-documentation.d.ts.map +1 -1
  6. package/dist/esm/companion/application-documentation/application-connection-documentation.d.ts +37 -0
  7. package/dist/esm/companion/application-documentation/application-connection-documentation.d.ts.map +1 -1
  8. package/dist/esm/companion/application-documentation/application-connection-documentation.js +46 -5
  9. package/dist/esm/companion/application-documentation/application-connection-documentation.js.map +1 -1
  10. package/dist/esm/companion/application-documentation/application-documentation-chapters.d.ts +101 -0
  11. package/dist/esm/companion/application-documentation/application-documentation-chapters.d.ts.map +1 -0
  12. package/dist/esm/companion/application-documentation/application-documentation-chapters.js +205 -0
  13. package/dist/esm/companion/application-documentation/application-documentation-chapters.js.map +1 -0
  14. package/dist/esm/companion/application-documentation/application-domain-documentation.d.ts.map +1 -1
  15. package/dist/esm/companion/application-documentation/application-domain-documentation.js.map +1 -1
  16. package/dist/esm/companion/application-documentation/application-integration-documentation.d.ts.map +1 -1
  17. package/dist/esm/companion/application-documentation/application-integration-documentation.js.map +1 -1
  18. package/dist/esm/companion/application-documentation/application-organization-role-documentation.d.ts.map +1 -1
  19. package/dist/esm/companion/application-documentation/application-organization-role-documentation.js.map +1 -1
  20. package/dist/esm/companion/application-documentation/application-organization-unit-resource-documentation.d.ts.map +1 -1
  21. package/dist/esm/companion/application-documentation/application-organization-unit-resource-documentation.js +3 -0
  22. package/dist/esm/companion/application-documentation/application-organization-unit-resource-documentation.js.map +1 -1
  23. package/dist/esm/companion/application-documentation/docs-api-origin-substitution.d.ts +34 -0
  24. package/dist/esm/companion/application-documentation/docs-api-origin-substitution.d.ts.map +1 -0
  25. package/dist/esm/companion/application-documentation/docs-api-origin-substitution.js +45 -0
  26. package/dist/esm/companion/application-documentation/docs-api-origin-substitution.js.map +1 -0
  27. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts +24 -10
  28. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.d.ts.map +1 -1
  29. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js +25 -15
  30. package/dist/esm/companion/application-documentation/technical-documentation-engine-content-bundle.js.map +1 -1
  31. package/dist/esm/companion/application-documentation/technical-documentation-operational-evidence.d.ts.map +1 -1
  32. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts +11 -3
  33. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.d.ts.map +1 -1
  34. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js +9 -2
  35. package/dist/esm/companion/application-documentation/technical-documentation-private-derivation.js.map +1 -1
  36. package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.d.ts.map +1 -1
  37. package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js +10 -4
  38. package/dist/esm/companion/application-documentation/technical-documentation-publication-policy.js.map +1 -1
  39. package/dist/esm/companion/content/application-consumer-documentation-content-loader.d.ts.map +1 -1
  40. package/dist/esm/companion/index.d.ts +2 -0
  41. package/dist/esm/companion/index.d.ts.map +1 -1
  42. package/dist/esm/companion/index.js +2 -0
  43. package/dist/esm/companion/index.js.map +1 -1
  44. package/dist/esm/companion/manual-controller-route-projection.d.ts.map +1 -1
  45. package/dist/esm/companion/manual-controller-route-projection.js.map +1 -1
  46. package/dist/esm/companion/openapi-generator.d.ts +8 -4
  47. package/dist/esm/companion/openapi-generator.d.ts.map +1 -1
  48. package/dist/esm/companion/openapi-generator.js +39 -17
  49. package/dist/esm/companion/openapi-generator.js.map +1 -1
  50. package/dist/esm/companion/operation-projection.schemas.d.ts +21 -1
  51. package/dist/esm/companion/operation-projection.schemas.d.ts.map +1 -1
  52. package/dist/esm/companion/operation-projection.schemas.js +11 -0
  53. package/dist/esm/companion/operation-projection.schemas.js.map +1 -1
  54. package/dist/esm/companion/publish-result.types.d.ts.map +1 -1
  55. package/dist/esm/companion/publish-result.types.js.map +1 -1
  56. package/dist/esm/companion/rendering/technical-documentation-authorized-bundle-reader.d.ts.map +1 -1
  57. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.d.ts.map +1 -1
  58. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js +8 -0
  59. package/dist/esm/companion/rendering/technical-documentation-docusaurus-renderer.js.map +1 -1
  60. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.d.ts.map +1 -1
  61. package/dist/esm/companion/rendering/technical-documentation-managed-tree-validator.js.map +1 -1
  62. package/dist/esm/companion/rendering/technical-documentation-openapi-renderer.d.ts.map +1 -1
  63. package/dist/esm/companion/rendering/technical-documentation-render-model.d.ts.map +1 -1
  64. package/dist/esm/companion/rendering/technical-documentation-render-model.js +26 -10
  65. package/dist/esm/companion/rendering/technical-documentation-render-model.js.map +1 -1
  66. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.d.ts.map +1 -1
  67. package/dist/esm/companion/rendering/technical-documentation-search-index-renderer.js.map +1 -1
  68. package/dist/esm/companion/technical-documentation-asset-path.d.ts.map +1 -1
  69. package/dist/esm/companion/technical-documentation-capture-execution-port.d.ts.map +1 -1
  70. package/dist/esm/companion/technical-documentation-capture-execution-port.js.map +1 -1
  71. package/dist/esm/companion/technical-documentation-diagram-definitions.d.ts.map +1 -1
  72. package/dist/esm/companion/technical-documentation-diagram-definitions.js.map +1 -1
  73. package/dist/esm/companion/technical-documentation-diagram-materializer.d.ts.map +1 -1
  74. package/dist/esm/companion/technical-documentation-diagram-materializer.js.map +1 -1
  75. package/dist/esm/companion/technical-documentation-placeholder-materializer.d.ts.map +1 -1
  76. package/dist/esm/companion/zod-to-openapi.d.ts.map +1 -1
  77. package/dist/esm/companion-exports.d.ts.map +1 -1
  78. package/dist/esm/config/define-tech-doc-config.d.ts.map +1 -1
  79. package/dist/esm/config/index.d.ts.map +1 -1
  80. package/dist/esm/config/wildo-tech-doc-config.schemas.d.ts.map +1 -1
  81. package/dist/esm/config/wildo-tech-doc-config.schemas.js.map +1 -1
  82. package/dist/esm/content/application-consumer-documentation-content-manifest.schemas.d.ts.map +1 -1
  83. package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts +18 -15
  84. package/dist/esm/content/application-consumer-documentation-content.techdoc.d.ts.map +1 -1
  85. package/dist/esm/content/application-consumer-documentation-content.techdoc.js +169 -61
  86. package/dist/esm/content/application-consumer-documentation-content.techdoc.js.map +1 -1
  87. package/dist/esm/content.exports.d.ts.map +1 -1
  88. package/dist/esm/index.d.ts.map +1 -1
  89. package/dist/esm/openapi/api-reference-link-index.d.ts.map +1 -1
  90. package/dist/esm/openapi/index.d.ts.map +1 -1
  91. package/dist/esm/openapi/openapi-generation-output.schemas.d.ts.map +1 -1
  92. package/dist/esm/openapi-reference-model.exports.d.ts.map +1 -1
  93. package/dist/esm/runtime/AuthExchangePage.d.ts.map +1 -1
  94. package/dist/esm/runtime/DocsAuthContext.d.ts +2 -2
  95. package/dist/esm/runtime/DocsAuthContext.d.ts.map +1 -1
  96. package/dist/esm/runtime/DocsAuthContext.js +8 -4
  97. package/dist/esm/runtime/DocsAuthContext.js.map +1 -1
  98. package/dist/esm/runtime/DocsFrontendProviders.d.ts +16 -0
  99. package/dist/esm/runtime/DocsFrontendProviders.d.ts.map +1 -0
  100. package/dist/esm/runtime/DocsFrontendProviders.js +26 -0
  101. package/dist/esm/runtime/DocsFrontendProviders.js.map +1 -0
  102. package/dist/esm/runtime/decode-jwt-claims.d.ts.map +1 -1
  103. package/dist/esm/runtime/docs-auth-client.d.ts.map +1 -1
  104. package/dist/esm/runtime/docs-auth-session.schemas.d.ts.map +1 -1
  105. package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts +1 -2
  106. package/dist/esm/runtime/frontend-provider-registry.techdoc.d.ts.map +1 -1
  107. package/dist/esm/runtime/frontend-provider-registry.techdoc.js.map +1 -1
  108. package/dist/esm/runtime/index.d.ts +2 -0
  109. package/dist/esm/runtime/index.d.ts.map +1 -1
  110. package/dist/esm/runtime/index.js +2 -0
  111. package/dist/esm/runtime/index.js.map +1 -1
  112. package/dist/esm/runtime/openapi-reference-conservation.d.ts.map +1 -1
  113. package/dist/esm/runtime/openapi-reference-model.d.ts +5 -0
  114. package/dist/esm/runtime/openapi-reference-model.d.ts.map +1 -1
  115. package/dist/esm/runtime/openapi-reference-model.js +5 -0
  116. package/dist/esm/runtime/openapi-reference-model.js.map +1 -1
  117. package/dist/esm/runtime/openapi-reference-view.js +1 -1
  118. package/dist/esm/runtime/openapi-reference-view.js.map +1 -1
  119. package/dist/esm/runtime/use-docs-auth-session.d.ts.map +1 -1
  120. package/dist/esm/runtime/use-docs-frontend-provider-registry.d.ts +1 -0
  121. package/dist/esm/runtime/use-docs-frontend-provider-registry.d.ts.map +1 -1
  122. package/dist/esm/runtime/use-docs-frontend-provider-registry.js +10 -2
  123. package/dist/esm/runtime/use-docs-frontend-provider-registry.js.map +1 -1
  124. package/dist/esm/runtime/use-docs-provider-scripts.d.ts +30 -0
  125. package/dist/esm/runtime/use-docs-provider-scripts.d.ts.map +1 -0
  126. package/dist/esm/runtime/use-docs-provider-scripts.js +40 -0
  127. package/dist/esm/runtime/use-docs-provider-scripts.js.map +1 -0
  128. package/dist/esm/runtime/use-docs-provider-sdks.d.ts.map +1 -1
  129. package/dist/esm/runtime/use-docs-provider-sdks.js.map +1 -1
  130. package/dist/tsconfig.build.tsbuildinfo +1 -1
  131. package/package.json +8 -24
@@ -78,20 +78,34 @@ export declare const APPLICATION_DOMAIN_RESOURCE_PAGE_UNIT_REF_PREFIX = "technic
78
78
  * silent gap, because a kind nobody authors looks exactly like a kind nobody needed (#474). RUNBOOK
79
79
  * now has one. CHANGE does not, and the reason is structural rather than editorial:
80
80
  *
81
- * A CHANGE unit is a record of what changed in ONE application, so only that application could
82
- * author it — and an application-authored unit cannot be routed. `pathForUnit` admits engine-
83
- * namespaced slugs and the reserved `unit/manages/` namespace, and refuses everything else with
84
- * "has no consumer navigation category". Application material reaches the site only as an ENGINE
85
- * unit carrying application-projected facts, never as an application-authored page. So the engine
86
- * cannot write a changelog it has no knowledge of, and the party that could has no door.
81
+ * A CHANGE unit is a record of what changed in ONE application, so only that application can
82
+ * author it. Until #874 that party had no door: an application-authored unit could not be routed.
83
+ * It now can — a chapter the application's documentation plan declares, authored in its
84
+ * specifications package and routed under `guides/` (`application-documentation-chapters.ts`) —
85
+ * so a CHANGE page has a producer, and it is the application.
87
86
  *
88
- * The member is therefore kept rather than retired: what is missing is a route for
89
- * application-authored units, not the concept. When that route exists, this entry is removed in the
90
- * same change — and `technical-documentation-engine-content-bundle.test.ts` fails until it is,
91
- * because the partition below is asserted total over the enum.
87
+ * The entry STAYS in this map, because this map describes the ENGINE catalogue and the partition
88
+ * test below is total over it: the engine still authors no CHANGE unit, and must not — it has no
89
+ * knowledge of what any one application changed. The reason text is what moved, from "no door" to
90
+ * "the door belongs to the application".
92
91
  */
93
92
  export declare const ENGINE_CONTENT_UNIT_KINDS_WITHOUT_PRODUCER: Readonly<Partial<Record<TechnicalDocumentationUnitKind, string>>>;
94
93
  export declare const ENGINE_CONTENT_UNIT_DEFINITIONS: Readonly<Record<string, EngineContentUnitDefinition>>;
94
+ /**
95
+ * The one Markdown-to-unit parser, shared by every tier that turns authored prose into a unit: the
96
+ * engine's own pages, and the chapters an application authors (#874). One parser means one rule for
97
+ * what a title, a summary and a section ARE — a second copy would let an application's guide and an
98
+ * engine page split the same text differently, and the difference would surface as a portal whose
99
+ * two halves summarize themselves by two conventions.
100
+ */
101
+ export declare function parseTechnicalDocumentationUnitMarkdown(markdown: string, unitRef: string): {
102
+ readonly title: string;
103
+ readonly summary: string;
104
+ readonly sections: readonly {
105
+ readonly heading: string;
106
+ readonly bodyMarkdown: string;
107
+ }[];
108
+ };
95
109
  /**
96
110
  * The facts only the application knows, which the companion measures and passes in.
97
111
  *
@@ -1 +1 @@
1
- {"version":3,"file":"technical-documentation-engine-content-bundle.d.ts","sourceRoot":"","sources":["../../../../src/companion/application-documentation/technical-documentation-engine-content-bundle.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,sCAAsC,EAC5C,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAGL,KAAK,0CAA0C,EAChD,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAGL,KAAK,uCAAuC,EAC7C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAGL,KAAK,kCAAkC,EACxC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,KAAK,0CAA0C,EAChD,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAEL,iCAAiC,EAKjC,qCAAqC,EAGrC,oCAAoC,EAEpC,KAAK,oCAAoC,EAEzC,8BAA8B,EAE9B,KAAK,gDAAgD,EACrD,KAAK,0CAA0C,EAG/C,KAAK,4BAA4B,EAClC,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAGL,KAAK,yCAAyC,EAC/C,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,qDAAqD,EAAE,MAAM,8DAA8D,CAAC;AAC1I,OAAO,EACL,qEAAqE,EAGtE,MAAM,2EAA2E,CAAC;AAKnF,OAAO,EAEL,KAAK,qDAAqD,EAC3D,MAAM,wDAAwD,CAAC;AAEhE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,SAAS,oCAAoC,EAAE,CAAC;IAC1E,QAAQ,CAAC,WAAW,EAAE,iCAAiC,CAAC;IACxD,QAAQ,CAAC,yBAAyB,EAAE,SAAS,gDAAgD,EAAE,CAAC;IAChG,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,0CAA0C,CAAA;KAAE,EAAE,CAAC;IAClI;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,qCAAqC,CAAC;IACjE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,oCAAoC,EAAE,CAAC;CAC1E;AAiED,sFAAsF;AACtF,MAAM,WAAW,6CAA6C;IAC5D,QAAQ,CAAC,SAAS,EAAE,GAAG,OAAO,qEAAqE,GAAG,MAAM,EAAE,CAAC;IAC/G,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAgFD;;;;;;;GAOG;AACH;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,qFAAqF;AACrF,eAAO,MAAM,gDAAgD,0CAA0C,CAAC;AAoCxG;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,0CAA0C,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAIxH,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAi2ChG,CAAC;AAyXH;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,6CAA6C,CAAC;IAC3E,QAAQ,CAAC,yBAAyB,CAAC,EAAE,qDAAqD,CAAC;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,sCAAsC,CAAC;IAC7D,QAAQ,CAAC,cAAc,CAAC,EAAE,0CAA0C,CAAC;IACrE,QAAQ,CAAC,cAAc,CAAC,EAAE,0CAA0C,CAAC;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,uCAAuC,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,kCAAkC,CAAC;CACtD;AAED;;;GAGG;AACH,wBAAgB,6CAA6C,CAC3D,MAAM,EAAE,qDAAqD,EAC7D,0BAA0B,EAAE,yCAAyC,EACrE,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAmC,EACxG,gBAAgB,GAAE,6BAAkC,GACnD,4BAA4B,EAAE,CA+LhC"}
1
+ {"version":3,"file":"technical-documentation-engine-content-bundle.d.ts","sourceRoot":"","sources":["../../../../../src/companion/application-documentation/technical-documentation-engine-content-bundle.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,sCAAsC,EAC5C,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAGL,KAAK,0CAA0C,EAChD,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAGL,KAAK,uCAAuC,EAC7C,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAGL,KAAK,kCAAkC,EACxC,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAGL,KAAK,0CAA0C,EAChD,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAEL,iCAAiC,EAKjC,qCAAqC,EAGrC,oCAAoC,EAEpC,KAAK,oCAAoC,EAEzC,8BAA8B,EAE9B,KAAK,gDAAgD,EACrD,KAAK,0CAA0C,EAG/C,KAAK,4BAA4B,EAClC,MAAM,uDAAuD,CAAC;AAC/D,OAAO,EAGL,KAAK,yCAAyC,EAC/C,MAAM,yCAAyC,CAAC;AAEjD,OAAO,KAAK,EAAE,qDAAqD,EAAE,MAAM,8DAA8D,CAAC;AAC1I,OAAO,EACL,qEAAqE,EAGtE,MAAM,2EAA2E,CAAC;AAKnF,OAAO,EAEL,KAAK,qDAAqD,EAC3D,MAAM,wDAAwD,CAAC;AAEhE,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,8BAA8B,CAAC;IAC9C,QAAQ,CAAC,eAAe,EAAE,SAAS,oCAAoC,EAAE,CAAC;IAC1E,QAAQ,CAAC,WAAW,EAAE,iCAAiC,CAAC;IACxD,QAAQ,CAAC,yBAAyB,EAAE,SAAS,gDAAgD,EAAE,CAAC;IAChG,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,0CAA0C,CAAA;KAAE,EAAE,CAAC;IAClI;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,qCAAqC,CAAC;IACjE;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,oCAAoC,EAAE,CAAC;CAC1E;AAiED,sFAAsF;AACtF,MAAM,WAAW,6CAA6C;IAC5D,QAAQ,CAAC,SAAS,EAAE,GAAG,OAAO,qEAAqE,GAAG,MAAM,EAAE,CAAC;IAC/G,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAgFD;;;;;;;GAOG;AACH;;;;;;GAMG;AACH,wBAAgB,oCAAoC,CAAC,kBAAkB,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,qFAAqF;AACrF,eAAO,MAAM,gDAAgD,0CAA0C,CAAC;AAoCxG;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,0CAA0C,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,8BAA8B,EAAE,MAAM,CAAC,CAAC,CAIxH,CAAC;AAEF,eAAO,MAAM,+BAA+B,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAi2ChG,CAAC;AAOH;;;;;;GAMG;AACH,wBAAgB,uCAAuC,CACrD,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd;IAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS;QAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE,CAEjJ;AAoXD;;;;;GAKG;AACH,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,6CAA6C,CAAC;IAC3E,QAAQ,CAAC,yBAAyB,CAAC,EAAE,qDAAqD,CAAC;IAC3F,QAAQ,CAAC,UAAU,CAAC,EAAE,sCAAsC,CAAC;IAC7D,QAAQ,CAAC,cAAc,CAAC,EAAE,0CAA0C,CAAC;IACrE,QAAQ,CAAC,cAAc,CAAC,EAAE,0CAA0C,CAAC;IACrE,QAAQ,CAAC,WAAW,CAAC,EAAE,uCAAuC,CAAC;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,kCAAkC,CAAC;CACtD;AAED;;;GAGG;AACH,wBAAgB,6CAA6C,CAC3D,MAAM,EAAE,qDAAqD,EAC7D,0BAA0B,EAAE,yCAAyC,EACrE,eAAe,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,2BAA2B,CAAC,CAAmC,EACxG,gBAAgB,GAAE,6BAAkC,GACnD,4BAA4B,EAAE,CAgMhC"}
@@ -174,21 +174,20 @@ const GENERATED_RESOURCE_UNIT_DEFINITION = Object.freeze({
174
174
  * silent gap, because a kind nobody authors looks exactly like a kind nobody needed (#474). RUNBOOK
175
175
  * now has one. CHANGE does not, and the reason is structural rather than editorial:
176
176
  *
177
- * A CHANGE unit is a record of what changed in ONE application, so only that application could
178
- * author it — and an application-authored unit cannot be routed. `pathForUnit` admits engine-
179
- * namespaced slugs and the reserved `unit/manages/` namespace, and refuses everything else with
180
- * "has no consumer navigation category". Application material reaches the site only as an ENGINE
181
- * unit carrying application-projected facts, never as an application-authored page. So the engine
182
- * cannot write a changelog it has no knowledge of, and the party that could has no door.
177
+ * A CHANGE unit is a record of what changed in ONE application, so only that application can
178
+ * author it. Until #874 that party had no door: an application-authored unit could not be routed.
179
+ * It now can — a chapter the application's documentation plan declares, authored in its
180
+ * specifications package and routed under `guides/` (`application-documentation-chapters.ts`) —
181
+ * so a CHANGE page has a producer, and it is the application.
183
182
  *
184
- * The member is therefore kept rather than retired: what is missing is a route for
185
- * application-authored units, not the concept. When that route exists, this entry is removed in the
186
- * same change — and `technical-documentation-engine-content-bundle.test.ts` fails until it is,
187
- * because the partition below is asserted total over the enum.
183
+ * The entry STAYS in this map, because this map describes the ENGINE catalogue and the partition
184
+ * test below is total over it: the engine still authors no CHANGE unit, and must not — it has no
185
+ * knowledge of what any one application changed. The reason text is what moved, from "no door" to
186
+ * "the door belongs to the application".
188
187
  */
189
188
  export const ENGINE_CONTENT_UNIT_KINDS_WITHOUT_PRODUCER = {
190
- [TechnicalDocumentationUnitKind.CHANGE]: 'A change record belongs to one application, and an application-authored unit has no route — `pathForUnit` '
191
- + 'admits only engine-namespaced slugs and the reserved `unit/manages/` namespace. Blocked on routing, not on authoring.',
189
+ [TechnicalDocumentationUnitKind.CHANGE]: 'A change record belongs to one application, so the engine cannot author it. Its producer is the application: '
190
+ + 'a CHANGE chapter in the documentation plan, authored in the specifications package and routed under `guides/` (#874).',
192
191
  };
193
192
  export const ENGINE_CONTENT_UNIT_DEFINITIONS = Object.freeze({
194
193
  'technical-documentation:unit/application-orientation': {
@@ -1568,6 +1567,16 @@ export const ENGINE_CONTENT_UNIT_DEFINITIONS = Object.freeze({
1568
1567
  ],
1569
1568
  },
1570
1569
  });
1570
+ /**
1571
+ * The one Markdown-to-unit parser, shared by every tier that turns authored prose into a unit: the
1572
+ * engine's own pages, and the chapters an application authors (#874). One parser means one rule for
1573
+ * what a title, a summary and a section ARE — a second copy would let an application's guide and an
1574
+ * engine page split the same text differently, and the difference would surface as a portal whose
1575
+ * two halves summarize themselves by two conventions.
1576
+ */
1577
+ export function parseTechnicalDocumentationUnitMarkdown(markdown, unitRef) {
1578
+ return parseEngineMarkdown(markdown, unitRef);
1579
+ }
1571
1580
  function parseEngineMarkdown(markdown, unitRef) {
1572
1581
  const lines = markdown.trim().split('\n');
1573
1582
  const titleLine = lines.shift();
@@ -1948,9 +1957,10 @@ export function projectEngineApplicationConsumerContentBundle(bundle, engineSpec
1948
1957
  *
1949
1958
  * So these units are projected whole, from the same domain fact the overview page uses. They are
1950
1959
  * still ENGINE units, and deliberately: the engine owns the page's shape, its sections and its
1951
- * words, while the application supplies only the subject. That is what keeps `pathForUnit`'s
1952
- * refusal of application-owned units intact — nothing here asks it to route a unit an
1953
- * application named.
1960
+ * words, while the application supplies only the subject. The pages whose WORDS an application
1961
+ * owns are its authored chapters, which enter through their own reserved namespace
1962
+ * (`application-documentation-chapters.ts`, #874) — not through here — so `pathForUnit` still
1963
+ * refuses any unit whose ref an application chose freely.
1954
1964
  */
1955
1965
  const generatedResourceUnits = (applicationFacts.domain?.resourcePages ?? []).map((page) => {
1956
1966
  const unitRef = applicationDomainResourcePageUnitRef(page.resourceIdentifier);