@tiinex/core 0.1.1

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 (517) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +31 -0
  3. package/README.md +45 -0
  4. package/package.json +176 -0
  5. package/src/actions/record.actions.js +312 -0
  6. package/src/adapters/adapter.contracts.js +143 -0
  7. package/src/adapters/archive/archive.adapter.js +502 -0
  8. package/src/adapters/archive/archive.portableChangeset.js +141 -0
  9. package/src/adapters/archive/archive.transport.js +124 -0
  10. package/src/artifacts/artifact.localDraft.js +27 -0
  11. package/src/artifacts/artifact.normalize.js +28 -0
  12. package/src/artifacts/artifact.parse.js +207 -0
  13. package/src/artifacts/artifact.record.js +83 -0
  14. package/src/audit/audit.run.js +103 -0
  15. package/src/audit/audit.summary.js +7 -0
  16. package/src/diagnostics/sourceBoundary.report.js +112 -0
  17. package/src/export/package.apply.js +349 -0
  18. package/src/export/package.builder.js +366 -0
  19. package/src/export/package.bytes.js +164 -0
  20. package/src/export/package.controlIntegrity.js +42 -0
  21. package/src/export/package.controlTopology.js +97 -0
  22. package/src/export/package.fileMap.js +174 -0
  23. package/src/export/package.manifest.js +401 -0
  24. package/src/export/package.preflight.js +204 -0
  25. package/src/export/package.sourceReference.js +81 -0
  26. package/src/export/package.workspaceContext.js +144 -0
  27. package/src/export/package.zip.js +128 -0
  28. package/src/export/tree.bundle.js +278 -0
  29. package/src/governance/governance.boundary.js +196 -0
  30. package/src/integrity/integrity.c14nV2.js +190 -0
  31. package/src/integrity/integrity.methodReference.js +73 -0
  32. package/src/integrity/integrity.validate.js +56 -0
  33. package/src/lineage/lineage.candidateResolution.js +46 -0
  34. package/src/lineage/lineage.githubIssueComment.js +106 -0
  35. package/src/lineage/lineage.githubIssueLocal.js +196 -0
  36. package/src/lineage/lineage.githubIssueTarget.js +89 -0
  37. package/src/lineage/lineage.integrity.js +133 -0
  38. package/src/lineage/lineage.materialPreference.js +26 -0
  39. package/src/lineage/lineage.model.js +63 -0
  40. package/src/lineage/lineage.parentAuthority.js +5 -0
  41. package/src/lineage/lineage.parentBinding.js +104 -0
  42. package/src/lineage/lineage.pathBasis.js +47 -0
  43. package/src/lineage/lineage.resolve.js +388 -0
  44. package/src/lineage/lineage.sourceScope.js +74 -0
  45. package/src/lineage/lineage.targetKeys.js +80 -0
  46. package/src/lineage/lineage.traverse.js +132 -0
  47. package/src/public/applicationProjection.js +236 -0
  48. package/src/public/companionResources.js +246 -0
  49. package/src/public/index.js +16 -0
  50. package/src/public/node.js +2 -0
  51. package/src/public/schemaAncestry.js +26 -0
  52. package/src/publication/publication.contract.js +196 -0
  53. package/src/publication/publication.preflight.js +159 -0
  54. package/src/publication/publication.targetContract.js +241 -0
  55. package/src/reingest/reingest.plan.js +162 -0
  56. package/src/release/plan.mjs +28 -0
  57. package/src/release/policy.mjs +100 -0
  58. package/src/release/run.mjs +74 -0
  59. package/src/schemas/capability.registry.js +226 -0
  60. package/src/schemas/companion.js +245 -0
  61. package/src/schemas/contracts.js +6 -0
  62. package/src/schemas/coordination/handoff/tiinex.handoff.v1.schema.js +14 -0
  63. package/src/schemas/coordination/handoff/tiinex.handoff.v1.schema.json +23 -0
  64. package/src/schemas/coordination/handoff/tiinex.handoff.v1.schema.runtime.json +4283 -0
  65. package/src/schemas/coordination/handoff/tiinex.handoff.v1.schema.source.js +9 -0
  66. package/src/schemas/coordination/project/tiinex.project.v1.schema.js +26 -0
  67. package/src/schemas/coordination/project/tiinex.project.v1.schema.json +23 -0
  68. package/src/schemas/coordination/project/tiinex.project.v1.schema.runtime.json +1985 -0
  69. package/src/schemas/coordination/project/tiinex.project.v1.schema.source.js +9 -0
  70. package/src/schemas/core/decision/tiinex.decision.v1.schema.js +14 -0
  71. package/src/schemas/core/decision/tiinex.decision.v1.schema.json +24 -0
  72. package/src/schemas/core/decision/tiinex.decision.v1.schema.runtime.json +1700 -0
  73. package/src/schemas/core/decision/tiinex.decision.v1.schema.source.js +9 -0
  74. package/src/schemas/core/evidence/tiinex.evidence.v1.capabilities.js +14 -0
  75. package/src/schemas/core/evidence/tiinex.evidence.v1.en.i18n.json +6 -0
  76. package/src/schemas/core/evidence/tiinex.evidence.v1.findings.js +9 -0
  77. package/src/schemas/core/evidence/tiinex.evidence.v1.presenter.js +1 -0
  78. package/src/schemas/core/evidence/tiinex.evidence.v1.schema.js +32 -0
  79. package/src/schemas/core/evidence/tiinex.evidence.v1.schema.json +24 -0
  80. package/src/schemas/core/evidence/tiinex.evidence.v1.schema.runtime.json +2184 -0
  81. package/src/schemas/core/evidence/tiinex.evidence.v1.schema.source.js +9 -0
  82. package/src/schemas/core/evidence/tiinex.evidence.v1.sv.i18n.json +6 -0
  83. package/src/schemas/core/evidence/tiinex.evidence.v1.transitions.js +1 -0
  84. package/src/schemas/core/evidence/tiinex.evidence.v1.validate.js +10 -0
  85. package/src/schemas/core/feedback/tiinex.feedback.v1.schema.js +14 -0
  86. package/src/schemas/core/feedback/tiinex.feedback.v1.schema.json +23 -0
  87. package/src/schemas/core/feedback/tiinex.feedback.v1.schema.runtime.json +1773 -0
  88. package/src/schemas/core/feedback/tiinex.feedback.v1.schema.source.js +9 -0
  89. package/src/schemas/core/interpretation/tiinex.interpretation.v1.capabilities.js +11 -0
  90. package/src/schemas/core/interpretation/tiinex.interpretation.v1.contract.js +40 -0
  91. package/src/schemas/core/interpretation/tiinex.interpretation.v1.en.i18n.json +9 -0
  92. package/src/schemas/core/interpretation/tiinex.interpretation.v1.findings.js +12 -0
  93. package/src/schemas/core/interpretation/tiinex.interpretation.v1.localMaterialization.js +89 -0
  94. package/src/schemas/core/interpretation/tiinex.interpretation.v1.presenter.js +8 -0
  95. package/src/schemas/core/interpretation/tiinex.interpretation.v1.schema.js +34 -0
  96. package/src/schemas/core/interpretation/tiinex.interpretation.v1.schema.json +23 -0
  97. package/src/schemas/core/interpretation/tiinex.interpretation.v1.schema.runtime.json +2029 -0
  98. package/src/schemas/core/interpretation/tiinex.interpretation.v1.schema.source.js +9 -0
  99. package/src/schemas/core/interpretation/tiinex.interpretation.v1.sv.i18n.json +9 -0
  100. package/src/schemas/core/interpretation/tiinex.interpretation.v1.transitions.js +1 -0
  101. package/src/schemas/core/interpretation/tiinex.interpretation.v1.validate.js +25 -0
  102. package/src/schemas/core/preservation/tiinex.preservation.v1.capabilities.js +14 -0
  103. package/src/schemas/core/preservation/tiinex.preservation.v1.en.i18n.json +6 -0
  104. package/src/schemas/core/preservation/tiinex.preservation.v1.findings.js +9 -0
  105. package/src/schemas/core/preservation/tiinex.preservation.v1.presenter.js +1 -0
  106. package/src/schemas/core/preservation/tiinex.preservation.v1.schema.js +31 -0
  107. package/src/schemas/core/preservation/tiinex.preservation.v1.schema.json +23 -0
  108. package/src/schemas/core/preservation/tiinex.preservation.v1.schema.runtime.json +2033 -0
  109. package/src/schemas/core/preservation/tiinex.preservation.v1.schema.source.js +9 -0
  110. package/src/schemas/core/preservation/tiinex.preservation.v1.sv.i18n.json +6 -0
  111. package/src/schemas/core/preservation/tiinex.preservation.v1.transitions.js +1 -0
  112. package/src/schemas/core/preservation/tiinex.preservation.v1.validate.js +10 -0
  113. package/src/schemas/core/relation/tiinex.relation.v1.capabilities.js +7 -0
  114. package/src/schemas/core/relation/tiinex.relation.v1.contract.js +3 -0
  115. package/src/schemas/core/relation/tiinex.relation.v1.en.i18n.json +4 -0
  116. package/src/schemas/core/relation/tiinex.relation.v1.findings.js +9 -0
  117. package/src/schemas/core/relation/tiinex.relation.v1.localMaterialization.js +153 -0
  118. package/src/schemas/core/relation/tiinex.relation.v1.presenter.js +3 -0
  119. package/src/schemas/core/relation/tiinex.relation.v1.schema.js +20 -0
  120. package/src/schemas/core/relation/tiinex.relation.v1.schema.json +23 -0
  121. package/src/schemas/core/relation/tiinex.relation.v1.schema.runtime.json +1668 -0
  122. package/src/schemas/core/relation/tiinex.relation.v1.schema.source.js +9 -0
  123. package/src/schemas/core/relation/tiinex.relation.v1.sv.i18n.json +4 -0
  124. package/src/schemas/core/relation/tiinex.relation.v1.transitions.js +1 -0
  125. package/src/schemas/core/relation/tiinex.relation.v1.validate.js +36 -0
  126. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.capabilities.js +14 -0
  127. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.contract.js +57 -0
  128. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.en.i18n.json +4 -0
  129. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.findings.js +13 -0
  130. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.presenter.js +3 -0
  131. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.schema.js +20 -0
  132. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.schema.json +24 -0
  133. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.schema.runtime.json +3315 -0
  134. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.schema.source.js +9 -0
  135. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.sv.i18n.json +4 -0
  136. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.transitions.js +1 -0
  137. package/src/schemas/core/relation/workspace/representation/tiinex.workspace.representation.v1.validate.js +78 -0
  138. package/src/schemas/core/signal/tiinex.signal.v1.schema.js +14 -0
  139. package/src/schemas/core/signal/tiinex.signal.v1.schema.json +23 -0
  140. package/src/schemas/core/signal/tiinex.signal.v1.schema.runtime.json +1733 -0
  141. package/src/schemas/core/signal/tiinex.signal.v1.schema.source.js +9 -0
  142. package/src/schemas/core/task/tiinex.task.v1.capabilities.js +11 -0
  143. package/src/schemas/core/task/tiinex.task.v1.contract.js +3 -0
  144. package/src/schemas/core/task/tiinex.task.v1.en.i18n.json +15 -0
  145. package/src/schemas/core/task/tiinex.task.v1.findings.js +18 -0
  146. package/src/schemas/core/task/tiinex.task.v1.localMaterialization.js +148 -0
  147. package/src/schemas/core/task/tiinex.task.v1.presenter.js +8 -0
  148. package/src/schemas/core/task/tiinex.task.v1.schema.js +35 -0
  149. package/src/schemas/core/task/tiinex.task.v1.schema.json +23 -0
  150. package/src/schemas/core/task/tiinex.task.v1.schema.runtime.json +1708 -0
  151. package/src/schemas/core/task/tiinex.task.v1.schema.source.js +9 -0
  152. package/src/schemas/core/task/tiinex.task.v1.sv.i18n.json +15 -0
  153. package/src/schemas/core/task/tiinex.task.v1.transitions.js +3 -0
  154. package/src/schemas/core/task/tiinex.task.v1.validate.js +41 -0
  155. package/src/schemas/core/topic/tiinex.topic.v1.capabilities.js +14 -0
  156. package/src/schemas/core/topic/tiinex.topic.v1.creation.js +46 -0
  157. package/src/schemas/core/topic/tiinex.topic.v1.en.i18n.json +8 -0
  158. package/src/schemas/core/topic/tiinex.topic.v1.findings.js +11 -0
  159. package/src/schemas/core/topic/tiinex.topic.v1.localMaterialization.js +135 -0
  160. package/src/schemas/core/topic/tiinex.topic.v1.presenter.js +1 -0
  161. package/src/schemas/core/topic/tiinex.topic.v1.schema.js +34 -0
  162. package/src/schemas/core/topic/tiinex.topic.v1.schema.json +23 -0
  163. package/src/schemas/core/topic/tiinex.topic.v1.schema.runtime.json +1699 -0
  164. package/src/schemas/core/topic/tiinex.topic.v1.schema.source.js +9 -0
  165. package/src/schemas/core/topic/tiinex.topic.v1.sv.i18n.json +8 -0
  166. package/src/schemas/core/topic/tiinex.topic.v1.transitions.js +31 -0
  167. package/src/schemas/core/topic/tiinex.topic.v1.validate.js +11 -0
  168. package/src/schemas/creation.capability.js +289 -0
  169. package/src/schemas/creation.contracts.js +334 -0
  170. package/src/schemas/creation.executionSnapshot.js +79 -0
  171. package/src/schemas/creation.factoryQualification.js +73 -0
  172. package/src/schemas/creation.renderer.js +244 -0
  173. package/src/schemas/creation.representation.js +279 -0
  174. package/src/schemas/creation.rootMetadata.js +6 -0
  175. package/src/schemas/creation.schemaReferences.js +65 -0
  176. package/src/schemas/discovery/finding/tiinex.discovery.finding.v1.schema.js +14 -0
  177. package/src/schemas/discovery/finding/tiinex.discovery.finding.v1.schema.json +23 -0
  178. package/src/schemas/discovery/finding/tiinex.discovery.finding.v1.schema.runtime.json +1873 -0
  179. package/src/schemas/discovery/finding/tiinex.discovery.finding.v1.schema.source.js +9 -0
  180. package/src/schemas/discovery/tiinex.discovery.v1.schema.js +14 -0
  181. package/src/schemas/discovery/tiinex.discovery.v1.schema.json +23 -0
  182. package/src/schemas/discovery/tiinex.discovery.v1.schema.runtime.json +1839 -0
  183. package/src/schemas/discovery/tiinex.discovery.v1.schema.source.js +9 -0
  184. package/src/schemas/generic.artifact.module.js +25 -0
  185. package/src/schemas/party/organization/tiinex.party.organization.v1.schema.js +26 -0
  186. package/src/schemas/party/organization/tiinex.party.organization.v1.schema.json +23 -0
  187. package/src/schemas/party/organization/tiinex.party.organization.v1.schema.runtime.json +2249 -0
  188. package/src/schemas/party/organization/tiinex.party.organization.v1.schema.source.js +9 -0
  189. package/src/schemas/party/role/tiinex.party.role.v1.schema.js +26 -0
  190. package/src/schemas/party/role/tiinex.party.role.v1.schema.json +24 -0
  191. package/src/schemas/party/role/tiinex.party.role.v1.schema.runtime.json +2091 -0
  192. package/src/schemas/party/role/tiinex.party.role.v1.schema.source.js +9 -0
  193. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.capabilities.js +14 -0
  194. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.en.i18n.json +4 -0
  195. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.findings.js +1 -0
  196. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.presenter.js +1 -0
  197. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.schema.js +29 -0
  198. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.schema.json +21 -0
  199. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.schema.runtime.json +2180 -0
  200. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.schema.source.js +9 -0
  201. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.sv.i18n.json +4 -0
  202. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.transitions.js +1 -0
  203. package/src/schemas/presentation/surface/tiinex.presentation.surface.v1.validate.js +1 -0
  204. package/src/schemas/reduction/tiinex.reduction.v1.schema.js +26 -0
  205. package/src/schemas/reduction/tiinex.reduction.v1.schema.json +23 -0
  206. package/src/schemas/reduction/tiinex.reduction.v1.schema.runtime.json +1733 -0
  207. package/src/schemas/reduction/tiinex.reduction.v1.schema.source.js +9 -0
  208. package/src/schemas/reference.shapes.js +33 -0
  209. package/src/schemas/registry.js +36 -0
  210. package/src/schemas/resolver.js +13 -0
  211. package/src/schemas/schema/module/tiinex.schema.module.v1.capabilities.js +14 -0
  212. package/src/schemas/schema/module/tiinex.schema.module.v1.en.i18n.json +4 -0
  213. package/src/schemas/schema/module/tiinex.schema.module.v1.findings.js +1 -0
  214. package/src/schemas/schema/module/tiinex.schema.module.v1.presenter.js +1 -0
  215. package/src/schemas/schema/module/tiinex.schema.module.v1.schema.js +29 -0
  216. package/src/schemas/schema/module/tiinex.schema.module.v1.schema.json +21 -0
  217. package/src/schemas/schema/module/tiinex.schema.module.v1.schema.runtime.json +2093 -0
  218. package/src/schemas/schema/module/tiinex.schema.module.v1.schema.source.js +9 -0
  219. package/src/schemas/schema/module/tiinex.schema.module.v1.sv.i18n.json +4 -0
  220. package/src/schemas/schema/module/tiinex.schema.module.v1.transitions.js +1 -0
  221. package/src/schemas/schema/module/tiinex.schema.module.v1.validate.js +1 -0
  222. package/src/schemas/schema.factory.descriptor.js +104 -0
  223. package/src/schemas/schema.githubSourceTarget.js +131 -0
  224. package/src/schemas/schema.identity.js +10 -0
  225. package/src/schemas/schema.reference.js +133 -0
  226. package/src/schemas/schema.source.js +239 -0
  227. package/src/schemas/tiinex.root.v1.capabilities.js +14 -0
  228. package/src/schemas/tiinex.root.v1.classify.js +55 -0
  229. package/src/schemas/tiinex.root.v1.en.i18n.json +24 -0
  230. package/src/schemas/tiinex.root.v1.fallback.js +84 -0
  231. package/src/schemas/tiinex.root.v1.findings.js +19 -0
  232. package/src/schemas/tiinex.root.v1.presenter.js +5 -0
  233. package/src/schemas/tiinex.root.v1.schema.js +29 -0
  234. package/src/schemas/tiinex.root.v1.schema.json +24 -0
  235. package/src/schemas/tiinex.root.v1.schema.runtime.json +1574 -0
  236. package/src/schemas/tiinex.root.v1.schema.source.js +9 -0
  237. package/src/schemas/tiinex.root.v1.sv.i18n.json +24 -0
  238. package/src/schemas/tiinex.root.v1.transitions.js +1 -0
  239. package/src/schemas/tiinex.root.v1.validate.js +36 -0
  240. package/src/schemas/validation/finding/tiinex.validation.finding.v1.schema.js +14 -0
  241. package/src/schemas/validation/finding/tiinex.validation.finding.v1.schema.json +23 -0
  242. package/src/schemas/validation/finding/tiinex.validation.finding.v1.schema.runtime.json +2027 -0
  243. package/src/schemas/validation/finding/tiinex.validation.finding.v1.schema.source.js +9 -0
  244. package/src/schemas/validation/method/tiinex.validation.method.v1.schema.js +14 -0
  245. package/src/schemas/validation/method/tiinex.validation.method.v1.schema.json +23 -0
  246. package/src/schemas/validation/method/tiinex.validation.method.v1.schema.runtime.json +1848 -0
  247. package/src/schemas/validation/method/tiinex.validation.method.v1.schema.source.js +9 -0
  248. package/src/schemas/validation/report/tiinex.validation.report.v1.schema.js +14 -0
  249. package/src/schemas/validation/report/tiinex.validation.report.v1.schema.json +23 -0
  250. package/src/schemas/validation/report/tiinex.validation.report.v1.schema.runtime.json +2015 -0
  251. package/src/schemas/validation/report/tiinex.validation.report.v1.schema.source.js +9 -0
  252. package/src/schemas/workspace/tiinex.workspace.v1.capabilities.js +12 -0
  253. package/src/schemas/workspace/tiinex.workspace.v1.en.i18n.json +7 -0
  254. package/src/schemas/workspace/tiinex.workspace.v1.findings.js +5 -0
  255. package/src/schemas/workspace/tiinex.workspace.v1.presenter.js +27 -0
  256. package/src/schemas/workspace/tiinex.workspace.v1.schema.js +30 -0
  257. package/src/schemas/workspace/tiinex.workspace.v1.schema.json +23 -0
  258. package/src/schemas/workspace/tiinex.workspace.v1.schema.runtime.json +1596 -0
  259. package/src/schemas/workspace/tiinex.workspace.v1.schema.source.js +9 -0
  260. package/src/schemas/workspace/tiinex.workspace.v1.sv.i18n.json +7 -0
  261. package/src/schemas/workspace/tiinex.workspace.v1.transitions.js +10 -0
  262. package/src/schemas/workspace/tiinex.workspace.v1.validate.js +10 -0
  263. package/src/sources/github/github.issueTarget.js +127 -0
  264. package/src/sources/origin.references.js +249 -0
  265. package/src/sources/source.explicitTargets.js +49 -0
  266. package/src/sources/transport.levels.js +107 -0
  267. package/src/tooling/portable/adapters/cli/cli.cold-start-input.js +34 -0
  268. package/src/tooling/portable/adapters/cli/cli.command-input.js +455 -0
  269. package/src/tooling/portable/adapters/cli/cli.common-author.js +249 -0
  270. package/src/tooling/portable/adapters/cli/cli.common-output.js +330 -0
  271. package/src/tooling/portable/adapters/cli/cli.editor-assistance.js +13 -0
  272. package/src/tooling/portable/adapters/cli/cli.ground-materialize.js +96 -0
  273. package/src/tooling/portable/adapters/cli/cli.ground-recovery.js +99 -0
  274. package/src/tooling/portable/adapters/cli/cli.handoff-manufacture.js +345 -0
  275. package/src/tooling/portable/adapters/cli/cli.handoff-sibling-allocation.js +31 -0
  276. package/src/tooling/portable/adapters/cli/cli.help.js +80 -0
  277. package/src/tooling/portable/adapters/cli/cli.land.js +13 -0
  278. package/src/tooling/portable/adapters/cli/cli.local-output.js +72 -0
  279. package/src/tooling/portable/adapters/cli/cli.material-policy.js +6 -0
  280. package/src/tooling/portable/adapters/cli/cli.operator-bridge.js +18 -0
  281. package/src/tooling/portable/adapters/cli/cli.reduction-input.js +14 -0
  282. package/src/tooling/portable/adapters/cli/cli.run.js +434 -0
  283. package/src/tooling/portable/adapters/llm/llm.entrypoint.js +34 -0
  284. package/src/tooling/portable/adapters/node/checkpoint.verify.js +267 -0
  285. package/src/tooling/portable/adapters/node/handoff.manufacture.bootstrap.js +109 -0
  286. package/src/tooling/portable/adapters/node/handoff.manufacture.enumeration.js +94 -0
  287. package/src/tooling/portable/adapters/node/handoff.manufacture.js +193 -0
  288. package/src/tooling/portable/adapters/node/handoff.manufacture.multiRoot.js +49 -0
  289. package/src/tooling/portable/adapters/node/handoff.manufacture.packageParent.js +130 -0
  290. package/src/tooling/portable/adapters/node/handoff.manufacture.requirements.js +353 -0
  291. package/src/tooling/portable/adapters/node/handoff.manufacture.scope.js +147 -0
  292. package/src/tooling/portable/adapters/node/workspaceCarrier.manufacture.js +62 -0
  293. package/src/tooling/portable/assets/asset.operations.js +170 -0
  294. package/src/tooling/portable/audit/audit.capability.js +119 -0
  295. package/src/tooling/portable/bootstrap/artifact.result.selfverify.mjs +109 -0
  296. package/src/tooling/portable/bootstrap/bootstrap.case.mjs +43 -0
  297. package/src/tooling/portable/bootstrap/tiinex.llm.bootstrap.md +814 -0
  298. package/src/tooling/portable/bootstrap/tiinex.llm.bootstrap.pointer.json +25 -0
  299. package/src/tooling/portable/checkpoint/portable.checkpoint.js +89 -0
  300. package/src/tooling/portable/conformance/checkpoint.qualification.js +271 -0
  301. package/src/tooling/portable/draft/draft.create.js +389 -0
  302. package/src/tooling/portable/draft/draft.crud.js +175 -0
  303. package/src/tooling/portable/draft/draft.exact.js +173 -0
  304. package/src/tooling/portable/draft/draft.operations.js +265 -0
  305. package/src/tooling/portable/draft/draft.qualification.js +45 -0
  306. package/src/tooling/portable/draft/draft.set.js +193 -0
  307. package/src/tooling/portable/draft/draft.validation-context.js +7 -0
  308. package/src/tooling/portable/editor/authoring.parent.js +37 -0
  309. package/src/tooling/portable/editor/editor.assistance.js +221 -0
  310. package/src/tooling/portable/editor/staged.validation.js +96 -0
  311. package/src/tooling/portable/engine.facade.js +468 -0
  312. package/src/tooling/portable/findings.js +92 -0
  313. package/src/tooling/portable/grounding/grounding.capsule.js +128 -0
  314. package/src/tooling/portable/grounding/grounding.continuity.js +283 -0
  315. package/src/tooling/portable/grounding/grounding.participantAuthority.js +20 -0
  316. package/src/tooling/portable/grounding/grounding.planningContext.js +34 -0
  317. package/src/tooling/portable/grounding/grounding.readiness.authority.js +17 -0
  318. package/src/tooling/portable/grounding/grounding.readiness.js +316 -0
  319. package/src/tooling/portable/grounding/grounding.readiness.support.js +245 -0
  320. package/src/tooling/portable/grounding/grounding.sourceEvidence.js +71 -0
  321. package/src/tooling/portable/grounding/grounding.workContext.js +72 -0
  322. package/src/tooling/portable/grounding/grounding.workProvenance.js +153 -0
  323. package/src/tooling/portable/handoff/carrierLineage.js +214 -0
  324. package/src/tooling/portable/handoff/carrierProfile.js +54 -0
  325. package/src/tooling/portable/handoff/carrierProjection.js +193 -0
  326. package/src/tooling/portable/handoff/carrierProjection.routeQualification.js +228 -0
  327. package/src/tooling/portable/handoff/carrierProjection.shared.js +7 -0
  328. package/src/tooling/portable/handoff/carrierProjection.workspaces.js +54 -0
  329. package/src/tooling/portable/handoff/coldConsumerEntrypoint.js +185 -0
  330. package/src/tooling/portable/handoff/coldStartQualification.contract.js +184 -0
  331. package/src/tooling/portable/handoff/coldStartQualification.grounding.js +392 -0
  332. package/src/tooling/portable/handoff/coldStartQualification.js +22 -0
  333. package/src/tooling/portable/handoff/coldStartQualification.materials.js +364 -0
  334. package/src/tooling/portable/handoff/coldStartQualification.observation.js +220 -0
  335. package/src/tooling/portable/handoff/coldStartQualification.run.js +81 -0
  336. package/src/tooling/portable/handoff/coldStartQualification.shared.js +57 -0
  337. package/src/tooling/portable/handoff/coldStartRolePointers.js +39 -0
  338. package/src/tooling/portable/handoff/contextAudit.js +247 -0
  339. package/src/tooling/portable/handoff/contracts/tiinex.handoff.package.v1.schema.md +409 -0
  340. package/src/tooling/portable/handoff/handoffAuthoringPlan.js +35 -0
  341. package/src/tooling/portable/handoff/handoffEndpointProjection.js +61 -0
  342. package/src/tooling/portable/handoff/handoffLeafProjection.js +91 -0
  343. package/src/tooling/portable/handoff/humanOutputPresentation.js +21 -0
  344. package/src/tooling/portable/handoff/manufacture.js +84 -0
  345. package/src/tooling/portable/handoff/materialClosure.archiveV2.binding.js +72 -0
  346. package/src/tooling/portable/handoff/materialClosure.archiveV2.direct.js +160 -0
  347. package/src/tooling/portable/handoff/materialClosure.archiveV2.indexes.js +36 -0
  348. package/src/tooling/portable/handoff/materialClosure.archiveV2.js +247 -0
  349. package/src/tooling/portable/handoff/materialClosure.archiveV2.projectionProvider.js +44 -0
  350. package/src/tooling/portable/handoff/materialClosure.archiveV2.workspace.js +226 -0
  351. package/src/tooling/portable/handoff/materialClosure.descriptor.js +169 -0
  352. package/src/tooling/portable/handoff/materialClosure.inputBinding.js +372 -0
  353. package/src/tooling/portable/handoff/materialClosure.inputBinding.support.js +62 -0
  354. package/src/tooling/portable/handoff/materialClosure.materialized.js +143 -0
  355. package/src/tooling/portable/handoff/materialClosure.materials.js +116 -0
  356. package/src/tooling/portable/handoff/materialClosure.package.js +181 -0
  357. package/src/tooling/portable/handoff/materialClosure.plan.js +204 -0
  358. package/src/tooling/portable/handoff/materialClosure.readiness.js +36 -0
  359. package/src/tooling/portable/handoff/materialClosure.requirements.js +137 -0
  360. package/src/tooling/portable/handoff/operatorContextProjection.js +105 -0
  361. package/src/tooling/portable/handoff/pointerEntrypoint.js +138 -0
  362. package/src/tooling/portable/handoff/qualifiedHandoffFixture.js +34 -0
  363. package/src/tooling/portable/handoff/recipientV2.artifactFirst.build.js +321 -0
  364. package/src/tooling/portable/handoff/recipientV2.artifactFirst.closure.js +126 -0
  365. package/src/tooling/portable/handoff/recipientV2.artifactFirst.inspect.js +194 -0
  366. package/src/tooling/portable/handoff/recipientV2.artifactFirst.materials.js +207 -0
  367. package/src/tooling/portable/handoff/recipientV2.artifactFirst.projection.js +69 -0
  368. package/src/tooling/portable/handoff/recipientV2.artifactFirst.roles.js +166 -0
  369. package/src/tooling/portable/handoff/recipientV2.artifactFirst.routes.js +113 -0
  370. package/src/tooling/portable/handoff/recipientV2.artifactFirst.shared.js +87 -0
  371. package/src/tooling/portable/handoff/recipientV2.artifactFirst.workspaces.js +160 -0
  372. package/src/tooling/portable/handoff/recipientV2.artifactFirstPhase1.js +44 -0
  373. package/src/tooling/portable/handoff/recipientV2.artifactInspection.js +55 -0
  374. package/src/tooling/portable/handoff/recipientV2.artifacts.js +174 -0
  375. package/src/tooling/portable/handoff/recipientV2.coldProjection.js +24 -0
  376. package/src/tooling/portable/handoff/recipientV2.delivery.js +48 -0
  377. package/src/tooling/portable/handoff/recipientV2.endpointRolePointers.js +179 -0
  378. package/src/tooling/portable/handoff/recipientV2.entryContract.js +28 -0
  379. package/src/tooling/portable/handoff/recipientV2.humanOutput.js +78 -0
  380. package/src/tooling/portable/handoff/recipientV2.inspect.helpers.js +218 -0
  381. package/src/tooling/portable/handoff/recipientV2.inspect.js +194 -0
  382. package/src/tooling/portable/handoff/recipientV2.inspect.pathToken.js +9 -0
  383. package/src/tooling/portable/handoff/recipientV2.inspect.projection.js +58 -0
  384. package/src/tooling/portable/handoff/recipientV2.inspect.workspaces.js +177 -0
  385. package/src/tooling/portable/handoff/recipientV2.lineage.js +142 -0
  386. package/src/tooling/portable/handoff/recipientV2.packageV1.build.js +147 -0
  387. package/src/tooling/portable/handoff/recipientV2.packageV1.constants.js +4 -0
  388. package/src/tooling/portable/handoff/recipientV2.packageV1.contract.js +101 -0
  389. package/src/tooling/portable/handoff/recipientV2.packageV1.inspect.helpers.js +126 -0
  390. package/src/tooling/portable/handoff/recipientV2.packageV1.inspect.js +185 -0
  391. package/src/tooling/portable/handoff/recipientV2.packageV1.js +12 -0
  392. package/src/tooling/portable/handoff/recipientV2.packageV1.shared.js +24 -0
  393. package/src/tooling/portable/handoff/recipientV2.packageV1.workspaceProjection.js +22 -0
  394. package/src/tooling/portable/handoff/recipientV2.pointer.js +40 -0
  395. package/src/tooling/portable/handoff/recipientV2.routeSelection.js +16 -0
  396. package/src/tooling/portable/handoff/recipientV2.topology.helpers.js +20 -0
  397. package/src/tooling/portable/handoff/recipientV2.topology.js +320 -0
  398. package/src/tooling/portable/handoff/recipientV2.topology.materials.js +70 -0
  399. package/src/tooling/portable/handoff/recipientV2.topology.workspaces.js +193 -0
  400. package/src/tooling/portable/handoff/recipientV2.transportManifest.js +123 -0
  401. package/src/tooling/portable/handoff/recipientV2.workspaceRepresentation.js +163 -0
  402. package/src/tooling/portable/handoff/routeArtifactConformance.js +130 -0
  403. package/src/tooling/portable/handoff/toolingBootstrap.js +67 -0
  404. package/src/tooling/portable/handoff/transportCompanion.js +175 -0
  405. package/src/tooling/portable/handoff/workspaceByteProvider.archive.js +95 -0
  406. package/src/tooling/portable/handoff/workspaceByteProvider.js +271 -0
  407. package/src/tooling/portable/handoff/workspaceCarrier.manufacture.js +93 -0
  408. package/src/tooling/portable/handoff/workspaceLandingPlan.js +142 -0
  409. package/src/tooling/portable/handoff/workspacePackageSources.js +105 -0
  410. package/src/tooling/portable/handoff/workspaceQualifiedReference.js +10 -0
  411. package/src/tooling/portable/handoff/workspaceSourceIdentity.js +52 -0
  412. package/src/tooling/portable/handoff/workspaceTargetConformance.js +134 -0
  413. package/src/tooling/portable/host/host.capabilities.js +181 -0
  414. package/src/tooling/portable/host/tool.bindings.js +357 -0
  415. package/src/tooling/portable/host/tool.receiptNormalization.js +141 -0
  416. package/src/tooling/portable/index.js +52 -0
  417. package/src/tooling/portable/input/node.input.js +184 -0
  418. package/src/tooling/portable/input/portable.input.js +249 -0
  419. package/src/tooling/portable/lifecycle/lifecycle.action.js +11 -0
  420. package/src/tooling/portable/lifecycle/lifecycle.material.js +173 -0
  421. package/src/tooling/portable/lifecycle/lifecycle.operations.js +34 -0
  422. package/src/tooling/portable/lifecycle/lifecycle.readiness.js +247 -0
  423. package/src/tooling/portable/lineage/lineage.integrity.apply.audit.js +22 -0
  424. package/src/tooling/portable/lineage/lineage.integrity.apply.evidence.js +36 -0
  425. package/src/tooling/portable/lineage/lineage.integrity.apply.js +306 -0
  426. package/src/tooling/portable/lineage/lineage.integrity.apply.structure.js +178 -0
  427. package/src/tooling/portable/lineage/lineage.integrity.plan.js +377 -0
  428. package/src/tooling/portable/lineage/lineage.integrity.projection.human.js +82 -0
  429. package/src/tooling/portable/lineage/lineage.integrity.projection.js +349 -0
  430. package/src/tooling/portable/lineage/lineage.operations.js +32 -0
  431. package/src/tooling/portable/lineage/lineage.print.js +398 -0
  432. package/src/tooling/portable/lineage/lineage.print.render.js +88 -0
  433. package/src/tooling/portable/lineage/lineage.print.utils.js +58 -0
  434. package/src/tooling/portable/lineage/lineage.publicationProviderReceipts.js +141 -0
  435. package/src/tooling/portable/lineage/lineage.publicationQualification.js +183 -0
  436. package/src/tooling/portable/lineage/lineage.search.js +301 -0
  437. package/src/tooling/portable/live/live.artifact.js +192 -0
  438. package/src/tooling/portable/live/live.export.js +107 -0
  439. package/src/tooling/portable/live/live.lineage.closure.js +71 -0
  440. package/src/tooling/portable/live/live.lineage.js +338 -0
  441. package/src/tooling/portable/live/live.protocol.js +181 -0
  442. package/src/tooling/portable/materialization/durable.materialize.js +162 -0
  443. package/src/tooling/portable/materialization/epistemic.plan.js +239 -0
  444. package/src/tooling/portable/materialization/loaded.parent.js +54 -0
  445. package/src/tooling/portable/materialization/materialization.facade.js +30 -0
  446. package/src/tooling/portable/operation.catalog.js +393 -0
  447. package/src/tooling/portable/operation.catalog.package.js +183 -0
  448. package/src/tooling/portable/operation.result.js +25 -0
  449. package/src/tooling/portable/orchestration/task.prepare.js +191 -0
  450. package/src/tooling/portable/output/artifact.result.package.js +308 -0
  451. package/src/tooling/portable/output/deterministic.zip.js +88 -0
  452. package/src/tooling/portable/output/node.artifact-set.js +223 -0
  453. package/src/tooling/portable/output/node.draft.js +41 -0
  454. package/src/tooling/portable/output/node.zip.js +39 -0
  455. package/src/tooling/portable/output/recipientV2.zip.js +59 -0
  456. package/src/tooling/portable/overview/blockingCue.js +16 -0
  457. package/src/tooling/portable/overview/operatingOverview.js +413 -0
  458. package/src/tooling/portable/package/generation.binding.js +314 -0
  459. package/src/tooling/portable/package/generation.binding.projection.js +128 -0
  460. package/src/tooling/portable/package/material.graph.js +236 -0
  461. package/src/tooling/portable/package/runtime.package.js +321 -0
  462. package/src/tooling/portable/package/schema.transition.companion.js +196 -0
  463. package/src/tooling/portable/package/semantic.package.graph.js +272 -0
  464. package/src/tooling/portable/package/semantic.package.js +203 -0
  465. package/src/tooling/portable/package/semantic.package.schema-resolution.js +158 -0
  466. package/src/tooling/portable/package/semantic.package.transition-registry.js +189 -0
  467. package/src/tooling/portable/package/semantic.package.types.js +18 -0
  468. package/src/tooling/portable/providers/schema.bootstrap.provenance.js +10 -0
  469. package/src/tooling/portable/providers/schema.provider.qualification.js +52 -0
  470. package/src/tooling/portable/providers/schema.providers.js +458 -0
  471. package/src/tooling/portable/publication/runtime.publication.js +53 -0
  472. package/src/tooling/portable/qualification.js +150 -0
  473. package/src/tooling/portable/reduction/reduction.composition.js +229 -0
  474. package/src/tooling/portable/reduction/reduction.eligibility.helpers.js +258 -0
  475. package/src/tooling/portable/reduction/reduction.eligibility.js +191 -0
  476. package/src/tooling/portable/reduction/reduction.operations.js +30 -0
  477. package/src/tooling/portable/reduction/reduction.preflight.js +85 -0
  478. package/src/tooling/portable/reduction/reduction.shared.js +173 -0
  479. package/src/tooling/portable/schema/bootstrap/canonical.pack.js +24 -0
  480. package/src/tooling/portable/schema/bootstrap/docs-3988951208eb9a8926e84ab42625d4b42fa00c2d/party/role/tiinex.party.role.v1.schema.md +289 -0
  481. package/src/tooling/portable/schema/bootstrap/docs-3988951208eb9a8926e84ab42625d4b42fa00c2d/validation/report/tiinex.validation.report.v1.schema.md +300 -0
  482. package/src/tooling/portable/schema/bootstrap/qualified-local-root/tiinex.root.v1.runtime-projection.json +48 -0
  483. package/src/tooling/portable/schema/bootstrap/qualified-local-root/tiinex.root.v1.schema.md +865 -0
  484. package/src/tooling/portable/schema/contract.compile.js +406 -0
  485. package/src/tooling/portable/schema/contract.compile.utils.js +9 -0
  486. package/src/tooling/portable/schema/contract.constraints.js +117 -0
  487. package/src/tooling/portable/schema/contract.envelope.validate.js +177 -0
  488. package/src/tooling/portable/schema/contract.field-domain.compile.js +399 -0
  489. package/src/tooling/portable/schema/contract.field-domain.js +247 -0
  490. package/src/tooling/portable/schema/contract.field-shape.compile.js +34 -0
  491. package/src/tooling/portable/schema/contract.inheritance.inline.js +103 -0
  492. package/src/tooling/portable/schema/contract.inheritance.js +210 -0
  493. package/src/tooling/portable/schema/contract.inheritance.record.js +76 -0
  494. package/src/tooling/portable/schema/contract.machine-shape.js +309 -0
  495. package/src/tooling/portable/schema/contract.project.js +81 -0
  496. package/src/tooling/portable/schema/contract.semantic-resolution.js +82 -0
  497. package/src/tooling/portable/schema/contract.validate.js +0 -0
  498. package/src/tooling/portable/schema/lexical.shape.v1.js +338 -0
  499. package/src/tooling/portable/schema/llm.companion.js +108 -0
  500. package/src/tooling/portable/schema/named.declarations.js +162 -0
  501. package/src/tooling/portable/schema/ordinary.contract.js +193 -0
  502. package/src/tooling/portable/schema/ordinary.fields.js +205 -0
  503. package/src/tooling/portable/schema/qualifiedLocalRoot.projection.js +70 -0
  504. package/src/tooling/portable/schema/qualifiedLocalRoot.runtime.js +170 -0
  505. package/src/tooling/portable/schema/schema.contract.js +465 -0
  506. package/src/tooling/portable/schema/schema.guide.js +326 -0
  507. package/src/tooling/portable/schema/schema.snapshot.js +119 -0
  508. package/src/tooling/portable/session/portable.session.js +145 -0
  509. package/src/tooling/portable/transfer/transfer.plan.js +102 -0
  510. package/src/transitions/record.transitions.js +484 -0
  511. package/src/transitions/transition.validate.js +129 -0
  512. package/src/validation/findings.js +76 -0
  513. package/src/validation/validateArtifact.js +216 -0
  514. package/src/workspaces/workspace.entrypointCapability.js +44 -0
  515. package/src/workspaces/workspace.materialRole.js +242 -0
  516. package/src/workspaces/workspace.recordPaths.js +426 -0
  517. package/tools/tiinex-portable.mjs +6 -0
