diff --git a/forum-network/notes/forum.md b/forum-network/notes/forum.md
index 2a3f76a..8057d1b 100644
--- a/forum-network/notes/forum.md
+++ b/forum-network/notes/forum.md
@@ -10,3 +10,11 @@ Effective power can be considered as a flow rate of posts; (value per post) / (d
Internal energy is similar to Forum total value / DAO total reputation
Total available reputation is similar to thermodynamic free energy
+
+---
+
+Examples to add:
+
+- Incinerator
+
+- Negatively cite a zero-value post -- intent is to show how governance might cite a post as a counter-example
diff --git a/forum-network/notes/matrix.md b/forum-network/notes/matrix.md
new file mode 100644
index 0000000..f5a0f5b
--- /dev/null
+++ b/forum-network/notes/matrix.md
@@ -0,0 +1,9 @@
+Matrix is a communications network.
+It has a client-server, server-server decentralized architecture.
+Rooms are synced (eventually consistent) among all servers with clients participating in the room.
+
+Matrix supports "Application Services", which are limited to funcion in a passive mode, meaning they only piggyback on top of the existing protocols.
+
+Synapse, a Matrix server implementation, supports "Modules"
+
+The Matrix devs recognize the need for a robust reputation system and are in pursuit of funding and development for that purpose.
diff --git a/forum-network/src/classes/dao/validation-pool.js b/forum-network/src/classes/dao/validation-pool.js
index 4781608..d288b29 100644
--- a/forum-network/src/classes/dao/validation-pool.js
+++ b/forum-network/src/classes/dao/validation-pool.js
@@ -54,8 +54,7 @@ export class ValidationPool extends ReputationHolder {
|| [null, undefined].includes(duration)
) {
throw new Error(
- `Duration must be in the range [${params.voteDuration.min}, ${
- params.voteDuration.max ?? 'Inf'
+ `Duration must be in the range [${params.voteDuration.min}, ${params.voteDuration.max ?? 'Inf'
}]; got ${duration}`,
);
}
diff --git a/forum-network/src/index.html b/forum-network/src/index.html
index d587684..b3836c6 100644
--- a/forum-network/src/index.html
+++ b/forum-network/src/index.html
@@ -21,6 +21,7 @@
Redistribute power through subsequent support
Destroy a post after it has received positive citations
Initially zero-valued posts later receive citations
+ Negatively cite a zero-valued post
diff --git a/forum-network/src/tests/all.test.html b/forum-network/src/tests/all.test.html
index b6c23ac..0a5a659 100644
--- a/forum-network/src/tests/all.test.html
+++ b/forum-network/src/tests/all.test.html
@@ -33,6 +33,7 @@
+
+
+
+
+
diff --git a/forum-network/src/tests/scripts/forum/forum6.test.js b/forum-network/src/tests/scripts/forum/forum6.test.js
index b6684cd..8cb920e 100644
--- a/forum-network/src/tests/scripts/forum/forum6.test.js
+++ b/forum-network/src/tests/scripts/forum/forum6.test.js
@@ -10,7 +10,7 @@ describe('Forum', function tests() {
await forumTest.setup();
});
- context('Initially zero-valued post later receives citations', async () => {
+ context('Negatively citing a zero-valued post', async () => {
let forum;
let experts;
let posts;
@@ -66,11 +66,4 @@ describe('Forum', function tests() {
});
});
-// await addPost(experts[0], 10);
-// await addPost(experts[0], 10, [{ postId: posts[3], weight: -1 }]);
-// await addPost(experts[0], 10, [{ postId: posts[4], weight: -1 }]);
-
-// await addPost(expert3, 'Post 4', 100, [{ postId: postId2, weight: -1 }]);
-// await addPost(expert1, 'Post 5', 100, [{ postId: postId3, weight: -1 }]);
-
mochaRun();
diff --git a/forum-network/src/tests/scripts/forum/forum7.test.js b/forum-network/src/tests/scripts/forum/forum7.test.js
new file mode 100644
index 0000000..670e634
--- /dev/null
+++ b/forum-network/src/tests/scripts/forum/forum7.test.js
@@ -0,0 +1,39 @@
+import { mochaRun } from '../../../util.js';
+import { ForumTest } from './forum.test-util.js';
+
+describe('Forum', function tests() {
+ this.timeout(0);
+
+ const forumTest = new ForumTest();
+
+ before(async () => {
+ await forumTest.setup();
+ });
+
+ context('Initially zero-valued post later receives citations', async () => {
+ let forum;
+ let experts;
+ let posts;
+
+ before(() => {
+ forum = forumTest.forum;
+ experts = forumTest.experts;
+ posts = forumTest.posts;
+ });
+
+ it('Post1 has zero value', async () => {
+ await forumTest.addPost(experts[0], 0);
+ forum.getPost(posts[0]).value.should.equal(0);
+ });
+
+ it('Post2 negatively cites Post1', async () => {
+ await forumTest.addPost(experts[0], 10, [
+ { postId: posts[0], weight: -1 },
+ ]);
+ forum.getPost(posts[0]).value.should.equal(0);
+ forum.getPost(posts[1]).value.should.equal(10);
+ });
+ });
+});
+
+mochaRun();