SecInterp - Maintenance & Release Log

This document serves as the central record for project history, release procedures, and past refactoring analysis.


[v2.10.0 Plan - Phase 1] - 2026-02-01

  • Focus: Quality Score > 60, QGIS 4.x Prep (PyQt5 cleanup), ExportService Refactor.

  • Goals: Eliminate technical debt in resources.py and reduce cyclomatic complexity in 3D exporters.

[Phase Closure v2.9.0] - ARCHITECTURAL CONSOLIDATION

  • Date: 2026-02-01

  • Focus: Core Domain Migration, Drillhole Service Decomposition, v2.9.0 Release Stabilization.

  • Outcome: 199 Tests Passing (100%). Quality Score: 54.3/100 (+9 pts). Official release published.

  • Reference: Phase Closure Document | Technical Analysis


[Phase Closure v2.8.0] - DEBT REDUCTION & UI IMPROVEMENTS

  • Date: 2026-01-25

  • Focus: Core Decoupling, Async Safety, Legend Visibility.

  • Outcome: 359 Tests Passing, Core-QGIS Decoupling finalized with WKT/DTO pattern.

  • Reference: Phase Closure Document


[v2.8.0 Plan - Phase 2] - 2026-01-24

[v2.7.0 Plan - Phase 1] - 2026-01-15

  • Mock Infrastructure Overhaul: Implemented ModuleProxy and MockSignal to stabilize the QGIS test environment. Resolved attribute errors and reference loss during mock resets. Added indexFromName to MockQgsFields for better API parity.

  • Config Fix: Completed missing reset_defaults() logic in ConfigService.

  • Workflow Update: Simplified inicia-sesion by removing make deploy and standardizing the test execution command.

🚀 Release Process

[Unreleased]

Process

Follow these steps to prepare and release a new version of SecInterp.

1. Preparation

  • Update Metadata: Increment version in metadata.txt.

  • Sync AI Context: Update AI_CONTEXT.md and project_context.json.

  • Update Changelog: Add the new version to the top of the Project History section below.

  • Update User Guide: Ensure screenshots and feature descriptions in docs/USER_GUIDE.md are current.

2. Packaging (Clean Build)

To ensure no development files (like tests or .git) are included in the distribution zip, use the git archive method:

# Check exports-ignore in .gitattributes first
# Then run the package command
make package VERSION=main
mv sec_interp.zip sec_interp_vX.Y.Z.zip

3. Distribution & QGIS Repository

  • Tagging: git tag vX.Y.Z -m "Release description"

  • GitHub: Create a new Release and attach the ZIP.

  • QGIS Repo: Upload the ZIP to plugins.qgis.org.

    • ⚠️ CRITICAL: The ZIP MUST contain a LICENSE file and NO __pycache__ folders.

    • The repository will reject any package with .pyc files for security reasons.

    • Verified ZIP structure with unzip -t sec_interp.zip.


📜 Project History

[2.7.0] - 2026-01-18

  • Operational Excellence & Documentation Overhaul:

    • Sphinx Integration: Automated documentation generation with conf.py (autodoc/napoleon) and build_docs.sh.

    • Link Recovery: Fixed 50+ broken links in README.md and aligned terminology with the new Sidebar-driven UI.

    • Architecture Documentation: Added detailed records for the 3-Level Validation Architecture and DialogInterpretationManager.

    • i18n Cleanup: Wrapped all user-facing strings in tr() and audited English/Spanish source.

  • Refactorización de Interfaz (Fase 2):

    • Introducción de MessageManager, CacheHandler, y SettingsManager para fragmentar el diálogo principal (Reducción de ~700 líneas de código boilerplate).

    • Bug Fix: Restaurados métodos proxy _load_interpretations y _load_user_settings para retrocompatibilidad.

  • Testing Infrastructure (Dockerization):

    • Implemented Dockerfile optimized for QGIS headless testing.

    • Added make docker-build and make docker-test for reproducible CI/CD environments.

  • Data Integrity & Core:

    • 3-Level Validation: Hierarchical system (Type/Logic/Domain) ensuring data safety across all layers.

    • Centralized Logging: Refactored logger_config.py for hierarchical propagation.

  • Enhanced 3D Export:

    • Implemented high-fidelity 3D output for drillhole traces and geological intervals (PolygonZ/LineStringZ).

[2.7.0] - (Planning) 2026-01-09

  • Infrastructure Planning:

    • Native Validation: Transition to dataclasses based models (replacing Pydantic proposal).

    • External Sphinx: Strategy for out-of-repo documentation build and repository HTML cleanup.

    • Docker Consolidation: Planned make docker-test integration.

  • Enhanced 3D Export:

    • Design for Original and Projected 3D exports for Drillhole Traces and Intervals.

    • Planned UI integration in Settings/Advanced.

