Changes for page ProjectsSheet

Last modified by Zenna Elfen on 2025/11/24 11:39

From version 2.1
edited by Zenna Elfen
on 2025/11/20 21:31
Change comment: Update class sheet
To version 4.1
edited by Zenna Elfen
on 2025/11/20 22:05
Change comment: Update class sheet

Summary

Details

Page properties
Content
... ... @@ -35,6 +35,18 @@
35 35   <dd>$doc.display('shortText1')</dd>
36 36   <dt #if (!$editing && $hasEdit)
37 37   class="editableProperty"
38 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText3')))"
39 + data-property-type="object"#end>
40 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText3"#end>
41 + $escapetool.xml($doc.displayPrettyName('shortText3', false, false))
42 + </label>
43 + <span class="xHint">
44 + $escapetool.xml($services.localization.render('What are key aspects of this project?'))
45 + </span>
46 + </dt>
47 + <dd>$doc.display('shortText3')</dd>
48 + <dt #if (!$editing && $hasEdit)
49 + class="editableProperty"
38 38   data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('shortText2')))"
39 39   data-property-type="object"#end>
40 40   <label#if ($editing) for="Projects.Code.ProjectsClass_0_shortText2"#end>
... ... @@ -83,16 +83,301 @@
83 83   <dd>$doc.display('conf_res')</dd>
84 84   <dt #if (!$editing && $hasEdit)
85 85   class="editableProperty"
86 - data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('content1')))"
98 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText2')))"
87 87   data-property-type="object"#end>
88 - <label#if ($editing) for="Projects.Code.ProjectsClass_0_content1"#end>
89 - $escapetool.xml($doc.displayPrettyName('content1', false, false))
100 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText2"#end>
101 + $escapetool.xml($doc.displayPrettyName('longText2', false, false))
90 90   </label>
91 91   <span class="xHint">
92 92   $escapetool.xml($services.localization.render('How is data persisted locally and replicated between peers?'))
93 93   </span>
94 94   </dt>
95 - <dd>$doc.display('content1')</dd>
107 + <dd>$doc.display('longText2')</dd>
108 + <dt #if (!$editing && $hasEdit)
109 + class="editableProperty"
110 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList2')))"
111 + data-property-type="object"#end>
112 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList2"#end>
113 + $escapetool.xml($doc.displayPrettyName('staticList2', false, false))
114 + </label>
115 + </dt>
116 + <dd>$doc.display('staticList2')</dd>
117 + <dt #if (!$editing && $hasEdit)
118 + class="editableProperty"
119 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText6')))"
120 + data-property-type="object"#end>
121 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText6"#end>
122 + $escapetool.xml($doc.displayPrettyName('longText6', false, false))
123 + </label>
124 + <span class="xHint">
125 + $escapetool.xml($services.localization.render('How do peers collaboratively change shared data and merge conflicts?'))
126 + </span>
127 + </dt>
128 + <dd>$doc.display('longText6')</dd>
129 + <dt #if (!$editing && $hasEdit)
130 + class="editableProperty"
131 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList3')))"
132 + data-property-type="object"#end>
133 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList3"#end>
134 + $escapetool.xml($doc.displayPrettyName('staticList3', false, false))
135 + </label>
136 + <span class="xHint">
137 + $escapetool.xml($services.localization.render('This layer focuses on durability, consistency, and redundancy. It handles write-paths, crash-resilience, and replication semantics across nodes. It is the “database/storage engine” layer where data lives and survives over time, independent of sync or merging logic. Examples: SQLite, IndexedDB, LMDB, Hypercore (append-only logs), WALs, Merkle-DAGs (IPFS/IPLD), Blob/media storage'))
138 + </span>
139 + </dt>
140 + <dd>$doc.display('staticList3')</dd>
141 + <dt #if (!$editing && $hasEdit)
142 + class="editableProperty"
143 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText8')))"
144 + data-property-type="object"#end>
145 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText8"#end>
146 + $escapetool.xml($doc.displayPrettyName('longText8', false, false))
147 + </label>
148 + <span class="xHint">
149 + $escapetool.xml($services.localization.render(' This layer defines how shared data evolves when multiple peers edit concurrently. It focuses on conflict-free merging, causality, and consistency of meaning, not transport or storage. CRDTs ensure deterministic convergence, while event-sourced or stream-driven models maintain a history of all changes and derive consistent state from it. Examples: CRDTs (Yjs, Automerge), OT, Event Sourcing, Stream Processing, Version Vectors, Peritext'))
150 + </span>
151 + </dt>
152 + <dd>$doc.display('longText8')</dd>
153 + <dt #if (!$editing && $hasEdit)
154 + class="editableProperty"
155 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList4')))"
156 + data-property-type="object"#end>
157 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList4"#end>
158 + $escapetool.xml($doc.displayPrettyName('staticList4', false, false))
159 + </label>
160 + <span class="xHint">
161 + $escapetool.xml($services.localization.render('Discovery occurs in two phases: 1. Peer Discovery → finding any nodes 2. Topic Discovery → finding relevant nodes or resources These mechanisms enable decentralized bootstrapping and interest-based overlays. **Examples**: DHTs (Kademlia, Pastry), mDNS, DNS-SD, Bluetooth scanning, QR bootstrapping, static peer lists, Interest-based routing, PubSub discovery (libp2p), Rendezvous protocols'))
162 + </span>
163 + </dt>
164 + <dd>$doc.display('staticList4')</dd>
165 + <dt #if (!$editing && $hasEdit)
166 + class="editableProperty"
167 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText9')))"
168 + data-property-type="object"#end>
169 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText9"#end>
170 + $escapetool.xml($doc.displayPrettyName('longText9', false, false))
171 + </label>
172 + <span class="xHint">
173 + $escapetool.xml($services.localization.render('How do messages travel across multiple hops, and what abstract network structure is created?'))
174 + </span>
175 + </dt>
176 + <dd>$doc.display('longText9')</dd>
177 + <dt #if (!$editing && $hasEdit)
178 + class="editableProperty"
179 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList5')))"
180 + data-property-type="object"#end>
181 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList5"#end>
182 + $escapetool.xml($doc.displayPrettyName('staticList5', false, false))
183 + </label>
184 + <span class="xHint">
185 + $escapetool.xml($services.localization.render('This layer provides logical connections and flow control. QUIC and WebRTC bring modern congestion control and encryption defaults; Interpeer explores transport beyond IP assumptions. **Examples**: TCP, UDP, QUIC, SCTP, WebRTC DataChannels, Interpeer transport stack'))
186 + </span>
187 + </dt>
188 + <dd>$doc.display('staticList5')</dd>
189 + <dt #if (!$editing && $hasEdit)
190 + class="editableProperty"
191 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText10')))"
192 + data-property-type="object"#end>
193 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText10"#end>
194 + $escapetool.xml($doc.displayPrettyName('longText10', false, false))
195 + </label>
196 + <span class="xHint">
197 + $escapetool.xml($services.localization.render('How do peers establish end-to-end byte streams and reliable delivery?'))
198 + </span>
199 + </dt>
200 + <dd>$doc.display('longText10')</dd>
201 + <dt #if (!$editing && $hasEdit)
202 + class="editableProperty"
203 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList6')))"
204 + data-property-type="object"#end>
205 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList6"#end>
206 + $escapetool.xml($doc.displayPrettyName('staticList6', false, false))
207 + </label>
208 + <span class="xHint">
209 + $escapetool.xml($services.localization.render('Highly relevant for offline-first / edge networks, device-to-device communication, and mesh networks and relates to the hardware which facilitates connections. **Examples**: Ethernet, Wi-Fi Direct / Wi-Fi Aware (post-AWDL), Bluetooth Mesh, LoRa, NFC, Cellular, CSMA/CA, TDMA, FHSS'))
210 + </span>
211 + </dt>
212 + <dd>$doc.display('staticList6')</dd>
213 + <dt #if (!$editing && $hasEdit)
214 + class="editableProperty"
215 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText11')))"
216 + data-property-type="object"#end>
217 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText11"#end>
218 + $escapetool.xml($doc.displayPrettyName('longText11', false, false))
219 + </label>
220 + <span class="xHint">
221 + $escapetool.xml($services.localization.render('How does data move across the medium?'))
222 + </span>
223 + </dt>
224 + <dd>$doc.display('longText11')</dd>
225 + <dt #if (!$editing && $hasEdit)
226 + class="editableProperty"
227 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList7')))"
228 + data-property-type="object"#end>
229 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList7"#end>
230 + $escapetool.xml($doc.displayPrettyName('staticList7', false, false))
231 + </label>
232 + <span class="xHint">
233 + $escapetool.xml($services.localization.render('Content addressing ensures immutability, verifiability, and deduplication. Identity of data = cryptographic hash, enabling offline-first and tamper-evident systems. **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)'))
234 + </span>
235 + </dt>
236 + <dd>$doc.display('staticList7')</dd>
237 + <dt #if (!$editing && $hasEdit)
238 + class="editableProperty"
239 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText12')))"
240 + data-property-type="object"#end>
241 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText12"#end>
242 + $escapetool.xml($doc.displayPrettyName('longText12', false, false))
243 + </label>
244 + <span class="xHint">
245 + $escapetool.xml($services.localization.render('How is data addressed and verified by content, not location?'))
246 + </span>
247 + </dt>
248 + <dd>$doc.display('longText12')</dd>
249 + <dt #if (!$editing && $hasEdit)
250 + class="editableProperty"
251 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList8')))"
252 + data-property-type="object"#end>
253 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList8"#end>
254 + $escapetool.xml($doc.displayPrettyName('staticList8', false, false))
255 + </label>
256 + <span class="xHint">
257 + $escapetool.xml($services.localization.render('Connectivity ensures peers bypass NATs/firewalls to reach each other. **Examples**: IPv6 direct, NAT Traversal, STUN, TURN, ICE (used in WebRTC), UDP hole punching, UPnP'))
258 + </span>
259 + </dt>
260 + <dd>$doc.display('staticList8')</dd>
261 + <dt #if (!$editing && $hasEdit)
262 + class="editableProperty"
263 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText13')))"
264 + data-property-type="object"#end>
265 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText13"#end>
266 + $escapetool.xml($doc.displayPrettyName('longText13', false, false))
267 + </label>
268 + <span class="xHint">
269 + $escapetool.xml($services.localization.render('What relevance does this topic have for the project?'))
270 + </span>
271 + </dt>
272 + <dd>$doc.display('longText13')</dd>
273 + <dt #if (!$editing && $hasEdit)
274 + class="editableProperty"
275 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList9')))"
276 + data-property-type="object"#end>
277 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList9"#end>
278 + $escapetool.xml($doc.displayPrettyName('staticList9', false, false))
279 + </label>
280 + <span class="xHint">
281 + $escapetool.xml($services.localization.render('Manages connection lifecycle, including authentication handshakes, reconnection after drops, and session continuation. **Examples**: TLS handshake semantics, Noise IK/XX patterns, session tokens, keep-alive heartbeats, reconnection strategies, session resumption tickets'))
282 + </span>
283 + </dt>
284 + <dd>$doc.display('staticList9')</dd>
285 + <dt #if (!$editing && $hasEdit)
286 + class="editableProperty"
287 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('MesForm')))"
288 + data-property-type="object"#end>
289 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_MesForm"#end>
290 + $escapetool.xml($doc.displayPrettyName('MesForm', false, false))
291 + </label>
292 + <span class="xHint">
293 + $escapetool.xml($services.localization.render('How are connections initiated, authenticated, resumed, and kept alive?'))
294 + </span>
295 + </dt>
296 + <dd>$doc.display('MesForm')</dd>
297 + <dt #if (!$editing && $hasEdit)
298 + class="editableProperty"
299 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('staticList10')))"
300 + data-property-type="object"#end>
301 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_staticList10"#end>
302 + $escapetool.xml($doc.displayPrettyName('staticList10', false, false))
303 + </label>
304 + <span class="xHint">
305 + $escapetool.xml($services.localization.render(' Serialization ensures portable data representation, forward-compatible schemas, and efficient messaging. **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)'))
306 + </span>
307 + </dt>
308 + <dd>$doc.display('staticList10')</dd>
309 + <dt #if (!$editing && $hasEdit)
310 + class="editableProperty"
311 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('longText15')))"
312 + data-property-type="object"#end>
313 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_longText15"#end>
314 + $escapetool.xml($doc.displayPrettyName('longText15', false, false))
315 + </label>
316 + <span class="xHint">
317 + $escapetool.xml($services.localization.render('How is data encoded, structured, and/or made interoperable between peers?'))
318 + </span>
319 + </dt>
320 + <dd>$doc.display('longText15')</dd>
321 + <dt #if (!$editing && $hasEdit)
322 + class="editableProperty"
323 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('ctn_filesynch')))"
324 + data-property-type="object"#end>
325 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_ctn_filesynch"#end>
326 + $escapetool.xml($doc.displayPrettyName('ctn_filesynch', false, false))
327 + </label>
328 + <span class="xHint">
329 + $escapetool.xml($services.localization.render(' Bulk data syncing has different trade-offs than small collaborative state (chunking, deduplication, partial transfer, resume logic). Essential for media and archival P2P use-cases. **Examples**: BitTorrent chunking, IPFS block-store, NDN segments, rsySerialization ensures portable data representation, forward-compatible schemas, and efficient messaging. **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)nc-style delta sync, ZFS send-receive, streaming blob transfers'))
330 + </span>
331 + </dt>
332 + <dd>$doc.display('ctn_filesynch')</dd>
333 + <dt #if (!$editing && $hasEdit)
334 + class="editableProperty"
335 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('filesynch')))"
336 + data-property-type="object"#end>
337 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_filesynch"#end>
338 + $escapetool.xml($doc.displayPrettyName('filesynch', false, false))
339 + </label>
340 + <span class="xHint">
341 + $escapetool.xml($services.localization.render('How are large objects transferred and deduplicated efficiently across peers?'))
342 + </span>
343 + </dt>
344 + <dd>$doc.display('filesynch')</dd>
345 + <dt #if (!$editing && $hasEdit)
346 + class="editableProperty"
347 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('ctn_localsto')))"
348 + data-property-type="object"#end>
349 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_ctn_localsto"#end>
350 + $escapetool.xml($doc.displayPrettyName('ctn_localsto', false, false))
351 + </label>
352 + <span class="xHint">
353 + $escapetool.xml($services.localization.render('Provides durable on-device state and local computation (event sourcing, materialization, compaction). Enables offline-first writes and deterministic replay. **Examples**: RocksDB, LevelDB, SQLite, LMDB, local WALs/append-only logs, embedded stream processors (NATS Core JetStream mode, Actyx-like edge runtimes), Kafka-like libraries'))
354 + </span>
355 + </dt>
356 + <dd>$doc.display('ctn_localsto')</dd>
357 + <dt #if (!$editing && $hasEdit)
358 + class="editableProperty"
359 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('localsto')))"
360 + data-property-type="object"#end>
361 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_localsto"#end>
362 + $escapetool.xml($doc.displayPrettyName('localsto', false, false))
363 + </label>
364 + <span class="xHint">
365 + $escapetool.xml($services.localization.render('How do nodes persist, index, and process data locally—without external servers?'))
366 + </span>
367 + </dt>
368 + <dd>$doc.display('localsto')</dd>
369 + <dt #if (!$editing && $hasEdit)
370 + class="editableProperty"
371 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('ctn_crash')))"
372 + data-property-type="object"#end>
373 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_ctn_crash"#end>
374 + $escapetool.xml($doc.displayPrettyName('ctn_crash', false, false))
375 + </label>
376 + <span class="xHint">
377 + $escapetool.xml($services.localization.render('Ensures P2P apps don’t corrupt state on crashes. Tied to local storage & stream-processing, and critical in offline-first and distributed update pipelines. Abortability is the updated term, as per Mr. Kleppmann for Atomicity as part of the [ACID abbreviation](https://www.youtube.com/watch?v=5ZjhNTM8XU8). **Examples**: IPFS CIDs, BitTorrent infohashes, Git hashes, SHA-256 addressing, Named Data Networking (NDN)'))
378 + </span>
379 + </dt>
380 + <dd>$doc.display('ctn_crash')</dd>
381 + <dt #if (!$editing && $hasEdit)
382 + class="editableProperty"
383 + data-property="$escapetool.xml($services.model.serialize($object.getPropertyReference('Crash_Res')))"
384 + data-property-type="object"#end>
385 + <label#if ($editing) for="Projects.Code.ProjectsClass_0_Crash_Res"#end>
386 + $escapetool.xml($doc.displayPrettyName('Crash_Res', false, false))
387 + </label>
388 + <span class="xHint">
389 + $escapetool.xml($services.localization.render('How do nodes recover and maintain correctness under failure?'))
390 + </span>
391 + </dt>
392 + <dd>$doc.display('Crash_Res')</dd>
96 96   </dl>
97 97  </div>
98 98  {{/html}}