mirror of
https://github.com/semantica-agi/semantica.git
synced 2026-08-29 04:26:20 +00:00
Backend: - Replace false conforms=True SHACL stub with status=unavailable always; live validation cannot be wired until OntologyEngine.validate_graph is connected to a data graph — a stub that returns conforms=True misleads users editing shapes - Cap node/edge fetches in health, suggest-alignments, and SHACL generation at _MAX_ANALYSIS_NODES (5 000) with a logger.warning when the graph exceeds the limit; unbounded limit=999_999 fetches cause OOM on large graphs - Set SHACL health dimension score to 0.0 (was 70.0) when status=unavailable; exclude unavailable dimensions from the total_score average so they neither inflate nor deflate the result - Allow alignments to reference external/unloaded URIs (e.g. schema.org) without raising 404; label falls back to URI fragment or caller-supplied source_label/target_label fields added to OntologyAlignmentRequest - Fix _alignment_id to use uuid.NAMESPACE_OID instead of NAMESPACE_URL; the composite key is not a URL - Fix _summarize_shapes to normalise \r\n before splitting on .\n so shape parsing works correctly on Windows line endings Frontend: - Wrap handleSave/handleSuggest/handleRemove/handleAcceptSuggestion in useCallback in AlignmentsTab for consistency with sibling components - Add ephemeral-storage banner in AlignmentsTab warning that alignments are session-memory-only and not persisted across restarts - Fix exportReport in HealthTab to append/remove anchor from document before clicking and defer URL.revokeObjectURL to avoid Blob URL leak in some browsers - Derive health dimension grid column count from health.dimensions.length instead of the hardcoded repeat(5, ...) that breaks if the backend adds or removes a dimension - Add minimal Monarch tokenizer for the Monaco turtle language registration in ShaclStudio so prefix declarations, IRIs, SHACL properties, comments, and string literals are syntax-highlighted; previously the editor rendered as plain text despite theme rules being defined Tests (11 passing, was 5): - Rename test_shacl_validate_has_stable_contract to test_shacl_validate_returns_unavailable and assert status == unavailable - Add test_shacl_validate_rejects_empty_turtle (expects 422) - Add test_health_returns_404_for_unknown_ontology - Add test_health_shacl_dimension_is_zero_when_unavailable with total_score check - Add test_delete_unknown_alignment_returns_404 - Add test_alignment_upsert_is_idempotent (verifies ID stability and created_at preservation across updates) - Add test_alignment_accepts_external_uri (verifies no 404 for schema.org URIs) - Relax test_alignment_suggestions_are_ranked label assertions to substring checks so the test survives similarity algorithm changes Co-authored-by: KaifAhmad1 <mohammadk78600@gmail.com> Co-authored-by: ZohaibHassan16 <zohaib@hawksight.ai>