gitgalaxy 2.6.0__tar.gz → 2.7.0__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.
- {gitgalaxy-2.6.0/gitgalaxy.egg-info → gitgalaxy-2.7.0}/PKG-INFO +70 -23
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/README.md +69 -22
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/metrics/README.md +3 -3
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/metrics/signal_processor.py +156 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/audit_recorder.py +10 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/gpu_recorder.py +8 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/llm_recorder.py +125 -25
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/record_keeper.py +96 -11
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/analysis_lens.py +160 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0/gitgalaxy.egg-info}/PKG-INFO +70 -23
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy.egg-info/SOURCES.txt +1 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy.egg-info/scm_file_list.json +4 -0
- gitgalaxy-2.7.0/gitgalaxy.egg-info/scm_version.json +8 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_signal_processor.py +235 -0
- gitgalaxy-2.7.0/tests/core_engine/test_surface_families_contract.py +211 -0
- gitgalaxy-2.7.0/tests/ruff_audit_baseline.json +24 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_audit_recorder.py +89 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_llm_recorder.py +61 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_record_keeper.py +169 -0
- gitgalaxy-2.6.0/gitgalaxy.egg-info/scm_version.json +0 -8
- gitgalaxy-2.6.0/tests/ruff_audit_baseline.json +0 -28
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/agents/class-start-scout.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/agents/contract-audit-scout.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/agents/gemini-analyzer.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/agents/issue-triage.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/agents/pipeline-manager.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/agents/strict-signature-scout.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/hooks/pytest_quiet.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/rules/ci-healing.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/rules/golden-master-guidelines.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/rules/planning-approval.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/rules/sandbox-permissions.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/rules/tri-comparison-chart.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/settings.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/ci-push-checklist/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/harden-class-start-extraction/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/harden-language-extraction/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/harden-strict-signatures/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/issue-generation/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/language-status/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/pipeline-check/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/readme-maintenance/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/release-notes/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/rule-contract-audit/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/score-contract-audit/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/self-scan-query/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/tree-sitter-accuracy-sweep/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude/skills/tri-comparison-ledger-sweep/SKILL.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.claude.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.flake8 +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.galaxyscope.yaml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/CODEOWNERS +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/ISSUE_TEMPLATE/parsing_discrepancy.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/dependabot.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/pull_request_template.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/ast-accuracy-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/codeql.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/dead-key-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/deploy-docs.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/full-suite-gate.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/gitgalaxy.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/golden-crucible.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/golden-master-guard.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/muninn.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/mypy-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/publish.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/release-crucible-archive.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/rosetta-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/ruff-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/signal-contract-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/smoke-test.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/tree-sitter-accuracy-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/tree-sitter-accuracy-history.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/tri-comparison-audit.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.github/workflows/tri-comparison-history.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.gitignore +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/.gitlab-ci.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/AGENTS.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/ANTIGRAVITY.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/CLAUDE.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/CONTRIBUTING.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/LICENSE +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/MANIFEST.in +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/SECURITY.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/action.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/azure-pipelines.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/bitbucket-pipelines.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/cobol_refractor_controller.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/cobol_to_java_controller.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/aperture.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/detector.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/guidestar_lens.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/network_risk_sensor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/prism.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/spatial_correlation.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/spatial_mapper.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/core/state_rehydrator.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/galaxyscope.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/licensing.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/metrics/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/metrics/chronometer.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/metrics/statistical_auditor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/metrics/tensor_scanner.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/sarif_recorder.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/recorders/sbom_recorder.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/requirements.txt +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/security/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/security/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/security/dependency_audit_cache.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/security/manifest_parser.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/security/security_auditor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/security/security_lens.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/config_resolver.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/fidelity_table.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/gitgalaxy_config.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/how_to_add_a_language.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_lens.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/_lens_config.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/_overrides.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/_prism_config.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/_shared_patterns.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/abap.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/ada.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/agc_assembly.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/apex.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/assembly.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/batch.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/blp.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/c.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/cobol.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/cpp.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/csharp.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/css.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/csv.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/dart.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/dockerfile.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/embedded_python.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/fortran.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/glsl.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/go.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/groovy.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/haskell.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/hlo.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/html.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/java.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/javascript.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/jcl.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/json.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/kotlin.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/livecode.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/lua.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/m4.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/makefile.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/markdown.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/matlab.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/mlir.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/nix.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/objectivec.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/pbtxt.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/perl.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/php.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/plaintext.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/powershell.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/proto.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/python.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/ruby.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/rust.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/scala.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/scheme.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/shell.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/solidity.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/sqlite.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/swift.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/tcl.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/td.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/typescript.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/xml.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/yacc.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/yaml.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/language_standards/languages/zig.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/standards/signal_contracts.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/__init__.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/ai_guardrails/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/ai_guardrails/ai_appsec_sensor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/ai_guardrails/dev_agent_firewall.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_agent_task_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_compiler_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_dag_architect.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_etl_unpacker.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_graveyard_finder.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_jcl_auditor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_jcl_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_lexical_patcher.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_microservice_slicer.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_schema_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_cobol/cobol_system_limits_reporter.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/batch_test_harness.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/cobol_to_java_agent_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/cobol_to_java_api_contract_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/cobol_to_java_build_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/cobol_to_java_decoder_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/cobol_to_java_service_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/cobol_to_java_spring_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/cobol_to_java/cobol_to_java_test_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/network_auditing/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/network_auditing/full_api_network_map.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/supply_chain_security/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/supply_chain_security/binary_anomaly_detector.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/supply_chain_security/supply_chain_firewall.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/supply_chain_security/vault_sentinel.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/terabyte_log_scanning/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/terabyte_log_scanning/pii_leak_hunter.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy/tools/terabyte_log_scanning/terabyte_log_scanner.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy.egg-info/dependency_links.txt +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy.egg-info/entry_points.txt +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy.egg-info/requires.txt +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/gitgalaxy.egg-info/top_level.txt +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/github-action-readme.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/mkdocs.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/muninn.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/pyproject.toml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/scripts/update_golden_masters.sh +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/setup.cfg +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/templates/azure/azure-pipelines.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/templates/bitbucket/bitbucket-pipelines.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/templates/bitbucket/bitbucket_insights.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/templates/github/gitgalaxy-pipeline.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/templates/gitlab/scan.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/templates/scan.yml +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/README.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/_crucible_pin.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/ast_accuracy_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/ast_accuracy_baseline.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/readme.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_agent_task_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_compiler_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_dag_architect.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_etl_unpacker.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_graveyard_finder.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_jcl_auditor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_jcl_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_lexical_patcher.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_microservice_slicer.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_refractor_controller.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_schema_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/cobol_mainframe/test_cobol_system_limits_reporter.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/readme.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_aperture.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_chronometer.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_chronometer_timeout.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_config_resolver.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_delta_scanner.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_detector.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_detector_issue_1718.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_export_visibility_contract_2904.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_galaxyscope.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_guidestar_lens.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_handshake_issue_2549.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_lang_classification_2555.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_language_lens.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_language_standards_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_language_strictness.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_licensing.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_manifest_parser.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_naming_convention_signatures.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_path_modifiers.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_prism.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_prism_issue_1222.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_prism_issue_1302.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_prism_issue_1718.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_spatial_correlation.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_state_rehydrator.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_uef_length_invariance.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_unreferenced_by_name_contract_2806.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_unreferenced_census_2866.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/core_engine/test_zero_dependency.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/dead_key_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/dead_key_audit_baseline.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/_extraction_harness.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/how_to_extend_class_start_named_extraction.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/how_to_harden_extraction.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/how_to_harden_strict_signatures.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/_strict_harness.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_abap.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_abap_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_ada.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_ada_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_agc_assembly.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_agc_assembly_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_apex.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_apex_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_assembly.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_assembly_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_branch_contract_2822.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_c.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_c_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_cleanup_contract_2888.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_cobol.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_cobol_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_cpp.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_cpp_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_csharp.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_csharp_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_css.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_css_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_dart.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_dart_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_dockerfile.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_dockerfile_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_embedded_python.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_embedded_python_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_fortran.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_fortran_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_globals_contract_2858.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_go.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_go_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_groovy.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_groovy_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_haskell.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_haskell_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_high_risk_execution_contract_2878.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_html.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_html_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_immutability_locks_contract_2772.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_import_contract_2875.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_io_contract_2841.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_java.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_java_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_javascript.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_javascript_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_jcl.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_jcl_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_kotlin.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_kotlin_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_livecode.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_livecode_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_lua.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_lua_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_m4.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_m4_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_makefile.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_makefile_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_markdown_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_matlab.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_matlab_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_objectivec.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_objectivec_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_ownership_contract_2882.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_perl.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_perl_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_php.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_php_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_powershell.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_powershell_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_python.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_python_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_ruby.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_ruby_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_rust.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_rust_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_safety_contract_2869.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_scala.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_scala_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_scheme.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_scheme_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_shell.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_shell_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_solidity.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_solidity_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_sqlite.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_sqlite_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_state_mutation_contract_2765.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_structure_contract_2856.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_swift.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_swift_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_tcl.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_tcl_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_test_contract_2852.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_typescript.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_typescript_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_yacc.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_yacc_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_yaml.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_yaml_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_zig.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/languages/test_zig_strict.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/readme.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/test_args_extraction.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/test_class_extraction.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/test_dependency_extraction.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/test_function_extraction.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/tools/audit_strict_coverage.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/tools/sweep_redos_scaling.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/extraction/tools/verify_candidates.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/golden_diff.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/golden_master_audit.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/golden_master_zero_dep_audit.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/mypy_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/mypy_audit_baseline.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/ruff_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/readme.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_ai_appsec_sensor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_api_network_map.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_binary_anomaly_detector.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_dependency_audit_cache.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_dev_agent_firewall.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_network_risk_sensor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_pii_leak_hunter.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_redos_poison.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_security_auditor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_security_lens.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_statistical_auditor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_supply_chain_firewall.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_tensor_auditor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_terabyte_log_scanner.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/security_auditing/test_vault_sentinel.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/signal_contract_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/signal_contract_audit_baseline.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/test_dead_key_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/test_golden_crucible.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/test_signal_contract_sheet.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/audit_check.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/audit_length_invariance.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/audit_risk_equations.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/audit_score_inputs.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/bless_scope.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/census_probe.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/class_start_diff.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/contract_pr_check.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/crucible_check.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/ctags_reader.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/fidelity_table.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/recall_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/rosetta_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/rule_probe.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/scope_check.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/self_scan.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/test_audit_runners_refuse_empty.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/test_ctags_reader_qualify.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/test_html_embedded_ts_funcs.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/test_tri_comparison_chart_badge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/test_tri_comparison_ledger.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/test_tri_comparison_reconcile.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/tree_sitter_accuracy_audit.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/tri_comparison_chart.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/tri_comparison_gatherer.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/tri_comparison_ledger.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/tri_comparison_reconcile.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/tri_comparison_report.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/update_golden_master.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools/worktree_env.sh +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/readme.md +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_agent_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_batch_test_harness.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_decoder_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_dependency_density_floor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_func_internal_density_floor.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_golden_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_gpu_recorder.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_sarif_recorder.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_sbom_generator.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tools_recorders/test_service_forge.py +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_apex.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_c.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_cpp.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_csharp.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_css.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_dart.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_fortran.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_go.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_haskell.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_html.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_java.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_javascript.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_kotlin.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_lua.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_makefile.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_matlab.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_objective-c.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_perl.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_php.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_powershell.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_python.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_ruby.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_rust.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_scala.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_shell.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_solidity.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_swift.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_tcl.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_typescript.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tree_sitter_accuracy_baseline_zig.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tri_comparison_baseline_javascript.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tri_comparison_baseline_typescript.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/tests/tri_comparison_baseline_zig.json +0 -0
- {gitgalaxy-2.6.0 → gitgalaxy-2.7.0}/zizmor.yml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gitgalaxy
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.7.0
|
|
4
4
|
Summary: An AST-free, LLM-free zero-trust static analysis engine for mapping architectural risk, securing CI/CD pipelines, and modernizing legacy monoliths.
|
|
5
5
|
Author: Joe Esquibel
|
|
6
6
|
Project-URL: Homepage, https://gitgalaxy.io
|
|
@@ -119,8 +119,8 @@ and test data aggressively, and §5 of the brief itemizes every exclusion by
|
|
|
119
119
|
extension and reason.
|
|
120
120
|
|
|
121
121
|
**cics-genapp** (IBM's CICS COBOL/DB2 sample) — 92.1% scanned: 44 COBOL
|
|
122
|
-
programs, 29 JCL jobs. The cumulative-
|
|
123
|
-
`base/src/lgupdb01.cbl` (
|
|
122
|
+
programs, 29 JCL jobs. The cumulative structural-surface hitlist leads with
|
|
123
|
+
`base/src/lgupdb01.cbl` (mutation surface ~100%, complexity load 92%), and the
|
|
124
124
|
heaviest paragraph in the repo is `UPDATE-POLICY-DB2-INFO` — the `SELECT FOR
|
|
125
125
|
UPDATE` row-locking logic, which is exactly where a maintainer of that program
|
|
126
126
|
would want to look first. The same brief also shows a limitation plainly: on a
|
|
@@ -140,7 +140,7 @@ this repo's own always-current self-scan brief is at
|
|
|
140
140
|
|---|---|
|
|
141
141
|
| Architecture | What is this repository made of? |
|
|
142
142
|
| Structural analysis | Where are the functions, classes, APIs, dependencies and control structures? |
|
|
143
|
-
| Risk exposure | Where
|
|
143
|
+
| Structural Surface Profile (formerly Risk exposure) | Where is a given structural/content pattern concentrated? |
|
|
144
144
|
| Refactoring | Which files are complex, high-churn or load-bearing? |
|
|
145
145
|
| Supply chain | What dependencies physically exist on disk? |
|
|
146
146
|
| AI context | What architecture and relationships should an agent know? |
|
|
@@ -193,8 +193,10 @@ named rather than hidden — `cog_raw` holds 76% of languages in band,
|
|
|
193
193
|
are documented, not defects.
|
|
194
194
|
The claim also survives expansion: when the corpus planted its first
|
|
195
195
|
security-lens probe — one identical hardcoded secret in every language —
|
|
196
|
-
`
|
|
197
|
-
|
|
196
|
+
`credential_material` (formerly `risk_secrets_risk`; the `risk_*` name remains
|
|
197
|
+
the DB column — see [`docs/vectors.md`](docs/vectors.md)) read a **uniform
|
|
198
|
+
score across all 44 languages the lens covers**, and the two exceptions (the
|
|
199
|
+
engine deliberately skips its security
|
|
198
200
|
lens on data formats) and the formula's measured length dependence were
|
|
199
201
|
ledgered and filed the same day
|
|
200
202
|
([#2978](https://github.com/squid-protocol/gitgalaxy/issues/2978),
|
|
@@ -232,21 +234,65 @@ unedited artifacts.
|
|
|
232
234
|
|
|
233
235
|
------------------------------------------------------------------------
|
|
234
236
|
|
|
235
|
-
#
|
|
236
|
-
|
|
237
|
-
GitGalaxy
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
237
|
+
# Structural Surface Profile: what GitGalaxy claims (formerly "Risk exposure")
|
|
238
|
+
|
|
239
|
+
GitGalaxy's 13 per-file vectors were originally named `risk_*` and described as
|
|
240
|
+
**risk-exposure measurements**. The question this section used to leave open —
|
|
241
|
+
"are these signatures empirically associated with meaningful classes of
|
|
242
|
+
software risk?" — has since been tested, not just asked. The
|
|
243
|
+
temporal-crucible validation program (epic
|
|
244
|
+
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982), ~3,550
|
|
245
|
+
scanned snapshots, two repositories, three label families, every test
|
|
246
|
+
pre-registered before the data was looked at) ran that experiment to
|
|
247
|
+
exhaustion, and the honest result drove a rename
|
|
248
|
+
([#2991](https://github.com/squid-protocol/gitgalaxy/issues/2991)): the
|
|
249
|
+
vectors are now called the **Structural Surface Profile**. `risk_*` remains
|
|
250
|
+
the DB column / JSON key name for compatibility (see
|
|
251
|
+
[`docs/vectors.md`](docs/vectors.md) for the full name table and the
|
|
252
|
+
deprecation note).
|
|
253
|
+
|
|
254
|
+
**What the record found, restated honestly:**
|
|
255
|
+
|
|
256
|
+
- **Per-file standing risk, falsified.** The founding hypothesis — that a
|
|
257
|
+
file's `risk_*` level, or its change after a fix, tracks defect
|
|
258
|
+
probability — did not hold. Median structural delta after a security fix
|
|
259
|
+
was +0.000 (equivalence-confirmed near-zero on a second, independent
|
|
260
|
+
repository, not just non-significant); summed structural exposure ranked
|
|
261
|
+
*last* of six features for predicting fix-touched files; a 26-signal
|
|
262
|
+
multivariate structural vector scored at chance (AUC 0.479) under a
|
|
263
|
+
temporal split, below a plain line count (0.531). The full ledger is in
|
|
264
|
+
temporal-crucible's `docs/HYPOTHESES.md` and is linked from
|
|
265
|
+
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982).
|
|
266
|
+
- **What the vectors actually validated for:** describing **activity and
|
|
267
|
+
content**, not defect probability. The fix-shaped composite reliably
|
|
268
|
+
tracks a security-fix → ordinary-fix → control → revert gradient; deltas
|
|
269
|
+
correspond to real code events (guard code added, threading introduced,
|
|
270
|
+
debt markers diluted). That's the x-ray this document now names
|
|
271
|
+
accurately — see [`docs/vectors.md`](docs/vectors.md) vector-by-vector.
|
|
272
|
+
- **System-level / history signal, restated as the actual predictive
|
|
273
|
+
finding.** Two features *did* survive validation: **recidivism** (the file
|
|
274
|
+
that had the last fix gets the next one — the single most replicated
|
|
275
|
+
result of the program, p<1e-4 on both repositories) and **change entropy /
|
|
276
|
+
Hassan HCM**, validated out-of-selection on fresh bug labels (AUC 0.868 vs
|
|
277
|
+
a line count's 0.830). Both are **history** metrics, not structural
|
|
278
|
+
content metrics — and both are currently zeroed in every scan
|
|
279
|
+
(`GITGALAXY_DISABLE_GIT_HISTORY`, tracked in
|
|
280
|
+
[temporal-crucible#29](https://github.com/squid-protocol/temporal-crucible/issues/29)).
|
|
281
|
+
This is the seed of a separate, honestly-named **predictive layer** — the
|
|
282
|
+
`hist_stability`/`hist_churn` vectors are named to mark that status
|
|
283
|
+
explicitly — gated on shipping history-enabled mode and then clearing
|
|
284
|
+
[#2987](https://github.com/squid-protocol/gitgalaxy/issues/2987)'s
|
|
285
|
+
defect-lift promotion contract.
|
|
286
|
+
|
|
287
|
+
A high Structural Surface Profile reading means:
|
|
288
|
+
|
|
289
|
+
> **This location has more of a given structural/content pattern present,
|
|
290
|
+
> relative to the rest of the repository.**
|
|
242
291
|
|
|
243
292
|
It does not mean:
|
|
244
293
|
|
|
245
|
-
> "This code is
|
|
246
|
-
|
|
247
|
-
The current system produces normalized exposure categories across the
|
|
248
|
-
repository and rolls information from structural entities through files,
|
|
249
|
-
folders and repository-level views.
|
|
294
|
+
> "This code is more likely to contain a defect" — the per-file version of
|
|
295
|
+
> that claim was tested and did not hold.
|
|
250
296
|
|
|
251
297
|
The underlying signatures cover patterns involving areas such as:
|
|
252
298
|
|
|
@@ -263,11 +309,10 @@ The underlying signatures cover patterns involving areas such as:
|
|
|
263
309
|
- entropy
|
|
264
310
|
- other structural/security characteristics
|
|
265
311
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
That distinction drives the next phase.
|
|
312
|
+
See [`docs/vectors.md`](docs/vectors.md) for the per-vector rename table,
|
|
313
|
+
evidence, and appropriate/inappropriate uses, and
|
|
314
|
+
[temporal-crucible](https://github.com/squid-protocol/temporal-crucible)'s
|
|
315
|
+
`docs/HYPOTHESES.md` for the full validation ledger this section summarizes.
|
|
271
316
|
|
|
272
317
|
------------------------------------------------------------------------
|
|
273
318
|
|
|
@@ -413,6 +458,8 @@ guide](github-action-readme.md).
|
|
|
413
458
|
|---|---|
|
|
414
459
|
| [Documentation](https://squid-protocol.github.io/gitgalaxy/) | Architecture, claims and methodology |
|
|
415
460
|
| [The validation program](docs/validation.md) | The full proof narrative: thesis, benchmarks, validity ladder, next experiments |
|
|
461
|
+
| [Vector reference](docs/vectors.md) | The 13 per-file vectors: names, meaning, evidence, and the `risk_*` deprecation note |
|
|
462
|
+
| [Vector formula facts](docs/vector_formulas.md) | Mechanical per-calculator formula audit (inputs, arithmetic, constants) |
|
|
416
463
|
| [Language Crucible](https://github.com/squid-protocol/language-crucible) | Cross-language benchmark and golden corpus |
|
|
417
464
|
| [Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta) | 46-language planted control corpus and bias reports |
|
|
418
465
|
| [Raw Output](https://github.com/squid-protocol/gitgalaxy-raw-output) | Unedited scans of real repositories |
|
|
@@ -92,8 +92,8 @@ and test data aggressively, and §5 of the brief itemizes every exclusion by
|
|
|
92
92
|
extension and reason.
|
|
93
93
|
|
|
94
94
|
**cics-genapp** (IBM's CICS COBOL/DB2 sample) — 92.1% scanned: 44 COBOL
|
|
95
|
-
programs, 29 JCL jobs. The cumulative-
|
|
96
|
-
`base/src/lgupdb01.cbl` (
|
|
95
|
+
programs, 29 JCL jobs. The cumulative structural-surface hitlist leads with
|
|
96
|
+
`base/src/lgupdb01.cbl` (mutation surface ~100%, complexity load 92%), and the
|
|
97
97
|
heaviest paragraph in the repo is `UPDATE-POLICY-DB2-INFO` — the `SELECT FOR
|
|
98
98
|
UPDATE` row-locking logic, which is exactly where a maintainer of that program
|
|
99
99
|
would want to look first. The same brief also shows a limitation plainly: on a
|
|
@@ -113,7 +113,7 @@ this repo's own always-current self-scan brief is at
|
|
|
113
113
|
|---|---|
|
|
114
114
|
| Architecture | What is this repository made of? |
|
|
115
115
|
| Structural analysis | Where are the functions, classes, APIs, dependencies and control structures? |
|
|
116
|
-
| Risk exposure | Where
|
|
116
|
+
| Structural Surface Profile (formerly Risk exposure) | Where is a given structural/content pattern concentrated? |
|
|
117
117
|
| Refactoring | Which files are complex, high-churn or load-bearing? |
|
|
118
118
|
| Supply chain | What dependencies physically exist on disk? |
|
|
119
119
|
| AI context | What architecture and relationships should an agent know? |
|
|
@@ -166,8 +166,10 @@ named rather than hidden — `cog_raw` holds 76% of languages in band,
|
|
|
166
166
|
are documented, not defects.
|
|
167
167
|
The claim also survives expansion: when the corpus planted its first
|
|
168
168
|
security-lens probe — one identical hardcoded secret in every language —
|
|
169
|
-
`
|
|
170
|
-
|
|
169
|
+
`credential_material` (formerly `risk_secrets_risk`; the `risk_*` name remains
|
|
170
|
+
the DB column — see [`docs/vectors.md`](docs/vectors.md)) read a **uniform
|
|
171
|
+
score across all 44 languages the lens covers**, and the two exceptions (the
|
|
172
|
+
engine deliberately skips its security
|
|
171
173
|
lens on data formats) and the formula's measured length dependence were
|
|
172
174
|
ledgered and filed the same day
|
|
173
175
|
([#2978](https://github.com/squid-protocol/gitgalaxy/issues/2978),
|
|
@@ -205,21 +207,65 @@ unedited artifacts.
|
|
|
205
207
|
|
|
206
208
|
------------------------------------------------------------------------
|
|
207
209
|
|
|
208
|
-
#
|
|
209
|
-
|
|
210
|
-
GitGalaxy
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
210
|
+
# Structural Surface Profile: what GitGalaxy claims (formerly "Risk exposure")
|
|
211
|
+
|
|
212
|
+
GitGalaxy's 13 per-file vectors were originally named `risk_*` and described as
|
|
213
|
+
**risk-exposure measurements**. The question this section used to leave open —
|
|
214
|
+
"are these signatures empirically associated with meaningful classes of
|
|
215
|
+
software risk?" — has since been tested, not just asked. The
|
|
216
|
+
temporal-crucible validation program (epic
|
|
217
|
+
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982), ~3,550
|
|
218
|
+
scanned snapshots, two repositories, three label families, every test
|
|
219
|
+
pre-registered before the data was looked at) ran that experiment to
|
|
220
|
+
exhaustion, and the honest result drove a rename
|
|
221
|
+
([#2991](https://github.com/squid-protocol/gitgalaxy/issues/2991)): the
|
|
222
|
+
vectors are now called the **Structural Surface Profile**. `risk_*` remains
|
|
223
|
+
the DB column / JSON key name for compatibility (see
|
|
224
|
+
[`docs/vectors.md`](docs/vectors.md) for the full name table and the
|
|
225
|
+
deprecation note).
|
|
226
|
+
|
|
227
|
+
**What the record found, restated honestly:**
|
|
228
|
+
|
|
229
|
+
- **Per-file standing risk, falsified.** The founding hypothesis — that a
|
|
230
|
+
file's `risk_*` level, or its change after a fix, tracks defect
|
|
231
|
+
probability — did not hold. Median structural delta after a security fix
|
|
232
|
+
was +0.000 (equivalence-confirmed near-zero on a second, independent
|
|
233
|
+
repository, not just non-significant); summed structural exposure ranked
|
|
234
|
+
*last* of six features for predicting fix-touched files; a 26-signal
|
|
235
|
+
multivariate structural vector scored at chance (AUC 0.479) under a
|
|
236
|
+
temporal split, below a plain line count (0.531). The full ledger is in
|
|
237
|
+
temporal-crucible's `docs/HYPOTHESES.md` and is linked from
|
|
238
|
+
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982).
|
|
239
|
+
- **What the vectors actually validated for:** describing **activity and
|
|
240
|
+
content**, not defect probability. The fix-shaped composite reliably
|
|
241
|
+
tracks a security-fix → ordinary-fix → control → revert gradient; deltas
|
|
242
|
+
correspond to real code events (guard code added, threading introduced,
|
|
243
|
+
debt markers diluted). That's the x-ray this document now names
|
|
244
|
+
accurately — see [`docs/vectors.md`](docs/vectors.md) vector-by-vector.
|
|
245
|
+
- **System-level / history signal, restated as the actual predictive
|
|
246
|
+
finding.** Two features *did* survive validation: **recidivism** (the file
|
|
247
|
+
that had the last fix gets the next one — the single most replicated
|
|
248
|
+
result of the program, p<1e-4 on both repositories) and **change entropy /
|
|
249
|
+
Hassan HCM**, validated out-of-selection on fresh bug labels (AUC 0.868 vs
|
|
250
|
+
a line count's 0.830). Both are **history** metrics, not structural
|
|
251
|
+
content metrics — and both are currently zeroed in every scan
|
|
252
|
+
(`GITGALAXY_DISABLE_GIT_HISTORY`, tracked in
|
|
253
|
+
[temporal-crucible#29](https://github.com/squid-protocol/temporal-crucible/issues/29)).
|
|
254
|
+
This is the seed of a separate, honestly-named **predictive layer** — the
|
|
255
|
+
`hist_stability`/`hist_churn` vectors are named to mark that status
|
|
256
|
+
explicitly — gated on shipping history-enabled mode and then clearing
|
|
257
|
+
[#2987](https://github.com/squid-protocol/gitgalaxy/issues/2987)'s
|
|
258
|
+
defect-lift promotion contract.
|
|
259
|
+
|
|
260
|
+
A high Structural Surface Profile reading means:
|
|
261
|
+
|
|
262
|
+
> **This location has more of a given structural/content pattern present,
|
|
263
|
+
> relative to the rest of the repository.**
|
|
215
264
|
|
|
216
265
|
It does not mean:
|
|
217
266
|
|
|
218
|
-
> "This code is
|
|
219
|
-
|
|
220
|
-
The current system produces normalized exposure categories across the
|
|
221
|
-
repository and rolls information from structural entities through files,
|
|
222
|
-
folders and repository-level views.
|
|
267
|
+
> "This code is more likely to contain a defect" — the per-file version of
|
|
268
|
+
> that claim was tested and did not hold.
|
|
223
269
|
|
|
224
270
|
The underlying signatures cover patterns involving areas such as:
|
|
225
271
|
|
|
@@ -236,11 +282,10 @@ The underlying signatures cover patterns involving areas such as:
|
|
|
236
282
|
- entropy
|
|
237
283
|
- other structural/security characteristics
|
|
238
284
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
That distinction drives the next phase.
|
|
285
|
+
See [`docs/vectors.md`](docs/vectors.md) for the per-vector rename table,
|
|
286
|
+
evidence, and appropriate/inappropriate uses, and
|
|
287
|
+
[temporal-crucible](https://github.com/squid-protocol/temporal-crucible)'s
|
|
288
|
+
`docs/HYPOTHESES.md` for the full validation ledger this section summarizes.
|
|
244
289
|
|
|
245
290
|
------------------------------------------------------------------------
|
|
246
291
|
|
|
@@ -386,6 +431,8 @@ guide](github-action-readme.md).
|
|
|
386
431
|
|---|---|
|
|
387
432
|
| [Documentation](https://squid-protocol.github.io/gitgalaxy/) | Architecture, claims and methodology |
|
|
388
433
|
| [The validation program](docs/validation.md) | The full proof narrative: thesis, benchmarks, validity ladder, next experiments |
|
|
434
|
+
| [Vector reference](docs/vectors.md) | The 13 per-file vectors: names, meaning, evidence, and the `risk_*` deprecation note |
|
|
435
|
+
| [Vector formula facts](docs/vector_formulas.md) | Mechanical per-calculator formula audit (inputs, arithmetic, constants) |
|
|
389
436
|
| [Language Crucible](https://github.com/squid-protocol/language-crucible) | Cross-language benchmark and golden corpus |
|
|
390
437
|
| [Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta) | 46-language planted control corpus and bias reports |
|
|
391
438
|
| [Raw Output](https://github.com/squid-protocol/gitgalaxy-raw-output) | Unedited scans of real repositories |
|
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
Welcome to **GitGalaxy Metrics**. If the `core/` directory is the extraction layer (identifying raw structural signals), this directory is the analytical brain.
|
|
4
4
|
|
|
5
|
-
It is responsible for consuming raw lexical data, merging it with temporal Git telemetry, and translating it into actionable, multi-dimensional risk vectors. This is where raw data becomes architectural intelligence.
|
|
5
|
+
It is responsible for consuming raw lexical data, merging it with temporal Git telemetry, and translating it into actionable, multi-dimensional Structural Surface Profile vectors (formerly called "risk vectors" — see [`docs/vectors.md`](../../docs/vectors.md) for the rename record and evidence). This is where raw data becomes architectural intelligence.
|
|
6
6
|
|
|
7
7
|
## The Why: False-Positive Eradication & Alert Fatigue
|
|
8
8
|
|
|
9
9
|
Traditional Static Application Security Testing (SAST) tools suffer from a fatal flaw: they flag raw vulnerabilities in a vacuum. A raw execution command inside a deprecated, unimported sandbox script generates the same critical alert as one sitting in your primary routing controller. This lack of context generates massive false-positive fatigue, eventually causing engineering teams to ignore the scanner entirely.
|
|
10
10
|
|
|
11
|
-
The GitGalaxy Metrics engine is engineered to solve this through **Contextual Synthesis**. It operates on a fundamental rule: **
|
|
11
|
+
The GitGalaxy Metrics engine is engineered to solve this through **Contextual Synthesis**. It operates on a fundamental rule: **Structural Surface Profile vectors are calculated metrics derived from structural hits; they are not the hits themselves.** The engine applies mathematical dampeners (like testing umbrellas, network isolation, and documentation shields) to raw signals. For example, a high "mutation surface" (formerly "state flux") signal in a file with 100% test coverage and zero downstream dependents has its ultimate surface reading mathematically dampened, reflecting true ecosystem reality rather than isolated syntax panic. These vectors describe activity and content, not defect probability — see [`docs/vectors.md`](../../docs/vectors.md) for the validation record behind that distinction (gitgalaxy#2991, gitgalaxy#2982).
|
|
12
12
|
|
|
13
13
|
---
|
|
14
14
|
|
|
@@ -17,7 +17,7 @@ The GitGalaxy Metrics engine is engineered to solve this through **Contextual Sy
|
|
|
17
17
|
All modules in this directory are engineered to operate strictly in $O(1)$ or $O(N)$ linear time complexity. Because expensive disk I/O and regex parsing have already concluded in the `core/` phase, these mathematical operations execute across tens of thousands of files in milliseconds.
|
|
18
18
|
|
|
19
19
|
### 1. `signal_processor.py` (The Mathematical Core)
|
|
20
|
-
The primary heuristic synthesis engine. It translates raw structural hits into an 18-point
|
|
20
|
+
The primary heuristic synthesis engine. It translates raw structural hits into an 18-point Structural Surface Profile evaluating dimensions like Debt Markers (formerly Technical Debt), Complexity Load (formerly Cognitive Load), and Mutation Surface (formerly State Flux). The underlying `risk_*` DB columns and JSON keys are unchanged; see [`docs/vectors.md`](../../docs/vectors.md).
|
|
21
21
|
* **Dual-Axis Anomaly Detection:** Evaluates threats using both global repository baselines and local language models. It leverages **Architectural Drift (Z-Score)** to mathematically flag files that blend in globally but violate their local ecosystem's structural norms.
|
|
22
22
|
* **Autonomous Execution Vectors & AI Topology:** Analyzes the density of LLM orchestration tools, vector databases, and execution loops to classify the repository's AI footprint. It explicitly flags vulnerabilities where raw **Prompt Injection Surfaces** flow directly into OS-level execution.
|
|
23
23
|
|
|
@@ -64,6 +64,21 @@ class SignalProcessor:
|
|
|
64
64
|
# The 18-Point Risk Exposure Schema
|
|
65
65
|
RISK_SCHEMA = config.RECORDING_SCHEMAS.get("RISK_SCHEMA", [])
|
|
66
66
|
|
|
67
|
+
# gitgalaxy#2991: canonical new-name -> legacy risk_* mapping (display-layer
|
|
68
|
+
# only; RISK_SCHEMA and every DB column/JSON key above are unchanged). Not
|
|
69
|
+
# consumed by this module's own output today -- signal_processor computes
|
|
70
|
+
# the risk_vector, it doesn't render it -- but bound here alongside
|
|
71
|
+
# RISK_SCHEMA so it travels with the schema wherever this class is
|
|
72
|
+
# imported from, rather than each renderer re-deriving it independently.
|
|
73
|
+
VECTOR_NAMES = config.RECORDING_SCHEMAS.get("VECTOR_NAMES", {})
|
|
74
|
+
|
|
75
|
+
# gitgalaxy#2994: Tier-1 declarative family map (analysis_lens.py section
|
|
76
|
+
# 7b), bound here alongside RISK_SCHEMA/SIGNAL_SCHEMA so it travels with
|
|
77
|
+
# the schema wherever this class is imported from. Not part of
|
|
78
|
+
# RECORDING_SCHEMAS -- it's a standalone top-level constant, same pattern
|
|
79
|
+
# as ENGINE_CONSTANTS/APERTURE_CONFIG below.
|
|
80
|
+
SURFACE_FAMILIES = getattr(config, "SURFACE_FAMILIES", {})
|
|
81
|
+
|
|
67
82
|
def __init__(
|
|
68
83
|
self,
|
|
69
84
|
aperture_config: Optional[dict[str, Any]] = None,
|
|
@@ -865,6 +880,42 @@ class SignalProcessor:
|
|
|
865
880
|
if mp_map:
|
|
866
881
|
telemetry_payload["multipliers"] = mp_map
|
|
867
882
|
|
|
883
|
+
# ==================================================================
|
|
884
|
+
# TIER 1/3 -- SURFACE FAMILIES & RELATIONS (gitgalaxy#2994)
|
|
885
|
+
# ==================================================================
|
|
886
|
+
# Summed from raw_signals, NOT the mitigation-suppressed
|
|
887
|
+
# exposure_vector assembled above (:784-788 in this method) -- these
|
|
888
|
+
# are "raw truth by construction": a file whose legacy
|
|
889
|
+
# risk_safety_score got zeroed by an inline `galaxyscope:ignore`
|
|
890
|
+
# can still show a nonzero `guards` family total. See
|
|
891
|
+
# analysis_lens.SURFACE_FAMILIES / SURFACE_FAMILY_EXEMPT and the
|
|
892
|
+
# suppression-interplay test in test_signal_processor.py.
|
|
893
|
+
#
|
|
894
|
+
# Additive only: risk_vector/hit_vector/file_impact above are
|
|
895
|
+
# unchanged, and this key is new -- it does not touch the
|
|
896
|
+
# golden-mastered audit_recorder output (that reads risk_vector/
|
|
897
|
+
# hit_vector/file_impact, not telemetry["surface_families"]).
|
|
898
|
+
surface_families = {
|
|
899
|
+
family: sum(raw_signals.get(member, 0) for member in members)
|
|
900
|
+
for family, members in self.SURFACE_FAMILIES.items()
|
|
901
|
+
}
|
|
902
|
+
guards_total = surface_families.get("guards", 0)
|
|
903
|
+
danger_total = surface_families.get("danger", 0)
|
|
904
|
+
memory_total = surface_families.get("memory", 0)
|
|
905
|
+
cleanup_total = surface_families.get("cleanup", 0)
|
|
906
|
+
surface_relations = {
|
|
907
|
+
# Mechanism story: defensive constructs per unit of danger
|
|
908
|
+
# surface, +1 in the denominator so a danger-free file (the
|
|
909
|
+
# common case) doesn't divide by zero or spike to infinity.
|
|
910
|
+
"guard_balance_ratio": round(guards_total / (danger_total + 1), 4),
|
|
911
|
+
# Mechanism story: cleanup (free/close/dispose) per unit of
|
|
912
|
+
# manual allocation surface -- the X-H1 feature from the
|
|
913
|
+
# temporal-crucible validation record.
|
|
914
|
+
"alloc_cleanup_pairing": round(cleanup_total / (memory_total + 1), 4),
|
|
915
|
+
}
|
|
916
|
+
telemetry_payload["surface_families"] = surface_families
|
|
917
|
+
telemetry_payload["surface_relations"] = surface_relations
|
|
918
|
+
|
|
868
919
|
return {
|
|
869
920
|
"risk_vector": risk_vector_ordered,
|
|
870
921
|
"hit_vector": hit_vector,
|
|
@@ -896,6 +947,16 @@ class SignalProcessor:
|
|
|
896
947
|
# Execute Pass 2: Temporal Normalization across the Universe
|
|
897
948
|
self._normalize_temporal_metrics(parsed_files)
|
|
898
949
|
|
|
950
|
+
# gitgalaxy#2994 Tier 2: snapshot percentiles MUST run AFTER temporal
|
|
951
|
+
# normalization above -- `_normalize_temporal_metrics` rewrites
|
|
952
|
+
# `risk_vector[churn_idx]` in place (:1275 in that method), and the
|
|
953
|
+
# percentile pass ranks the legacy-vector series off `risk_vector`
|
|
954
|
+
# directly. Reordering this ahead of normalization would rank every
|
|
955
|
+
# file's churn against its pre-normalization (raw, unnormalized)
|
|
956
|
+
# value instead -- see the churn-ordering regression test in
|
|
957
|
+
# test_signal_processor.py.
|
|
958
|
+
self._compute_snapshot_percentiles(parsed_files)
|
|
959
|
+
|
|
899
960
|
total_files = len(parsed_files) + len(unparsable_files)
|
|
900
961
|
if total_files == 0:
|
|
901
962
|
return {}
|
|
@@ -1266,6 +1327,101 @@ class SignalProcessor:
|
|
|
1266
1327
|
if "risk_vector" in file_data and len(file_data["risk_vector"]) > idx:
|
|
1267
1328
|
file_data["risk_vector"][idx] = round(final_churn, 2)
|
|
1268
1329
|
|
|
1330
|
+
def _compute_snapshot_percentiles(self, parsed_files: list[dict[str, Any]]) -> None:
|
|
1331
|
+
"""[TIER 2, gitgalaxy#2994] Snapshot percentiles -- the honest 0-100.
|
|
1332
|
+
|
|
1333
|
+
Ranks each file's 22 Tier-1 surface-family sums (telemetry
|
|
1334
|
+
["surface_families"], written by calculate_risk_vector) and its 13
|
|
1335
|
+
RISK_SCHEMA legacy-vector values (risk_vector, POST-churn-
|
|
1336
|
+
normalization -- see the call site in summarize_galaxy_metrics, which
|
|
1337
|
+
invokes this method IMMEDIATELY AFTER _normalize_temporal_metrics so
|
|
1338
|
+
churn is already rewritten before ranking) against every other file
|
|
1339
|
+
in THIS scan/snapshot. "Percentile 87" means literally "87th
|
|
1340
|
+
percentile of this surface in this repo" -- true by construction,
|
|
1341
|
+
unlike the legacy sigmoid scores this tier supersedes for display.
|
|
1342
|
+
Legacy risk_vector values themselves are read-only here, never
|
|
1343
|
+
modified.
|
|
1344
|
+
|
|
1345
|
+
Hazen plotting-position formula: pct = (avg_rank - 0.5) / N * 100,
|
|
1346
|
+
rounded to 2dp. Ties share the MEAN of the ranks they would occupy
|
|
1347
|
+
(standard "average rank" tie-breaking), so two files with identical
|
|
1348
|
+
values get identical percentiles.
|
|
1349
|
+
|
|
1350
|
+
An all-zero series (every file measures 0 on that surface) reads as
|
|
1351
|
+
0.0 for EVERY file -- not the 50.0 an average-rank computation would
|
|
1352
|
+
otherwise give a tied field of zeroes. Naively ranking would
|
|
1353
|
+
misrepresent "nobody has this signal in this repo" as "the median
|
|
1354
|
+
file has it," which is exactly backwards for an absent surface.
|
|
1355
|
+
|
|
1356
|
+
A single-file snapshot (N=1) reads 50.0 for a series it actually
|
|
1357
|
+
has (nothing to rank against => true middle), but 0.0 for a series
|
|
1358
|
+
it measures zero on -- the all-zero rule takes precedence at every N.
|
|
1359
|
+
|
|
1360
|
+
Writes `telemetry["surface_percentiles"] = {"fam": {...}, "vec":
|
|
1361
|
+
{...}}` on every parsed file, in place -- mirroring
|
|
1362
|
+
`_normalize_temporal_metrics`'s own in-place style. The return value
|
|
1363
|
+
of `summarize_galaxy_metrics` (the golden-mastered audit JSON) is
|
|
1364
|
+
untouched; this only ever writes per-file telemetry.
|
|
1365
|
+
"""
|
|
1366
|
+
n = len(parsed_files)
|
|
1367
|
+
if n == 0:
|
|
1368
|
+
return
|
|
1369
|
+
|
|
1370
|
+
fam_names = list(self.SURFACE_FAMILIES.keys())
|
|
1371
|
+
vec_names = list(self.RISK_SCHEMA)
|
|
1372
|
+
|
|
1373
|
+
def _percentiles_for(values: list[float]) -> list[float]:
|
|
1374
|
+
count = len(values)
|
|
1375
|
+
if count == 0:
|
|
1376
|
+
return []
|
|
1377
|
+
if all(v == 0 for v in values):
|
|
1378
|
+
# Absent signal must not read as median 50 (see docstring).
|
|
1379
|
+
# This check deliberately PRECEDES the N=1 case: a
|
|
1380
|
+
# single-file snapshot with zero of a surface still has
|
|
1381
|
+
# NONE of it -- 0.0, never 50.0.
|
|
1382
|
+
return [0.0] * count
|
|
1383
|
+
if count == 1:
|
|
1384
|
+
# One file, nonzero value: nothing to rank against --
|
|
1385
|
+
# "true middle" is the only honest value.
|
|
1386
|
+
return [50.0]
|
|
1387
|
+
|
|
1388
|
+
# Average-rank (Hazen) ranking: sort ascending, then give every
|
|
1389
|
+
# value in a tied run the MEAN of the 1-based ranks it spans.
|
|
1390
|
+
order = sorted(range(count), key=lambda i: values[i])
|
|
1391
|
+
ranks = [0.0] * count
|
|
1392
|
+
i = 0
|
|
1393
|
+
while i < count:
|
|
1394
|
+
j = i
|
|
1395
|
+
while j + 1 < count and values[order[j + 1]] == values[order[i]]:
|
|
1396
|
+
j += 1
|
|
1397
|
+
avg_rank = (i + 1 + j + 1) / 2.0 # 1-based rank span [i+1, j+1]
|
|
1398
|
+
for k in range(i, j + 1):
|
|
1399
|
+
ranks[order[k]] = avg_rank
|
|
1400
|
+
i = j + 1
|
|
1401
|
+
|
|
1402
|
+
return [round((r - 0.5) / count * 100.0, 2) for r in ranks]
|
|
1403
|
+
|
|
1404
|
+
fam_percentiles: dict[str, list[float]] = {}
|
|
1405
|
+
for fam in fam_names:
|
|
1406
|
+
values = [float(f.get("telemetry", {}).get("surface_families", {}).get(fam, 0)) for f in parsed_files]
|
|
1407
|
+
fam_percentiles[fam] = _percentiles_for(values)
|
|
1408
|
+
|
|
1409
|
+
vec_percentiles: dict[str, list[float]] = {}
|
|
1410
|
+
for slug in vec_names:
|
|
1411
|
+
idx = self.RISK_SCHEMA.index(slug)
|
|
1412
|
+
values = [
|
|
1413
|
+
float(f["risk_vector"][idx]) if "risk_vector" in f and len(f["risk_vector"]) > idx else 0.0
|
|
1414
|
+
for f in parsed_files
|
|
1415
|
+
]
|
|
1416
|
+
vec_percentiles[slug] = _percentiles_for(values)
|
|
1417
|
+
|
|
1418
|
+
for i, file_data in enumerate(parsed_files):
|
|
1419
|
+
telemetry = file_data.setdefault("telemetry", {})
|
|
1420
|
+
telemetry["surface_percentiles"] = {
|
|
1421
|
+
"fam": {fam: fam_percentiles[fam][i] for fam in fam_names},
|
|
1422
|
+
"vec": {slug: vec_percentiles[slug][i] for slug in vec_names},
|
|
1423
|
+
}
|
|
1424
|
+
|
|
1269
1425
|
# ==========================================================================
|
|
1270
1426
|
# FORENSIC EQUATIONS (The Structural Models)
|
|
1271
1427
|
# ==========================================================================
|
|
@@ -53,6 +53,16 @@ class AuditRecorder:
|
|
|
53
53
|
self.RISK_SCHEMA = schemas.get("RISK_SCHEMA", [])
|
|
54
54
|
# Note: The pipeline calls it SIGNAL_SCHEMA, but the Auditor references it as HIT_SCHEMA
|
|
55
55
|
self.HIT_SCHEMA = schemas.get("SIGNAL_SCHEMA", [])
|
|
56
|
+
# gitgalaxy#2991: canonical new-name -> legacy risk_* mapping, bound
|
|
57
|
+
# here for parity with the other 4 definition sites. Deliberately NOT
|
|
58
|
+
# used to change any EXPOSURE_LABELS/FRIENDLY_MAP-derived string below
|
|
59
|
+
# -- this recorder's JSON ("Average Risk Exposures", "Vulnerability &
|
|
60
|
+
# Risk Exposures", ...) is exactly what tests/golden_master_audit.json
|
|
61
|
+
# and tests/golden_master_zero_dep_audit.json bless byte-for-byte
|
|
62
|
+
# (see tests/test_golden_crucible.py); changing these label strings
|
|
63
|
+
# would fail the golden-crucible regression test without a deliberate,
|
|
64
|
+
# separate golden-master regen this PR does not perform.
|
|
65
|
+
self.VECTOR_NAMES = schemas.get("VECTOR_NAMES", {})
|
|
56
66
|
|
|
57
67
|
# PERFORMANCE OPTIMIZATION: Pre-cache all labels to avoid regex overhead on the hot path
|
|
58
68
|
self._label_cache = {}
|
|
@@ -75,6 +75,14 @@ class GPURecorder:
|
|
|
75
75
|
self.RISK_SCHEMA = schemas.get("RISK_SCHEMA", [])
|
|
76
76
|
self.HIT_SCHEMA = schemas.get("SIGNAL_SCHEMA", [])
|
|
77
77
|
self.FUNCTION_SCHEMA = schemas.get("SAT_SCHEMA", [])
|
|
78
|
+
# gitgalaxy#2991: canonical new-name -> legacy risk_* mapping, bound
|
|
79
|
+
# here for parity with the other 4 definition sites. Deliberately NOT
|
|
80
|
+
# used to alter "risk_vector_x1000": self.RISK_SCHEMA below -- the
|
|
81
|
+
# site's WebGPU visualizer (site/js/core/metavisualizer.html) binds
|
|
82
|
+
# its `slug`/`keys` data lookups positionally against these exact
|
|
83
|
+
# bare names; only that file's human-readable `label` strings get the
|
|
84
|
+
# new vocabulary, per #2991's "no functional JS changes" constraint.
|
|
85
|
+
self.VECTOR_NAMES = schemas.get("VECTOR_NAMES", {})
|
|
78
86
|
|
|
79
87
|
def record_mission(
|
|
80
88
|
self,
|