@@ -0,0 +1,814 @@
1
+ # Tiinex Portable LLM Bootstrap
2
+
3
+ ## Purpose
4
+
5
+ This bootstrap gives an LLM a thin entrypoint to the same JavaScript parsing, schema capability, audit, lineage, creation-contract, and schema-companion logic used by `Tiinex/site`.
6
+
7
+ It also exposes capability-level host discovery, concrete host-tool binding and receipt normalization, schema providers, compact schema guides, bounded schema retrieval, loaded-lineage search/filtering, local draft creation/staging, draft validation, repair planning, durable-finding materialization, recoverable checkpoints, the current site runtime-package round trip, host-mediated asset analysis preparation, and explicit checkpoint qualification receipts so an LLM does not need to repeatedly reread every Markdown file in full or mistake an incomplete validation run for a qualified checkpoint.
8
+
9
+ It is not a second Tiinex runtime. It does not make a chat, IDE, CLI, MCP host, or LLM prompt the semantic authority for a Tiinex artifact.
10
+
11
+ Readable Markdown remains the fallback authority surface when JavaScript cannot run.
12
+
13
+ ## Startup Modes
14
+
15
+ The same workflow must survive different host arrangements:
16
+
17
+ ### Project source plus uploaded material
18
+
19
+ When this bootstrap or the portable repository is available as a project source, normalize only the explicitly uploaded Markdown, archive, and project-source material, then start with `discover-tooling` or `prepare-task`.
20
+
21
+ ### Qualified routed Handoff package
22
+
23
+ When a received carrier exposes the qualified recipient-facing Tiinex Handoff package surface, start at `001-1-READ-BEFORE-PROCEEDING.trace.md`. Before Tiinex Tooling is available, the host may perform only the bounded bootstrap exception: read the declared bootstrap node, extract `001-2-bootstrap.zip` into a writable runtime location, and make its Tooling entrypoint callable. Prefer a location that survives turns in the current runtime, but never treat that location as project or artifact authority. Do not manually unpack Workspace/cache payloads or perform broad ZIP/filesystem/repository archaeology. The Tooling entrypoint is exactly `runtime/tools/tiinex-portable.mjs` relative to the chosen extraction root; do not search/list the extracted runtime to discover it. Give the untouched original Handoff-package carrier to that entrypoint and use `orient-handoff-package` as the first semantic operation. Keep the outer Continue-from path opaque to native access. After orientation, use `ground <same-package.zip> --route <same-Continue-from>` as the one shared human/LLM decision-grounding path. Its bounded default receipt composes the selected Handoff authority, exact qualified Required Context identities, the selected-route declared-Parent leaf, a compact declared-Parent continuity-to-qualified-root proof, declared current-work frontier, blockers, and explicit unresolved evidence. Continue substantive bounded work only when `readiness.state` is `grounded-to-act`; `grounded-to-discuss` and `insufficient-grounding` must not be upgraded by generic inference. An apparent loaded root that still declares an unavailable Parent is not cold-start closure: follow `readiness.nextAction.recovery` exactly. If a bound exact repository-read host capability is available, use the projected `plan-host-action` request, normalize the host result through `accept-host-receipt`, then resume the same `ground` command with `--recovery <accepted-host-receipt.json>`; otherwise request exactly the named material from the Transport Operator. When an accepted pinned repository Parent declares a deterministic relative Parent, Tooling may derive only that exact sibling path from the accepted repository/commit/base-path context. For repeated recovery, call `accept-host-receipt --prior <previous-accepted.json>` so the newest accepted result explicitly carries all prior accepted recovery material; pass only that newest cumulative result back to the same `ground --recovery` seam. Never broaden search or treat fetched material as verified before lineage identity/integrity qualification. Re-run the same `ground` command with `--include-required-context <requirement-id,name|all>` only when exact qualified Required Context body text is needed. No external qualification schema, Tooling source inspection, `--help`/operation discovery, context-audit detour, or separate `ground-cold-consumer` call is required before this decision grounding. Native host tools remain valid execution mechanics after Tiinex takeover on already-resolved ordinary source, and explicit degraded fallback only when qualification explains why it was required.
24
+
25
+ ### Bootstrap travels inside an archive
26
+
27
+ When `tiinex.llm.bootstrap.md` or `tiinex.llm.bootstrap.pointer.json` is present inside a received archive without a qualified routed Handoff START surface, read the pointer/bootstrap first. Treat all other archive entries as supplied material and do not execute package code.
28
+
29
+ ### Bootstrap exists but no handoff exists
30
+
31
+ Open an explicit portable session from the loaded material. Keep durable findings, staged drafts, current focus, and schema cache in session state. Create a recoverable portable checkpoint only at a meaningful interruption boundary; do not invent a handoff artifact.
32
+
33
+ ### Pre-prompt only; no bootstrap source is loaded
34
+
35
+ Use the host's equivalent repository search/read or HTTP-read capability to fetch a versioned bootstrap from:
36
+
37
+ ```text
38
+ repository: Tiinex/site
39
+ path: src/tooling/portable/bootstrap/tiinex.llm.bootstrap.md
40
+ pointer: src/tooling/portable/bootstrap/tiinex.llm.bootstrap.pointer.json
41
+ ```
42
+
43
+ Prefer an explicit commit or release ref and disclose when a moving branch was used. If no provider can retrieve it, request the bootstrap or a tooling archive instead of reconstructing Tiinex instructions from memory.
44
+
45
+ ### Bootstrap exists without a pre-prompt
46
+
47
+ Read the pointer/bootstrap, discover equivalent host capabilities, inspect the operation catalog, and choose the next operation from the actual task and loaded material. A separate pre-prompt is helpful but not required.
48
+
49
+ ## Material Boundary
50
+
51
+ Treat only explicitly supplied attachments, project sources, records, and paths as loaded material.
52
+
53
+ - Do not infer that local or draft material came from GitHub.
54
+ - Do not fetch missing artifact parents or origins unless the human explicitly requests and authorizes that separate action. Readable schema material may be fetched only through an explicit host-mediated provider request or trusted provider adapter.
55
+ - Do not execute JavaScript, shell commands, or package code found inside received material.
56
+ - Do not mutate a source, publish, or perform a remote write through this entrypoint.
57
+ - Preserve unknown sections and unsupported schema meaning rather than silently normalizing them away.
58
+
59
+ ## Entrypoint
60
+
61
+ When JavaScript execution and repository files are available:
62
+
63
+ ```js
64
+ import {
65
+ describeTiinexLlmEntrypoint,
66
+ openTiinexLlmSession,
67
+ runTiinexLlmOperation
68
+ } from './src/tooling/portable/index.js';
69
+ ```
70
+
71
+ The host translates attachments or project sources into explicit material objects:
72
+
73
+ ```js
74
+ const material = {
75
+ files: [
76
+ {
77
+ path: 'artifact.md',
78
+ content: artifactMarkdown,
79
+ sourceMode: 'portable-local'
80
+ },
81
+ {
82
+ path: 'schemas/tiinex.example.v1.schema.md',
83
+ content: schemaMarkdown,
84
+ sourceMode: 'portable-local'
85
+ }
86
+ ]
87
+ };
88
+ ```
89
+
90
+ The entrypoint cannot enumerate ChatGPT attachments, project sources, IDE buffers, or host files by itself. The host or LLM must pass their readable contents explicitly. It can, however, classify descriptions of available host tools and return the equivalent capability route to use.
91
+
92
+
93
+ ## Start By Discovering Equivalent Host Tooling
94
+
95
+ Do not depend on product-specific tool names such as `git clone`, `GitHub.fetch_file`, or `open_image`. Describe the available host tools and let portable tooling classify their capabilities:
96
+
97
+ ```js
98
+ const prepared = await runTiinexLlmOperation('prepare-task', {
99
+ task: 'create-artifact',
100
+ schemaId: 'tiinex.example.v1',
101
+ ...material,
102
+ tools: hostToolDescriptions
103
+ });
104
+ ```
105
+
106
+ Or inspect only the host profile:
107
+
108
+ ```js
109
+ await runTiinexLlmOperation('discover-tooling', {
110
+ tools: [
111
+ { name: 'repository.search', description: 'Search files in a repository.' },
112
+ { name: 'repository.read', description: 'Read one repository file.' },
113
+ { name: 'archive.extract', description: 'Extract a zip entry.' },
114
+ { name: 'vision.image', description: 'Analyze an image.' }
115
+ ]
116
+ });
117
+ ```
118
+
119
+ Capabilities are normalized into attachment/project-source access, filesystem/archive access, repository search/read/write availability, process execution, multimodal reading, local/remote mutation availability, artifact return, human confirmation, authentication request, and copyable-text presentation. Provider, host, and the current session capability instance are reported separately; a provider name alone never grants a capability or authority. Capability advertisement is not exercised-capability evidence. Remote writes remain unauthorized unless the human explicitly authorizes a separate adapter action. Keep lineage leaf/topology, the qualified workflow/current frontier, and Task lifecycle state separate; discovery of one does not establish the others.
120
+
121
+ `prepare-task` can orchestrate:
122
+
123
+ ```text
124
+ read-schema
125
+ create-artifact
126
+ validate-draft
127
+ search-lineage
128
+ analyze-asset
129
+ materialize-findings
130
+ qualify-checkpoint
131
+ checkpoint
132
+ package
133
+ ```
134
+
135
+ It returns one explicit `nextAction`, such as collecting missing inputs, calling a host repository provider, creating a local draft, repairing findings, staging, or exposing an asset to host vision.
136
+
137
+ ## Project Artifacted Work Lifecycle Without Inventing Status
138
+
139
+ When one exact qualified controlling Task must be evaluated for work progression, use the shared read-only `project-lifecycle-readiness` operation. Supply the exact material, controlling Task, and explicit upstream-qualified normalized facts required by the operation instead of deriving lifecycle truth from prose or labels. The result deliberately keeps three surfaces separate: derived `readiness`, authoritative `retest`, and explicit `closure`.
140
+
141
+ The intended cycle is `failed criteria -> bounded child work -> qualified convergence -> ready-for-retest -> authoritative re-test -> explicit closure or more bounded work`. `ready-for-retest` never means pass, and pass never means closure. Missing or ambiguous lineage, current representative/currentness, criteria coverage, validation method, re-test/closure currentness, or governing authority remains `unresolved`. Direct qualified Task-to-Task Parent continuity may establish the bounded child-work scope; Parent is not generalized into dependency, acceptance, readiness, project, or organization semantics. Qualified Reduction material may contribute only as an explicitly normalized current representative/re-test-input carrier within its declared carry-forward/loss boundary; it is never completion proof.
142
+
143
+ CLI, LLM, Viewer, and VS Code consumers should consume this same normalized operation result and must not create consumer-local lifecycle heuristics from Root `Status`, arbitrary lifecycle strings, Validation Report existence, authorship/human presence, filenames, timestamps, branch/file state, descendant count, Reduction count, or cleanup.
144
+
145
+ ## Qualify Cold-start Behavior Separately From Recovery
146
+
147
+ Use `describe-cold-start-ingress` only when the contract itself needs inspection. For ordinary routed-Handoff continuation, the normal post-orientation path is `ground <handoff-package.zip> --route <Continue-from>` for both humans and LLMs. Use `qualify-cold-start <handoff-package.zip> --route <Continue-from> --pre-takeover minimal-bootstrap-only|none|native-archaeology` only when the cold-start process itself must be qualified or measured: it generates orientation/grounding receipts and attributes declared pre-takeover host behavior separately. `--evidence evidence.json` remains available for an externally captured or instrumented observation trace. Portable Tooling cannot independently observe native-host actions that happened before Tooling takeover, so caller-declared host evidence must never be presented as independent proof. A correct eventual answer after broad native archaeology is `recovered-not-preferred`, not a preferred-path pass.
148
+
149
+ For ordinary model-facing decision grounding, use the same `ground` invocation a human uses. Its default receipt keeps Required Context and ancestor bodies out while retaining exact requirement identities, paths, and compact continuity proof state; `ground ... --include-required-context all` or an exact requirement selector adds only requested Required Context bodies. `qualify-cold-start ... --summary` remains a bounded process-qualification receipt and must not be taught as a second normal grounding path. A receipt that omits Required Context bodies is not proof that the model has read those bodies.
150
+
151
+ `ground-cold-consumer` does not assume that one chat channel equals one human identity or that every Handoff is one-shot execution. Declare multiple participants, identities, Roles/capacities, contributions, current speaker attribution, and interaction mode when known; preserve unknown/unverified attribution explicitly. Missing current Role material may degrade a bounded `To Kind: role` endpoint without inventing a Role artifact or silently invalidating the Handoff.
152
+
153
+ When Tooling is unavailable, model the turn as degraded capture: preserve contribution/speaker attribution, make no Tooling-dependent mutation or authority claim, and require later Tooling-capable condensation/qualification for durable artifacts.
154
+
155
+ `project-cold-start-host` is a non-authoritative projection suitable for CLI/LLM/Viewer/IDE bootstrap guidance. It is traceable to portable operations, schema ids, and capability bindings and must not become a provider-specific semantic fork.
156
+
157
+ ## Bind Capabilities To Concrete Host Tools
158
+
159
+ `discover-tooling` reports both capability availability and ranked concrete tool bindings. Use `plan-host-action` when the next step must leave the JavaScript runtime and be executed by the host:
160
+
161
+ ```js
162
+ const plan = await runTiinexLlmOperation('plan-host-action', {
163
+ action: 'repository-schema-resolution',
164
+ tools: hostToolDescriptions,
165
+ request: providerRequest
166
+ });
167
+ ```
168
+
169
+ A plan includes selected tool ids/names, alternatives, generic argument templates, expected normalized results, and a receipt contract. Adapt the generic template to the selected host tool's real argument schema; do not invent unsupported parameters.
170
+
171
+ After the host call, return an explicit receipt rather than passing opaque raw output directly into Tiinex logic:
172
+
173
+ ```js
174
+ const accepted = await runTiinexLlmOperation('accept-host-receipt', {
175
+ plan,
176
+ receipt: {
177
+ schema: 'tiinex.portable.host-action-receipt.v1',
178
+ actionId: plan.actionId,
179
+ action: plan.action,
180
+ steps: [{
181
+ stepId: plan.steps[0].stepId,
182
+ toolId: plan.steps[0].tool.id,
183
+ status: 'completed',
184
+ normalized: { /* explicit result matching the receipt contract */ }
185
+ }]
186
+ }
187
+ });
188
+ ```
189
+
190
+ Repository material becomes `providerResponses`; local/archive material remains local; image/PDF descriptions remain generated interpretations and are not source evidence. Missing repository commits are disclosed as moving-ref qualification. Remote writes remain blocked unless explicitly authorized by the human.
191
+
192
+ ## Qualify The Actual Checkpoint
193
+
194
+ Use `describe-checkpoint-gate` to inspect the fixed gates for `portable`, `source-clean`, or `release` profiles without executing anything:
195
+
196
+ ```js
197
+ await runTiinexLlmOperation('describe-checkpoint-gate', { profile: 'source-clean' });
198
+ ```
199
+
200
+ The pure portable operation `qualify-checkpoint` accepts explicit `tiinex.portable.validation-receipt.v1` results. It checks required gates, package/checkpoint identity, portable source fingerprints, dependency/install reproducibility metadata, and private dogfood-evidence boundaries. It never runs shell commands and never upgrades a technical gate receipt into browser parity or a canonical release claim.
201
+
202
+ A trusted local Node host may execute the fixed gate list through:
203
+
204
+ ```bash
205
+ node tools/tiinex-portable-verify.mjs --profile source-clean --output portable-checkpoint-report.json
206
+ ```
207
+
208
+ Profiles:
209
+
210
+ ```text
211
+ portable → portable source syntax + aggregate portable suite
212
+ source-clean → portable + shared validation + UI shape + UC001 + metrics + storage scan + focused typecheck
213
+ release → source-clean + runtime smoke + public build + public output check
214
+ ```
215
+
216
+ The Node verifier hashes the complete portable source set and operation catalog, emits command receipts, and passes them through the same pure qualifier. Missing dependencies produce an incomplete/blocked release qualification rather than a false pass. Current dependency pinning, lockfile/installer mismatch, or checkpoint identity drift remain visible diagnostics and are not repaired by this adapter.
217
+
218
+ Private manual corpora may be listed as private evidence, but `private: true` together with `embedded: true` is a hard qualification error.
219
+
220
+ ## Resolve Unknown Schemas Through Providers
221
+
222
+ Provider order is deterministic:
223
+
224
+ ```text
225
+ already loaded schema material
226
+ → explicit serializable schema cache
227
+ → host/provider responses already supplied
228
+ → local directory or Git checkout
229
+ → archive
230
+ → host repository connector
231
+ → explicit HTTP provider
232
+ → preserve-only
233
+ ```
234
+
235
+ List the current choices:
236
+
237
+ ```js
238
+ await runTiinexLlmOperation('list-material-providers', {
239
+ ...material,
240
+ tools: hostToolDescriptions,
241
+ schemaCache
242
+ });
243
+ ```
244
+
245
+ Resolve one schema or its readable parent chain:
246
+
247
+ ```js
248
+ const resolved = await runTiinexLlmOperation('resolve-schema-chain-material', {
249
+ ...material,
250
+ schemaId: 'tiinex.example.v1',
251
+ schemaCache,
252
+ tools: hostToolDescriptions
253
+ });
254
+ ```
255
+
256
+ When a connector exists but cannot be invoked inside the JavaScript sandbox, the result is not a dead end. It returns a self-describing `providerRequest` containing repository, ref, search queries, expected paths, required response shape, and the next operation. The LLM uses its equivalent host repository tools, then supplies the result explicitly:
257
+
258
+ ```js
259
+ await runTiinexLlmOperation('resolve-schema-material', {
260
+ schemaId: 'tiinex.example.v1',
261
+ providerResponses: [{
262
+ providerId: 'host-repository',
263
+ files: [{
264
+ path: '.topics/.schemas/.../tiinex.example.v1.schema.md',
265
+ content: fetchedMarkdown,
266
+ source: {
267
+ repository: 'Tiinex/docs',
268
+ ref: 'master',
269
+ commit: resolvedCommit,
270
+ path: '.topics/.schemas/.../tiinex.example.v1.schema.md',
271
+ authority: 'canonical-core'
272
+ }
273
+ }]
274
+ }]
275
+ });
276
+ ```
277
+
278
+ Filename matches are insufficient. The supplied schema must declare the requested `Current Schema`. Registered repository/commit/path bindings are compared when available. A provider never gains authority merely because it is remote.
279
+
280
+ The returned cache is explicit and serializable. Reuse it through `schemaCache` or `session.withSchemaCache(...)`; do not rely on hidden process memory.
281
+
282
+ ## Start With Bounded Operations
283
+
284
+ ```js
285
+ await runTiinexLlmOperation('inspect', material);
286
+ await runTiinexLlmOperation('audit', material);
287
+ await runTiinexLlmOperation('resolve-capabilities', {
288
+ schemaId: 'tiinex.example.v1',
289
+ capability: 'validate'
290
+ });
291
+ ```
292
+
293
+ All operation results are JSON-serializable and expose qualification, findings, and source boundaries.
294
+
295
+ When using the Node/filesystem CLI against a directory, prefer bounded receipts before requesting full record/audit bodies:
296
+
297
+ ```bash
298
+ node tools/tiinex-portable.mjs inspect ./received --summary --phase-timing
299
+ node tools/tiinex-portable.mjs audit ./received --summary --phase-timing
300
+ node tools/tiinex-portable.mjs search-lineage ./received --query "mobile overflow" --relation leaf --summary --phase-timing
301
+ node tools/tiinex-portable.mjs resolve-lineage ./received --depth 3 --direction both --summary --phase-timing
302
+ ```
303
+
304
+ The summary projection preserves status, counts, finding summary, error/warning detail, and requested phase timing while omitting body-scale record/audit/lineage projections. Omit `--summary` only when detailed evidence is actually required. Broad directory grounding quarantines Site `.topics/development` by default; use `--include-legacy-topics` or target that subtree explicitly when historical material is required. ZIP/carrier ingress and manufacture remain full-fidelity.
305
+
306
+ Inside a Site checkout, use the bounded current-source search before an unbounded repository text dump:
307
+
308
+ ```bash
309
+ npm run tooling:search -- --query "recipient topology" --limit 20
310
+ ```
311
+
312
+ That search reports total match cardinality while bounding returned snippets and excludes historical fixture bytes by default; use `--include-legacy-fixtures` only when those exact historical fixtures are part of the task.
313
+
314
+ ## Search And Filter Loaded Lineage
315
+
316
+ Use `search-lineage` before reading every artifact body.
317
+
318
+ ```js
319
+ const search = await runTiinexLlmOperation('search-lineage', {
320
+ ...material,
321
+ query: 'mobile toolbar overflow',
322
+ filters: {
323
+ schemaIds: ['tiinex.evidence.v1', 'tiinex.topic.v1'],
324
+ relation: 'leaf',
325
+ hasContinuityContext: true,
326
+ searchFields: ['title', 'summary', 'body'],
327
+ limit: 20
328
+ }
329
+ });
330
+ ```
331
+
332
+ Search can filter by:
333
+
334
+ ```text
335
+ schema id
336
+ parent schema id
337
+ source mode
338
+ path prefix
339
+ root / leaf / intermediate Parent-lineage role
340
+ integrity presence
341
+ continuity-context presence
342
+ finding severity
343
+ exact / partial / fallback qualification
344
+ ```
345
+
346
+ Traversal-scoped search:
347
+
348
+ ```js
349
+ await runTiinexLlmOperation('search-lineage', {
350
+ ...material,
351
+ query: 'decision',
352
+ scope: 'ancestors',
353
+ startId: 'artifact.md',
354
+ maxDepth: 8
355
+ });
356
+ ```
357
+
358
+ Search is loaded-only. It does not fetch missing ancestors or infer edges. Root/leaf filtering uses semantic Parent edges; Origin recovery hints are not promoted to Parent edges.
359
+
360
+ ## Schema Guide First, Full Schema On Demand
361
+
362
+ For schema-specific work, request a compact guide before reading the full schema:
363
+
364
+ ```js
365
+ const guide = await runTiinexLlmOperation('schema-guide', {
366
+ ...material,
367
+ schemaId: 'tiinex.example.v1',
368
+ task: 'create',
369
+ detail: 'compact'
370
+ });
371
+ ```
372
+
373
+ The guide can contain:
374
+
375
+ ```text
376
+ purpose
377
+ cache key
378
+ capability qualification
379
+ required unconditional inputs
380
+ required sections and fields
381
+ conditional requirements
382
+ schema-specific authoring steps
383
+ hard rules
384
+ common failures
385
+ validation plan
386
+ recommended next retrieval
387
+ ```
388
+
389
+ Read only relevant schema sections when needed:
390
+
391
+ ```js
392
+ await runTiinexLlmOperation('read-schema-section', {
393
+ ...material,
394
+ schemaId: 'tiinex.example.v1',
395
+ sections: ['Artifact Creation Contract', 'Minimal Example']
396
+ }, {
397
+ maxChars: 12000
398
+ });
399
+ ```
400
+
401
+ Recommended retrieval order:
402
+
403
+ ```text
404
+ 0. qualification and capabilities
405
+ 1. compact schema guide
406
+ 2. relevant validation/creation sections
407
+ 3. selected examples
408
+ 4. full readable schema only when ambiguity remains
409
+ ```
410
+
411
+ A guide cache key changes when the schema basis, guide compiler, task/detail, or companion version changes. A host may reuse the guide while the cache key is stable.
412
+
413
+ ## Optional Schema-Specific LLM Companion
414
+
415
+ A schema may provide non-authoritative LLM hints:
416
+
417
+ ```js
418
+ const llmCompanions = {
419
+ 'tiinex.evidence.v1': {
420
+ schema: 'tiinex.llm.schema-companion.v1',
421
+ schemaId: 'tiinex.evidence.v1',
422
+ version: '1',
423
+ tasks: {
424
+ create: {
425
+ purpose: 'Create bounded evidence without promoting it to truth.',
426
+ authoringSteps: [
427
+ 'Separate preserved material from interpretation.'
428
+ ],
429
+ hardRules: [
430
+ 'Do not call evidence proof.'
431
+ ],
432
+ commonFailures: [
433
+ 'Omitting provenance limits.'
434
+ ],
435
+ prioritySections: [
436
+ 'Artifact Creation Contract'
437
+ ],
438
+ retrievalHints: [
439
+ 'read:Interpretation Boundaries'
440
+ ]
441
+ }
442
+ }
443
+ }
444
+ };
445
+
446
+ await runTiinexLlmOperation('schema-guide', {
447
+ ...material,
448
+ schemaId: 'tiinex.evidence.v1',
449
+ task: 'create',
450
+ llmCompanions
451
+ });
452
+ ```
453
+
454
+ Companion hints may prioritize, explain, and identify common mistakes. They must not redefine canonical required fields, allowed values, or validation rules.
455
+
456
+ Resolution order:
457
+
458
+ ```text
459
+ direct llmCompanion
460
+ → supplied llmCompanions collection
461
+ → supplied `<schema-id>.llm.json` companion data
462
+ → registered schema module llmCompanion/llm property
463
+ → generic contract compiler
464
+ ```
465
+
466
+ Data-only companion files may travel beside schemas in an attachment or package. Received JavaScript companion files are never executed; JavaScript companions must already be wired into a trusted site build.
467
+
468
+ ## Plan, Draft, Validate, Repair
469
+
470
+ Plan creation after reading the compact guide:
471
+
472
+ ```js
473
+ const plan = await runTiinexLlmOperation('plan-artifact', {
474
+ ...material,
475
+ schemaId: 'tiinex.example.v1',
476
+ task: 'create',
477
+ inputs: {
478
+ 'Known Source': 'local recording supplied in this session'
479
+ }
480
+ });
481
+ ```
482
+
483
+ `missingInputs` contains only unconditional requirements. `conditionalRequirements` must be reviewed against their visible triggers and must not be treated as automatically required.
484
+
485
+ Create a bounded in-memory local draft only after required inputs are present:
486
+
487
+ ```js
488
+ const creation = await runTiinexLlmOperation('create-local-draft', {
489
+ ...material,
490
+ schemaId: 'tiinex.example.v1',
491
+ title: 'Next Artifact',
492
+ summary: 'A local draft created from explicit inputs.',
493
+ values: collectedInputs,
494
+ parent: {
495
+ id: 'loaded-parent-id',
496
+ path: 'parent.md',
497
+ schemaId: 'tiinex.topic.v1',
498
+ boundary: 'portable local material; no GitHub provenance inferred'
499
+ }
500
+ });
501
+ ```
502
+
503
+ Exact registered creation contracts are reused when available. Otherwise, readable child schema material may drive an LLM-writer draft. The result remains local, carries no inherited source object, and reports partial qualification when exact child tooling is unavailable. Missing unconditional inputs block creation unless `allowIncomplete` is explicitly used for an incomplete local checkpoint.
504
+
505
+ Validate any supplied or generated local draft:
506
+
507
+ ```js
508
+ const validation = await runTiinexLlmOperation('validate-draft', {
509
+ ...material,
510
+ path: 'drafts/next.md',
511
+ schemaId: 'tiinex.example.v1',
512
+ markdown: draftMarkdown
513
+ });
514
+
515
+ const explanation = await runTiinexLlmOperation('explain-findings', validation.validation);
516
+ const repair = await runTiinexLlmOperation('repair-plan', validation.validation);
517
+ ```
518
+
519
+ Apply the smallest bounded repair and validate again. Stage only after the remaining qualification is acceptable:
520
+
521
+ ```js
522
+ const staged = await runTiinexLlmOperation('stage-draft', {
523
+ ...material,
524
+ draft: creation.draft
525
+ });
526
+ ```
527
+
528
+ Staging returns an explicit serializable staged-artifact record. It does not write a file, mutate a source, publish, or make a partially validated child exact. Validation errors block staging unless an explicitly incomplete local checkpoint is requested.
529
+
530
+ `validate-draft` combines the existing site audit engine with explicit unconditional contract checks when readable schema material is supplied. It does not claim every prose semantic was evaluated.
531
+
532
+ `repair-plan` never rewrites automatically. Preserve unknown sections, continuity, origin, and local/source boundaries.
533
+
534
+ ## Materialize Durable Findings Explicitly
535
+
536
+ Durable findings remain explicit session state until the human or host maps them to an explicit target schema. Never guess whether a finding is a decision, evidence artifact, outcome, topic, or another family.
537
+
538
+ ```js
539
+ const materializationPlan = await runTiinexLlmOperation('plan-durable-materialization', {
540
+ session: session.snapshot(),
541
+ materializations: [{
542
+ id: 'decision-artifact',
543
+ findingIds: ['decision.example'],
544
+ schemaId: 'tiinex.decision.v1',
545
+ title: 'Landed Decision',
546
+ values: collectedDecisionInputs
547
+ }]
548
+ });
549
+
550
+ const materialized = await runTiinexLlmOperation('materialize-durable-findings', {
551
+ session: session.snapshot(),
552
+ ...schemaMaterial,
553
+ materializations: materializationPlan.materializations
554
+ });
555
+ ```
556
+
557
+ Only successfully materialized findings are removed from the returned session. Unmapped or blocked findings remain visible. Created artifacts remain local and are staged only when validation permits.
558
+
559
+ ## Recoverable Checkpoints Are Not Handoffs
560
+
561
+ Use a portable checkpoint when a long-running host session needs recoverability before a canonical handoff schema is available or appropriate:
562
+
563
+ ```js
564
+ const checkpoint = await runTiinexLlmOperation('create-checkpoint', {
565
+ session: session.snapshot()
566
+ });
567
+
568
+ const restored = await runTiinexLlmOperation('restore-checkpoint', checkpoint);
569
+ ```
570
+
571
+ The checkpoint explicitly states:
572
+
573
+ ```text
574
+ canonicalHandoffArtifact = false
575
+ canonicalPackageFormatLocked = false
576
+ hiddenChatStateIncluded = false
577
+ ```
578
+
579
+ Do not call it a Tiinex handoff artifact. It is an explicit portable session snapshot with a corruption guard.
580
+
581
+ ## Build And Verify The Current Runtime Package
582
+
583
+ The portable layer reuses the current site `src/export/**` package implementation:
584
+
585
+ ```js
586
+ const built = await runTiinexLlmOperation('build-runtime-package', {
587
+ session: session.snapshot(),
588
+ title: 'Portable checkpoint package'
589
+ });
590
+
591
+ const roundTrip = await runTiinexLlmOperation('roundtrip-runtime-package', {
592
+ bundle: built.bundle
593
+ });
594
+
595
+ const rehydrated = await runTiinexLlmOperation('rehydrate-runtime-package', {
596
+ files: extractedPackageEntries
597
+ });
598
+ ```
599
+
600
+ The round trip checks that local artifact Markdown survives import unchanged, source references remain references, and local records are not guessed as GitHub-backed. The result always says that the current runtime contract is not a locked canonical handoff/package schema.
601
+
602
+ In Node, the CLI may write a local ZIP only when an explicit output path is provided:
603
+
604
+ ```bash
605
+ node tools/tiinex-portable.mjs build-runtime-package --session session.json --output checkpoint-package.zip
606
+ ```
607
+
608
+ This is a local filesystem write, not publication or source mutation.
609
+
610
+ ## Manufacture Recipient-Relative Handoff Packages
611
+
612
+ The Node adapter manufactures the canonical recipient-facing archive-backed Handoff carrier from ordinary workspace directories without asking an LLM to construct carrier objects manually:
613
+
614
+ ```bash
615
+ node tools/tiinex-portable.mjs manufacture-handoff-package ./workspace \
616
+ --handoff .topics/handoff/001-current-handoff.trace.md \
617
+ --workspace-id recipient-workspace \
618
+ --workspace-target .topics/.workspaces/recipient-workspace.workspace.md \
619
+ --output-dir ./out
620
+ ```
621
+
622
+ The adapter deterministically enumerates regular files below each operator-supplied Workspace root, skips configured repository/runtime internals and symbolic links, records bounded completeness evidence, requires an exact carried `tiinex.workspace.v1` target for each Workspace, binds exact workspace-relative material references when they resolve, and passes those inputs to the recipient-relative closure/package owners. The first positional Workspace is the primary root; this is a convenience, not a legacy carrier compatibility mode. Additional roots are opt-in and require explicit ids, for example `--additional-workspaces docs=../docs`, or a JSON descriptor list through `--workspace-roots workspaces.json`. Route descriptor JSON through `--workspace-routes routes.json` binds each route explicitly to a `workspaceId`; a carried workspace may intentionally have no route. Duplicate ids, missing roots, ambiguous route bindings, and route/workspace mismatches fail closed. Requirements that cannot be resolved from an exact local relative reference still require explicit material bindings or recipient reference capability. The operation does not infer canonical Handoff meaning, source authority, or completeness from an LLM-provided file list.
623
+
624
+ Portable Tooling bootstrap delivery is separate from the optional transport-orientation bootstrap at `tiinex.package/bootstrap.md`, and from canonical schema-material authority inside `src/tooling/portable/schema/bootstrap/**`. `--tooling-bootstrap embedded` carries a manifest plus exact manifest-declared runtime bytes. `--tooling-bootstrap persistent` carries only the manifest and requires `--tooling-bootstrap-manifest <verified-bootstrap.json>` whose exact runtime representation identity matches the runtime being packaged. Filename or co-location under a bootstrap-like path does not grant bootstrap authority.
625
+
626
+ The manufactured package is checked through package inspection, Handoff material closure, carrier projection inspection, package-root Pointer entrypoint inspection, cold-consumer START/Pointer correlation, transport companion correlation, Tooling-bootstrap inspection, and by default the existing full package round trip. Before readiness, every selected Handoff route is independently qualified from its exact carried Markdown bytes against Root plus the registered `tiinex.handoff.v1` machine contract, verified c14n-v2 self integrity, and—when Parent exists—an independently resolved and verified Parent-target digest. Stored file-map/footer equality cannot override a schema or continuity-integrity failure. Node ZIP serialization preserves binary carrier bytes.
627
+
628
+ Carrier projection is disposable and package-derived. For a qualified Handoff artifact with `Handoff Parties`, Tooling derives a rename-safe outer filename from the qualified workspace title, the local numeric dimension in the workspace-relative Handoff filename, and the Handoff's explicit `From`/`To` labels. The resulting `<workspace>-<dimension>-<from>-to-<to>.handoff-package.zip` filename never becomes Parent, assignment, acceptance, completion, or package identity. A filesystem collision may add `--2`, `--3`, and so on to the outer filename only.
629
+
630
+ One package may explicitly advertise multiple qualified workspace-relative Handoff routes through `tiinex.package/handoff-carrier.json`. The projection now carries `workspaces[]`, and every route binds one exact `workspaceId` to one exact workspace-relative Handoff path. Every advertised route is requalified against that workspace carrier and its exact package byte/digest. In shared mode, each route also proves its own `Required Context` against exact carried workspace/material bytes; a missing required byte blocks the shared projection, while `Reference Context` remains non-blocking. Shared mode requires an explicit route selector before human output can be projected; Tooling does not guess from an outer filename or prior conversation. The package bytes remain unchanged when different recipients select different routes. The current Node manufacturing adapter retains the one-workspace positional fast path and additionally exposes bounded operator-supplied multi-root manufacturing. Each additional root is only a byte-source/materialization declaration; it does not acquire source authority, route authority, or semantic ownership merely by being carried.
631
+
632
+ The canonical `manufacture-handoff-package` recipient surface exposes one flat package root of qualified Tiinex Markdown lineage nodes plus only the ZIP payload companions those nodes explicitly identify. The visible package-local lineage is rooted at `001-<package-slug>.trace.md`; `001-1-READ-BEFORE-PROCEEDING.trace.md` is its first child and fixed recovery/orientation Pointer; `001-2-bootstrap.trace.md` plus `001-2-bootstrap.zip` form the portable Tooling bootstrap node; and each `001-3...-<workspace>.workspace.md` is a newly generated package-local Workspace node with a paired `*.workspace.zip` carrying the exact durable Workspace materialization. If a Workspace-owned Handoff route needs exact dependency bytes absent from all carried Workspaces, that Workspace receives its own cache node directly below the Workspace before descendant route/participant Pointers. A package must not create one undifferentiated global cache. Handoff Route Pointers descend from the owning Workspace cache when present, otherwise from the Workspace node, and each identifies one qualified Handoff route. Generated Markdown children declare package-local `Parent` continuity, their numeric pathing is a deterministic projection of that same Parent tree, and each Parent-bearing node carries independently verified Parent-target plus primary self c14n-v2 integrity. ZIP companions share their owning Markdown node's path dimension but cannot themselves carry a Markdown continuity envelope. Exact durable source artifacts inside Workspace/cache archives retain their own historical provenance; package-local lineage does not rewrite it.
633
+
634
+ A shared package may carry several sibling Handoff Route Pointers so the same exact ZIP bytes can be delivered into parallel recipient dialogs. The outer Tooling-generated transport text is only a deterministic recipient address: `Start: 001-1-READ-BEFORE-PROCEEDING.trace.md` plus `Continue from: <exact package-local handoff-pointer.trace.md>`. `Start` is common package orientation; `Continue from` is recipient-specific. Recipients must not infer among sibling routes. Normal orientation, context audit, and roundtrip operate from the visible qualified artifact/payload surface and must not depend on hidden legacy control envelopes. Numeric filenames do not independently create semantic authority; in this carrier they must agree with the declared package-local Parent lineage that the generator owns.
635
+
636
+ `audit-handoff-package-context <package.zip>` performs a separate read-only recipient-carriage audit. It classifies every non-control/non-bootstrap carrier as complete/partial workspace snapshot carriage, resolved Required/Reference Context, explicit detached transport material, a named base-package requirement, a generated Pointer projection, or an unexplained finding. For each `handoff.material/**` carrier it reports exact requirement id/name/reference, selected provider/provenance, bytes/SHA-256, and any identical bytes already present in a carried workspace. Complete workspace membership is not relabeled as Required Context, and the audit does not infer semantic relevance from prior conversation or nearby artifacts.
637
+
638
+ The human fast path is intentionally boring: exactly one package plus the Tooling-returned normal inline routing projection, with no semantic work-summary prose or duplicate normal transport choices. `--output-dir <dir>` is the normal manufacture path and writes the sole primary package using the selected route's deterministic Tooling-projected basename. That basename is derived from qualified package/workspace identity, the Handoff dimensional path, and the exact Handoff `From`/`To` parties; task purpose, test scenario, summaries, and caller prose are not filename inputs. An explicit `--output <path>` is accepted only when its basename exactly equals `humanOutput.primary.filename`; any mismatch fails closed instead of allowing a caller or LLM to improvise a carrier filename. The same manufacture result exposes `humanOutput.normalInlineRouting.content` with the exact package-derived orientation that must be rendered adjacent to that package. `humanOutput.presentation` requires a copyable host surface and exact content preservation. If the chat host supports fenced code blocks, render the exact routing bytes in a fenced code block; otherwise use an equivalent copyable host surface. The fence or other presentation wrapper carries no semantic authority and must not be embedded in or alter the routing `content`. `humanOutput.normalEmissionBoundary` excludes internal `humanOutput` JSON, helper artifacts, semantic work-summary prose, manually reconstructed routing, and duplicate normal file choices unless the user explicitly asks for explanation or review evidence. `--transport-text` optionally writes the same text to a small disposable sidecar for cross-device/device-loss recovery; that fallback remains `normalEmission: false` and is not part of normal completion. `project-handoff-carrier-output <package.zip> --route <path-or-route-id>` is a read-only regeneration path and exposes the same `humanOutput.primary`, `humanOutput.normalInlineRouting`, presentation, and normal-emission contract from package truth. A route id is the unambiguous selector when different workspaces expose the same workspace-relative Handoff path.
639
+
640
+ Handoff package basenames are Tooling-owned transport projections. Use `--output-dir` for normal manufacture. If an operator requires an explicit path, `--output` may choose the directory/path location only while preserving the exact projected basename; a divergent basename fails closed. Shared-route output also fails closed unless every advertised route qualifies and one recipient route is explicitly selected for the human output projection. CLI responses remain bounded verification/receipt summaries rather than reserializing package or nested roundtrip carrier bytes.
641
+
642
+
643
+ ## Assets And Multimodal Host Analysis
644
+
645
+ Portable tooling indexes assets and references without pretending to understand their content:
646
+
647
+ ```js
648
+ const assets = await runTiinexLlmOperation('inspect-assets', material);
649
+ const request = await runTiinexLlmOperation('prepare-asset-analysis', {
650
+ ...material,
651
+ assetPath: 'assets/example.png',
652
+ tools: hostToolDescriptions
653
+ });
654
+ ```
655
+
656
+ For an image inside a zip, the host route is:
657
+
658
+ ```text
659
+ discover archive entry
660
+ → materialize/extract only that asset
661
+ → expose it to the host image-capable model
662
+ → return bounded observations as an explicit analysis response
663
+ ```
664
+
665
+ The asset remains source material. The generated description is interpretation, not embedded provenance or evidence, unless a later explicit artifact owns that relationship.
666
+
667
+ ## Writer Fallback
668
+
669
+ Creation is stricter than reading.
670
+
671
+ 1. Exact create tooling may be used only when the creation contract reports ready.
672
+ 2. When exact create tooling is unavailable but the requested child schema artifact is supplied, use `schema-guide`, `plan-artifact`, and `make-writer-brief` to write a transparent local draft.
673
+ 3. Report LLM-writer creation as partially qualified unless exact child validation exists.
674
+ 4. Parent or Root tooling may create a genuine parent or Root artifact, but must not label it as a qualified child artifact.
675
+ 5. When the child schema is unavailable, do not reconstruct it from memory. Preserve the intent and request the schema.
676
+
677
+ ## Long-Lived Dialogue Session
678
+
679
+ A session is explicit working state, not hidden provenance:
680
+
681
+ ```js
682
+ let session = openTiinexLlmSession({
683
+ ...material,
684
+ currentFocus: 'artifact.md'
685
+ });
686
+
687
+ const host = session.discoverTooling({ tools: hostToolDescriptions });
688
+ const schemaContext = await session.resolveSchemaChainMaterial({ schemaId: 'tiinex.example.v1' });
689
+ session = session.withSchemaCache(schemaContext.materials.schemaCache);
690
+ const matches = session.searchLineage({ query: 'open risk', filters: { relation: 'leaf' } });
691
+ const guide = session.schemaGuide({ schemaId: 'tiinex.example.v1', task: 'create' });
692
+ const plan = session.planArtifact({ schemaId: 'tiinex.example.v1', inputs: collectedInputs });
693
+ const creation = session.createLocalDraft({ schemaId: 'tiinex.example.v1', values: collectedInputs });
694
+ const validation = session.validateDraft({ schemaId: 'tiinex.example.v1', markdown: creation.draft.markdown });
695
+ const staged = session.stageDraft({ draft: creation.draft });
696
+
697
+ session = session.withDurableFinding({
698
+ code: 'decision.example',
699
+ message: 'A durable conclusion that should later be materialized.'
700
+ });
701
+
702
+ session = session.withStagedArtifact({
703
+ path: 'drafts/next.md',
704
+ schemaId: 'tiinex.example.v1',
705
+ markdown: draftMarkdown
706
+ });
707
+
708
+ const snapshot = session.snapshot();
709
+ const materialized = await session.materializeDurableFindings({ materializations });
710
+ const checkpoint = await session.createCheckpoint();
711
+ const packageRoundTrip = session.roundTripRuntimePackage();
712
+ ```
713
+
714
+ Keep apart:
715
+
716
+ - loaded material
717
+ - current explicit focus
718
+ - staged artifacts
719
+ - durable findings awaiting materialization
720
+ - last checkpoint metadata
721
+ - qualification state
722
+ - explicit serializable schema cache
723
+
724
+ Ordinary chat reasoning does not become provenance automatically. Promote durable decisions, findings, evidence, and results into readable artifacts at meaningful checkpoints.
725
+
726
+ ## Qualification Reading
727
+
728
+ A result can resolve through an exact module while still lacking an implemented capability. Read all of:
729
+
730
+ ```text
731
+ exact
732
+ moduleExact
733
+ capabilityStatus
734
+ resolutionStatus
735
+ outcome
736
+ fallback
737
+ limitations
738
+ safeActions
739
+ blockedActions
740
+ ```
741
+
742
+ Unregistered schemas currently resolve directly to Root in the shared core. Semantic-parent capability fallback is not yet executed. Root validation is not proof of child-schema validity.
743
+
744
+ ## CLI
745
+
746
+ When Node and filesystem access are available:
747
+
748
+ ```bash
749
+ node tools/tiinex-portable.mjs operations
750
+ node tools/tiinex-portable.mjs describe-checkpoint-gate --profile source-clean
751
+ node tools/tiinex-portable-verify.mjs --profile source-clean --output portable-checkpoint-report.json
752
+ node tools/tiinex-portable.mjs prepare-task ./received --task create-artifact --schema tiinex.example.v1 --host host.json
753
+ node tools/tiinex-portable.mjs discover-tooling --host host.json
754
+ node tools/tiinex-portable.mjs resolve-schema-chain-material ./docs.zip --schema tiinex.example.v1
755
+ node tools/tiinex-portable.mjs inspect ./received --summary --phase-timing
756
+ node tools/tiinex-portable.mjs audit ./received --summary --phase-timing
757
+ node tools/tiinex-portable.mjs search-lineage ./received --query "mobile overflow" --relation leaf --summary --phase-timing
758
+ node tools/tiinex-portable.mjs schema-guide ./received --schema tiinex.example.v1 --task create
759
+ node tools/tiinex-portable.mjs read-schema-section ./received --schema tiinex.example.v1 --section "Artifact Creation Contract,Minimal Example"
760
+ node tools/tiinex-portable.mjs plan-artifact ./received --schema tiinex.example.v1 --values inputs.json
761
+ node tools/tiinex-portable.mjs create-local-draft ./schemas --schema tiinex.example.v1 --values inputs.json --parent parent.json
762
+ node tools/tiinex-portable.mjs validate-draft ./draft.md ./schemas --schema tiinex.example.v1
763
+ node tools/tiinex-portable.mjs stage-draft ./draft.md ./schemas --schema tiinex.example.v1
764
+ node tools/tiinex-portable.mjs inspect-assets ./received.zip
765
+ node tools/tiinex-portable.mjs prepare-asset-analysis ./received.zip --asset assets/example.png --host host.json
766
+ node tools/tiinex-portable.mjs plan-durable-materialization --session session.json --specs materializations.json
767
+ node tools/tiinex-portable.mjs materialize-durable-findings ./schemas --session session.json --specs materializations.json
768
+ node tools/tiinex-portable.mjs create-checkpoint session.json
769
+ node tools/tiinex-portable.mjs restore-checkpoint checkpoint.json
770
+ node tools/tiinex-portable.mjs manufacture-handoff-package ./workspace --handoff .topics/handoff.trace.md --workspace-id recipient-workspace --workspace-target .topics/.workspaces/recipient-workspace.workspace.md --output-dir ./out
771
+ node tools/tiinex-portable.mjs manufacture-handoff-package ./workspace --handoff .topics/handoff/004-anchor-to-loom.trace.md --workspace-id recipient-workspace --workspace-target .topics/.workspaces/recipient-workspace.workspace.md --handoff-routes .topics/handoff/004-anchor-to-loom.trace.md,.topics/handoff/004-anchor-to-axiom.trace.md,.topics/handoff/004-anchor-to-kodax.trace.md --route .topics/handoff/004-anchor-to-loom.trace.md --output-dir ./out --transport-text
772
+ node tools/tiinex-portable.mjs manufacture-handoff-package ./site --workspace-id site --workspace-target .topics/.workspaces/tiinex-site.workspace.md --workspace-roots workspaces.json --workspace-routes routes.json --handoff .topics/handoff/site-to-loom.trace.md --output-dir ./out
773
+ node tools/tiinex-portable.mjs project-handoff-carrier-output ./out/tiinex-site-004-anchor-to-loom.handoff-package.zip --route .topics/handoff/004-anchor-to-axiom.trace.md --collision-instance 2
774
+ node tools/tiinex-portable.mjs orient-handoff-package ./out/tiinex-site-004-anchor-to-loom.handoff-package.zip
775
+ node tools/tiinex-portable.mjs audit-handoff-package-context ./out/tiinex-site-004-anchor-to-loom.handoff-package.zip
776
+ node tools/tiinex-portable.mjs build-runtime-package --session session.json --output runtime-package.zip
777
+ node tools/tiinex-portable.mjs inspect-runtime-package bundle.json
778
+ node tools/tiinex-portable.mjs rehydrate-runtime-package runtime-package.zip
779
+ node tools/tiinex-portable.mjs roundtrip-runtime-package --bundle bundle.json
780
+ node tools/tiinex-portable.mjs explain-findings ./validation.json
781
+ node tools/tiinex-portable.mjs repair-plan ./validation.json
782
+ ```
783
+
784
+ The CLI accepts files, directories, and zip archives. It skips repository internals and symbolic links, applies bounded text/file limits, and emits JSON only.
785
+
786
+ ## No-JavaScript Fallback
787
+
788
+ When JavaScript cannot run:
789
+
790
+ 1. Read this bootstrap.
791
+ 2. Read each artifact before trusting its directory path.
792
+ 3. Read `Current Schema`, `Parent`, `Origin`, boundaries, body, and integrity declarations.
793
+ 4. Read the requested schema artifact and its declared parent chain.
794
+ 5. Apply only rules visibly declared in readable schema contracts.
795
+ 6. Distinguish unconditional requirements from `Required When` conditions.
796
+ 7. State which checks were manual, unavailable, or incomplete.
797
+ 8. Keep local/draft material local and preserve unsupported content.
798
+
799
+ ## Current Limits
800
+
801
+ The portable surface does not yet provide:
802
+
803
+ - automatic file writes or publication of created/staged local drafts; only explicit Node package-output operations write locally
804
+ - canonical Handoff semantic authoring/validation or a locked canonical package schema; recipient-relative operational Handoff package manufacturing is available without claiming either
805
+ - source mutation or publication
806
+ - automatic artifact-parent/origin discovery; schema discovery is explicit and host-mediated
807
+ - semantic-parent capability execution
808
+ - a production MCP server
809
+ - an LSP server
810
+ - a VS Code extension
811
+ - a locked package format
812
+ - automatic integrity or checksum repair
813
+
814
+ All future surfaces should reuse the same operation catalog and shared site engine rather than duplicate Tiinex semantics.