gemeinwert
BIM CVP

gemeinwert  /  docs  /  KIND-REGISTRY.html

Kind Registry — Gemeinwert / BIM CVP Pilot

Status. Internal allocation, not a NIP yet. Maintained alongside pilot code. NIP proposal only after 3+ project validations.

Status. Internal allocation, not a NIP yet. Maintained alongside pilot code. NIP proposal only after 3+ project validations.

Principle. Use existing kinds where they fit. Own range only where there is a NIP gap + replaceable need. Document tag conventions cleanly so future self and contributors don't have to guess.

Reference to standards. The version choices (which IFC, which BCF, which MVD …) are centrally fixed in STANDARDS-PROFILE.md. This registry describes only how the Nostr events are structured. When a standard version bumps, STANDARDS-PROFILE.md is updated; the corresponding tag value ranges follow here.


Own range 30900–30999 (parameterized replaceable)

KindNamed-TagContentStatus
30900BCF Topictopic-guidcurrent statein testing
30901BCF Viewpointviewpoint-guidimmutable camera + componentsin testing
30902BCF Projectproject-guidproject metadatain testing
30903Document Referencedoc-guidexternal documentreserved
30904IFC File Referencefile-guidIFC or other modelin testing
30810IDS Specificationspec-guidInformation Delivery Specreserved
30811LOIN Definitionloin-idLevel of Information Needreserved
30850Product Data Template (PDT)template-idmanufacturer datasheetreserved
30880PIR / Owner Information Requirementsspec-idProject Information Requirementsreserved
30881Room Book Entryroom-idDIN 18205 compliant roomreserved
30930Document Recorddoc-idISO 19650 lifecycle documentreserved
30940LCA Study referencestudy-idEN 15804/15978 LCA report, CAM 1.3.2reserved
30941LCC Study referencestudy-idEN 16627 LCC reportreserved
30942Level(s) Indicator Setperiod-idEU reporting snapshotreserved
30960Construction Diary EntryYYYY-MM-DDOTS-anchoredreserved
30962Maintenance Cyclecycle-idmaintenance event per CAM 2.3.16reserved
30970Approval (single or multi-sig)approval-idplan / phase releasereserved
30971Deconstruction Plan Approvalplan-idCAM 2.3.17, 70% reuse targetreserved
30972Export Authorizationexport-idpublish-to-external-CDE manifestreserved

Own range 1170–1179 (regular, immutable)

BCF viewpoint profile rule. 30901 lives in the addressable range so a viewer can look up a viewpoint by BCF GUID, but the pilot profile forbids republishing the same d value. BCF viewpoints are immutable; a changed camera, selection, clipping plane or snapshot gets a new BCF viewpoint GUID.

KindNameContent
1170BCF Commentcomment text on topic
1171BCF Audit Eventfield change (status, priority, assignee)
1172BCF Reactionquick ack ("seen", "working on it")

Own range 1180–1189 (regular, immutable)

KindNameContent
1180IDS Validation Resultpass/fail with report ref
1190Sustainability Indicator SnapshotLevel(s) indicator point-in-time, CAM reporting
1230HVAC Telemetrysensor data point

Used existing kinds

KindNIPUsage
0NIP-01profile metadata per stakeholder
1NIP-01demo notes, tribe-level comments
1063NIP-94file metadata for IFCs, snapshots, attachments
9735NIP-57zaps (bounty, donations)
9734NIP-57zap requests
30023NIP-23long-form: reports, justifications, annexes
9000 / 9007NIP-29group management
30009NIP-58badge awards for role attestation

Tag conventions (binding for the pilot)

TagMeaningRequired?
didentity for replaceable events (GUID etc.)yes for 309xx
aproject reference (format 30902:<pubkey>:<project-guid>)yes for 309xx + 1170 + 1171
hNIP-29 group ID (if project in a group)when present
eevent reference (topic, viewpoint, file, parent comment)per relationship
ppubkey of a participant (assignee, reporter, watcher)when applicable
sindexed mirror of bcf-status for relay filteringyes for 30900
tfree tag or BCF labeloptional
bcf-guidoriginal BCF GUID preserved for round-tripyes for 30900 + 30901
bcf-versionbuildingSMART BCF version that the event semantically represents: 3.0 (default) or 2.1 (fallback)yes for 309xx
bcf-statustopic status (BCF 3.0 Project Extensions value list)yes for 30900
bcf-typetopic type (Issue, Clash, RFI, …)yes for 30900
bcf-prioritypriorityoptional
bcf-dueunix timestamp due dateoptional
bcf-stageproject phaseoptional
bcf-server-assigned-idhuman-readable ID from BCF 3.0 ServerAssignedIdoptional
ifcIFC element GUID (22-char compressed)when topic references an element
ifc-fileevent ID of a kind:30904 file refwhen model is referenced
ifc-projectIfcProject GUIDyes for 30904
ifc-spatialIfcSpatialStructureElement GUIDoptional
authoring-toolRevit / ArchiCAD / Allplan / Tekla / Vectorworks / DDS-CAD / …yes for 30904
disciplinearchitecture / structural / mep / electrical / civil / buildingPhysics / fireSafetyyes for 30904
schemaexact IFC version: IFC4X3_ADD2 (default), IFC4_ADD2_TC1, IFC2X3_TC1 (legacy)yes for 30904
mvdModel View Definition: ReferenceView (default), AlignmentBasedView, IFC4Precast, IFC2x3CoordinationViewyes for 30904
iso19650-statelifecycle state: WIP / Shared / Published / Archiveyes for 30903, 30904, 30930
ids-spec-refevent ID of a kind:30810 IDS spec being validated againstyes for 1180
xsha256 (hex, lowercase)yes for file metadata
mMIME typeyes for file metadata
sizebytesyes for file metadata
otsOpenTimestamps proof (base64)optional
audit-field, audit-from, audit-tofield value changeyes for 1171
clientproducer client (tool name + version)optional
bcf-actionBCF API action (update, createComment, createViewpoint …) — relevant for audit eventsoptional for 1171
visibilityinternal / team-shared / client-ready — controls export filterdefault team-shared
remoteexternal CDE endpoint (provincia-bolzano-cde, acc-mirror, etc.)optional, multiple allowed