[2.6.1] - 2026-01-09

  • Stabilization:

    • Test Suite: Resolved major mock pollution issues and finalized 312 stable tests.

    • Mock Infrastructure: Implemented explicit MockQListWidget for stable GUI inheritance.

  • Internationalization:

    • Translated Measure tool results and default interpretation naming.

[2.6.0] - 2026-01-05

  • Quality Assurance:

    • Native Integration Tests: Implementation of BaseIntegrationTest for headless QGIS execution.

    • Workflow Validation: New automated tests for Interpretation, Measurement, and 3D Export using real QGIS API.

  • Docker Integration:

    • Full containerization of the test environment for CI/CD readiness.

    • Automated dependency management via uv within Docker.

    • Optimized build workflows with .dockerignore and permission handling.

  • Performance:

    • Benchmarks Suite: Implementation of performance tests for Geometry and Exports using unittest.

    • SLA Verification: Established baseline metrics for critical operations (Shapefile Write < 5s, Projection < 0.1s).

  • Architecture & Refactoring (2026-01-08):

    • Async Evolution: Refactored threading model to use QgsTask for background geology generation, improving stability and preventing UI freezes.

    • Exporter Modularization: Deep refactoring of all vector exporters (shp, drillhole, profile, interpretation_3d) to reduce complexity (mccabe < 7) and improve modularity.

    • Quality & Debt Cleanup: Significant improvement in type hint coverage (Params: 62.1% -> 76.4%) and documentation style across core services, tools, and UI pages.

    • Workflow Security: Implemented conventional-pre-commit and restored COMMIT_GUIDELINES.md to guarantee high-quality, parsable commits.

    • Test Stability: Enhanced mocking infrastructure for asynchronous tasks and QGIS ecosystem components.

[2.5.0] - 2026-01-03

  • Major Features:

    • 3D Export: Interpretation export as real 3D Shapefiles (PolygonZ).

    • Settings Hub: New sidebar page for plugin configuration management.

    • Documentation: User Guide fully integrated with screenshots.

  • Critical Fixes (Hotfixes):

    • Attribute Inheritance: Resolved regression in drillhole processing (tuple handling) and GeologySegment polymorphism.

    • Serialization: Fixed QVariant JSON serialization error.

  • Workflow Optimization:

    • Context Awareness: Enhanced .agent/workflows/ (start/close) to mandate context analysis and logging, ensuring continuity.

  • Data Persistence: Overhauled DialogSettingsManager for robust restoration with multi-scope support (SecInterp/SecInterpUI) and layer name fallback.

  • Stability & QA:

    • Enabled project-wide Ruff rules (F401, F841, I001).

    • Implemented proactive auto-save on Preview and Dialog Accept.

    • Resolved critical AttributeError in validation logic and Geology Rendering.

    • Forced disk synchronization for configs (sync()).

  • Test Infrastructure: Enhanced MockQgsProject and MockQWidget to support persistence and modern Qt patterns.

[2.2.0] - 2025-12-22

  • Documentation Globalization: 100% of documentation (including Architecture) translated to English.

  • Build Optimization: Slimmed final ZIP package and removed redundant source code views from help.

  • Architectural Evolution: Moved main SecInterp class to sec_interp_plugin.py.

  • Validation Refactor: Modularized core/validation/ package.

  • GUI Decoupling: Fragmented SecInterpDialog into specialized managers.

  • LOD Optimization: Implemented adaptive Level of Detail for previews.

[2.1.0] - 2025-12-17

  • Feature: Snap-Enabled Measurement Tool.

  • Fix: Resolved Snapping configuration attribute errors.

[2.0.0] - 2025-12-14

  • Feature: Full Drillhole Integration (Projection & Intervals).

  • Export: Added drillhole trace and interval Shapefile exporters.

[1.1.0] - 2025-12-12

  • Performance: Asynchronous parallel processing for geology.

  • Feature: Adaptive Sampling and Measurement Tool.


📁 Historical Refactoring Notes

For detailed information on past major refactoring sessions, refer to the following summaries:

Refactoring 2025-12-21: Significant reduction of main_dialog.py size (from 1k to ~300 lines) by moving logic to managers and core services. See docs/docsec/archive/ for original walkthroughs if deep historical context is needed.

[Phase Closure v3.0.0] - RELEASE & INTERNATIONALIZATION

  • Date: 2026-02-14

  • Focus: Internationalization (i18n), Modular Services, Release Optimization.

  • Outcome: 8 Languages Supported, Package Size Reduced 99.6% (218KB), 361 Tests Passing.

  • Key Infra: .qgisignore, GitHub Actions Security Scan (100/100).

  • Reference: Phase Closure Document

[Phase Closure v2.7.0] - REFACTOR & STABILIZATION

  • Date: 2026-01-18

  • Focus: Validation Architecture, Docker Infrastructure, Sphinx Docs.

  • Outcome: 361 Tests Passing, 100% Mock Stability.

  • Reference: Phase Closure Document