e509def0b2
- Introduced new crates for digital brushes, dry media brushes, ink brushes, and paint brushes, each containing various presets. - Updated the menus to include "Paste Special" and "Paste as New Layer" options. - Enhanced the feature scorecard tests to validate selection texture encoding. - Added a regression gate workflow for automated testing on push and pull requests. - Implemented Git hooks for pre-commit checks to ensure code formatting and run tests before commits. - Created a settings file for local configurations.
50 lines
1.8 KiB
Python
Executable File
50 lines
1.8 KiB
Python
Executable File
#!/usr/bin/env python3
|
||
import sys
|
||
import json
|
||
import os
|
||
|
||
def load_manifest():
|
||
with open("project_manifest.json", "r") as f:
|
||
return json.load(f)
|
||
|
||
def main():
|
||
changed_files = sys.argv[1].split('\n')
|
||
manifest = load_manifest()
|
||
|
||
critical_targets = set()
|
||
high_risk_change = False
|
||
|
||
for changed_file in changed_files:
|
||
if not changed_file.strip(): continue
|
||
|
||
files = manifest.get("files", []) if isinstance(manifest, dict) else manifest
|
||
for entry in files:
|
||
if entry.get("file_path", "") in changed_file:
|
||
print(f"⚠️ [UYARI] Değişiklik yapılan modül: {entry['file_path']}")
|
||
print(f" Açıklama: {entry['description']}")
|
||
print(f" Patlama Yarıçapı (Blast Radius): {entry['blast_radius']}")
|
||
|
||
if entry["blast_radius"] == "HIGH":
|
||
high_risk_change = True
|
||
|
||
for dep in entry.get("semantic_dependencies", []):
|
||
critical_targets.add((dep["target_file"], dep["impact_description"]))
|
||
|
||
if critical_targets:
|
||
os.makedirs("logs", exist_ok=True)
|
||
print("\n🚨 BU DEĞİŞİKLİKTEN ETKİLENEBİLECEK ÜCRA KÖŞELER VE ÖZELLİKLER:")
|
||
with open("logs/semantic_impact_report.txt", "w") as log:
|
||
log.write("=== SEMANTIK ETKI VE RISK RAPORU ===\n\n")
|
||
for target, reason in critical_targets:
|
||
report_line = f"- ETKİLENEN MODÜL: {target}\n RİSK NEDENİ: {reason}\n"
|
||
print(report_line)
|
||
log.write(report_line + "\n")
|
||
|
||
if high_risk_change:
|
||
print("High-risk change detected; the mandatory pre-commit gate already ran the deterministic workspace tests.")
|
||
|
||
sys.exit(0)
|
||
|
||
if __name__ == "__main__":
|
||
main()
|