JADE/Implementations/Archive 2017

This page describes the intended affordances of the JADE system and schemas that are meant to address these affordances. Edits are welcome. Bold-Revert-Discuss rules apply. See T153152 and https://etherpad.wikimedia.org/p/meta_ores_schema for past notes.

Affordances

 * User judgments (endorsements)
 * Wiki users may attach human judgement to any wiki artifact with a numerical ID (page, user, revision, etc.)
 * A user may only supply one judgement per artifact, but they can update their judgement.
 * Users may include a short free-text comment with their judgements (hash tags? #anon #addscategory)
 * Multiple users can record judgements for any given artifact


 * Judgment schemas
 * Judgements are structured data that corresponds to a machine-readable schema
 * New schemas can be safely added
 * Schemas are named and versioned


 * Consensus decisions
 * A flow topic can be associated with every artifact/schema (e.g. revision:12345/editquality --> Topic:32SAhbhas6)
 * A judgement can be promoted to "preferred" status (presumably through consensus discussion)
 * Judgements that disagree with "preferred" status remain present


 * Suppression/curation
 * User information, comments, and entire endorsements can be suppressed by changing visibility


 * History
 * All actions are captured as events that can be queried historically.

Schemas

 * entity_discussion [unique key = (entity_type, entity_id)]
 * context : str (dbname of the wiki)
 * entity_type_id : int (foreign key to entity_type)
 * entity_id : int (foreign key to an entity)
 * flow_id : str (foreign key to a flow thread for an artifact)


 * judgment [unique key = (context, entity_type_id, entity_id, schema_id, data)]
 * id : int, primary key
 * context : str (dbname of the wiki)
 * entity_type_id : int (foreign key to entity_type)
 * entity_id : int (foreign key to an entity)
 * schema_id : int (foreign key to a schema)
 * data : blob (json blob matching schema for judgement)
 * preference : bool (represents consensus)
 * touched : datetime


 * endorsement [unique key = (judgement_id, gu_id)]
 * id : int, primary key
 * judgement_id : int (foreign key to a judgment)
 * gu_id : int (foreign key to centralauth)
 * comment : str
 * visibility : int (bitfield: user | comment | all)
 * touched : datetime


 * schema [unique key = (name, version)]
 * id : int, primary key
 * name : str (An identifier for the schema)
 * version : str (Semantic version string)
 * touched : datetime
 * data : blob (JSON schema)


 * new-schema
 * name : str (An identifier for the schema)
 * version : str (Semantic version string)
 * data : blob (JSON schema)
 * gu_id : int (foreign key to centralauth -- the creating user)
 * comment : str


 * new-discussion
 * context : str (dbname of the wiki)
 * entity_type : str (the entity_type name)
 * entity_id : int (foreign key to an entity)
 * schema : str (the name of a schema)
 * flow_id : str (foreign key to a flow thread for an artifact)
 * gu_id : int (foreign key to centralauth -- the creating user)


 * new-judgement
 * id : the identifier of a specific judgement
 * context : str (dbname of the wiki)
 * entity_type : str (the entity_type name)
 * entity_id : int (foreign key to an entity)
 * schema : str (the name of a schema)
 * data : blob (json blob matching schema for judgement)
 * gu_id : int (foreign key to centralauth -- the creating user)


 * judgement-preference-set
 * judgement_id : int (foreign key to judgement)
 * gu_id : int (foreign key to centralauth -- the user who set the preference)


 * new-endorsement
 * judgement_id : int (foreign key to a judgment)
 * gu_id : int (foreign key to centralauth -- the user to created the endorsement)
 * comment : str


 * endorsement-change
 * judgement_id : int (foreign key to a judgment)
 * gu_id : int (foreign key to centralauth -- the user to created the endorsement)
 * comment : str


 * endorsement-visibility-change
 * judgement_id
 * visibility : int (bitfield: user | comment | data | all)
 * gu_id : int (foreign key to centralauth -- the user who updated the visibility)
 * comment : str