gemeinwert
BIM CVP

gemeinwert  /  wiki  /  mapping  /  workflow

Theoretical workflow model

The full process definition before implementation: who creates which information container, which signed events are emitted, which checks must pass, and how openBIM exchange remains possible at every step.

Implementation principle

Every user action creates or updates one signed event family. Files stay files, standards stay standards, and the workflow is the deterministic graph that links them.

Layer model

The system has four layers. Keeping them separate is the main design rule: a bug in the web client must not change the standards profile, and a file upload must not pretend to be a BCF topic.

LayerOwnsExamplesImplementation output
StandardsVersioned semanticsIFC 4.3.2.0, BCF 3.0, IDS 1.0, ISO 19650Docs, validators, value lists
FilesBinary artifactsIFC, BCFZIP, snapshot PNG, IDS XML, PDFkind:1063 file metadata + storage URL
EventsSigned workflow recordsProject, topic, comment, audit, approvalNostr events on project relays
InterfacesUser interactionBCF form, thread view, project adminBrowser clients using NIP-07
Standards profile
  -> constrains project extensions and validators

Files
  -> get hash, URL, MIME type, size
  -> become kind:1063 records

Signed events
  -> link to files through e-tags
  -> link to project through a-tags
  -> link to people through p-tags

Interfaces
  -> create, read, validate and render those events

Roles and responsibilities

The process uses two role axes: discipline and authority. Discipline says what a person knows; authority says what they may change.

RoleTypical authorityCan createCan approve
Appointing party / clientappointing-partyPIR, approval requests, formal decisionsPublished state, phase gate
Information managerinfo-managerProject extensions, role mapping, validation rulesShared gate, CDE export
Lead appointed partylead-appointedBEP/BAP, coordination topics, model packagesDiscipline package release
Task team memberappointedComments, viewpoints, model file referencesOwn task output only
Reviewer / checkerreviewerIDS results, BCF comments, issue decisionsReview status, not client publication
CDE admincde-adminRelay/storage configuration, export authorizationTechnical export, not technical content

State machine

ISO 19650 gives the container states. BCF gives issue status. The workflow keeps both: container state tells whether an information container may be relied on; BCF status tells what happened to a coordination problem.

WIP
Private team work. Draft files and draft events.
Shared
Visible to other task teams. Coordination starts.
Published
Approved output. Can be used contractually.
Archive
Frozen record. No mutation, only references.
TransitionRequired eventValidation gateFailure mode
WIP to Sharedkind:30970 approval or package releaseFile hash, schema, required metadataPackage remains WIP
Shared to Publishedkind:30970 formal approvalOpen critical BCF topics, IDS result, signer policyPublication blocked
Published to ArchiveArchive manifestAll referenced files reachable and hash-validArchive incomplete
Published correctionNew revision + auditReason, affected files, approval chainNo silent overwrite

End-to-end happy path

This is the theoretical baseline that each implementation slice should follow. If an interface cannot support one step yet, it must not fake it; it should emit the events it can and leave the rest explicit. The same flow is shown with people and payload examples in Alice, Bob, Max.

StepUser actionEvents/filesChecks
1Create projectkind:30902Unique d, extension lists present
2Add members and rolesUpdated 30902, optional NIP-29 eventsEach p has discipline + authority
3Define requirements30880 PIR/EIR, 30810 IDS, 30811 LOINRequirement IDs stable, language tags set
4Upload model/file1063 file metadata, 30904 IFC file referenceHash, MIME, schema, MVD, discipline
5Validate delivery1180 IDS validation resultReport hash, result, failed requirements
6Create coordination issue1063 snapshot, 30901 viewpoint, 30900 topicBCF GUIDs, IFC GUIDs, status list
7Discuss and update1170 comments, 1171 audit, replacement 30900Status changes never happen without audit
8Resolve issueReplacement 30900, 1171 auditAssignee, reason and affected model version known
9Approve package30970 approvalSigner policy, open critical topics, validation status
10Export to BCF/CDE/archiveBCFZIP, Documents API upload, archive manifestRound-trip and hash checks pass

