@mindflight/mindbrain-personal-studio 0.6.2 → 0.6.4

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 (202) hide show
  1. package/README.md +16 -8
  2. package/build/client/_app/immutable/chunks/{D0UIlUGZ.js → BjfgiHck.js} +1 -1
  3. package/build/client/_app/immutable/chunks/BjfgiHck.js.br +0 -0
  4. package/build/client/_app/immutable/chunks/BjfgiHck.js.gz +0 -0
  5. package/build/client/_app/immutable/entry/{app.CR-imLox.js → app.XgS1PoV0.js} +2 -2
  6. package/build/client/_app/immutable/entry/app.XgS1PoV0.js.br +0 -0
  7. package/build/client/_app/immutable/entry/app.XgS1PoV0.js.gz +0 -0
  8. package/build/client/_app/immutable/entry/start.Dtz8dQFZ.js +1 -0
  9. package/build/client/_app/immutable/entry/start.Dtz8dQFZ.js.br +2 -0
  10. package/build/client/_app/immutable/entry/start.Dtz8dQFZ.js.gz +0 -0
  11. package/build/client/_app/immutable/nodes/{1.CTEedoSY.js → 1.Cs3BmvHO.js} +1 -1
  12. package/build/client/_app/immutable/nodes/1.Cs3BmvHO.js.br +3 -0
  13. package/build/client/_app/immutable/nodes/1.Cs3BmvHO.js.gz +0 -0
  14. package/build/client/_app/version.json +1 -1
  15. package/build/client/_app/version.json.br +0 -0
  16. package/build/client/_app/version.json.gz +0 -0
  17. package/build/handler.js +4 -4
  18. package/build/index.js +4 -4
  19. package/build/server/chunks/chunks/{internal.js-WOmQXGMa.js → internal.js-BnebQ91H.js} +2 -2
  20. package/build/server/chunks/chunks/{internal.js-WOmQXGMa.js.map → internal.js-BnebQ91H.js.map} +1 -1
  21. package/build/server/chunks/{handler-BIDedSZq.js → handler-B8M0DnFi.js} +3 -3
  22. package/build/server/chunks/{handler-BIDedSZq.js.map → handler-B8M0DnFi.js.map} +1 -1
  23. package/build/server/chunks/{index.js-YVPJa0so.js → index.js-qz9YZN7m.js} +2 -2
  24. package/build/server/chunks/{index.js-YVPJa0so.js.map → index.js-qz9YZN7m.js.map} +1 -1
  25. package/build/server/chunks/{manifest.js-aGRKuiqF.js → manifest.js-BxEwHoCX.js} +3 -3
  26. package/build/server/chunks/{manifest.js-aGRKuiqF.js.map → manifest.js-BxEwHoCX.js.map} +1 -1
  27. package/build/server/chunks/nodes/{1.js-Dhh3ErZY.js → 1.js-D3KAPgsF.js} +2 -2
  28. package/build/server/chunks/nodes/{1.js-Dhh3ErZY.js.map → 1.js-D3KAPgsF.js.map} +1 -1
  29. package/examples/immeuble/ACCEPTANCE.yaml +82 -0
  30. package/examples/immeuble/BIM_LITE.md +15 -0
  31. package/examples/immeuble/CHECKLIST.md +128 -0
  32. package/examples/immeuble/README.md +121 -0
  33. package/examples/immeuble/bundle/immeuble.bundle.json +22786 -0
  34. package/examples/immeuble/contracts/answer_artifacts.seed.jsonl +34 -0
  35. package/examples/immeuble/contracts/business_capabilities.seed.jsonl +25 -0
  36. package/examples/immeuble/contracts/consumer_contract.yaml +131 -0
  37. package/examples/immeuble/contracts/immeuble_structured_import_model.json +310 -0
  38. package/examples/immeuble/contracts/mapping_external_to_canonical.json +375 -0
  39. package/examples/immeuble/contracts/mapping_external_to_canonical.yaml +55 -0
  40. package/examples/immeuble/contracts/mapping_external_to_canonical_ws.json +65 -0
  41. package/examples/immeuble/contracts/model_contract.json +943 -0
  42. package/examples/immeuble/contracts/projection_catalog.yaml +366 -0
  43. package/examples/immeuble/contracts/scenarios.yaml +27 -0
  44. package/examples/immeuble/contracts/semantic_proposal.golden.json +1 -0
  45. package/examples/immeuble/contracts/source_profile.yaml +38 -0
  46. package/examples/immeuble/fake_data/DeltaFinding.csv +20 -0
  47. package/examples/immeuble/fake_data/ProjectionResult.csv +13 -0
  48. package/examples/immeuble/fake_data/ag_meeting.csv +4 -0
  49. package/examples/immeuble/fake_data/agenda_item.csv +4 -0
  50. package/examples/immeuble/fake_data/architect.csv +3 -0
  51. package/examples/immeuble/fake_data/architecture_firm.csv +2 -0
  52. package/examples/immeuble/fake_data/bank_account.csv +3 -0
  53. package/examples/immeuble/fake_data/billing_group.csv +41 -0
  54. package/examples/immeuble/fake_data/block.csv +10 -0
  55. package/examples/immeuble/fake_data/budget_line.csv +3 -0
  56. package/examples/immeuble/fake_data/building.csv +6 -0
  57. package/examples/immeuble/fake_data/cellar.csv +41 -0
  58. package/examples/immeuble/fake_data/change_order.csv +2 -0
  59. package/examples/immeuble/fake_data/charge_call.csv +58 -0
  60. package/examples/immeuble/fake_data/claim.csv +4 -0
  61. package/examples/immeuble/fake_data/coda_entry.csv +49 -0
  62. package/examples/immeuble/fake_data/compliance_certificate.csv +10 -0
  63. package/examples/immeuble/fake_data/contractor.csv +4 -0
  64. package/examples/immeuble/fake_data/decision.csv +5 -0
  65. package/examples/immeuble/fake_data/defect_reserve.csv +3 -0
  66. package/examples/immeuble/fake_data/household.csv +41 -0
  67. package/examples/immeuble/fake_data/inspection.csv +3 -0
  68. package/examples/immeuble/fake_data/insurance_policy.csv +4 -0
  69. package/examples/immeuble/fake_data/intervention.csv +13 -0
  70. package/examples/immeuble/fake_data/invoice.csv +3 -0
  71. package/examples/immeuble/fake_data/lease_contract.csv +12 -0
  72. package/examples/immeuble/fake_data/maintenance_ticket.csv +13 -0
  73. package/examples/immeuble/fake_data/meter.csv +4 -0
  74. package/examples/immeuble/fake_data/meter_reading.csv +19 -0
  75. package/examples/immeuble/fake_data/milestone.csv +3 -0
  76. package/examples/immeuble/fake_data/organization.csv +12 -0
  77. package/examples/immeuble/fake_data/parking_space.csv +8 -0
  78. package/examples/immeuble/fake_data/permit.csv +3 -0
  79. package/examples/immeuble/fake_data/person.csv +85 -0
  80. package/examples/immeuble/fake_data/private_garden.csv +7 -0
  81. package/examples/immeuble/fake_data/progress_event.csv +2 -0
  82. package/examples/immeuble/fake_data/quote.csv +3 -0
  83. package/examples/immeuble/fake_data/receipt.csv +2 -0
  84. package/examples/immeuble/fake_data/reminder.csv +11 -0
  85. package/examples/immeuble/fake_data/service_contract.csv +4 -0
  86. package/examples/immeuble/fake_data/shared_equipment.csv +8 -0
  87. package/examples/immeuble/fake_data/shared_space.csv +10 -0
  88. package/examples/immeuble/fake_data/unit.csv +41 -0
  89. package/examples/immeuble/fake_data/work_package.csv +4 -0
  90. package/examples/immeuble/fake_data/worksite_project.csv +3 -0
  91. package/examples/immeuble/gap-rules/L0-patrimoine.json +57 -0
  92. package/examples/immeuble/gap-rules/L1-syndic-naive.json +36 -0
  93. package/examples/immeuble/gap-rules/L1-syndic.json +61 -0
  94. package/examples/immeuble/gap-rules/L2-chantier.json +87 -0
  95. package/examples/immeuble/gap-rules/L2-exploitation.json +87 -0
  96. package/examples/immeuble/gap-rules/L2-finance.json +48 -0
  97. package/examples/immeuble/gap-rules/L2-maintenance.json +107 -0
  98. package/examples/immeuble/gap-rules/L2-syndic-filtered.json +39 -0
  99. package/examples/immeuble/gap-rules/L3-full.json +332 -0
  100. package/examples/immeuble/gap-rules/closed-world-contract.md +76 -0
  101. package/examples/immeuble/gap-rules/demo.json +51 -0
  102. package/examples/immeuble/gap-rules/expected-findings.yaml +100 -0
  103. package/examples/immeuble/gap-rules/gap-scenarios.yaml +79 -0
  104. package/examples/immeuble/gap-rules/motifs.json +38 -0
  105. package/examples/immeuble/gap-rules/syndic.json +40 -0
  106. package/examples/immeuble/import_manifest.yaml +25 -0
  107. package/examples/immeuble/import_ready/graph_edges_import.csv +848 -0
  108. package/examples/immeuble/import_ready/mfo_facets_import.csv +559 -0
  109. package/examples/immeuble/index.md +140 -0
  110. package/examples/immeuble/model/immeuble_model.json +418 -0
  111. package/examples/immeuble/reports/01-model.validation.json +56 -0
  112. package/examples/immeuble/reports/02-mapping.validation.json +9 -0
  113. package/examples/immeuble/reports/acceptance.validation.json +161 -0
  114. package/examples/immeuble/reports/consumer_contract.validation.json +162 -0
  115. package/examples/immeuble/reports/graph_edges.jsonl +847 -0
  116. package/examples/immeuble/reports/graph_nodes.jsonl +558 -0
  117. package/examples/immeuble/reports/hybrid-compare.json +144 -0
  118. package/examples/immeuble/reports/immeuble-import-scenario.json +233 -0
  119. package/examples/immeuble/reports/live-artifacts-refresh.validation.json +51 -0
  120. package/examples/immeuble/reports/pipeline_audit.json +59 -0
  121. package/examples/immeuble/reports/projection_audit.json +69 -0
  122. package/examples/immeuble/reports/projection_audit_immeuble.json +257 -0
  123. package/examples/immeuble/reports/projection_audit_immeuble.md +122 -0
  124. package/examples/immeuble/reports/projection_candidates.json +1596 -0
  125. package/examples/immeuble/reports/projection_candidates.md +117 -0
  126. package/examples/immeuble/reports/projection_model_validation.md +115 -0
  127. package/examples/immeuble/reports/reindex.json +4 -0
  128. package/examples/immeuble/reports/reset-immeuble-workspace.json +32 -0
  129. package/examples/immeuble/reports/schema-id-prefix-check.json +5 -0
  130. package/examples/immeuble/scripts/audit-immeuble-projections.mjs +254 -0
  131. package/examples/immeuble/scripts/build-immeuble-model.mjs +308 -0
  132. package/examples/immeuble/scripts/compare-immeuble-snapshots.sh +227 -0
  133. package/examples/immeuble/scripts/enrich-immeuble-demo.mjs +1135 -0
  134. package/examples/immeuble/scripts/reset-immeuble-workspace.mjs +139 -0
  135. package/examples/immeuble/scripts/run-immeuble-backend.sh +164 -0
  136. package/examples/immeuble/scripts/run-immeuble-import.mjs +232 -0
  137. package/examples/immeuble/scripts/run-immeuble-live-lab.sh +439 -0
  138. package/examples/immeuble/scripts/seed-immeuble-gap-rules.mjs +103 -0
  139. package/examples/immeuble/scripts/start-immeuble-demo.sh +52 -0
  140. package/examples/immeuble/scripts/starterkit/analysis-lenses.mjs +181 -0
  141. package/examples/immeuble/scripts/starterkit/analyze-projection-candidates.mjs +714 -0
  142. package/examples/immeuble/scripts/starterkit/audit-ghostcrab-projections.mjs +674 -0
  143. package/examples/immeuble/scripts/starterkit/facet-prefix.mjs +166 -0
  144. package/examples/immeuble/scripts/starterkit/sqlite-utils.mjs +131 -0
  145. package/examples/immeuble/scripts/verify-immeuble-acceptance.mjs +284 -0
  146. package/examples/immeuble/scripts/verify-immeuble-live-artifacts.mjs +140 -0
  147. package/examples/immeuble/scripts/yaml-lite.mjs +96 -0
  148. package/examples/immeuble/sources/agent-prompts/prompts/00-prerequisites-immo-mcp.md +161 -0
  149. package/examples/immeuble/sources/agent-prompts/prompts/00-prerequisites.md +39 -0
  150. package/examples/immeuble/sources/agent-prompts/prompts/01-discovery-and-model-proposal.md +42 -0
  151. package/examples/immeuble/sources/agent-prompts/prompts/02-ontology-register.md +44 -0
  152. package/examples/immeuble/sources/agent-prompts/prompts/03-gap-rules-design.md +44 -0
  153. package/examples/immeuble/sources/agent-prompts/prompts/04-document-ingest.md +40 -0
  154. package/examples/immeuble/sources/agent-prompts/prompts/05-graph-extraction.md +44 -0
  155. package/examples/immeuble/sources/agent-prompts/prompts/06-validate-and-compare-immo-mcp.md +109 -0
  156. package/examples/immeuble/sources/agent-prompts/prompts/06-validate-and-compare-test-immo-mcp3.md +30 -0
  157. package/examples/immeuble/sources/agent-prompts/prompts/06-validate-and-compare.md +63 -0
  158. package/examples/immeuble/sources/checklists/gap-rules-checklist.md +42 -0
  159. package/examples/immeuble/sources/checklists/ontology-checklist.md +54 -0
  160. package/examples/immeuble/sources/documents/README.md +42 -0
  161. package/examples/immeuble/sources/documents/annexes-caves-garages-jardins.md +8 -0
  162. package/examples/immeuble/sources/documents/annexes-jardins-garages.md +1 -0
  163. package/examples/immeuble/sources/documents/baux-erables.md +1 -0
  164. package/examples/immeuble/sources/documents/baux-locatifs.md +11 -0
  165. package/examples/immeuble/sources/documents/coda-janvier-2026.md +10 -0
  166. package/examples/immeuble/sources/documents/composition-menages.md +1 -0
  167. package/examples/immeuble/sources/documents/composition-occupants.md +18 -0
  168. package/examples/immeuble/sources/documents/expected-coverage.json +70 -0
  169. package/examples/immeuble/sources/documents/extrait-coda-janvier-2026.md +1 -0
  170. package/examples/immeuble/sources/documents/groupes-facturation.md +30 -0
  171. package/examples/immeuble/sources/documents/manifest.json +79 -0
  172. package/examples/immeuble/sources/documents/note-architecte-chantier-erables.md +3 -0
  173. package/examples/immeuble/sources/documents/permis-urbanisme-erables.md +3 -0
  174. package/examples/immeuble/sources/documents/procedures-operationnelles.md +3 -0
  175. package/examples/immeuble/sources/documents/pv-ag-budget-2026.md +1 -0
  176. package/examples/immeuble/sources/documents/pv-reception-reserves-erables.md +3 -0
  177. package/examples/immeuble/sources/documents/registre-coproprietaires.md +24 -0
  178. package/examples/immeuble/sources/documents/reglement-copropriete-tilleuls.md +1 -0
  179. package/examples/immeuble/sources/documents/statuts-erables.md +22 -0
  180. package/examples/immeuble/sources/documents/statuts-tilleuls.md +19 -0
  181. package/examples/immeuble/sources/documents/succession-jean-dupont.md +3 -0
  182. package/examples/immeuble/sources/documents/titre-propriete-tilleuls-a3.md +1 -0
  183. package/examples/immeuble/sources/documents/trous-pedagogiques.md +3 -0
  184. package/examples/immeuble/sources/ontology/README.md +1 -0
  185. package/examples/immeuble/sources/ontology/core.yaml +444 -0
  186. package/examples/immeuble/success-criteria.yaml +35 -0
  187. package/fixtures/immeuble-demo.sqlite +0 -0
  188. package/package.json +11 -2
  189. package/scripts/lib/sqlite-runtime.mjs +1 -1
  190. package/scripts/load-immeuble-demo.sh +179 -0
  191. package/scripts/seed-immeuble-projections.mjs +75 -148
  192. package/scripts/verify-immeuble-demo-sources.mjs +93 -0
  193. package/scripts/verify-immeuble-demo.mjs +69 -0
  194. package/build/client/_app/immutable/chunks/D0UIlUGZ.js.br +0 -0
  195. package/build/client/_app/immutable/chunks/D0UIlUGZ.js.gz +0 -0
  196. package/build/client/_app/immutable/entry/app.CR-imLox.js.br +0 -0
  197. package/build/client/_app/immutable/entry/app.CR-imLox.js.gz +0 -0
  198. package/build/client/_app/immutable/entry/start.DV-AjeAB.js +0 -1
  199. package/build/client/_app/immutable/entry/start.DV-AjeAB.js.br +0 -2
  200. package/build/client/_app/immutable/entry/start.DV-AjeAB.js.gz +0 -0
  201. package/build/client/_app/immutable/nodes/1.CTEedoSY.js.br +0 -0
  202. package/build/client/_app/immutable/nodes/1.CTEedoSY.js.gz +0 -0
