Spaces:
Sleeping
Sleeping
Commit History
-
Code quality: fix all ruff warnings, add CI/CD, improve test coverage
ClaudeUnverified signatureLinting (214 -> 0 ruff warnings): - Migrate str+Enum to StrEnum (UP042) across all domain enums - Use datetime.UTC alias instead of timezone.utc (UP017) - Sort and organize all imports (I001) - Fix all line-too-long issues (E501) in src/ and tests/ - Rename ambiguous 'l' loop variables to 'ln'/'lv' (E741) - Collapse nested if statements (SIM102) - Remove unused imports (F401) - Move lru_cache import to top of file (E402) - Remove TCH rules from ruff config (false positives with Pydantic) CI/CD: - Add .github/workflows/ci.yml with lint + test + coverage gates Test coverage improvements (497 -> 508 tests): - Add tests for hub_runtime, local_runtime, api_runtime execute/NotImplementedError - Add tests for rescale_point, rotate_point_90, rotate_polygon_90 transforms - Cover all previously uncovered runtime code paths https://claude.ai/code/session_01AdT5qvpceqqRs1AGJNgD1Ybbbfba8 -
Repo audit: fix security issues, bugs, and prepare HF Space deployment
ClaudeUnverified signatureSecurity fixes: - Fix CORS wildcard + credentials vulnerability (CSRF risk) - Add path traversal protection in FileStore (sanitize job_id/provider_id) - Add upload size limit (50MB) to prevent DoS - Chain exception properly in JSON parse error (raise from None) Bug fixes: - Fix job final status logic: no exports now correctly returns FAILED - Fix misleading [-0] index in hyphenation enricher (same as [0]) - Remove unused field_validator import in canonical_document - Cache Settings singleton with lru_cache (was re-reading .env per request) HF Space deployment: - Add YAML frontmatter to README.md for HF Spaces auto-configuration - Add non-root user in Dockerfile (required by HF Spaces) - Create /data directory for persistent storage All 497 tests pass. Coverage: 96%. https://claude.ai/code/session_01AdT5qvpceqqRs1AGJNgD1Ybb6107f
-
Sprint 4: validation layer and document policy
ClaudeUnverified signatureFour validators and two policy modules that control the pipeline: Validators: - structural_validator: ID uniqueness, reading_order ref validity, bbox containment (word ⊂ line ⊂ region ⊂ page) with configurable tolerance - readiness_validator: computes AltoReadiness / PageXmlReadiness per page and DocumentReadiness at document level. ALTO requires word text+geometry; PAGE XML is more lenient (regions+lines sufficient) - export_eligibility_validator: produces ExportEligibility (alto/page/viewer each independently full/partial/none). Strict policy downgrades partial→none - schema_validator: wraps Pydantic validation as explicit service, returns (document | None, ValidationReport) instead of raising exceptions Policies: - document_policy: centralised business rules (3 modes: strict/standard/ permissive). Controls what the system may infer, repair, or export. Text invention and bbox invention always forbidden - export_policy: go/no-go decisions per format, consuming eligibil…e2ec8a2 -
Sprint 1: complete domain models — canonical document, geometry, provenance, readiness
ClaudeUnverified signatureDefine all Pydantic v2 domain models for the canonical-first architecture: - status.py: 12 enums (GeometryStatus, EvidenceType, BlockRole, NonTextKind, InputType, ReadinessLevel, MissingCapability, OverlayLevel, etc.) - geometry.py: Point, BBox, Baseline, ClipRect, Geometry (bbox + polygon + status), GeometryContext — bbox convention is [x, y, width, height] - provenance.py: Provenance with conditional validation (provider_native cannot have derived_from) - readiness.py: AltoReadiness, PageXmlReadiness, ExportEligibility, DocumentReadiness with consistency validators - canonical_document.py: Source, Hyphenation, Word, TextLine, TextRegion, NonTextRegion, Page, Audit, CanonicalDocument — full hierarchy with metadata field at every level for future extensibility - raw_payload.py: RawProviderPayload (opaque container for provider output) - viewer_projection.py: OverlayItem, InspectionData, ViewerProjection - __init__.py: public API re-exporting all models All models are froz…41fae03 -
Sprint 0: project foundation — structure, settings, FastAPI skeleton
ClaudeUnverified signatureSet up the complete project scaffolding for the XmLLM document structure engine (canonical-first architecture for image → ALTO XML / PAGE XML): - pyproject.toml with core deps (FastAPI, Pydantic v2, lxml, Pillow) and dev deps - Full directory structure matching the 4-anneau architecture (domain, execution, API, presentation) - SettingsService with auto-detection of local vs HF Space mode - FastAPI app skeleton with /health endpoint - AGENTS.md with all non-negotiable architecture rules - .env.example with documented configuration variables - Test suite foundation with 6 passing tests (settings + health) https://claude.ai/code/session_01Cuzvc9Pjfo5u46eT3ta2Cg96f8c0a