Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.PHONY: validate validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts
.PHONY: validate validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts

validate: validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts
validate: validate-control-plane-examples validate-nlboot-examples validate-lattice-data-governai-examples validate-ops-history-examples validate-runtime-observability-examples validate-interpretability-examples validate-lifecycle-boundary-examples validate-svf-contracts validate-sync-cycle-receipts
@echo "OK: validate"

validate-control-plane-examples:
Expand All @@ -23,6 +23,10 @@ validate-runtime-observability-examples:
python3 -m pip install --user jsonschema >/dev/null
python3 tools/validate_runtime_observability_examples.py

validate-interpretability-examples:
python3 -m pip install --user jsonschema >/dev/null
python3 tools/validate_interpretability_examples.py

validate-lifecycle-boundary-examples:
python3 -m pip install --user jsonschema >/dev/null
python3 tools/validate_lifecycle_boundary_examples.py
Expand Down
27 changes: 27 additions & 0 deletions examples/interpretability/sae-catalog.v0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"schema_version": "0.1.0",
"catalog_kind": "interpretability-sae-contract-coverage",
"entries": [
{"slug":"llama-scope-2","base_model":"Qwen3-1.7B","decomposition_type":"compound_decomposition","sae_training_method":"other","site_type":"attention_qk_ov","base_model_class":"pretrained_base","author_class":"research_lab","publication_state":"preprint","claim_type":"circuit_construction","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"compound_decompositions":["transcoder_clt","lorsa_attention"],"inference_endpoint_available":false,"commercial_license_required":false,"api_provider_class":"open_weights","deanonymization_pending":false,"neuronpedia_source_id":"qwen3-1.7b-crm-openmoss"},
{"slug":"assistant-axis","base_model":"Llama-3.3-70B-Instruct","decomposition_type":"standard_sae","sae_training_method":"other","site_type":"residual_post","base_model_class":"instruction_tuned","author_class":"safety_research","publication_state":"preprint","claim_type":"safety_finding","intervention_kind":"activation_cap","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"40-resid-post-anthropic-axis"},
{"slug":"qwen-scope","base_model":"Qwen3.5-2B","decomposition_type":"standard_sae","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"model_author","publication_state":"blog_post","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"qwen3.5-2b-resid-32k-qwen-scope"},
{"slug":"sparse-circuits","base_model":"CircuitGPT-Python","decomposition_type":"weight_sparse_native","sae_training_method":"weight_sparse_native","site_type":"mlp","base_model_class":"sparse_trained_native","author_class":"model_author","publication_state":"preprint","claim_type":"method_innovation","intervention_kind":"none","embedded_decomposition":true,"cross_layer":false,"inference_endpoint_available":false,"commercial_license_required":false,"api_provider_class":"open_weights","deanonymization_pending":false,"neuronpedia_source_id":"6-mlp"},
{"slug":"temporal-feature-analysis","base_model":"Llama-3.1-8B","decomposition_type":"temporal_sae","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"research_lab","publication_state":"preprint","claim_type":"method_innovation","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"temporal_window":8,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"15-resid-temporal-16k-lubana"},
{"slug":"gpt-oss-sae","base_model":"GPT-OSS-20B","decomposition_type":"batch_topk_sae","sae_training_method":"batch_topk","site_type":"residual_post","base_model_class":"pretrained_base","author_class":"individual_researcher","publication_state":"blog_post","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"0-resid-post-aa-131k"},
{"slug":"misaligned-persona","base_model":"Llama-3.1-8B-Instruct/Qwen2.5-7B-Instruct","decomposition_type":"standard_sae","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"instruction_tuned","author_class":"individual_researcher","publication_state":"lesswrong","claim_type":"safety_finding","intervention_kind":"feature_steering","embedded_decomposition":false,"cross_layer":false,"cross_model_agreement_required":true,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"cross-model-misaligned-persona-aa"},
{"slug":"transcoders-hp","base_model":"Gemma-2-2B/Qwen3-4B","decomposition_type":"transcoder_clt","sae_training_method":"transcoder","site_type":"residual_mid","base_model_class":"pretrained_base","author_class":"safety_research","publication_state":"preprint","claim_type":"circuit_construction","intervention_kind":"none","embedded_decomposition":false,"cross_layer":true,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"0-clt-hp"},
{"slug":"res-matryoshka-dc","base_model":"Gemma-2-2B","decomposition_type":"matryoshka_sae","sae_training_method":"matryoshka_topk","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"individual_researcher","publication_state":"blog_post","claim_type":"method_innovation","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"nested_widths":[16000,32000],"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"res-matryoshka-dc-32k"},
{"slug":"llama3.3-70b-it-gf","base_model":"Llama-3.3-70B-Instruct","decomposition_type":"standard_sae","sae_training_method":"other","site_type":"residual_post","base_model_class":"instruction_tuned","author_class":"commercial_interp","publication_state":"commercial_release","claim_type":"feature_set","intervention_kind":"feature_steering","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":true,"api_provider_class":"commercial_steering_api","deanonymization_pending":false,"neuronpedia_source_id":"50-resid-post-gf"},
{"slug":"llama-scope-r1","base_model":"DeepSeek-R1-Distill-Llama-8B","decomposition_type":"standard_sae","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"reasoning_distilled","author_class":"research_lab","publication_state":"preprint","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"llama-r1-distill-8b-resid-openmoss"},
{"slug":"axbench","base_model":"Gemma-2-9B-IT","decomposition_type":"standard_sae","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"instruction_tuned","author_class":"research_lab","publication_state":"preprint","claim_type":"benchmark_critique","intervention_kind":"reft_finetuning","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"open_weights","deanonymization_pending":false,"neuronpedia_source_id":"20-resid-reft-r1-16k-axbench"},
{"slug":"llama-scope","base_model":"Llama-3.1-8B","decomposition_type":"standard_sae","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"research_lab","publication_state":"preprint","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"15-resid-openmoss-32k"},
{"slug":"gpt2sm-rfs-jb","base_model":"GPT-2 Small","decomposition_type":"feature_splitting_study","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"individual_researcher","publication_state":"preprint","claim_type":"feature_phenomenology","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"8-resid-rfs-jb-12288"},
{"slug":"llama3.1-8b-eleuther-gp","base_model":"Llama-3.1-8B","decomposition_type":"multi_topk_sae","sae_training_method":"multi_topk","site_type":"mlp","base_model_class":"pretrained_base","author_class":"research_lab","publication_state":"blog_post","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":false,"commercial_license_required":false,"api_provider_class":"open_weights","deanonymization_pending":false,"neuronpedia_source_id":"23-mlp-eleuther-gp-262k"},
{"slug":"gpt2sm-oai-2024","base_model":"GPT-2 Small","decomposition_type":"standard_sae","sae_training_method":"other","site_type":"attention_out","base_model_class":"pretrained_base","author_class":"model_author","publication_state":"preprint","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"open_weights","deanonymization_pending":false,"neuronpedia_source_id":"0-att_32k-oai"},
{"slug":"gpt2sm-apollojt","base_model":"GPT-2 Small","decomposition_type":"standard_sae","sae_training_method":"jumprelu","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"safety_research","publication_state":"preprint","claim_type":"safety_finding","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"gpt2sm-apollojt"},
{"slug":"gpt2sm-tres-dc","base_model":"GPT-2 Small","decomposition_type":"standard_sae","sae_training_method":"topk","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"individual_researcher","publication_state":"blog_post","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"gpt2sm-tres-dc"},
{"slug":"p70d-sm","base_model":"Pythia-70M-Deduped","decomposition_type":"standard_sae","sae_training_method":"topk","site_type":"attention_out","base_model_class":"pretrained_base","author_class":"anonymous_review","publication_state":"anonymous_review","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":false,"commercial_license_required":false,"api_provider_class":"open_weights","deanonymization_pending":true,"neuronpedia_source_id":"p70d-sm"},
{"slug":"gpt2sm-kk","base_model":"GPT-2 Small","decomposition_type":"standard_sae","sae_training_method":"other","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"individual_researcher","publication_state":"blog_post","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"gpt2sm-kk"},
{"slug":"gpt2sm-res-jb","base_model":"GPT-2 Small","decomposition_type":"standard_sae","sae_training_method":"relu","site_type":"residual_stream","base_model_class":"pretrained_base","author_class":"individual_researcher","publication_state":"preprint","claim_type":"feature_set","intervention_kind":"none","embedded_decomposition":false,"cross_layer":false,"inference_endpoint_available":true,"commercial_license_required":false,"api_provider_class":"hosted_api_features","deanonymization_pending":false,"neuronpedia_source_id":"gpt2sm-res-jb"}
]
}
103 changes: 103 additions & 0 deletions schemas/interpretability/artifact-source-lock.v0.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,103 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://sourceos.dev/schemas/interpretability/artifact-source-lock.v0.json",
"title": "Interpretability Artifact Source Lock v0.1",
"description": "Source lock for SAE, transcoder, sparse-native, and related interpretability artifacts.",
"type": "object",
"additionalProperties": false,
"required": [
"schema_version",
"lock_kind",
"lock_id",
"model_ref",
"artifact_ref",
"decomposition_type",
"site_type",
"base_model_class",
"embedded_decomposition",
"cross_layer",
"neuronpedia_source_id",
"manifest_digest_sha256"
],
"properties": {
"schema_version": {"const": "0.1.0"},
"lock_kind": {"const": "interpretability-artifact-source-lock"},
"lock_id": {"type": "string", "pattern": "^urn:srcos:interpretability:source-lock:[A-Za-z0-9._:-]+$"},
"model_ref": {"type": "string", "minLength": 1},
"artifact_ref": {"type": "string", "minLength": 1},
"decomposition_type": {
"type": "string",
"enum": [
"standard_sae",
"transcoder_clt",
"weight_sparse_native",
"lorsa_attention",
"matryoshka_sae",
"temporal_sae",
"multi_topk_sae",
"batch_topk_sae",
"feature_splitting_study",
"compound_decomposition"
]
},
"sae_training_method": {
"type": "string",
"enum": ["relu", "topk", "batch_topk", "multi_topk", "gated", "jumprelu", "matryoshka_topk", "lorsa", "weight_sparse_native", "transcoder", "other"]
},
"site_type": {
"type": "string",
"enum": ["residual_stream", "residual_mid", "residual_post", "attention_out", "attention_qk_ov", "mlp", "mlp_post", "embedding"]
},
"base_model_class": {
"type": "string",
"enum": ["pretrained_base", "instruction_tuned", "rlhf_aligned", "reasoning_distilled", "sparse_trained_native"]
},
"embedded_decomposition": {"type": "boolean"},
"cross_layer": {"type": "boolean"},
"nested_widths": {
"type": "array",
"items": {"type": "integer", "minimum": 1},
"uniqueItems": true
},
"temporal_window": {"type": "integer", "minimum": 1},
"compound_decompositions": {
"type": "array",
"items": {"type": "string", "minLength": 1},
"uniqueItems": true
},
"decoder_ref": {"type": "string"},
"neuronpedia_source_id": {"type": "string", "minLength": 1},
"layer": {"type": "integer", "minimum": 0},
"width": {"type": "integer", "minimum": 1},
"manifest_digest_sha256": {"type": "string", "pattern": "^[a-f0-9]{64}$"},
"notes": {"type": "string"}
},
"allOf": [
{
"if": {"properties": {"decomposition_type": {"const": "matryoshka_sae"}}, "required": ["decomposition_type"]},
"then": {"required": ["nested_widths"], "properties": {"nested_widths": {"minItems": 1}}}
},
{
"if": {"properties": {"decomposition_type": {"const": "temporal_sae"}}, "required": ["decomposition_type"]},
"then": {"required": ["temporal_window"]}
},
{
"if": {"properties": {"decomposition_type": {"const": "lorsa_attention"}}, "required": ["decomposition_type"]},
"then": {"properties": {"site_type": {"enum": ["attention_out", "attention_qk_ov"]}}}
},
{
"if": {"properties": {"decomposition_type": {"const": "compound_decomposition"}}, "required": ["decomposition_type"]},
"then": {"required": ["compound_decompositions"], "properties": {"compound_decompositions": {"minItems": 2}}}
},
{
"if": {"properties": {"decomposition_type": {"const": "weight_sparse_native"}}, "required": ["decomposition_type"]},
"then": {
"properties": {
"embedded_decomposition": {"const": true},
"sae_training_method": {"const": "weight_sparse_native"}
},
"not": {"required": ["decoder_ref"]}
}
}
]
}
Loading
Loading