@@ -0,0 +1,22 @@
1
+ # Statuts fictifs - ACP Residence Les Erables
2
+
3
+ Document fictif inspire des documents constitutifs d'une copropriete belge.
4
+
5
+ ACP: Residence Les Erables, 8 avenue des Erables, 1300 Wavre.
6
+ Syndic: Syndic Horizon Gestion. L'immeuble est organise en deux blocs, bloc A et bloc B.
7
+ Parties communes: jardin commun central, local technique, buanderie commune, local velos.
8
+
9
+ Lots privatifs principaux:
10
+ | Bloc | Lot | Porte | Etage | Chambres | Quotites |
11
+ | --- | --- | --- | --- | --- | --- |
12
+ | A | A1 | A-00-01 | 0 | 2 | 120/1000 |
13
+ | A | A2 | A-00-02 | 0 | 2 | 125/1000 |
14
+ | A | A3 | A-01-01 | 1 | 1 | 125/1000 |
15
+ | A | A4 | A-01-02 | 1 | 3 | 130/1000 |
16
+ | B | B1 | B-00-01 | 0 | 2 | 120/1000 |
17
+ | B | B2 | B-00-02 | 0 | 2 | 125/1000 |
18
+ | B | B3 | B-01-01 | 1 | 2 | 125/1000 |
19
+ | B | B4 | B-01-02 | 1 | 4 | 130/1000 |
20
+
21
+ Chaque lot dispose d'une cave. Les lots A1, A4, B1 et B4 disposent d'un garage. Les lots du rez-de-chaussee A1, A2, B1 et B2 disposent d'un jardin privatif a usage exclusif.
22
+ La somme des quotites de l'immeuble est de 1000/1000.
@@ -0,0 +1,19 @@
1
+ # Statuts fictifs - ACP Residence Les Tilleuls
2
+
3
+ Document fictif inspire des categories belges d'acte de base, reglement de copropriete et reglement d'ordre interieur.
4
+
5
+ ACP: Residence Les Tilleuls, 12 rue des Tilleuls, 5000 Namur.
6
+ Syndic: Syndic Horizon Gestion. Gestionnaire comptable: Marie Lambert.
7
+ Structure: un immeuble, bloc A, cinq appartements. Parties communes: hall, local technique, buanderie commune, deux machines a laver, jardin commun.
8
+
9
+ Lots privatifs principaux:
10
+ | Lot | Porte | Etage | Chambres | Quotites |
11
+ | --- | --- | --- | --- | --- |
12
+ | A1 | A-00-01 | 0 | 2 | 190/1000 |
13
+ | A2 | A-00-02 | 0 | 1 | 180/1000 |
14
+ | A3 | A-01-01 | 1 | 3 | 220/1000 |
15
+ | A4 | A-01-02 | 1 | 1 | 190/1000 |
16
+ | A5 | A-02-01 | 2 | 3 | 220/1000 |
17
+
18
+ Chaque appartement dispose d'une cave. Les lots du rez-de-chaussee A1 et A2 disposent d'un jardin privatif a usage exclusif. Les garages sont attribues aux lots A1, A3 et A5.
19
+ La somme des quotites de l'immeuble est de 1000/1000.
@@ -0,0 +1,3 @@
1
+ # Dossier succession - Jean Dupont
2
+
3
+ Jean Dupont est décédé le 15 mars 2024. A partir du 16 mars 2024, la facturation opérationnelle du lot A3 est adressée à Pauline Dupont et Nicolas Dupont, dans l'attente de la régularisation successorale.
@@ -0,0 +1 @@
1
+ Le lot Tilleuls Appartement A3 est détenu par Nicolas Dupont et Pauline Dupont à parts égales. Le ménage comprend deux enfants occupants, Lina et Tom Dupont.
@@ -0,0 +1,3 @@
1
+ # Trous pedagogiques attendus
2
+
3
+ Les donnees contiennent volontairement des proprietaires manquants, occupants manquants, contrats incomplets, relances sans preuve, certificats expires et chantiers a risque.
@@ -0,0 +1 @@
1
+ Canonical LinkML ontology: [`../../../ontologies/immeuble/core.yaml`](../../../ontologies/immeuble/core.yaml)
@@ -0,0 +1,444 @@
1
+ id: https://ghostcrab.be/ontology/immeuble/core
2
+ name: immeuble_core
3
+ title: Immeuble syndic ontology
4
+ description: Copropriete reference model for syndic workflows, people, households, leases, annexes, CODA matching, and qualified documents.
5
+ license: https://ghostcrab.be/Licence.md
6
+ version: 2.1.0
7
+
8
+ prefixes:
9
+ linkml: https://w3id.org/linkml/
10
+ ghostcrab: https://ghostcrab.be/ontology/
11
+ immeuble: https://ghostcrab.be/ontology/immeuble/
12
+ foaf: http://xmlns.com/foaf/0.1/
13
+ org: http://www.w3.org/ns/org#
14
+ prov: http://www.w3.org/ns/prov#
15
+ time: http://www.w3.org/2006/time#
16
+
17
+ imports:
18
+ - linkml:types
19
+ - ../ghostcrab/profile.yaml
20
+
21
+ default_prefix: immeuble
22
+ default_range: string
23
+
24
+ enums:
25
+ PaymentStatus:
26
+ description: CODA matching and charge-call payment states.
27
+ permissible_values:
28
+ expected:
29
+ matched:
30
+ complete:
31
+ partial:
32
+ manual_review:
33
+ overdue:
34
+ closed:
35
+
36
+ classes:
37
+ building:
38
+ is_a: Asset
39
+ class_uri: immeuble:Building
40
+ description: Residential or mixed building managed by a syndic.
41
+ annotations:
42
+ ghostcrab.native_entity_type: building
43
+ ghostcrab.layer: structure
44
+
45
+ block:
46
+ is_a: Asset
47
+ class_uri: immeuble:Block
48
+ description: Physical block or stairwell inside a building.
49
+ annotations:
50
+ ghostcrab.native_entity_type: block
51
+ ghostcrab.layer: structure
52
+
53
+ unit:
54
+ is_a: Asset
55
+ class_uri: immeuble:Unit
56
+ description: Private lot, usually an apartment, within a building block.
57
+ annotations:
58
+ ghostcrab.native_entity_type: unit
59
+ ghostcrab.layer: structure
60
+
61
+ shared_space:
62
+ is_a: Asset
63
+ class_uri: immeuble:SharedSpace
64
+ description: Common area such as hall, garden, elevator, or technical room.
65
+ annotations:
66
+ ghostcrab.native_entity_type: shared_space
67
+ ghostcrab.layer: structure
68
+
69
+ shared_equipment:
70
+ is_a: Asset
71
+ class_uri: immeuble:SharedEquipment
72
+ description: Shared equipment located in a common area, such as a washing machine.
73
+ annotations:
74
+ ghostcrab.native_entity_type: shared_equipment
75
+ ghostcrab.layer: structure
76
+
77
+ private_garden:
78
+ is_a: Asset
79
+ class_uri: immeuble:PrivateGarden
80
+ description: Garden attached to a ground-floor lot under exclusive use.
81
+ annotations:
82
+ ghostcrab.native_entity_type: private_garden
83
+ ghostcrab.layer: structure
84
+
85
+ parking_space:
86
+ is_a: Asset
87
+ class_uri: immeuble:ParkingSpace
88
+ annotations:
89
+ ghostcrab.native_entity_type: parking_space
90
+ ghostcrab.layer: structure
91
+
92
+ cellar:
93
+ is_a: Asset
94
+ class_uri: immeuble:Cellar
95
+ annotations:
96
+ ghostcrab.native_entity_type: cellar
97
+ ghostcrab.layer: structure
98
+
99
+ person:
100
+ is_a: Person
101
+ class_uri: foaf:Person
102
+ annotations:
103
+ ghostcrab.native_entity_type: person
104
+ ghostcrab.layer: actors
105
+
106
+ organization:
107
+ is_a: Organization
108
+ class_uri: org:Organization
109
+ annotations:
110
+ ghostcrab.native_entity_type: organization
111
+ ghostcrab.layer: actors
112
+
113
+ role:
114
+ is_a: Role
115
+ class_uri: immeuble:Role
116
+ annotations:
117
+ ghostcrab.native_entity_type: role
118
+ ghostcrab.layer: actors
119
+
120
+ household:
121
+ is_a: Group
122
+ class_uri: immeuble:Household
123
+ description: Residential household occupying a lot; members remain individual persons.
124
+ annotations:
125
+ ghostcrab.native_entity_type: household
126
+ ghostcrab.layer: actors
127
+
128
+ ownership_group:
129
+ is_a: Group
130
+ class_uri: immeuble:OwnershipGroup
131
+ description: Versioned group of right holders for a lot.
132
+ annotations:
133
+ ghostcrab.native_entity_type: ownership_group
134
+ ghostcrab.layer: actors
135
+ ghostcrab.pattern: versioned_group
136
+
137
+ billing_group:
138
+ is_a: Group
139
+ class_uri: immeuble:BillingGroup
140
+ description: Versioned group used as the operational recipient of charges.
141
+ annotations:
142
+ ghostcrab.native_entity_type: billing_group
143
+ ghostcrab.layer: actors
144
+ ghostcrab.pattern: versioned_group
145
+
146
+ lease_contract:
147
+ is_a: Contract
148
+ class_uri: immeuble:LeaseContract
149
+ description: Lease contract linking a landlord, a tenant household, and a unit over time.
150
+ annotations:
151
+ ghostcrab.native_entity_type: lease_contract
152
+ ghostcrab.layer: legal
153
+
154
+ event:
155
+ is_a: Event
156
+ class_uri: immeuble:Event
157
+ annotations:
158
+ ghostcrab.native_entity_type: event
159
+ ghostcrab.layer: lifecycle
160
+
161
+ document:
162
+ is_a: Document
163
+ class_uri: prov:Entity
164
+ annotations:
165
+ ghostcrab.native_entity_type: document
166
+ ghostcrab.layer: evidence
167
+
168
+ decision:
169
+ is_a: Entity
170
+ class_uri: immeuble:Decision
171
+ annotations:
172
+ ghostcrab.native_entity_type: decision
173
+ ghostcrab.layer: governance
174
+
175
+ bank_account:
176
+ is_a: Entity
177
+ class_uri: immeuble:BankAccount
178
+ annotations:
179
+ ghostcrab.native_entity_type: bank_account
180
+ ghostcrab.layer: finance
181
+
182
+ coda_entry:
183
+ is_a: Entity
184
+ class_uri: immeuble:CodaEntry
185
+ description: Bank statement line imported from a Belgian CODA file.
186
+ annotations:
187
+ ghostcrab.native_entity_type: coda_entry
188
+ ghostcrab.layer: finance
189
+
190
+ charge_call:
191
+ is_a: Invoice
192
+ class_uri: immeuble:ChargeCall
193
+ annotations:
194
+ ghostcrab.native_entity_type: charge_call
195
+ ghostcrab.layer: finance
196
+
197
+ payment_allocation:
198
+ is_a: Entity
199
+ class_uri: immeuble:PaymentAllocation
200
+ annotations:
201
+ ghostcrab.native_entity_type: payment_allocation
202
+ ghostcrab.layer: finance
203
+
204
+ receipt:
205
+ is_a: Document
206
+ class_uri: immeuble:Receipt
207
+ annotations:
208
+ ghostcrab.native_entity_type: receipt
209
+ ghostcrab.layer: finance
210
+
211
+ reminder:
212
+ is_a: Document
213
+ class_uri: immeuble:Reminder
214
+ annotations:
215
+ ghostcrab.native_entity_type: reminder
216
+ ghostcrab.layer: finance
217
+
218
+ slots:
219
+ building_contains_block:
220
+ domain: building
221
+ range: block
222
+ slot_uri: immeuble:contains
223
+ description: Building contains a physical block or stairwell.
224
+
225
+ building_contains_shared_space:
226
+ domain: building
227
+ range: shared_space
228
+ slot_uri: immeuble:contains
229
+ description: Building contains a common area.
230
+
231
+ building_contains_shared_equipment:
232
+ domain: building
233
+ range: shared_equipment
234
+ slot_uri: immeuble:contains
235
+ description: Building contains shared equipment.
236
+
237
+ building_contains_cellar:
238
+ domain: building
239
+ range: cellar
240
+ slot_uri: immeuble:contains
241
+ description: Building contains cellar lots.
242
+
243
+ building_contains_parking_space:
244
+ domain: building
245
+ range: parking_space
246
+ slot_uri: immeuble:contains
247
+ description: Building contains parking spaces and garages.
248
+
249
+ building_contains_private_garden:
250
+ domain: building
251
+ range: private_garden
252
+ slot_uri: immeuble:contains
253
+ description: Building contains private gardens attached to lots.
254
+
255
+ building_contains_unit:
256
+ domain: building
257
+ range: unit
258
+ slot_uri: immeuble:contains
259
+ description: Building directly contains a private lot such as an apartment.
260
+
261
+ block_contains_unit:
262
+ domain: block
263
+ range: unit
264
+ slot_uri: immeuble:contains
265
+ description: Block contains private lots such as apartments.
266
+
267
+ shared_space_contains_equipment:
268
+ domain: shared_space
269
+ range: shared_equipment
270
+ slot_uri: immeuble:contains
271
+ description: Common area contains shared equipment such as a washing machine.
272
+
273
+ part_of:
274
+ domain: Asset
275
+ range: building
276
+ slot_uri: immeuble:partOf
277
+ annotations:
278
+ ghostcrab.native_edge_type: part_of
279
+
280
+ owns:
281
+ domain: Agent
282
+ range: Asset
283
+ slot_uri: immeuble:owns
284
+ annotations:
285
+ ghostcrab.native_edge_type: owns
286
+ ghostcrab.pattern: qualified_relation
287
+
288
+ occupies:
289
+ domain: person
290
+ range: unit
291
+ slot_uri: immeuble:occupies
292
+ annotations:
293
+ ghostcrab.native_edge_type: occupies
294
+
295
+ household_member:
296
+ domain: household
297
+ range: person
298
+ slot_uri: immeuble:householdMember
299
+ annotations:
300
+ ghostcrab.native_edge_type: household_member
301
+
302
+ primary_residence_of:
303
+ domain: unit
304
+ range: household
305
+ slot_uri: immeuble:primaryResidenceOf
306
+ annotations:
307
+ ghostcrab.native_edge_type: primary_residence_of
308
+
309
+ uses_exclusive:
310
+ domain: unit
311
+ range: Asset
312
+ slot_uri: immeuble:usesExclusive
313
+ annotations:
314
+ ghostcrab.native_edge_type: uses_exclusive
315
+
316
+ uses_common:
317
+ domain: household
318
+ range: Asset
319
+ slot_uri: immeuble:usesCommon
320
+ annotations:
321
+ ghostcrab.native_edge_type: uses_common
322
+
323
+ has_member:
324
+ domain: Group
325
+ range: person
326
+ slot_uri: org:hasMember
327
+ annotations:
328
+ ghostcrab.native_edge_type: has_member
329
+ ghostcrab.pattern: temporal_membership
330
+
331
+ assigned_garage:
332
+ domain: unit
333
+ range: parking_space
334
+ slot_uri: immeuble:assignedGarage
335
+ annotations:
336
+ ghostcrab.native_edge_type: assigned_garage
337
+
338
+ assigned_cellar:
339
+ domain: unit
340
+ range: cellar
341
+ slot_uri: immeuble:assignedCellar
342
+ annotations:
343
+ ghostcrab.native_edge_type: assigned_cellar
344
+
345
+ leases:
346
+ domain: lease_contract
347
+ range: unit
348
+ slot_uri: immeuble:leases
349
+ annotations:
350
+ ghostcrab.native_edge_type: leases
351
+
352
+ rented_to:
353
+ domain: Entity
354
+ range: household
355
+ slot_uri: immeuble:rentedTo
356
+ annotations:
357
+ ghostcrab.native_edge_type: rented_to
358
+
359
+ manages:
360
+ domain: organization
361
+ range: building
362
+ slot_uri: immeuble:manages
363
+ annotations:
364
+ ghostcrab.native_edge_type: manages
365
+
366
+ represents:
367
+ domain: organization
368
+ range: building
369
+ slot_uri: immeuble:represents
370
+ annotations:
371
+ ghostcrab.native_edge_type: represents
372
+
373
+ superseded_by:
374
+ domain: Group
375
+ range: Group
376
+ slot_uri: immeuble:supersededBy
377
+ annotations:
378
+ ghostcrab.native_edge_type: superseded_by
379
+ ghostcrab.pattern: temporal
380
+
381
+ closed:
382
+ domain: event
383
+ range: Entity
384
+ slot_uri: immeuble:closed
385
+ annotations:
386
+ ghostcrab.native_edge_type: closed
387
+ ghostcrab.pattern: event
388
+
389
+ created:
390
+ domain: event
391
+ range: Entity
392
+ slot_uri: immeuble:created
393
+ annotations:
394
+ ghostcrab.native_edge_type: created
395
+ ghostcrab.pattern: event
396
+
397
+ bills_to:
398
+ domain: billing_group
399
+ range: unit
400
+ slot_uri: immeuble:billsTo
401
+ annotations:
402
+ ghostcrab.native_edge_type: bills_to
403
+
404
+ records:
405
+ domain: bank_account
406
+ range: coda_entry
407
+ slot_uri: immeuble:records
408
+ annotations:
409
+ ghostcrab.native_edge_type: records
410
+
411
+ matched_to:
412
+ domain: coda_entry
413
+ range: charge_call
414
+ slot_uri: immeuble:matchedTo
415
+ annotations:
416
+ ghostcrab.native_edge_type: matched_to
417
+
418
+ allocated_to:
419
+ domain: coda_entry
420
+ range: billing_group
421
+ slot_uri: immeuble:allocatedTo
422
+ annotations:
423
+ ghostcrab.native_edge_type: allocated_to
424
+
425
+ triggered:
426
+ domain: coda_entry
427
+ range: Entity
428
+ slot_uri: immeuble:triggered
429
+ annotations:
430
+ ghostcrab.native_edge_type: triggered
431
+
432
+ requires_review:
433
+ domain: coda_entry
434
+ range: charge_call
435
+ slot_uri: immeuble:requiresReview
436
+ annotations:
437
+ ghostcrab.native_edge_type: requires_review
438
+
439
+ decided_by:
440
+ domain: Entity
441
+ range: decision
442
+ slot_uri: immeuble:decidedBy
443
+ annotations:
444
+ ghostcrab.native_edge_type: decided_by
@@ -0,0 +1,35 @@
1
+ workspace_id: immeuble
2
+ golden_workspace_id: immeuble
3
+ parity_note: Single canonical workspace - bundle and structured-import share immeuble
4
+
5
+ entity_counts_min:
6
+ buildings: 5
7
+ blocks: 9
8
+ units: 40
9
+ households: 40
10
+ cellars: 40
11
+ lease_contracts: 10
12
+ coda_entries: 35
13
+ persons: 80
14
+ maintenance_tickets: 10
15
+ worksite_projects: 2
16
+
17
+ relation_edges:
18
+ - contains
19
+ - owns
20
+ - occupies
21
+ - leases
22
+ - bills_to
23
+ - matched_to
24
+ - has_intervention
25
+ - covers_asset
26
+ - certified_asset
27
+ - has_work_package
28
+
29
+ graph_search_min:
30
+ appartement: 40
31
+
32
+ diagnostics:
33
+ rules_pack: gap-rules/L3-full.json
34
+ expected_findings: gap-rules/expected-findings.yaml
35
+ missing_required_relations_min: 12
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindflight/mindbrain-personal-studio",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
4
4
  "description": "Local GhostCrab MindBrain Studio for SQLite-backed workspaces.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -11,11 +11,16 @@