Honesty tags — data provenance

CAM data is often modelled, not measured. Each sustainability value carries a source marker:

TagValuesMeaning
epd-sourcemodel / verified / measuredEPD industry average / EN-15804-accredited / factory telemetry
lca-sourcemodel / verified / measuredsame for LCA calculations
co2-sourcemodel / verified / measuredsame for CO2 balance values

Usage example in a kind:30850 PDT or kind:30940 LCA event:

["epd-uri", "https://epditaly.it/epd/abc123"]
["epd-source", "verified"]
["epd-valid-until", "2029-04-15"]
["co2-source", "model"]

Audit trail thus shows what was estimated and what was measured. Over years, measured gradually replaces model values without structural change.

Private-layer cross-references (Bitcoin / White Noise / Bitcredit)

Per PRINCIPLES section 4 (Public ledger, private conversation): every signed public event MAY carry references to corresponding off-chain private artifacts. Identity stays npub-rooted; both layers share the same actor.

TagValuesMeaning
white-noise-groupMLS group identifierPrivate team discussion that preceded or accompanies this public event. Allows audit-traceback without disclosure.
bitcredit-noteBitcredit note identifier (URI / hash)Real Bill issued against this event as underwriting substrate. Use on approved Abschlagsrechnung / Lieferantenkredit events.
lnurl-payLNURL-Pay endpoint or Lightning AddressPayment endpoint for service-bound events (DVM marketplace, Bauleistung-Pay-Per-Item).
cashu-mintCashu mint URLFor anonymous reviews or whistleblower channels coupled to this event.
nip-44-keyhex pubkeyEncryption key for NIP-17 fallback when White Noise unavailable. Per PRINCIPLES §4 production-readiness clause.
fedimint-fedFederation invitation codeShared-treasury context (Bauherrengemeinschaft, planning office liquidity pool).

Usage example on a kind:30970 Approval event:

["a", "30902:<pubkey>:building-2026"]
["e", "<topic-event-id>"]
["bcf-status", "Closed"]
["white-noise-group", "mls-grp-building-hkls-bauteam"]
["bitcredit-note", "bcr:bn1...subleistung-EG-HKLS"]
["ots", "<base64 timestamp proof>"]

The Approval is publicly signed and auditable. The pre-discussion remains in the MLS group. The Real Bill is anchored on Bitcredit and references the same approval as its underwriting source. Three protocols, one event.

CAM Edilizia 2025 tags

TagValuesRequired?
reuse-classdirect-reuse / recycle / recovery / disposalyes for kind:30850 PDT + 30971
dismount-methodfree text (screwed, glued, mortared …)optional, in PDT
uni-8290-codebuilding part code per UNI 8290-1optional for Italian projects
epd-uriURL to accredited EPDyes for 30850 if present
epd-valid-untilISO dateyes for 30850 if epd-uri set
lca-rspReference Study Period in yearsyes for 30940
level-s-indicatorindicator name per EU Level(s) frameworkyes for 1190

Versioning policy

Two version axes

  • bcf-version in the event references the buildingSMART BCF version the event is semantically compatible with (3.0 as default, 2.1 as fallback). This axis follows buildingSMART, not us.
  • Our pilot schema iteration is tracked at the repo level: git tag, release notes, README.md. This axis describes how our tag conventions mature. Pre-1.0 expects breaking changes; consumers must be tolerant.

When to bump what

  • buildingSMART version bump (e.g. BCF 3.0 → 3.1): update STANDARDS-PROFILE.md, extend the bcf-version value list here, events carry the new version once producers switch.
  • Our tag rename or required-tag change: repo tag bump to major (e.g. v0.2 → v0.3), consumers need to adjust their parsers.
  • New optional tags: repo tag bump to minor, old consumers work unchanged.
  • Repo tag 1.0: only after NIP draft consensus and at least 3 completed pilot projects.

Current state

  • Repo version: 0.1 (pre-release, breaking changes expected)
  • BCF default: 3.0
  • IFC default: 4.3.2.0 with Reference View MVD
  • IDS default: 1.0

Path to NIP

  1. Run through phases 0–6 of the Building pilot (see building-pilot-build-plan.md).
  2. Review the event corpus — which tags were actually used, which were dead, which were missing.
  3. Run schema validation over the gathered material, mark inconsistencies.
  4. Write the NIP draft with real events as test vectors.
  5. Consensus sondierung with 1–2 other AEC builders before PR.
  6. PR against nostr-protocol/nips with the allocated range reservation.

Earliest Q4 2026, realistically Q1/Q2 2027.


This file lives with the code. Every change in the tag or kind schema = entry here. No tag convention in code that isn't documented here.