simpleaudit 0.3.0__tar.gz → 0.3.2__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 (125) hide show
  1. {simpleaudit-0.3.0/simpleaudit.egg-info → simpleaudit-0.3.2}/PKG-INFO +15 -15
  2. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/README.md +10 -10
  3. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/pyproject.toml +5 -5
  4. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/bullshitbench_v1_v2.py +19 -0
  5. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/targets/model.py +14 -0
  6. {simpleaudit-0.3.0 → simpleaudit-0.3.2/simpleaudit.egg-info}/PKG-INFO +15 -15
  7. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_targets.py +69 -0
  8. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_tracing.py +20 -0
  9. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/LICENSE +0 -0
  10. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/setup.cfg +0 -0
  11. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/__init__.py +0 -0
  12. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/auditor.py +0 -0
  13. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/checklist.py +0 -0
  14. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/cli.py +0 -0
  15. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/context_marks.py +0 -0
  16. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/cross_judge.py +0 -0
  17. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/experiment.py +0 -0
  18. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/__init__.py +0 -0
  19. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/abstention.py +0 -0
  20. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/binary_abstention.py +0 -0
  21. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/checklist.py +0 -0
  22. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/compose.py +0 -0
  23. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/default.py +0 -0
  24. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/factuality.py +0 -0
  25. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/harm.py +0 -0
  26. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/helpfulness.py +0 -0
  27. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/helsedir_sexhealth_no.py +0 -0
  28. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/helsedir_sexhealth_no_rag.py +0 -0
  29. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/judges/safety.py +0 -0
  30. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/model_auditor.py +0 -0
  31. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/perturbations.py +0 -0
  32. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/reframing.py +0 -0
  33. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/repeated_results.py +0 -0
  34. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/results.py +0 -0
  35. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/__init__.py +0 -0
  36. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/arbeidstilsynet_arbeidstid.py +0 -0
  37. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/bullshitbench_health.py +0 -0
  38. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/health.py +0 -0
  39. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/hei_refusal.py +0 -0
  40. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/helfo.py +0 -0
  41. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/helpmed.py +0 -0
  42. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/human_rights_education.py +0 -0
  43. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/human_rights_fair_trial.py +0 -0
  44. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/human_rights_water.py +0 -0
  45. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/blank_chart.png +0 -0
  46. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/illegible_label.png +0 -0
  47. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/injection.png +0 -0
  48. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/make_images.py +0 -0
  49. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/product_a.png +0 -0
  50. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/product_b.png +0 -0
  51. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/quarterly_revenue.png +0 -0
  52. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/images/truncated_axis.png +0 -0
  53. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/lanekassen.py +0 -0
  54. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/nav_aap.py +0 -0
  55. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/nb_kryss_ordning.py +0 -0
  56. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/rag.py +0 -0
  57. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/safety.py +0 -0
  58. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/skatteetaten.py +0 -0
  59. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/skatteetaten_legitimasjon.py +0 -0
  60. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/system_prompt.py +0 -0
  61. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/toll_reisegodskvote.py +0 -0
  62. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/ung.py +0 -0
  63. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/scenarios/vision_integrity.py +0 -0
  64. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/spans.py +0 -0
  65. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/stats.py +0 -0
  66. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/targets/__init__.py +0 -0
  67. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/targets/base.py +0 -0
  68. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/targets/callable.py +0 -0
  69. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/targets/http.py +0 -0
  70. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/__init__.py +0 -0
  71. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/auth.py +0 -0
  72. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/context.py +0 -0
  73. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/otlp.py +0 -0
  74. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/provider.py +0 -0
  75. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/selection.py +0 -0
  76. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/shared.py +0 -0
  77. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/tracing/store.py +0 -0
  78. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/utils.py +0 -0
  79. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/visualization/scenario_viewer.html +0 -0
  80. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/visualization/server.py +0 -0
  81. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/visualization/thumbnail.png +0 -0
  82. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit/visualization/visualizer.html +0 -0
  83. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit.egg-info/SOURCES.txt +0 -0
  84. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit.egg-info/dependency_links.txt +0 -0
  85. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit.egg-info/entry_points.txt +0 -0
  86. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit.egg-info/requires.txt +0 -0
  87. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/simpleaudit.egg-info/top_level.txt +0 -0
  88. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_anthropic_judge_default_path.py +0 -0
  89. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_audit_flow.py +0 -0
  90. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_basic.py +0 -0
  91. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_checklist.py +0 -0
  92. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_checklist_judge.py +0 -0
  93. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_checklist_pipeline.py +0 -0
  94. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_checklist_reframing.py +0 -0
  95. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_cross_judge.py +0 -0
  96. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_custom_prompts.py +0 -0
  97. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_document_expansion.py +0 -0
  98. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_experiment_streaming.py +0 -0
  99. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_fakes.py +0 -0
  100. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_file_uri.py +0 -0
  101. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_fragility.py +0 -0
  102. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_generation_params.py +0 -0
  103. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_json_format.py +0 -0
  104. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_judge_compose.py +0 -0
  105. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_judge_notes.py +0 -0
  106. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_judge_output_contract.py +0 -0
  107. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_judge_postprocess.py +0 -0
  108. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_judge_registry.py +0 -0
  109. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_judge_response_schema.py +0 -0
  110. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_judge_robustness_pipeline.py +0 -0
  111. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_model_auditor.py +0 -0
  112. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_perturbations.py +0 -0
  113. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_reframing.py +0 -0
  114. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_rejudge.py +0 -0
  115. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_repeated_experiments.py +0 -0
  116. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_resumable_experiments.py +0 -0
  117. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_scenario_data.py +0 -0
  118. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_scenario_pack_conventions.py +0 -0
  119. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_spans.py +0 -0
  120. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_stats.py +0 -0
  121. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_strip_thinking.py +0 -0
  122. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_target_api_key.py +0 -0
  123. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_token_counting.py +0 -0
  124. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_tracing_auth.py +0 -0
  125. {simpleaudit-0.3.0 → simpleaudit-0.3.2}/tests/test_vision_integrity_pack.py +0 -0
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simpleaudit
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Lightweight AI Safety Auditing Framework
5
5
  Author: SimpleAudit Contributors
