liquid_feedback_core

changeset 458:fae00a5c1c71

Absolute first supporter quorum (in addition to admission_rule/holdoff_time mechanism)
author jbe
date Sat Dec 12 11:53:36 2015 +0100 (2015-12-12)
parents ca21a3f49e4c
children 003b4cc8e9ef
files core.sql test.sql
line diff
     1.1 --- a/core.sql	Fri Dec 11 23:44:02 2015 +0100
     1.2 +++ b/core.sql	Sat Dec 12 11:53:36 2015 +0100
     1.3 @@ -366,6 +366,7 @@
     1.4          "discussion_time"       INTERVAL,
     1.5          "verification_time"     INTERVAL,
     1.6          "voting_time"           INTERVAL,
     1.7 +        "issue_quorum"          INT4            NOT NULL,
     1.8          "initiative_quorum_num" INT4            NOT NULL,
     1.9          "initiative_quorum_den" INT4            NOT NULL,
    1.10          "defeat_strength"     "defeat_strength" NOT NULL DEFAULT 'tuple',
    1.11 @@ -382,6 +383,8 @@
    1.12          "indirect_majority_non_negative" INT4   NOT NULL DEFAULT 0,
    1.13          "no_reverse_beat_path"          BOOLEAN NOT NULL DEFAULT FALSE,
    1.14          "no_multistage_majority"        BOOLEAN NOT NULL DEFAULT FALSE,
    1.15 +        CONSTRAINT "issue_quorum_if_and_only_if_not_polling" CHECK (
    1.16 +          "polling" = ("issue_quorum" ISNULL) ),
    1.17          CONSTRAINT "timing" CHECK (
    1.18            ( "polling" = FALSE AND
    1.19              "min_admission_time" NOTNULL AND "max_admission_time" NOTNULL AND
    1.20 @@ -414,7 +417,8 @@
    1.21  COMMENT ON COLUMN "policy"."discussion_time"       IS 'Duration of issue state ''discussion''; Regular time until an issue is "half_frozen" after being "accepted"';
    1.22  COMMENT ON COLUMN "policy"."verification_time"     IS 'Duration of issue state ''verification''; Regular time until an issue is "fully_frozen" (e.g. entering issue state ''voting'') after being "half_frozen"';
    1.23  COMMENT ON COLUMN "policy"."voting_time"           IS 'Duration of issue state ''voting''; Time after an issue is "fully_frozen" but not "closed" (duration of issue state ''voting'')';
    1.24 -COMMENT ON COLUMN "policy"."initiative_quorum_num" IS   'Numerator of satisfied supporter quorum  to be reached by an initiative to be "admitted" for voting';
    1.25 +COMMENT ON COLUMN "policy"."issue_quorum"          IS 'Minimum number of supporters needed for one initiative of an issue to allow the issue to pass from ''admission'' to ''discussion'' state (Note: further requirements apply, see tables "admission_rule" and "admission_rule_condition")';
    1.26 +COMMENT ON COLUMN "policy"."initiative_quorum_num" IS 'Numerator of satisfied supporter quorum  to be reached by an initiative to be "admitted" for voting';
    1.27  COMMENT ON COLUMN "policy"."initiative_quorum_den" IS 'Denominator of satisfied supporter quorum to be reached by an initiative to be "admitted" for voting';
    1.28  COMMENT ON COLUMN "policy"."defeat_strength"       IS 'How pairwise defeats are measured for the Schulze method; see type "defeat_strength"; ''tuple'' is the recommended setting';
    1.29  COMMENT ON COLUMN "policy"."tie_breaking"          IS 'Tie-breaker for the Schulze method; see type "tie_breaking"; ''variant1'' or ''variant2'' are recommended';
    1.30 @@ -4628,16 +4632,12 @@
    1.31            FROM "policy" WHERE "id" = "issue_row"."policy_id";
    1.32          IF 
    1.33            ( now() >=
    1.34 -            "issue_row"."created" + "issue_row"."min_admission_time" ) --AND
    1.35 +            "issue_row"."created" + "issue_row"."min_admission_time" ) AND
    1.36            -- TODO: implement new mechanism for issue admission
    1.37 -          --
    1.38 -          --EXISTS (
    1.39 -          --  SELECT NULL FROM "initiative"
    1.40 -          --  WHERE "issue_id" = "issue_id_p"
    1.41 -          --  AND "supporter_count" > 0
    1.42 -          --  AND "supporter_count" * "policy_row"."issue_quorum_den"
    1.43 -          --  >= "issue_row"."population" * "policy_row"."issue_quorum_num"
    1.44 -          --)
    1.45 +          EXISTS (
    1.46 +            SELECT NULL FROM "initiative" WHERE "issue_id" = "issue_id_p"
    1.47 +            AND "supporter_count" >= "policy_row"."issue_quorum"
    1.48 +          )
    1.49          THEN
    1.50            UPDATE "issue" SET
    1.51              "state"          = 'discussion',
     2.1 --- a/test.sql	Fri Dec 11 23:44:02 2015 +0100
     2.2 +++ b/test.sql	Sat Dec 12 11:53:36 2015 +0100
     2.3 @@ -42,6 +42,7 @@
     2.4      "discussion_time",
     2.5      "verification_time",
     2.6      "voting_time",
     2.7 +    "issue_quorum",
     2.8      "initiative_quorum_num", "initiative_quorum_den",
     2.9      "direct_majority_num", "direct_majority_den", "direct_majority_strict",
    2.10      "no_reverse_beat_path", "no_multistage_majority"
    2.11 @@ -49,6 +50,7 @@
    2.12      1,
    2.13      'Default policy',
    2.14      '0', '1 hour', '1 hour', '1 hour', '1 hour',
    2.15 +    3,
    2.16      20, 100,
    2.17      1, 2, TRUE,
    2.18      TRUE, FALSE );
    2.19 @@ -420,6 +422,7 @@
    2.20          "discussion_time",
    2.21          "verification_time",
    2.22          "voting_time",
    2.23 +        "issue_quorum",
    2.24          "initiative_quorum_num",
    2.25          "initiative_quorum_den"
    2.26      ) VALUES (
    2.27 @@ -432,6 +435,7 @@
    2.28          '1 second',
    2.29          '1 second',
    2.30          '1 second',
    2.31 +        1,
    2.32          0, 100
    2.33      ), (
    2.34          1,
    2.35 @@ -443,6 +447,7 @@
    2.36          '2 days',
    2.37          '1 second',
    2.38          '1 second',
    2.39 +        1,
    2.40          0, 100
    2.41      ), (
    2.42          1,
    2.43 @@ -454,6 +459,7 @@
    2.44          '5 minutes',
    2.45          '2 days',
    2.46          '1 second',
    2.47 +        1,
    2.48          0, 100
    2.49      ), (
    2.50          1,
    2.51 @@ -465,6 +471,7 @@
    2.52          '5 minutes',
    2.53          '1 second',
    2.54          '2 days',
    2.55 +        1,
    2.56          0, 100
    2.57      );
    2.58  

Impressum / About Us