diff --git a/hubzilla/addon/scn01/contracts/record-v1.json b/hubzilla/addon/scn01/contracts/record-v1.json new file mode 100644 index 0000000..91da82e --- /dev/null +++ b/hubzilla/addon/scn01/contracts/record-v1.json @@ -0,0 +1,25 @@ +{ + "_meta": { + "contract": "scn01-record", + "version": "1.0", + "purpose": "Scenario attestation record. Immutable — appended, never overwritten. Carries a full snapshot of the participant's VS and DSC understanding at the moment of submission so the record is self-contained." + }, + "_header": { + "addon": "scn01", + "association_slug": "The association this record belongs to.", + "association_channel_id": "Hubzilla channel ID of the association, as a string.", + "participant_id": "The participant's Placekey.", + "submitted_at": "ISO 8601 timestamp of this submission.", + "standing": "public, participant, professional, or operator — access state at time of submission.", + "node_token_hash": "SHA-256 of the node token — not the token itself." + }, + "_payload": { + "pinned_scenario_ids": "Array of 1-3 scenario IDs from scenarios.json, deduplicated.", + "narrative": "Free text describing the situation.", + "vs_snapshot": "The participant's full VS fields object at the moment of this submission. Embedded, not referenced by ID — the record must stand alone.", + "dsc_snapshot": "The participant's full DSC fields object at the moment of this submission. Embedded, not referenced by ID — the record must stand alone." + }, + "_credentials": { + "g1_tx_hash": "Optional. Transaction hash of a one-Ğ1 transfer made to submit this record. May be null or absent. Absence does not invalidate the record — the coin is a utility that strengthens evidentiary weight, not a currency that gates acceptance." + } +}