6
6
  License: MIT
7
- Project-URL: Homepage, https://github.com/kelkalot/simpleaudit
8
- Project-URL: Documentation, https://github.com/kelkalot/simpleaudit#readme
9
- Project-URL: Repository, https://github.com/kelkalot/simpleaudit
10
- Project-URL: Issues, https://github.com/kelkalot/simpleaudit/issues
7
+ Project-URL: Homepage, https://github.com/simulamet/simpleaudit
8
+ Project-URL: Documentation, https://github.com/simulamet/simpleaudit#readme
9
+ Project-URL: Repository, https://github.com/simulamet/simpleaudit
10
+ Project-URL: Issues, https://github.com/simulamet/simpleaudit/issues
11
11
  Project-URL: PyPI, https://pypi.org/project/simpleaudit/
12
12
  Keywords: ai,safety,audit,red-team,llm,rag,testing
13
13
  Classifier: Development Status :: 4 - Beta
@@ -48,7 +48,7 @@ Dynamic: license-file
48
48
 
49
49
  <div align="center">
50
50
 
51
- [![DPG Badge](https://img.shields.io/badge/Verified-DPG-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)](https://www.digitalpublicgoods.net/r/simpleaudit) [![PyPI version](https://badge.fury.io/py/simpleaudit.svg)](https://pypi.org/project/simpleaudit/) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Release](https://github.com/kelkalot/simpleaudit/actions/workflows/tests.yml/badge.svg)](https://github.com/kelkalot/simpleaudit/actions/workflows/tests.yml) [![Last Commit](https://img.shields.io/github/last-commit/kelkalot/simpleaudit)](https://github.com/kelkalot/simpleaudit/commits/main)
51
+ [![DPG Badge](https://img.shields.io/badge/Verified-DPG-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)](https://www.digitalpublicgoods.net/r/simpleaudit) [![PyPI version](https://badge.fury.io/py/simpleaudit.svg)](https://pypi.org/project/simpleaudit/) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Release](https://github.com/simulamet/simpleaudit/actions/workflows/tests.yml/badge.svg)](https://github.com/simulamet/simpleaudit/actions/workflows/tests.yml) [![Last Commit](https://img.shields.io/github/last-commit/simulamet/simpleaudit)](https://github.com/simulamet/simpleaudit/commits/main)
52
52
 
53
53
  <img width="300px" alt="simpleaudit-logo" src="https://github.com/user-attachments/assets/2ed38ae0-f834-4934-bcc4-48fe441b8b2b" />
54
54
 
@@ -64,7 +64,7 @@ Developed by [Simula](https://www.simula.no/) and [SimulaMet](https://www.simula
64
64
  SimpleAudit is a simple, extensible, local-first framework for multilingual auditing and red-teaming of AI systems via adversarial probing. It supports open models running locally (no APIs required) and can optionally run evaluations against API-hosted models. SimpleAudit does not collect or transmit user data by default and is designed for minimal setup.
65
65
  </div>
66
66
 
67
- See the [standards and best practices for creating custom test scenarios](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/scenarios/simpleaudit_scenario_guidelines_v1.0.md).
67
+ See the [standards and best practices for creating custom test scenarios](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/scenarios/simpleaudit_scenario_guidelines_v1.0.md).
68
68
 
69
69
  <img alt="simpleaudit_example_gemma_model" src="https://github.com/user-attachments/assets/05c45a62-74e7-4aa3-a3cd-41bad0cc8233" />
70
70
 
@@ -120,7 +120,7 @@ pip install -U simpleaudit[plot]
120
120
  **Install from GitHub** (for latest development features):
121
121
 
122
122
  ```bash
123
- pip install -U git+https://github.com/kelkalot/simpleaudit.git
123
+ pip install -U git+https://github.com/simulamet/simpleaudit.git
124
124
  ```
125
125
 
126
126
  ## Quick Start
@@ -175,7 +175,7 @@ pip install 'simpleaudit[visualize]'
175
175
  simpleaudit serve --results_dir ./my_audit_results
176
176
  ```
177
177
  This will spin-up a local web server to explore results with scenario details. 👉 [Check for live demo.](https://simulamet-simpleauditvisualization.hf.space)
178
- See [visualization/README.md](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/visualization/README.md) for more options and features.
178
+ See [visualization/README.md](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/visualization/README.md) for more options and features.
179
179
 
180
180
  To share results as a single self-contained HTML file (no server, no JSON upload), use `simpleaudit export-html ./audit_results.json` or the **Download HTML** button in the visualizer.
181
181
 
@@ -188,7 +188,7 @@ If the command fails:
188
188
  - **Weird import/module error** — stale cache. Run `uv cache clean` and retry.
189
189
  </Troubleshooting>
190
190
 
191
- [![simpleaudit-visualization-ui](https://github.com/user-attachments/assets/f9bbb891-a847-48d4-85d6-6d6d99c9e017)](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/visualization/README.md)
191
+ [![simpleaudit-visualization-ui](https://github.com/user-attachments/assets/f9bbb891-a847-48d4-85d6-6d6d99c9e017)](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/visualization/README.md)
192
192
 
193
193
  ### Running Experiments
194
194
 
@@ -1150,7 +1150,7 @@ Contributions welcome! Areas of interest:
1150
1150
  - More target adapters
1151
1151
  - Documentation improvements
1152
1152
 
1153
- Don't hesitate to contact us or [open issues](https://github.com/kelkalot/simpleaudit/issues) if you have questions, feedback, or encounter any problems.
1153
+ Don't hesitate to contact us or [open issues](https://github.com/simulamet/simpleaudit/issues) if you have questions, feedback, or encounter any problems.
1154
1154
 
1155
1155
  ## Main Contributors
1156
1156
  [Michael A. Riegler](https://www.simula.no/people/michael) (Simula) \
@@ -1190,10 +1190,10 @@ If you use SimpleAudit in research or procurement, please cite the methodology p
1190
1190
 
1191
1191
  ## Governance & Compliance
1192
1192
 
1193
- - 📋 [Digital Public Good Compliance](https://github.com/kelkalot/simpleaudit/blob/main/DPG.md) — SDG alignment, ownership, standards
1194
- - 🤝 [Code of Conduct](https://github.com/kelkalot/simpleaudit/blob/main/CODE_OF_CONDUCT.md) — Community guidelines and responsible use
1195
- - 🔒 [Security Policy](https://github.com/kelkalot/simpleaudit/blob/main/SECURITY.md) — Vulnerability reporting and security considerations
1193
+ - 📋 [Digital Public Good Compliance](https://github.com/simulamet/simpleaudit/blob/main/DPG.md) — SDG alignment, ownership, standards
1194
+ - 🤝 [Code of Conduct](https://github.com/simulamet/simpleaudit/blob/main/CODE_OF_CONDUCT.md) — Community guidelines and responsible use
1195
+ - 🔒 [Security Policy](https://github.com/simulamet/simpleaudit/blob/main/SECURITY.md) — Vulnerability reporting and security considerations
1196
1196
 
1197
1197
  ## License
1198
1198
 
1199
- MIT License - see [LICENSE](https://github.com/kelkalot/simpleaudit/blob/main/LICENSE) for details.
1199
+ MIT License - see [LICENSE](https://github.com/simulamet/simpleaudit/blob/main/LICENSE) for details.
@@ -1,6 +1,6 @@
1
1
  <div align="center">
2
2
 
3
- [![DPG Badge](https://img.shields.io/badge/Verified-DPG-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)](https://www.digitalpublicgoods.net/r/simpleaudit) [![PyPI version](https://badge.fury.io/py/simpleaudit.svg)](https://pypi.org/project/simpleaudit/) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Release](https://github.com/kelkalot/simpleaudit/actions/workflows/tests.yml/badge.svg)](https://github.com/kelkalot/simpleaudit/actions/workflows/tests.yml) [![Last Commit](https://img.shields.io/github/last-commit/kelkalot/simpleaudit)](https://github.com/kelkalot/simpleaudit/commits/main)
3
+ [![DPG Badge](https://img.shields.io/badge/Verified-DPG-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)](https://www.digitalpublicgoods.net/r/simpleaudit) [![PyPI version](https://badge.fury.io/py/simpleaudit.svg)](https://pypi.org/project/simpleaudit/) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Release](https://github.com/simulamet/simpleaudit/actions/workflows/tests.yml/badge.svg)](https://github.com/simulamet/simpleaudit/actions/workflows/tests.yml) [![Last Commit](https://img.shields.io/github/last-commit/simulamet/simpleaudit)](https://github.com/simulamet/simpleaudit/commits/main)
4
4
 
5
5
  <img width="300px" alt="simpleaudit-logo" src="https://github.com/user-attachments/assets/2ed38ae0-f834-4934-bcc4-48fe441b8b2b" />
6
6
 
@@ -16,7 +16,7 @@ Developed by [Simula](https://www.simula.no/) and [SimulaMet](https://www.simula
16
16
  SimpleAudit is a simple, extensible, local-first framework for multilingual auditing and red-teaming of AI systems via adversarial probing. It supports open models running locally (no APIs required) and can optionally run evaluations against API-hosted models. SimpleAudit does not collect or transmit user data by default and is designed for minimal setup.
17
17
  </div>
18
18
 
19
- See the [standards and best practices for creating custom test scenarios](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/scenarios/simpleaudit_scenario_guidelines_v1.0.md).
19
+ See the [standards and best practices for creating custom test scenarios](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/scenarios/simpleaudit_scenario_guidelines_v1.0.md).
20
20
 
21
21
  <img alt="simpleaudit_example_gemma_model" src="https://github.com/user-attachments/assets/05c45a62-74e7-4aa3-a3cd-41bad0cc8233" />
22
22
 
@@ -72,7 +72,7 @@ pip install -U simpleaudit[plot]
72
72
  **Install from GitHub** (for latest development features):
73
73
 
74
74
  ```bash
75
- pip install -U git+https://github.com/kelkalot/simpleaudit.git
75
+ pip install -U git+https://github.com/simulamet/simpleaudit.git
76
76
  ```
77
77
 
78
78
  ## Quick Start
@@ -127,7 +127,7 @@ pip install 'simpleaudit[visualize]'
127
127
  simpleaudit serve --results_dir ./my_audit_results
128
128
  ```
129
129
  This will spin-up a local web server to explore results with scenario details. 👉 [Check for live demo.](https://simulamet-simpleauditvisualization.hf.space)
130
- See [visualization/README.md](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/visualization/README.md) for more options and features.
130
+ See [visualization/README.md](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/visualization/README.md) for more options and features.
131
131
 
132
132
  To share results as a single self-contained HTML file (no server, no JSON upload), use `simpleaudit export-html ./audit_results.json` or the **Download HTML** button in the visualizer.
133
133
 
@@ -140,7 +140,7 @@ If the command fails:
140
140
  - **Weird import/module error** — stale cache. Run `uv cache clean` and retry.
141
141
  </Troubleshooting>
142
142
 
143
- [![simpleaudit-visualization-ui](https://github.com/user-attachments/assets/f9bbb891-a847-48d4-85d6-6d6d99c9e017)](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/visualization/README.md)
143
+ [![simpleaudit-visualization-ui](https://github.com/user-attachments/assets/f9bbb891-a847-48d4-85d6-6d6d99c9e017)](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/visualization/README.md)
144
144
 
145
145
  ### Running Experiments
146
146
 
@@ -1102,7 +1102,7 @@ Contributions welcome! Areas of interest:
1102
1102
  - More target adapters
1103
1103
  - Documentation improvements
1104
1104
 
1105
- Don't hesitate to contact us or [open issues](https://github.com/kelkalot/simpleaudit/issues) if you have questions, feedback, or encounter any problems.
1105
+ Don't hesitate to contact us or [open issues](https://github.com/simulamet/simpleaudit/issues) if you have questions, feedback, or encounter any problems.
1106
1106
 
1107
1107
  ## Main Contributors
1108
1108
  [Michael A. Riegler](https://www.simula.no/people/michael) (Simula) \
@@ -1142,10 +1142,10 @@ If you use SimpleAudit in research or procurement, please cite the methodology p
1142
1142
 
1143
1143
  ## Governance & Compliance
1144
1144
 
1145
- - 📋 [Digital Public Good Compliance](https://github.com/kelkalot/simpleaudit/blob/main/DPG.md) — SDG alignment, ownership, standards
1146
- - 🤝 [Code of Conduct](https://github.com/kelkalot/simpleaudit/blob/main/CODE_OF_CONDUCT.md) — Community guidelines and responsible use
1147
- - 🔒 [Security Policy](https://github.com/kelkalot/simpleaudit/blob/main/SECURITY.md) — Vulnerability reporting and security considerations
1145
+ - 📋 [Digital Public Good Compliance](https://github.com/simulamet/simpleaudit/blob/main/DPG.md) — SDG alignment, ownership, standards
1146
+ - 🤝 [Code of Conduct](https://github.com/simulamet/simpleaudit/blob/main/CODE_OF_CONDUCT.md) — Community guidelines and responsible use
1147
+ - 🔒 [Security Policy](https://github.com/simulamet/simpleaudit/blob/main/SECURITY.md) — Vulnerability reporting and security considerations
1148
1148
 
1149
1149
  ## License
1150
1150
 
1151
- MIT License - see [LICENSE](https://github.com/kelkalot/simpleaudit/blob/main/LICENSE) for details.
1151
+ MIT License - see [LICENSE](https://github.com/simulamet/simpleaudit/blob/main/LICENSE) for details.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "simpleaudit"
7
- version = "0.3.0"
7
+ version = "0.3.2"
8
8
  description = "Lightweight AI Safety Auditing Framework"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -62,10 +62,10 @@ dev = [
62
62
  all = ["simpleaudit[plot,visualize,dev]"]
63
63
 
64
64
  [project.urls]
65
- Homepage = "https://github.com/kelkalot/simpleaudit"
66
- Documentation = "https://github.com/kelkalot/simpleaudit#readme"
67
- Repository = "https://github.com/kelkalot/simpleaudit"
68
- Issues = "https://github.com/kelkalot/simpleaudit/issues"
65
+ Homepage = "https://github.com/simulamet/simpleaudit"
66
+ Documentation = "https://github.com/simulamet/simpleaudit#readme"
67
+ Repository = "https://github.com/simulamet/simpleaudit"
68
+ Issues = "https://github.com/simulamet/simpleaudit/issues"
69
69
  PyPI = "https://pypi.org/project/simpleaudit/"
70
70
 
71
71
  [tool.setuptools.packages.find]
@@ -25,6 +25,25 @@
25
25
  # Author: Michael A. Riegler
26
26
  # Date: 2026-03-18
27
27
  # License: MIT
28
+ # Copyright (c) 2026 Peter Gostev
29
+ #
30
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
31
+ # of this software and associated documentation files (the "Software"), to deal
32
+ # in the Software without restriction, including without limitation the rights
33
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
34
+ # copies of the Software, and to permit persons to whom the Software is
35
+ # furnished to do so, subject to the following conditions:
36
+ #
37
+ # The above copyright notice and this permission notice shall be included in all
38
+ # copies or substantial portions of the Software.
39
+ #
40
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
41
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
42
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
43
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
44
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
45
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
46
+ # SOFTWARE.
28
47
 
29
48
  BULLSHITBENCH_V1_SCENARIOS = [
30
49
  {
@@ -88,6 +88,7 @@ class ModelTarget:
88
88
  documents=documents,
89
89
  response_format=response_format,
90
90
  params=params,
91
+ context=context,
91
92
  max_retries=self.max_retries,
92
93
  retry_backoff=self.retry_backoff,
93
94
  )
@@ -104,6 +105,7 @@ async def _client_send(
104
105
  documents: Optional[List[Union[str, Dict[str, Any]]]],
105
106
  response_format: Optional[Dict[str, Any]],
106
107
  params: Optional[Dict[str, Any]],
108
+ context: Optional[TargetContext] = None,
107
109
  max_retries: int,
108
110
  retry_backoff: float,
109
111
  ) -> TargetResponse:
@@ -111,9 +113,21 @@ async def _client_send(
111
113
 
112
114
  Imported lazily so that ``simpleaudit.targets`` does not create an import
113
115
  cycle with ``model_auditor`` at package import time.
116
+
117
+ When the per-turn context carries W3C trace headers (e.g. the engine's
118
+ scenario traceparent), they are merged into ``extra_headers`` so the
119
+ target's outgoing call propagates the trace context. This is what lets an
120
+ instrumented target export spans under the same trace id the engine's
121
+ TraceCorrelation records. User-supplied extra_headers are preserved.
114
122
  """
115
123
  from ..model_auditor import ModelAuditor
116
124
 
125
+ if context is not None and context.trace_headers:
126
+ headers = dict(params.get("extra_headers", {}) if params else {})
127
+ headers.update(context.trace_headers)
128
+ params = dict(params or {})
129
+ params["extra_headers"] = headers
130
+
117
131
  content, input_tokens, output_tokens = await ModelAuditor._call_async(
118
132
  client,
119
133
  model,
@@ -1,13 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: simpleaudit
3
- Version: 0.3.0
3
+ Version: 0.3.2
4
4
  Summary: Lightweight AI Safety Auditing Framework
5
5
  Author: SimpleAudit Contributors
6
6
  License: MIT
7
- Project-URL: Homepage, https://github.com/kelkalot/simpleaudit
8
- Project-URL: Documentation, https://github.com/kelkalot/simpleaudit#readme
9
- Project-URL: Repository, https://github.com/kelkalot/simpleaudit
10
- Project-URL: Issues, https://github.com/kelkalot/simpleaudit/issues
7
+ Project-URL: Homepage, https://github.com/simulamet/simpleaudit
8
+ Project-URL: Documentation, https://github.com/simulamet/simpleaudit#readme
9
+ Project-URL: Repository, https://github.com/simulamet/simpleaudit
10
+ Project-URL: Issues, https://github.com/simulamet/simpleaudit/issues
11
11
  Project-URL: PyPI, https://pypi.org/project/simpleaudit/
12
12
  Keywords: ai,safety,audit,red-team,llm,rag,testing
13
13
  Classifier: Development Status :: 4 - Beta
@@ -48,7 +48,7 @@ Dynamic: license-file
48
48
 
49
49
  <div align="center">
50
50
 
51
- [![DPG Badge](https://img.shields.io/badge/Verified-DPG-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)](https://www.digitalpublicgoods.net/r/simpleaudit) [![PyPI version](https://badge.fury.io/py/simpleaudit.svg)](https://pypi.org/project/simpleaudit/) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Release](https://github.com/kelkalot/simpleaudit/actions/workflows/tests.yml/badge.svg)](https://github.com/kelkalot/simpleaudit/actions/workflows/tests.yml) [![Last Commit](https://img.shields.io/github/last-commit/kelkalot/simpleaudit)](https://github.com/kelkalot/simpleaudit/commits/main)
51
+ [![DPG Badge](https://img.shields.io/badge/Verified-DPG-3333AB?logo=data:image/svg%2bxml;base64,PHN2ZyB3aWR0aD0iMzEiIGhlaWdodD0iMzMiIHZpZXdCb3g9IjAgMCAzMSAzMyIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTE0LjIwMDggMjEuMzY3OEwxMC4xNzM2IDE4LjAxMjRMMTEuNTIxOSAxNi40MDAzTDEzLjk5MjggMTguNDU5TDE5LjYyNjkgMTIuMjExMUwyMS4xOTA5IDEzLjYxNkwxNC4yMDA4IDIxLjM2NzhaTTI0LjYyNDEgOS4zNTEyN0wyNC44MDcxIDMuMDcyOTdMMTguODgxIDUuMTg2NjJMMTUuMzMxNCAtMi4zMzA4MmUtMDVMMTEuNzgyMSA1LjE4NjYyTDUuODU2MDEgMy4wNzI5N0w2LjAzOTA2IDkuMzUxMjdMMCAxMS4xMTc3TDMuODQ1MjEgMTYuMDg5NUwwIDIxLjA2MTJMNi4wMzkwNiAyMi44Mjc3TDUuODU2MDEgMjkuMTA2TDExLjc4MjEgMjYuOTkyM0wxNS4zMzE0IDMyLjE3OUwxOC44ODEgMjYuOTkyM0wyNC44MDcxIDI5LjEwNkwyNC42MjQxIDIyLjgyNzdMMzAuNjYzMSAyMS4wNjEyTDI2LjgxNzYgMTYuMDg5NUwzMC42NjMxIDExLjExNzdMMjQuNjI0MSA5LjM1MTI3WiIgZmlsbD0id2hpdGUiLz4KPC9zdmc+Cg==)](https://www.digitalpublicgoods.net/r/simpleaudit) [![PyPI version](https://badge.fury.io/py/simpleaudit.svg)](https://pypi.org/project/simpleaudit/) [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![Release](https://github.com/simulamet/simpleaudit/actions/workflows/tests.yml/badge.svg)](https://github.com/simulamet/simpleaudit/actions/workflows/tests.yml) [![Last Commit](https://img.shields.io/github/last-commit/simulamet/simpleaudit)](https://github.com/simulamet/simpleaudit/commits/main)
52
52
 
53
53
  <img width="300px" alt="simpleaudit-logo" src="https://github.com/user-attachments/assets/2ed38ae0-f834-4934-bcc4-48fe441b8b2b" />
54
54
 
@@ -64,7 +64,7 @@ Developed by [Simula](https://www.simula.no/) and [SimulaMet](https://www.simula
64
64
  SimpleAudit is a simple, extensible, local-first framework for multilingual auditing and red-teaming of AI systems via adversarial probing. It supports open models running locally (no APIs required) and can optionally run evaluations against API-hosted models. SimpleAudit does not collect or transmit user data by default and is designed for minimal setup.
65
65
  </div>
66
66
 
67
- See the [standards and best practices for creating custom test scenarios](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/scenarios/simpleaudit_scenario_guidelines_v1.0.md).
67
+ See the [standards and best practices for creating custom test scenarios](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/scenarios/simpleaudit_scenario_guidelines_v1.0.md).
68
68
 
69
69
  <img alt="simpleaudit_example_gemma_model" src="https://github.com/user-attachments/assets/05c45a62-74e7-4aa3-a3cd-41bad0cc8233" />
70
70
 
@@ -120,7 +120,7 @@ pip install -U simpleaudit[plot]
120
120
  **Install from GitHub** (for latest development features):
121
121
 
122
122
  ```bash
123
- pip install -U git+https://github.com/kelkalot/simpleaudit.git
123
+ pip install -U git+https://github.com/simulamet/simpleaudit.git
124
124
  ```
125
125
 
126
126
  ## Quick Start
@@ -175,7 +175,7 @@ pip install 'simpleaudit[visualize]'
175
175
  simpleaudit serve --results_dir ./my_audit_results
176
176
  ```
177
177
  This will spin-up a local web server to explore results with scenario details. 👉 [Check for live demo.](https://simulamet-simpleauditvisualization.hf.space)
178
- See [visualization/README.md](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/visualization/README.md) for more options and features.
178
+ See [visualization/README.md](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/visualization/README.md) for more options and features.
179
179
 
180
180
  To share results as a single self-contained HTML file (no server, no JSON upload), use `simpleaudit export-html ./audit_results.json` or the **Download HTML** button in the visualizer.
181
181
 
@@ -188,7 +188,7 @@ If the command fails:
188
188
  - **Weird import/module error** — stale cache. Run `uv cache clean` and retry.
189
189
  </Troubleshooting>
190
190
 
191
- [![simpleaudit-visualization-ui](https://github.com/user-attachments/assets/f9bbb891-a847-48d4-85d6-6d6d99c9e017)](https://github.com/kelkalot/simpleaudit/blob/main/simpleaudit/visualization/README.md)
191
+ [![simpleaudit-visualization-ui](https://github.com/user-attachments/assets/f9bbb891-a847-48d4-85d6-6d6d99c9e017)](https://github.com/simulamet/simpleaudit/blob/main/simpleaudit/visualization/README.md)
192
192
 
193
193
  ### Running Experiments
194
194
 
@@ -1150,7 +1150,7 @@ Contributions welcome! Areas of interest:
1150
1150
  - More target adapters
1151
1151
  - Documentation improvements
1152
1152
 
1153
- Don't hesitate to contact us or [open issues](https://github.com/kelkalot/simpleaudit/issues) if you have questions, feedback, or encounter any problems.
1153
+ Don't hesitate to contact us or [open issues](https://github.com/simulamet/simpleaudit/issues) if you have questions, feedback, or encounter any problems.
1154
1154
 
1155
1155
  ## Main Contributors
1156
1156
  [Michael A. Riegler](https://www.simula.no/people/michael) (Simula) \
@@ -1190,10 +1190,10 @@ If you use SimpleAudit in research or procurement, please cite the methodology p
1190
1190
 
1191
1191
  ## Governance & Compliance
1192
1192
 
1193
- - 📋 [Digital Public Good Compliance](https://github.com/kelkalot/simpleaudit/blob/main/DPG.md) — SDG alignment, ownership, standards
1194
- - 🤝 [Code of Conduct](https://github.com/kelkalot/simpleaudit/blob/main/CODE_OF_CONDUCT.md) — Community guidelines and responsible use
1195
- - 🔒 [Security Policy](https://github.com/kelkalot/simpleaudit/blob/main/SECURITY.md) — Vulnerability reporting and security considerations
1193
+ - 📋 [Digital Public Good Compliance](https://github.com/simulamet/simpleaudit/blob/main/DPG.md) — SDG alignment, ownership, standards
1194
+ - 🤝 [Code of Conduct](https://github.com/simulamet/simpleaudit/blob/main/CODE_OF_CONDUCT.md) — Community guidelines and responsible use
1195
+ - 🔒 [Security Policy](https://github.com/simulamet/simpleaudit/blob/main/SECURITY.md) — Vulnerability reporting and security considerations
1196
1196
 
1197
1197
  ## License
1198
1198
 
1199
- MIT License - see [LICENSE](https://github.com/kelkalot/simpleaudit/blob/main/LICENSE) for details.
1199
+ MIT License - see [LICENSE](https://github.com/simulamet/simpleaudit/blob/main/LICENSE) for details.
@@ -75,6 +75,40 @@ async def test_model_target_client_mode():
75
75
  assert client.calls[0]["model"] == "m"
76
76
 
77
77
 
78
+ @pytest.mark.asyncio
79
+ async def test_model_target_client_mode_forwards_trace_headers():
80
+ """trace_headers on the per-turn context reach the wire as extra_headers."""
81
+ client = _FakeClient()
82
+ t = ModelTarget(client=client, model="m")
83
+ ctx = TargetContext(trace_headers={"traceparent": "00-11223344556677889900112233445566-abcdef0123456789-01"})
84
+ await t.send(user="hi", context=ctx)
85
+ assert client.calls[0]["extra_headers"] == {
86
+ "traceparent": "00-11223344556677889900112233445566-abcdef0123456789-01"
87
+ }
88
+
89
+
90
+ @pytest.mark.asyncio
91
+ async def test_model_target_trace_headers_merge_with_user_params():
92
+ """User-supplied extra_headers and the framework's trace headers coexist."""
93
+ client = _FakeClient()
94
+ t = ModelTarget(client=client, model="m")
95
+ ctx = TargetContext(trace_headers={"traceparent": "00-11223344556677889900112233445566-abcdef0123456789-01"})
96
+ await t.send(user="hi", params={"extra_headers": {"X-Custom": "1"}}, context=ctx)
97
+ assert client.calls[0]["extra_headers"] == {
98
+ "X-Custom": "1",
99
+ "traceparent": "00-11223344556677889900112233445566-abcdef0123456789-01",
100
+ }
101
+
102
+
103
+ @pytest.mark.asyncio
104
+ async def test_model_target_no_context_no_extra_headers():
105
+ """Without a context the call is byte-identical to the legacy path."""
106
+ client = _FakeClient()
107
+ t = ModelTarget(client=client, model="m")
108
+ await t.send(user="hi")
109
+ assert "extra_headers" not in client.calls[0]
110
+
111
+
78
112
  @pytest.mark.asyncio
79
113
  async def test_model_target_transport_mode():
80
114
  async def transport(**kw):
@@ -324,3 +358,38 @@ def test_engine_forwards_traceparent_and_records_correlation():
324
358
  assert parts[3] == "01"
325
359
  # The correlation recorded at least one turn -> trace link.
326
360
  assert correlation.all_trace_ids()
361
+
362
+
363
+ def test_engine_traceparent_reaches_wire_on_default_target():
364
+ """With the default ModelTarget (no override), the scenario's traceparent
365
+ is forwarded on the target's outgoing acompletion as extra_headers."""
366
+ import asyncio
367
+
368
+ from simpleaudit.tracing.context import TraceCorrelation
369
+ from tests.fakes import fixed_probe_auditor, fixed_severity_judge, make_auditor
370
+
371
+ client = _FakeClient()
372
+ auditor = make_auditor(
373
+ target=client,
374
+ judge=fixed_severity_judge("pass"),
375
+ auditor=fixed_probe_auditor("probe"),
376
+ max_turns=2,
377
+ show_progress=False,
378
+ )
379
+
380
+ correlation = TraceCorrelation(audit_run_id="audit_test")
381
+ scenarios = [{"name": "Wire", "description": "wire traceparent test"}]
382
+ asyncio.run(
383
+ auditor.run_async(
384
+ scenarios=scenarios,
385
+ max_turns=2,
386
+ audit_run_id="audit_test",
387
+ trace_correlation=correlation,
388
+ )
389
+ )
390
+
391
+ assert client.calls
392
+ last = client.calls[-1]
393
+ tp = last["extra_headers"]["traceparent"]
394
+ # Same trace id the correlation recorded, not a fresh unrelated one.
395
+ assert tp.split("-")[1] in correlation.all_trace_ids()
@@ -422,6 +422,26 @@ def test_parse_otlp_json_string_body():
422
422
  assert len(spans) == 1
423
423
 
424
424
 
425
+ def test_parse_otlp_json_preserves_genai_content_attributes():
426
+ payload = _otlp_http_payload()
427
+ payload["resourceSpans"][0]["scopeSpans"][0]["spans"][0]["attributes"].extend(
428
+ [
429
+ {"key": "gen_ai.input.messages", "value": {"stringValue": "user prompt"}},
430
+ {"key": "gen_ai.output.messages", "value": {"stringValue": "assistant output"}},
431
+ {"key": "gen_ai.tool.call.arguments", "value": {"stringValue": '{"x":1}'}},
432
+ {
433
+ "key": "gen_ai.retrieval.documents",
434
+ "value": {"arrayValue": {"values": [{"stringValue": "document text"}]}},
435
+ },
436
+ ]
437
+ )
438
+ span = parse_otlp_json(payload)[0]
439
+ assert span["attributes"]["gen_ai.input.messages"] == "user prompt"
440
+ assert span["attributes"]["gen_ai.output.messages"] == "assistant output"
441
+ assert span["attributes"]["gen_ai.tool.call.arguments"] == '{"x":1}'
442
+ assert span["attributes"]["gen_ai.retrieval.documents"] == ["document text"]
443
+
444
+
425
445
  @pytest.mark.asyncio
426
446
  async def test_otlp_receiver_ingests():
427
447
  receiver = OTLPTraceReceiver()
File without changes
File without changes