11
11
  "files": [
12
12
  "bin",
13
13
  "build",
14
+ "examples/immeuble",
15
+ "fixtures/immeuble-demo.sqlite",
14
16
  "fixtures/minimal-graph.sqlite",
15
17
  "scripts/backend-sqlite.mjs",
16
18
  "scripts/dev-sqlite.mjs",
19
+ "scripts/load-immeuble-demo.sh",
17
20
  "scripts/publish-npm.mjs",
18
21
  "scripts/seed-immeuble-projections.mjs",
22
+ "scripts/verify-immeuble-demo-sources.mjs",
23
+ "scripts/verify-immeuble-demo.mjs",
19
24
  "scripts/studio-sqlite.mjs",
20
25
  "scripts/lib",
21
26
  "README.md",
@@ -48,8 +53,12 @@
48
53
  "dev": "node scripts/dev-sqlite.mjs",
49
54
  "studio": "node scripts/studio-sqlite.mjs --dev",
50
55
  "start": "node scripts/studio-sqlite.mjs --serve",
56
+ "demo:build": "node examples/immeuble/scripts/enrich-immeuble-demo.mjs && node examples/immeuble/scripts/build-immeuble-model.mjs && node scripts/verify-immeuble-demo-sources.mjs",
57
+ "demo:load": "pnpm load:demo",
58
+ "demo:verify": "node scripts/verify-immeuble-demo.mjs",
59
+ "demo:fixture": "bash scripts/load-immeuble-demo.sh --sqlite fixtures/immeuble-demo.sqlite",
51
60
  "load:demo": "bash scripts/load-immeuble-demo.sh",
52
- "dev:fixture": "DATA_SOURCE=sqlite-demo GHOSTCRAB_SQLITE_PATH=fixtures/minimal-graph.sqlite vite dev",
61
+ "dev:fixture": "DATA_SOURCE=sqlite-demo GHOSTCRAB_SQLITE_PATH=fixtures/immeuble-demo.sqlite vite dev",
53
62
  "backend:immeuble": "node -e \"console.warn('deprecated: use pnpm backend');\" && node scripts/backend-sqlite.mjs",
54
63
  "dev:immeuble": "node -e \"console.warn('deprecated: use pnpm dev');\" && node scripts/dev-sqlite.mjs",
55
64
  "backend:sqlite": "node -e \"console.warn('deprecated: use pnpm backend');\" && node scripts/backend-sqlite.mjs",
@@ -4,7 +4,7 @@ import { existsSync, readFileSync } from "node:fs";
4
4
  import { homedir } from "node:os";
5
5
  import { basename, join, resolve } from "node:path";
6
6
 
7
- export const DEMO_SQLITE_PATH = "fixtures/minimal-graph.sqlite";
7
+ export const DEMO_SQLITE_PATH = "fixtures/immeuble-demo.sqlite";
8
8
  export const RUNTIME_DIR = "data/runtime";
9
9
 
10
10
  export function studioRootFromScript(importMetaUrl) {