dumen 0.7.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. dumen-0.7.3/.github/ISSUE_TEMPLATE/bug_report.yml +48 -0
  2. dumen-0.7.3/.github/ISSUE_TEMPLATE/config.yml +8 -0
  3. dumen-0.7.3/.github/ISSUE_TEMPLATE/feature_request.yml +30 -0
  4. dumen-0.7.3/.github/PULL_REQUEST_TEMPLATE.md +20 -0
  5. dumen-0.7.3/.github/assets/avatar.png +0 -0
  6. dumen-0.7.3/.github/assets/favicon-128.png +0 -0
  7. dumen-0.7.3/.github/assets/favicon-16.png +0 -0
  8. dumen-0.7.3/.github/assets/favicon-180.png +0 -0
  9. dumen-0.7.3/.github/assets/favicon-32.png +0 -0
  10. dumen-0.7.3/.github/assets/favicon-48.png +0 -0
  11. dumen-0.7.3/.github/assets/favicon-512.png +0 -0
  12. dumen-0.7.3/.github/assets/favicon-64.png +0 -0
  13. dumen-0.7.3/.github/assets/favicon.ico +0 -0
  14. dumen-0.7.3/.github/assets/og.png +0 -0
  15. dumen-0.7.3/.github/workflows/ci.yml +37 -0
  16. dumen-0.7.3/.gitignore +14 -0
  17. dumen-0.7.3/CHANGELOG.md +119 -0
  18. dumen-0.7.3/CITATION.cff +21 -0
  19. dumen-0.7.3/CODE_OF_CONDUCT.md +28 -0
  20. dumen-0.7.3/CONTRIBUTING.md +48 -0
  21. dumen-0.7.3/LICENSE +201 -0
  22. dumen-0.7.3/PKG-INFO +274 -0
  23. dumen-0.7.3/README.md +235 -0
  24. dumen-0.7.3/README_TR.md +212 -0
  25. dumen-0.7.3/SECURITY.md +40 -0
  26. dumen-0.7.3/brand/LOGO_PROMPT.md +97 -0
  27. dumen-0.7.3/brand/REGEN_B.md +34 -0
  28. dumen-0.7.3/brand/SEcim_OLCUMLERI.md +19 -0
  29. dumen-0.7.3/brand/candidates/cell_A.png +0 -0
  30. dumen-0.7.3/brand/candidates/cell_B.png +0 -0
  31. dumen-0.7.3/brand/candidates/cell_C.png +0 -0
  32. dumen-0.7.3/brand/candidates/cell_D.png +0 -0
  33. dumen-0.7.3/brand/candidates/cell_E.png +0 -0
  34. dumen-0.7.3/brand/candidates/cell_a1.png +0 -0
  35. dumen-0.7.3/brand/candidates/cell_a2.png +0 -0
  36. dumen-0.7.3/brand/candidates/cell_a3.png +0 -0
  37. dumen-0.7.3/brand/candidates/cell_a4.png +0 -0
  38. dumen-0.7.3/brand/candidates/cell_a5.png +0 -0
  39. dumen-0.7.3/brand/candidates/cell_/303/2741.png +0 -0
  40. dumen-0.7.3/brand/candidates/cell_/303/2742.png +0 -0
  41. dumen-0.7.3/brand/candidates/cell_/303/2743.png +0 -0
  42. dumen-0.7.3/brand/candidates/cell_/303/2744.png +0 -0
  43. dumen-0.7.3/brand/candidates/cell_/303/2745.png +0 -0
  44. dumen-0.7.3/brand/candidates/cell_/303/2746.png +0 -0
  45. dumen-0.7.3/brand/candidates/cell_/303/2747.png +0 -0
  46. dumen-0.7.3/brand/dumen-mark.svg +48 -0
  47. dumen-0.7.3/brand/logo.png +0 -0
  48. dumen-0.7.3/brand/logo_B_hi.png +0 -0
  49. dumen-0.7.3/dumen/__init__.py +96 -0
  50. dumen-0.7.3/dumen/benchmarks/__init__.py +28 -0
  51. dumen-0.7.3/dumen/benchmarks/agentharm_loader.py +77 -0
  52. dumen-0.7.3/dumen/benchmarks/capability_gate.py +152 -0
  53. dumen-0.7.3/dumen/benchmarks/gateway_selfredteam.py +148 -0
  54. dumen-0.7.3/dumen/benchmarks/harmbench_loader.py +71 -0
  55. dumen-0.7.3/dumen/benchmarks/jailbreakbench_loader.py +250 -0
  56. dumen-0.7.3/dumen/benchmarks/judge_calibration.py +171 -0
  57. dumen-0.7.3/dumen/benchmarks/sae_quality.py +163 -0
  58. dumen-0.7.3/dumen/benchmarks/seeds.py +480 -0
  59. dumen-0.7.3/dumen/benchmarks/steering_efficacy.py +95 -0
  60. dumen-0.7.3/dumen/benchmarks/steering_overhead.py +149 -0
  61. dumen-0.7.3/dumen/cli.py +525 -0
  62. dumen-0.7.3/dumen/core/__init__.py +38 -0
  63. dumen-0.7.3/dumen/core/hooks.py +111 -0
  64. dumen-0.7.3/dumen/core/kv_drift.py +99 -0
  65. dumen-0.7.3/dumen/core/miner.py +355 -0
  66. dumen-0.7.3/dumen/core/ov_circuits.py +129 -0
  67. dumen-0.7.3/dumen/core/quantization.py +111 -0
  68. dumen-0.7.3/dumen/core/sae_engine.py +141 -0
  69. dumen-0.7.3/dumen/core/serialization.py +142 -0
  70. dumen-0.7.3/dumen/core/steering.py +307 -0
  71. dumen-0.7.3/dumen/core/transcoder.py +192 -0
  72. dumen-0.7.3/dumen/core/types.py +160 -0
  73. dumen-0.7.3/dumen/gateway/__init__.py +16 -0
  74. dumen-0.7.3/dumen/gateway/filters.py +152 -0
  75. dumen-0.7.3/dumen/gateway/proxy.py +212 -0
  76. dumen-0.7.3/dumen/gateway/validator.py +180 -0
  77. dumen-0.7.3/dumen/redteam/__init__.py +21 -0
  78. dumen-0.7.3/dumen/redteam/api_runner.py +111 -0
  79. dumen-0.7.3/dumen/redteam/hrl_engine.py +211 -0
  80. dumen-0.7.3/dumen/redteam/inspect_adapter.py +147 -0
  81. dumen-0.7.3/dumen/redteam/judge.py +252 -0
  82. dumen-0.7.3/dumen/reports/__init__.py +40 -0
  83. dumen-0.7.3/dumen/reports/annex_xi.py +509 -0
  84. dumen-0.7.3/dumen/reports/cop_commitments.py +167 -0
  85. dumen-0.7.3/dumen/reports/eu_ai_act.py +119 -0
  86. dumen-0.7.3/dumen/reports/evidence_chain.py +224 -0
  87. dumen-0.7.3/dumen/reports/incident_report.py +116 -0
  88. dumen-0.7.3/dumen/reports/scorecard.py +139 -0
  89. dumen-0.7.3/examples/README.md +16 -0
  90. dumen-0.7.3/examples/audits/Qwen2.5-0.5B-Instruct_audit.json +56 -0
  91. dumen-0.7.3/examples/audits/Qwen2.5-0.5B-Instruct_run.log +51 -0
  92. dumen-0.7.3/examples/audits/README.md +58 -0
  93. dumen-0.7.3/examples/audits/gateway_selfredteam_qwen2.5-3b.json +160 -0
  94. dumen-0.7.3/examples/audits/llama3.2-3b_ollama_jbb40.json +44 -0
  95. dumen-0.7.3/examples/audits/llama3.2-3b_ollama_run.log +101 -0
  96. dumen-0.7.3/examples/audits/llama3.2-3b_ollama_standard.json +45 -0
  97. dumen-0.7.3/examples/audits/multifamily_ollama_run.log +275 -0
  98. dumen-0.7.3/examples/audits/phi3-mini_ollama_jbb10.json +42 -0
  99. dumen-0.7.3/examples/audits/phi3-mini_ollama_jbb10_run.log +46 -0
  100. dumen-0.7.3/examples/audits/phi3-mini_ollama_run.log +55 -0
  101. dumen-0.7.3/examples/audits/phi3-mini_ollama_standard.json +45 -0
  102. dumen-0.7.3/examples/audits/qwen2.5-3b_ollama_jbb40.json +43 -0
  103. dumen-0.7.3/examples/audits/qwen2.5-3b_ollama_jbb40.log +46 -0
  104. dumen-0.7.3/examples/audits/qwen2.5-3b_ollama_standard.json +44 -0
  105. dumen-0.7.3/examples/audits/qwen2.5-3b_ollama_standard.md +46 -0
  106. dumen-0.7.3/examples/calibration_seed.py +99 -0
  107. dumen-0.7.3/examples/datasets/README.md +35 -0
  108. dumen-0.7.3/examples/datasets/jbb_harmful_behaviors.csv +101 -0
  109. dumen-0.7.3/examples/full_audit_pipeline.py +233 -0
  110. dumen-0.7.3/examples/pilot/README.md +72 -0
  111. dumen-0.7.3/examples/pilot/evidence_chain.json +56 -0
  112. dumen-0.7.3/examples/pilot/sample_cop.md +16 -0
  113. dumen-0.7.3/examples/pilot/sample_dossier.json +61 -0
  114. dumen-0.7.3/examples/pilot/sample_dossier.md +94 -0
  115. dumen-0.7.3/examples/pilot_dossier.py +128 -0
  116. dumen-0.7.3/examples/redteam_gateway_self.py +176 -0
  117. dumen-0.7.3/pyproject.toml +88 -0
  118. dumen-0.7.3/scripts/dist_hygiene.py +65 -0
  119. dumen-0.7.3/scripts/make_brand_assets.py +154 -0
  120. dumen-0.7.3/scripts/surface_parity.py +33 -0
  121. dumen-0.7.3/tests/test_adaptive_steering.py +87 -0
  122. dumen-0.7.3/tests/test_annex_xi.py +337 -0
  123. dumen-0.7.3/tests/test_api_runner.py +215 -0
  124. dumen-0.7.3/tests/test_benchmarks.py +234 -0
  125. dumen-0.7.3/tests/test_capability_gate.py +214 -0
  126. dumen-0.7.3/tests/test_cli.py +167 -0
  127. dumen-0.7.3/tests/test_cop_commitments.py +116 -0
  128. dumen-0.7.3/tests/test_coverage_gaps.py +407 -0
  129. dumen-0.7.3/tests/test_coverage_gaps_v060.py +333 -0
  130. dumen-0.7.3/tests/test_evidence_chain.py +152 -0
  131. dumen-0.7.3/tests/test_example_pipeline.py +67 -0
  132. dumen-0.7.3/tests/test_gateway.py +119 -0
  133. dumen-0.7.3/tests/test_gateway_selfredteam.py +176 -0
  134. dumen-0.7.3/tests/test_harmbench_agentharm_loaders.py +130 -0
  135. dumen-0.7.3/tests/test_hooks.py +62 -0
  136. dumen-0.7.3/tests/test_hybrid_judge.py +61 -0
  137. dumen-0.7.3/tests/test_incident_report.py +114 -0
  138. dumen-0.7.3/tests/test_inspect_adapter.py +66 -0
  139. dumen-0.7.3/tests/test_jailbreakbench_loader.py +187 -0
  140. dumen-0.7.3/tests/test_judge_calibration.py +190 -0
  141. dumen-0.7.3/tests/test_kv_drift.py +62 -0
  142. dumen-0.7.3/tests/test_latency_bench.py +75 -0
  143. dumen-0.7.3/tests/test_miner.py +110 -0
  144. dumen-0.7.3/tests/test_ov_circuits.py +65 -0
  145. dumen-0.7.3/tests/test_pair_engine.py +48 -0
  146. dumen-0.7.3/tests/test_proxy_sse_live.py +120 -0
  147. dumen-0.7.3/tests/test_quantization.py +112 -0
  148. dumen-0.7.3/tests/test_rank_k.py +216 -0
  149. dumen-0.7.3/tests/test_real_model_integration.py +290 -0
  150. dumen-0.7.3/tests/test_reports.py +89 -0
  151. dumen-0.7.3/tests/test_sae_engine.py +51 -0
  152. dumen-0.7.3/tests/test_sae_quality.py +122 -0
  153. dumen-0.7.3/tests/test_serialization.py +85 -0
  154. dumen-0.7.3/tests/test_steering.py +130 -0
  155. dumen-0.7.3/tests/test_steering_efficacy.py +109 -0
  156. dumen-0.7.3/tests/test_steering_overhead.py +117 -0
  157. dumen-0.7.3/tests/test_transcoder.py +78 -0
  158. dumen-0.7.3/tests/test_types.py +58 -0