BCF issue loop

The issue loop is the first workflow to prove because it covers the core architecture: a normal browser can create a standards-compatible coordination object without owning the whole CDE.

create viewpoint
  -> kind:1063 snapshot file metadata
  -> kind:30901 immutable viewpoint

create topic
  -> kind:30900 current BCF topic

comment
  -> kind:1170 append-only comment

change status / assignee / priority
  -> kind:1171 audit event
  -> new kind:30900 with same d-tag

close
  -> kind:1171 audit event
  -> new kind:30900 status Resolved or Closed
RuleReasonImplementation implication
Topic current state is replaceableBCF topics change over timeQuery latest 30900 per d
Comments are append-onlyAuthorship must remain visibleEdit means replacement comment, not mutation
Viewpoints are immutableBCF API treats them as frozen contextAny camera/selection change creates new 30901
Status changes need auditCurrent state alone is not evidenceUI must create 1171 before or with replacement topic
Files are hash-boundSnapshots and IFC files need integrityAlways create 1063 for binary artifacts

Approval and publication loop

Publication is not a button that changes a label. It is a signed decision that references the information containers being published.

package selected
  -> collect IFC file refs, IDS results, unresolved BCF topics

preflight check
  -> no critical open topics
  -> required IDS checks passed or explicitly waived
  -> all file hashes available

approval
  -> kind:30970 with signer policy
  -> optional OpenTimestamps proof

publication
  -> update container state on relevant file/document records
  -> archive export manifest
Approval targetReferencesMinimum metadata
Model package30904 IFC refs, 1180 validationsStage, discipline, revision, signer policy
BCF decision30900 topic, 1170 final commentDecision text, status, responsible signer
Phase gateAll package refs in the gateTarget ISO state, target stage, signers
External exportDocuments API target, BCFZIP, IFC filesRemote CDE, export reason, hashes

Import/export loops

Interoperability is a hard requirement. The event graph must be able to import and export normal openBIM artifacts without losing meaning.

DirectionInputOutputLoss rule
BCFZIP to events.bcfzip30902, 30900, 30901, 1170, 1063Unknown BCF extensions go to content JSON
Events to BCFZIPProject event graph.bcfzipNostr-only metadata becomes extension data or export note
IFC upload.ifc1063 + 30904No model mutation, metadata only
IDS validation30904 + 308101180 + report fileValidator must sign tool identity
CDE exportEvent packageDocuments API upload or BCF API callsRemote IDs stored as tags, not as canonical IDs

Implementation order

The implementation should follow dependency order, not UI excitement. Each step produces a testable event corpus for the next one.

  1. Schema constants. Define event kinds, required tags, value lists and JSON content schemas.
  2. Project admin. Create 30902, members, roles and extension lists.
  3. File records. Create 1063 and 30904 from referenced files.
  4. BCF form. Create minimal 30900 topics with valid tags.
  5. Viewpoint support. Add snapshot/file metadata and immutable 30901 records.
  6. Thread view. Query topic, comments, audit, viewpoint and snapshot together.
  7. Status transitions. Add 1171 audit plus replacement topic state.
  8. BCFZIP import/export. Prove round-trip with fixture files.
  9. IDS validation. Attach requirements and results to model packages.
  10. Approval gate. Add 30970 and publication/export preflight.

Acceptance criteria

This is the practical checklist for deciding whether the theory is clear enough to implement.

QuestionMust be answerable from the event graph
Who owns this project?30902 project event and member p tags
Which standards profile applies?Project extension lists and standards profile links
Which model file is being discussed?30904 file reference from topic/viewpoint
Which IFC elements are affected?ifc tags and viewpoint component selection
What is the current issue status?Latest 30900 for the topic d
Who changed the status and why?1171 audit event with signer and reason
What was approved?30970 references to topics, files and validations
Can this leave the system?BCFZIP export and hash-valid files without hidden state

Read on

Sources