Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.12.0
Contributing to OBLITERATUS
Thanks for your interest in contributing. This document covers everything you need to get started.
Development Setup
git clone https://github.com/elder-plinius/OBLITERATUS.git
cd OBLITERATUS
pip install -e ".[dev]"
This installs the package in editable mode with test dependencies (pytest, ruff).
Running Tests
pytest # full suite (823 tests)
pytest tests/test_abliterate.py # single file
pytest -x # stop on first failure
pytest -k "test_name" # run specific test
All tests must pass before submitting a PR. Tests are designed to run on CPU without downloading models.
Code Style
We use ruff for linting and formatting:
ruff check obliteratus/ # lint
ruff format obliteratus/ # format
- Line length: 100 characters
- Target: Python 3.10+
- Follow existing patterns in the codebase
Submitting Changes
- Fork the repo and create a branch from
main - Make your changes
- Add or update tests as needed
- Run
pytestandruff check-- both must pass - Write a clear commit message explaining why, not just what
- Open a pull request
Pull Request Guidelines
- Keep PRs focused -- one feature or fix per PR
- Include a test plan in the PR description
- Link related issues with
Fixes #123orCloses #123 - For new analysis modules, include unit tests with synthetic data (no model downloads)
Contributing Experiment Results
Beyond code contributions, you can contribute abliteration experiment results to the community dataset used in the research paper. After running abliteration on any model:
obliteratus obliterate <model> --method advanced --contribute \
--contribute-notes "Hardware: A100, prompt set: default"
This saves a structured JSON file to community_results/. To submit your results:
- Run abliteration with
--contributeon any model/method combination - Open a PR adding your
community_results/*.jsonfile(s) - The aggregation pipeline will incorporate your data into the paper tables
You can preview aggregated results locally:
obliteratus aggregate --format summary
obliteratus aggregate --format latex --min-runs 3
Project Structure
obliteratus/
abliterate.py # Core abliteration pipeline
informed_pipeline.py # Analysis-informed pipeline
community.py # Community contribution system
cli.py # CLI entry point
config.py # YAML config loading
interactive.py # Interactive mode
presets.py # Model presets (47 models)
runner.py # Ablation study runner
analysis/ # 15 analysis modules
evaluation/ # Metrics and benchmarks
models/ # Model loading utilities
reporting/ # Report generation
strategies/ # Ablation strategies (layer, head, FFN, embedding)
tests/ # 28 test files
paper/ # LaTeX paper
examples/ # YAML config examples
Reporting Bugs
Open an issue with:
- What you expected to happen
- What actually happened
- Steps to reproduce
- Model name and hardware (GPU/CPU, VRAM)
Security Issues
See SECURITY.md for responsible disclosure of security vulnerabilities.
License
By contributing, you agree that your contributions will be licensed under the AGPL-3.0.