@@ -0,0 +1,48 @@
1
+ name: Bug report
2
+ description: A reproducible failure — commands, versions, output included
3
+ labels: [bug]
4
+ body:
5
+ - type: markdown
6
+ attributes:
7
+ value: |
8
+ This project's doctrine is **"no evidence, no claim"** — it applies to
9
+ bug reports too. "It doesn't work" is not actionable; the exact command
10
+ and its exact output are.
11
+ - type: textarea
12
+ id: repro
13
+ attributes:
14
+ label: Reproduction command
15
+ description: The exact command line that fails (paste it, don't paraphrase)
16
+ placeholder: |
17
+ dumen audit --model X --endpoint http://127.0.0.1:11434/v1 --request-timeout 300
18
+ render: shell
19
+ validations:
20
+ required: true
21
+ - type: textarea
22
+ id: actual
23
+ attributes:
24
+ label: Actual output
25
+ description: Full traceback or log tail (trim secrets, keep line numbers)
26
+ render: shell
27
+ validations:
28
+ required: true
29
+ - type: textarea
30
+ id: expected
31
+ attributes:
32
+ label: Expected behavior
33
+ validations:
34
+ required: true
35
+ - type: input
36
+ id: version
37
+ attributes:
38
+ label: Version
39
+ description: output of `dumen --version`
40
+ validations:
41
+ required: true
42
+ - type: input
43
+ id: env
44
+ attributes:
45
+ label: Environment
46
+ description: Python version, OS, CPU/GPU, whether torch is CUDA or CPU build
47
+ validations:
48
+ required: true
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Security vulnerability
4
+ url: https://github.com/goun7/Dumen/security/advisories/new
5
+ about: Privately report product-security issues (gateway bypass, evidence-chain tampering, PII masking leaks)
6
+ - name: Model audit results / red-team findings
7
+ url: https://github.com/goun7/Dumen/issues/new?template=feature_request.yml
8
+ about: Jailbreak prompts and model weaknesses belong in the model, not in this tracker — audit artifacts live in examples/audits/
@@ -0,0 +1,30 @@
1
+ name: Feature request
2
+ description: A capability the evidence pipeline is missing
3
+ labels: [enhancement]
4
+ body:
5
+ - type: textarea
6
+ id: problem
7
+ attributes:
8
+ label: Problem this solves
9
+ description: What were you auditing and what could the tool not (yet) prove?
10
+ validations:
11
+ required: true
12
+ - type: textarea
13
+ id: proposal
14
+ attributes:
15
+ label: Proposed shape
16
+ description: CLI flag / API / report field — as concrete as you can make it
17
+ validations:
18
+ required: true
19
+ - type: dropdown
20
+ id: doctrine
21
+ attributes:
22
+ label: Which honesty rule does it touch?
23
+ options:
24
+ - "None — purely additive"
25
+ - "Measured-only metrics (must render None when unmeasured)"
26
+ - "License/data policy (raw licensed corpora stay out of the repo)"
27
+ - "White-box vs black-box channel separation"
28
+ - "Not sure — discuss"
29
+ validations:
30
+ required: true
@@ -0,0 +1,20 @@
1
+ <!-- Doctrine applies to PRs as it does to reports: no evidence, no claim. -->
2
+
3
+ ## What & why (one theme per PR)
4
+
5
+ - [ ] Single theme; commit prefix `feat|fix|docs|test|perf|security(scope):`
6
+ - [ ] User-visible behavior change → README/CHANGELOG lines updated in the same PR
7
+
8
+ ## Evidence
9
+
10
+ - [ ] `python3 -m pytest tests/ -q --cov=dumen --cov-fail-under=95` green (paste the
11
+ final line — test count + coverage %, measured not remembered)
12
+ - [ ] `ruff check dumen/ tests/ examples/ scripts/` clean
13
+ - [ ] New behavior tested through a real socket/CLI/file path — **no mocks**
14
+ - [ ] Claims of the "no evidence, no claim" kind: unmeasured metrics render as
15
+ "Ölçülmedi"/None, never a placeholder number
16
+
17
+ ## Published audits (if any new artifact)
18
+
19
+ - [ ] Reproduction command + environment noted inside `*_run.log`
20
+ - [ ] Raw licensed/harmful payloads stay OUT of the repo (cache-only policy)
Binary file
Binary file
Binary file
@@ -0,0 +1,37 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ runs-on: ubuntu-latest
11
+ strategy:
12
+ matrix:
13
+ python-version: ["3.10", "3.12", "3.14"]
14
+ steps:
15
+ - uses: actions/checkout@v4
16
+ - uses: actions/setup-python@v5
17
+ with:
18
+ python-version: ${{ matrix.python-version }}
19
+ - name: Install dependencies
20
+ run: |
21
+ python -m pip install --upgrade pip
22
+ pip install torch --index-url https://download.pytorch.org/whl/cpu
23
+ pip install -e ".[dev]"
24
+ - name: Real-model extra (3.12 job)
25
+ if: matrix.python-version == '3.12'
26
+ run: pip install -e ".[model]"
27
+ - name: Lint (ruff)
28
+ run: ruff check dumen/ tests/ examples/ scripts/
29
+ - name: Surface language parity (README EN ↔ TR numeric tokens)
30
+ run: python scripts/surface_parity.py
31
+ - name: Tests (3.10/3.14: skip real-model; 3.12: include real-model integration)
32
+ run: |
33
+ if [ "${{ matrix.python-version }}" = "3.12" ]; then
34
+ python -m pytest tests/ -q --cov=dumen --cov-report=term --cov-fail-under=95
35
+ else
36
+ python -m pytest tests/ -q --ignore=tests/test_real_model_integration.py
37
+ fi
dumen-0.7.3/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+ .pytest_cache/
5
+ .coverage
6
+ htmlcov/
7
+ dist/
8
+ build/
9
+ *.egg-info/
10
+ .env
11
+ .venv
12
+ session.v*.jsonl
13
+ .mergen-id
14
+ audit_output/
@@ -0,0 +1,119 @@
1
+ # Changelog
2
+
3
+ Format: Keep a Changelog · This project uses SemVer. The *evidence* for each
4
+ release lives in `examples/audits/` as reproducible artifacts.
5
+
6
+ ## [Unreleased]
7
+
8
+ ## [0.7.3] - 2026-09-15
9
+
10
+ Brand identity + public surface + release hygiene.
11
+
12
+ - **Brand mark (helm-"D")**: hi-res generated mark → potrace single-path SVG
13
+ (IoU 0.994 ≥ 0.99 gate); og.png/avatar/favicon family generated by
14
+ `scripts/make_brand_assets.py`; mark embedded in both README surfaces.
15
+ - **Surface language alignment**: English-primary README + full Turkish sibling
16
+ with a numeric-parity CI gate (`scripts/surface_parity.py`); CONTRIBUTING/
17
+ SECURITY/CHANGELOG migrated to English (zero numeric drift, multiset-diff).
18
+ - **Community kit**: issue/PR templates, CODE_OF_CONDUCT, CITATION.cff.
19
+ - **Release hygiene gates**: sdist whitelist + `scripts/dist_hygiene.py`
20
+ (8 internal docs were entering the tarball — caught pre-upload); public-clone
21
+ masker v4 revived and proof-fired (liveness 146→0 / path-sweep 9→0); full
22
+ sdist rehearsal: fresh venv install → CLI trio → 24 bundled tests green.
23
+ - No functional API changes; CLI flags, report schema untouched.
24
+
25
+ ## [0.7.2] - 2026-09-15
26
+
27
+ Fresh-environment verification and the first sales-grade sample, pre-publication.
28
+
29
+ - **Packaging fix (fresh-venv smoke-test finding):** `numpy` is now declared as
30
+ a direct (not transitive) dependency — the torch "Failed to initialize NumPy"
31
+ first-run warning on new installs is gone (measured: fresh env 5.4GB,
32
+ refusal-baseline audit **5.1s**, CLI trio smoke clean). Honest
33
+ "install weight" note added to the README.
34
+ - **Sales sample (`examples/pilot_dossier.py` + `examples/pilot/`):** a full
35
+ Annex XI dossier + CoP matrix (62% — the two missing rows are deliberate:
36
+ customer declaration + incident pipeline) + SHA-256 evidence chain sealing
37
+ the source scorecard's hash, generated from a REAL PUBLISHED scorecard
38
+ (qwen2.5:3b JBB-40, safety 91.8). The compute field is LABELLED as a
39
+ 6·N·D order-of-magnitude estimate (3.34e23 < 1e25 → below the Art. 3(63)
40
+ threshold; D=18T verified live from arXiv:2412.15115); every unverifiable
41
+ field stays a bracketed [pending declaration].
42
+ - No API/schema changes — the sole SemVer reason is the packaging finding.
43
+
44
+ ## [0.7.1] - 2026-09-15 — B1 capability-externality gate + B5 multi-family publications
45
+
46
+ ### Added
47
+ - **B1 `CapabilityGate`**: steering damage to model CAPABILITY is now measured —
48
+ 12 deterministically-verifiable tasks (no LLM judge, no circular evidence;
49
+ echo-safety test-enforced). pass/fail/inconclusive; **a fail retracts the
50
+ protection claim from CLI and Annex XI** (an intervention that harms is not
51
+ an intervention). First live pair: Qwen2.5-0.5B efficacy %0 + capability
52
+ PASS (%83.3→%83.3).
53
+ - `--request-timeout` (audit; default 300s) — field finding: on single-VRAM
54
+ machines, cold model load + slow generation blew the 180s budget
55
+ (phi3:mini/GTX-1070, ~1s/token). Timeouts still raise a clean
56
+ `EndpointError`; no fake refusals are produced.
57
+ - **B5 multi-family publications** (`examples/audits/` + comparison table):
58
+ llama3.2:3b (std 77.5 · JBB-40 **91.3**) and phi3:mini (std 95.0 · JBB-10
59
+ 97.0 — n difference flagged in the table) — with qwen2.5:3b JBB-40 91.8,
60
+ same-depth inter-family consistency was MEASURED; llama std surfaced a
61
+ cyber %60 REAL weakness finding.
62
+ - **B3 process tool**: `examples/calibration_seed.py` — generates a human
63
+ second-label B3 worksheet from real (prompt, response) pairs; first live
64
+ output: llama3.2:3b × 20 pairs (3 refusal / 17 mixed — the hard zone for
65
+ the fastpath). Raw pairs stay out of the repo (dual-use policy); only the
66
+ distribution is published.
67
+ ### Unchanged
68
+ - Black-box/refusal-baseline channels, API surface, report schema (only the
69
+ `capability_regression` field was added — old artifacts stay schema-safe).
70
+
71
+ ## [0.7.0] - 2026-09-15 — API-endpoint auditing + real-catalog red-teaming
72
+
73
+ ### Added
74
+ - **Black-box API audit channel** (`dumen audit --endpoint`): audit any
75
+ Ollama / vLLM / LM Studio / OpenAI-compatible server; deterministic
76
+ temperature=0; HTTP errors never become FAKE REFUSALS (EndpointError raises).
77
+ - **First local-real-model audit published**: Ollama qwen2.5:3b — standard-suite
78
+ scorecard (`safety 58.8`, sandbox %95) + 40-task JBB wide audit (`safety
79
+ 91.8`, %0 jailbreak) — `examples/audits/qwen2.5-3b_ollama_*.json`.
80
+ - **Gateway self-red-team comparison** (`GatewaySelfRedTeam`): two-layer
81
+ (regex ∪ semantic LLM-judge) recall/FPR matrices on the published
82
+ deepset/prompt-injections corpus; regex patterns hardened with EN+DE
83
+ families (holdout FPR %0, precision %100); `JudgeEvaluator.classify_injection`.
84
+ - **External attack-catalog bridges**: HarmBenchLoader (400 real behaviors) +
85
+ AgentHarmLoader (176 agentic tasks) + `--dataset` CLI with automatic schema
86
+ detection (JBB CSV · HarmBench CSV · AgentHarm JSON · AILuminate JSON/JSONL).
87
+ ### Fixed
88
+ - JBB/AILuminate `CATEGORY_MAP` calibrated to real distribution labels
89
+ (Malware/Hacking→cyber_attack, Disinformation→hallucination, Privacy→pii_leak).
90
+
91
+ ## [0.6.1] - 2026-09-15 — evidence-integrity release
92
+
93
+ ### Fixed (deep-audit findings)
94
+ - Fabricated success numbers purged: "%96.2 Active Protection" → three-state
95
+ measured efficacy (Not measured ⚪ / %0 🟠 / +%X 🟢) via behavioral
96
+ `SteeringEfficacyBench` (before/after judge comparison; cosmetic cosine
97
+ rejected).
98
+ - `--measure-steering` became a real measurement pipeline (mining + live hook +
99
+ steered generation).
100
+ - vLLM/sub-1ms/Anthropic-native/JBB-live claims → verified text only; SLA claim
101
+ replaced by a MEASURED latency bench (`test_latency_bench.py`).
102
+ - 3 wrong academic citations corrected (PAIR/TAP; RepE↔StMP; 2606.13720 title);
103
+ unverifiable quotes softened; EU timeline updated with EC-sourced dates.
104
+ - dossier/serve channels: refusal-baseline stamp + `evidence_channel` + chain
105
+ head rendered inside Annex XI; context note for Art.14 ❌.
106
+ ### Infrastructure
107
+ - CI coverage gate made actually effective (pytest-cov was missing); 3.12 job
108
+ runs real-model tests; unused dependencies deleted; AILuminate format bridge;
109
+ threat-model & limitations section (§6.5).
110
+
111
+ ## [0.6.0] - 2026-09-14 — Evidence-gap closure
112
+ - rank-k subspace mining + bootstrap confidence + permutation p; joint-nullspace
113
+ steering; InspectBridge red-team; evidence-chain reports.
114
+
115
+ ## [0.5.0] - 2026-09-13 — mechanistic-core verification
116
+ - OV-circuit mask, output-filter critical bug fix, unified StTP/StMP pipeline.
117
+
118
+ ## [0.4.0] and earlier — prototype
119
+ - basic mining/hook/report pipeline; test count between 52–173.
@@ -0,0 +1,21 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use Dümen in published research, please cite the software repository."
3
+ title: "Dümen: Open-source EU AI Act audit engine with white-box steering evidence and tamper-evident compliance dossiers"
4
+ authors:
5
+ - name: "Dümen Contributors"
6
+ repository-code: "https://github.com/goun7/Dumen"
7
+ license: Apache-2.0
8
+ version: 0.7.3
9
+ date-released: 2026-09-15
10
+ keywords:
11
+ - eu-ai-act
12
+ - llm-auditing
13
+ - activation-steering
14
+ - red-teaming
15
+ - interpretability
16
+ preferred-citation:
17
+ type: software
18
+ title: "Dümen"
19
+ authors:
20
+ - name: "Dümen Contributors"
21
+ url: "https://github.com/goun7/Dumen"
@@ -0,0 +1,28 @@
1
+ # Code of Conduct
2
+
3
+ ## Our commitment
4
+
5
+ Contributors and maintainers of this project pledge to make participation
6
+ harassment-free for everyone, regardless of the usual categories. This is an
7
+ audit tool whose subject matter (AI safety) attracts strong opinions — the
8
+ doctrine applies to conduct as it does to claims: **critique the evidence,
9
+ never the person.**
10
+
11
+ ## Standards
12
+
13
+ Expected: cite reproducible commands when disagreeing with a finding; assume
14
+ good faith for first-time contributors; keep discussions in issue/PR threads
15
+ rather than personal channels.
16
+
17
+ Unacceptable: ad hominem attacks, doxxing, spam-driven "safety claims" without
18
+ reproduction steps, and attempts to use this tracker to distribute raw
19
+ harmful payloads (use coordinated disclosure instead — see SECURITY.md).
20
+
21
+ ## Enforcement
22
+
23
+ Report to the maintainer via GitHub private vulnerability reporting channel or
24
+ a private issue. Remedies scale from edit → warning → temporary → permanent
25
+ exclusion, applied by the maintainer, with reasons logged.
26
+
27
+ Adapted from the Contributor Covenant 2.1 (https://www.contributor-covenant.org),
28
+ CC BY-SA 4.0.
@@ -0,0 +1,48 @@
1
+ # Contributing guide
2
+
3
+ Evidence is mandatory for contributions to Dümen — code is not. The project
4
+ doctrine is: ***no evidence, no claim.*** This applies to contributions too.
5
+
6
+ ## Development environment
7
+
8
+ ```bash
9
+ python -m venv .venv && source .venv/bin/activate
10
+ pip install -e ".[dev]" # test + lint tooling
11
+ pip install -e ".[model]" # (opt.) transformers, for real-model integration tests
12
+ python -m pytest tests/ -q # run the suite
13
+ ruff check dumen/ tests/ examples/ scripts/
14
+ python scripts/surface_parity.py # README EN↔TR numeric-token parity gate
15
+ ```
16
+
17
+ Python 3.10–3.14 is supported; CI runs three versions (real-model tests
18
+ included on 3.12; CI also runs the lint scope above, the parity gate, and fails under coverage %95).
19
+
20
+ ## Rules
21
+
22
+ 1. **No fake numbers.** An unmeasured metric stays `None`/"Not measured" in
23
+ the report; a hard-coded success number never reaches production
24
+ (see `steering_efficacy`).
25
+ 2. **No behavior without a test.** Every new production branch is exercised
26
+ through a real socket/CLI/file path — real mechanisms over mock servers
27
+ (e.g. stdlib threading HTTP server, see `test_api_runner.py`).
28
+ 3. **Citations verified.** arXiv ID + title + year must be confirmed against
29
+ the primary source; a citation correction is called out separately in the PR.
30
+ 4. **External data licenses.** Raw licensed/harmful corpora (deepset CC-BY-NC,
31
+ AgentHarm "other") **never enter the repo**; only MIT/Apache distributions
32
+ get committed (JBB MIT ✓). Loaders pin the schema; the data stays with the
33
+ user.
34
+ 5. **Scope honesty.** White-box (activation) and black-box (API) channels are
35
+ never conflated; efficacy measurement is only possible white-box.
36
+
37
+ ## PR process
38
+
39
+ - One theme, one commit (prefixes `feat|fix|docs|test|perf|security(scope)`).
40
+ - Gates: full suite green + coverage ≥ %95 + `ruff` clean + surface parity (numbers never drift between README languages).
41
+ - New CLI flag: user-facing text may mix Turkish and English; error messages
42
+ must be **reproducible** (say what you tried).
43
+
44
+ ## Report quality
45
+
46
+ Published audits under `examples/audits/` are **transparent evidence**: every
47
+ shipped artifact carries its reproduction command inside `_run.log`. If you
48
+ publish a new audit, add the command and the environment too.
dumen-0.7.3/LICENSE ADDED
@@ -0,0 +1,201 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6
+
7
+ 1. Definitions.
8
+
9
+ "License" shall mean the terms and conditions for use, reproduction,
10
+ and distribution as defined by Sections 1 through 9 of this document.
11
+
12
+ "Licensor" shall mean the copyright owner or entity authorized by
13
+ the copyright owner that is granting the License.
14
+
15
+ "Legal Entity" shall mean the union of the acting entity and all
16
+ other entities that control, are controlled by, or are under common
17
+ control with that entity. For the purposes of this definition,
18
+ "control" means (i) the power, direct or indirect, to cause the
19
+ direction or management of such entity, whether by contract or
20
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
21
+ outstanding shares, or (iii) beneficial ownership of such entity.
22
+
23
+ "You" (or "Your") shall mean an individual or Legal Entity
24
+ exercising permissions granted by this License.
25
+
26
+ "Source" form shall mean the preferred form for making modifications,
27
+ including but not limited to software source code, documentation
28
+ source, and configuration files.
29
+
30
+ "Object" form shall mean any form resulting from mechanical
31
+ transformation or translation of a Source form, including but
32
+ not limited to compiled object code, generated documentation,
33
+ and conversions to other media types.
34
+
35
+ "Work" shall mean the work of authorship, whether in Source or
36
+ Object form, made available under the License, as indicated by a
37
+ copyright notice that is included in or attached to the work
38
+ (an example is provided in the Appendix below).
39
+
40
+ "Derivative Works" shall mean any work, whether in Source or Object
41
+ form, that is based on (or derived from) the Work and for which the
42
+ editorial revisions, annotations, elaborations, or other modifications
43
+ represent, as a whole, an original work of authorship. For the purposes
44
+ of this License, Derivative Works shall not include works that remain
45
+ separable from, or merely link (or bind by name) to the interfaces of,
46
+ the Work and Derivative Works thereof.
47
+
48
+ "Contribution" shall mean any work of authorship, including
49
+ the original version of the Work and any modifications or additions
50
+ to that Work or Derivative Works thereof, that is intentionally
51
+ submitted to Licensor for inclusion in the Work by the copyright owner
52
+ or by an individual or Legal Entity authorized to submit on behalf of
53
+ the copyright owner. For the purposes of this definition, "submitted"
54
+ means any form of electronic, verbal, or written communication sent
55
+ to the Licensor or its representatives, including but not limited to
56
+ communication on electronic mailing lists, source code control systems,
57
+ and issue tracking systems that are managed by, or on behalf of, the
58
+ Licensor for the purpose of discussing and improving the Work, but
59
+ excluding communication that is conspicuously marked or otherwise
60
+ designated in writing by the copyright owner as "Not a Contribution."
61
+
62
+ "Contributor" shall mean Licensor and any individual or Legal Entity
63
+ on behalf of whom a Contribution has been received by Licensor and
64
+ subsequently incorporated within the Work.
65
+
66
+ 2. Grant of Copyright License. Subject to the terms and conditions of
67
+ this License, each Contributor hereby grants to You a perpetual,
68
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69
+ copyright license to reproduce, prepare Derivative Works of,
70
+ publicly display, publicly perform, sublicense, and distribute the
71
+ Work and such Derivative Works in Source or Object form.
72
+
73
+ 3. Grant of Patent License. Subject to the terms and conditions of
74
+ this License, each Contributor hereby grants to You a perpetual,
75
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76
+ (except as stated in this section) patent license to make, have made,
77
+ use, offer to sell, sell, import, and otherwise transfer the Work,
78
+ where such license applies only to those patent claims licensable
79
+ by such Contributor that are necessarily infringed by their
80
+ Contribution(s) alone or by combination of their Contribution(s)
81
+ with the Work to which such Contribution(s) was submitted. If You
82
+ institute patent litigation against any entity (including a
83
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
84
+ or a Contribution incorporated within the Work constitutes direct
85
+ or contributory patent infringement, then any patent licenses
86
+ granted to You under this License for that Work shall terminate
87
+ as of the date such litigation is filed.
88
+
89
+ 4. Redistribution. You may reproduce and distribute copies of the
90
+ Work or Derivative Works thereof in any medium, with or without
91
+ modifications, and in Source or Object form, provided that You
92
+ meet the following conditions:
93
+
94
+ (a) You must give any other recipients of the Work or
95
+ Derivative Works a copy of this License; and
96
+
97
+ (b) You must cause any modified files to carry prominent notices
98
+ stating that You changed the files; and
99
+
100
+ (c) You must retain, in the Source form of any Derivative Works
101
+ that You distribute, all copyright, patent, trademark, and
102
+ attribution notices from the Source form of the Work,
103
+ excluding those notices that do not pertain to any part of
104
+ the Derivative Works; and
105
+
106
+ (d) If the Work includes a "NOTICE" text file as part of its
107
+ distribution, then any Derivative Works that You distribute must
108
+ include a readable copy of the attribution notices contained
109
+ within such NOTICE file, excluding those notices that do not
110
+ pertain to any part of the Derivative Works, in at least one
111
+ of the following places: within a NOTICE text file distributed
112
+ as part of the Derivative Works; within the Source form or
113
+ documentation, if provided along with the Derivative Works; or,
114
+ within a display generated by the Derivative Works, if and
115
+ wherever such third-party notices normally appear. The contents
116
+ of the NOTICE file are for informational purposes only and
117
+ do not modify the License. You may add Your own attribution
118
+ notices within Derivative Works that You distribute, alongside
119
+ or as an addendum to the NOTICE text from the Work, provided
120
+ that such additional attribution notices cannot be construed
121
+ as modifying the License.
122
+
123
+ You may add Your own copyright statement to Your modifications and
124
+ may provide additional or different license terms and conditions
125
+ for use, reproduction, or distribution of Your modifications, or
126
+ for any such Derivative Works as a whole, provided Your use,
127
+ reproduction, and distribution of the Work otherwise complies with
128
+ the conditions stated in this License.
129
+
130
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
131
+ any Contribution intentionally submitted for inclusion in the Work
132
+ by You to the Licensor shall be under the terms and conditions of
133
+ this License, without any additional terms or conditions.
134
+ Notwithstanding the above, nothing herein shall supersede or modify
135
+ the terms of any separate license agreement you may have executed
136
+ with Licensor regarding such Contributions.
137
+
138
+ 6. Trademarks. This License does not grant permission to use the trade
139
+ names, trademarks, service marks, or product names of the Licensor,
140
+ except as required for reasonable and customary use in describing the
141
+ origin of the Work and reproducing the content of the NOTICE file.
142
+
143
+ 7. Disclaimer of Warranty. Unless required by applicable law or
144
+ agreed to in writing, Licensor provides the Work (and each
145
+ Contributor provides its Contributions) on an "AS IS" BASIS,
146
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147
+ implied, including, without limitation, any warranties or conditions
148
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149
+ PARTICULAR PURPOSE. You are solely responsible for determining the
150
+ appropriateness of using or redistributing the Work and assume any
151
+ risks associated with Your exercise of permissions under this License.
152
+
153
+ 8. Limitation of Liability. In no event and under no legal theory,
154
+ whether in tort (including negligence), contract, or otherwise,
155
+ unless required by applicable law (such as deliberate and grossly
156
+ negligent acts) or agreed to in writing, shall any Contributor be
157
+ liable to You for damages, including any direct, indirect, special,
158
+ incidental, or consequential damages of any character arising as a
159
+ result of this License or out of the use or inability to use the
160
+ Work (including but not limited to damages for loss of goodwill,
161
+ work stoppage, computer failure or malfunction, or any and all
162
+ other commercial damages or losses), even if such Contributor
163
+ has been advised of the possibility of such damages.
164
+
165
+ 9. Accepting Warranty or Additional Liability. While redistributing
166
+ the Work or Derivative Works thereof, You may choose to offer,
167
+ and charge a fee for, acceptance of support, warranty, indemnity,
168
+ or other liability obligations and/or rights consistent with this
169
+ License. However, in accepting such obligations, You may act only
170
+ on Your own behalf and on Your sole responsibility, not on behalf
171
+ of any other Contributor, and only if You agree to indemnify,
172
+ defend, and hold each Contributor harmless for any liability
173
+ incurred by, or claims asserted against, such Contributor by reason
174
+ of your accepting any such warranty or additional liability.
175
+
176
+ END OF TERMS AND CONDITIONS
177
+
178
+ APPENDIX: How to apply the Apache License to your work.
179
+
180
+ To apply the Apache License to your work, attach the following
181
+ boilerplate notice, with the fields enclosed by brackets "[]"
182
+ replaced with your own identifying information. (Don't include
183
+ the brackets!) The text should be enclosed in the appropriate
184
+ comment syntax for the file format. We also recommend that a
185
+ file or class name and description of purpose be included on the
186
+ same "printed page" as the copyright notice for easier
187
+ identification within third-party archives.
188
+
189
+ Copyright 2026 Dümen contributors
190
+
191
+ Licensed under the Apache License, Version 2.0 (the "License");
192
+ you may not use this file except in compliance with the License.
193
+ You may obtain a copy of the License at
194
+
195
+ http://www.apache.org/licenses/LICENSE-2.0
196
+
197
+ Unless required by applicable law or agreed to in writing, software
198
+ distributed under the License is distributed on an "AS IS" BASIS,
199
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
200
+ See the License for the specific language governing permissions and
201
+ limitations under the License.