Skip to content

Conversation

@tamang29
Copy link

@tamang29 tamang29 commented Nov 6, 2025

Athena:
Support Apollon v3 and v4 model for modeling assessment

Summary by CodeRabbit

  • New Features

    • Centralized schema normalization to support Apollon v2/v3/v4 inputs.
    • Added a new modeling exercise with multiple graded submissions and feedback scenarios.
  • Improvements

    • Switched to a newer Apollon build and lazy-load editor assets and styles for the playground.
  • Chores

    • Adjusted Docker build steps and updated protobuf build dependency.

✏️ Tip: You can customize this high-level summary in your review settings.

@tamang29 tamang29 self-assigned this Nov 6, 2025
@tamang29 tamang29 added the athena label Nov 6, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 6, 2025

Walkthrough

Adds a SchemaConverter that centralizes normalization of Apollon schemas (v2/v3/v4) into v3 and updates the transformer to use it; switches the playground Apollon dependency and client-side dynamic imports/CSS; adds an example exercise JSON; updates two Dockerfiles (one adds a redundant poetry install, the other bumps protobuf-dev); and adjusts playground viewer/submission components and props handling.

Changes

Cohort / File(s) Summary
Transformer + Schema converter
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py, athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/apollon_json_transformer.py
New SchemaConverter class with static methods to detect v2/v3/v4 and convert v2→v3 and v4→v3; apollon_json_transformer delegates version normalization to SchemaConverter.normalize_to_v3 and removes its internal v2→v3 converter.
Docker build (modeling llm)
athena/modules/modeling/module_modeling_llm/Dockerfile
Adds a second poetry install step after copying project files, resulting in an additional dependency installation pass during image build.
Docker build (text module)
athena/modules/text/module_text_cofee/Dockerfile
Updates Protobuf dev package version in the build stage from protobuf-dev=29.4-r0 to protobuf-dev=31.1-r1.
Playground package & assets
athena/playground/package.json, athena/playground/src/pages/_app.tsx
Replaces @ls1intum/apollon with @tumaet/apollon in dependencies and adds import of @tumaet/apollon/dist/assets/style.css to the global app.
Playground UI: viewer initialization & submission detail
athena/playground/src/components/details/exercise_detail/modeling.tsx, athena/playground/src/components/details/submission_detail/modeling.tsx
Replace synchronous require-based Apollon usage with dynamic imports from @tumaet/apollon; use importDiagram to construct models; adjust editor lifecycle and remove prior addOrUpdateAssessment/update logic; remove default prop values at declaration and add safer nullish guards.
Playground example data
athena/playground/data/example/exercise-7.json
Adds a new BPMN modeling exercise (id 7) including problem, grading instructions, example solution, and six sample submissions with feedback entries.

Sequence Diagram

sequenceDiagram
    participant Client
    participant Transformer as apollon_json_transformer
    participant Converter as SchemaConverter
    participant Parser as Apollon (importDiagram / editor)

    Client->>Transformer: transform_json(model_dict)
    Transformer->>Converter: normalize_to_v3(model_dict)
    alt input is v3
        Converter-->>Transformer: v3 schema
    else input is v2
        Converter-->>Transformer: convert_v2_to_v3 -> v3 schema
    else input is v4
        Converter-->>Transformer: convert_v4_to_v3 -> v3 schema
    end
    Transformer->>Parser: importDiagram(v3 schema) / create editor model
    Parser-->>Transformer: parsed/editor model
    Transformer-->>Client: transformed/parsed result
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Inspect conversion logic in schema_converter.py (v4→v3 node/edge mapping, ID/direction handling).
  • Verify apollon_json_transformer.py uses SchemaConverter.normalize_to_v3 in all code paths and that v2/v4 cases are preserved.
  • Confirm frontend dynamic imports, CSS path, and editor initialization in both modeling.tsx files.
  • Check Dockerfile changes: redundant poetry install in modeling LLM Dockerfile and protobuf version bump in text module Dockerfile.

Poem

🐰 I hopped through schemas, one by one,

v2, v3, v4 — knit into one.
I passed the model to the parser bright,
swapped playground shoes and tuned the site.
A tiny extra install — more carrots tonight!

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately captures the main objective of the PR—adding support for Apollon v4 models. It is concise, clear, and directly related to the primary changes in the changeset.
Docstring Coverage ✅ Passed Docstring coverage is 81.82% which is sufficient. The required threshold is 80.00%.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/support-apollon-v3

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4df297b and 30903ff.

📒 Files selected for processing (1)
  • athena/modules/text/module_text_cofee/Dockerfile (1 hunks)
🔇 Additional comments (1)
athena/modules/text/module_text_cofee/Dockerfile (1)

7-7: Verify the necessity of the protobuf version bump.

The protobuf version has been updated to 31.1, and the new version is compatible with Alpine Linux. However, there's no inline documentation explaining why this upgrade is needed. Please confirm whether this version bump:

  • Is required for the Apollon v3/v4 support mentioned in the PR objectives
  • Addresses a security issue or performance improvement
  • Supports new protobuf features needed by the cofee.proto schema

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

github-actions bot commented Nov 6, 2025

Athena Test Results Summary

TestsPassed ✅SkippedFailed
Athena Test Report10 ran10 passed0 skipped0 failed

Failing Tests Summary

TestResult
No test annotations available

@github-actions
Copy link

github-actions bot commented Nov 6, 2025

📊 Detailed Coverage Table

Combining 3 coverage files...
Parsing test-results/programming_module_programming_llm_coverage.xml...
Parsing test-results/text_module_text_llm_coverage.xml...
Parsing test-results/modeling_module_modeling_llm_coverage.xml...
Combining duplicate packages...
Creating combined coverage file: test-results/combined_coverage.xml
✅ Combined coverage saved to test-results/combined_coverage.xml
📊 Combined 31 unique packages

📊 Combined Coverage Summary:

Package Line Rate Branch Rate Status
athena 38.1% 3.4%
athena.helpers 100.0% 100.0%
athena.helpers.programming 33.0% 0.0%
athena.helpers.text 0.0% 100.0%
athena.models 0.0% 0.0%
athena.schemas 76.8% 10.0%
athena.storage 21.1% 0.0%
llm_core 100.0% 100.0%
llm_core.core 54.4% 20.8%
llm_core.loaders 79.3% 37.5%
llm_core.loaders.model_loaders 68.8% 34.6%
llm_core.models 66.2% 33.3%
llm_core.models.providers 76.4% 56.2%
llm_core.utils 56.8% 22.6%
modeling.module_modeling_llm.module_modeling_llm 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer 41.7% 8.8%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer.parser 79.2% 60.2%
modeling.module_modeling_llm.module_modeling_llm.core 88.9% 50.0%
modeling.module_modeling_llm.module_modeling_llm.models 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.prompts 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.utils 100.0% 50.0%
programming.module_programming_llm.module_programming_llm 100.0% 100.0%
programming.module_programming_llm.module_programming_llm.helpers 27.6% 0.0%
programming.module_programming_llm.module_programming_llm.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm 76.2% 16.7%
text.module_text_llm.module_text_llm.default_approach 66.3% 35.3%
text.module_text_llm.module_text_llm.default_approach.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm.default_approach.schemas 100.0% 100.0%
text.module_text_llm.module_text_llm.divide_and_conquer 34.0% 0.0%
text.module_text_llm.module_text_llm.helpers 55.4% 26.7%
text.module_text_llm.module_text_llm.self_consistency 46.2% 0.0%

Total packages: 31

Note: Coverage thresholds: ✅ (≥70%), ❌ (<70%)

@tamang29 tamang29 changed the title feat: Support Apollon v3 modal Athena: Support Apollon v4 model Nov 6, 2025
@github-actions
Copy link

github-actions bot commented Nov 6, 2025

Athena Test Results Summary

TestsPassed ✅SkippedFailed
Athena Test Report10 ran10 passed0 skipped0 failed

Failing Tests Summary

TestResult
No test annotations available

@github-actions
Copy link

github-actions bot commented Nov 6, 2025

📊 Detailed Coverage Table

Combining 3 coverage files...
Parsing test-results/programming_module_programming_llm_coverage.xml...
Parsing test-results/text_module_text_llm_coverage.xml...
Parsing test-results/modeling_module_modeling_llm_coverage.xml...
Combining duplicate packages...
Creating combined coverage file: test-results/combined_coverage.xml
✅ Combined coverage saved to test-results/combined_coverage.xml
📊 Combined 31 unique packages

📊 Combined Coverage Summary:

Package Line Rate Branch Rate Status
athena 38.1% 3.4%
athena.helpers 100.0% 100.0%
athena.helpers.programming 33.0% 0.0%
athena.helpers.text 0.0% 100.0%
athena.models 0.0% 0.0%
athena.schemas 76.8% 10.0%
athena.storage 21.1% 0.0%
llm_core 100.0% 100.0%
llm_core.core 54.4% 20.8%
llm_core.loaders 79.3% 37.5%
llm_core.loaders.model_loaders 68.8% 34.6%
llm_core.models 66.2% 33.3%
llm_core.models.providers 76.4% 56.2%
llm_core.utils 56.8% 22.6%
modeling.module_modeling_llm.module_modeling_llm 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer 41.7% 8.8%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer.parser 79.2% 60.2%
modeling.module_modeling_llm.module_modeling_llm.core 88.9% 50.0%
modeling.module_modeling_llm.module_modeling_llm.models 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.prompts 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.utils 100.0% 50.0%
programming.module_programming_llm.module_programming_llm 100.0% 100.0%
programming.module_programming_llm.module_programming_llm.helpers 27.6% 0.0%
programming.module_programming_llm.module_programming_llm.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm 76.2% 16.7%
text.module_text_llm.module_text_llm.default_approach 66.3% 35.3%
text.module_text_llm.module_text_llm.default_approach.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm.default_approach.schemas 100.0% 100.0%
text.module_text_llm.module_text_llm.divide_and_conquer 34.0% 0.0%
text.module_text_llm.module_text_llm.helpers 55.4% 26.7%
text.module_text_llm.module_text_llm.self_consistency 46.2% 0.0%

Total packages: 31

Note: Coverage thresholds: ✅ (≥70%), ❌ (<70%)

@tamang29 tamang29 marked this pull request as ready for review November 6, 2025 12:28
@tamang29 tamang29 requested a review from a team as a code owner November 6, 2025 12:28
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ad7fca6 and 32958e5.

📒 Files selected for processing (3)
  • athena/modules/modeling/module_modeling_llm/Dockerfile (1 hunks)
  • athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/apollon_json_transformer.py (3 hunks)
  • athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (1)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/apollon_json_transformer.py (1)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py (2)
  • SchemaConverter (9-187)
  • normalize_to_v3 (171-187)
🪛 Ruff (0.14.3)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py

95-95: Unnecessary key check before dictionary access

Replace with dict.get

(RUF019)


113-113: Unnecessary key check before dictionary access

Replace with dict.get

(RUF019)

Comment on lines +95 to +127
if "attributes" in node_data and node_data["attributes"]:
attribute_ids: list[str] = []
for attr in node_data["attributes"]:
attr_id = attr.get("id", f"{element_id}_attr_{len(attribute_ids)}")
attribute_ids.append(attr_id)

# Create separate attribute element
v3_data["elements"][attr_id] = {
"id": attr_id,
"name": attr.get("name", ""),
"type": "ClassAttribute",
"owner": element_id,
"bounds": {"x": 0, "y": 0, "width": 0, "height": 0}
}

element["attributes"] = attribute_ids

# Handle methods (convert from embedded objects to ID references)
if "methods" in node_data and node_data["methods"]:
method_ids: list[str] = []
for method in node_data["methods"]:
method_id = method.get("id", f"{element_id}_method_{len(method_ids)}")
method_ids.append(method_id)

# Create separate method element
v3_data["elements"][method_id] = {
"id": method_id,
"name": method.get("name", ""),
"type": "ClassMethod",
"owner": element_id,
"bounds": {"x": 0, "y": 0, "width": 0, "height": 0}
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

Preserve attribute/method metadata during v4 → v3 conversion

Line 102 and Line 120 currently create placeholder ClassAttribute/ClassMethod elements that keep nothing but the name. Apollon v4 attribute/method objects include metadata such as visibility, type, static, parameters, and returnType, and UMLParser depends on those fields to render correct notation. Dropping everything but the name means diagrams like + foo(): String collapse to plain foo, so feedback produced from v4 payloads will be wrong. Please merge the original attribute/method dictionaries into the converted elements instead of discarding their contents.

@@
-                        v3_data["elements"][attr_id] = {
-                            "id": attr_id,
-                            "name": attr.get("name", ""),
-                            "type": "ClassAttribute",
-                            "owner": element_id,
-                            "bounds": {"x": 0, "y": 0, "width": 0, "height": 0}
-                        }
+                        attr_element = attr.copy()
+                        attribute_type = attr_element.pop("type", None)
+                        attr_element.update({
+                            "id": attr_id,
+                            "type": "ClassAttribute",
+                            "owner": element_id,
+                            "bounds": attr_element.get(
+                                "bounds", {"x": 0, "y": 0, "width": 0, "height": 0}
+                            ),
+                        })
+                        if attribute_type is not None:
+                            attr_element["attributeType"] = attribute_type
+                        v3_data["elements"][attr_id] = attr_element
@@
-                        v3_data["elements"][method_id] = {
-                            "id": method_id,
-                            "name": method.get("name", ""),
-                            "type": "ClassMethod",
-                            "owner": element_id,
-                            "bounds": {"x": 0, "y": 0, "width": 0, "height": 0}
-                        }
+                        method_element = method.copy()
+                        method_kind = method_element.pop("type", None)
+                        method_element.update({
+                            "id": method_id,
+                            "type": "ClassMethod",
+                            "owner": element_id,
+                            "bounds": method_element.get(
+                                "bounds", {"x": 0, "y": 0, "width": 0, "height": 0}
+                            ),
+                        })
+                        if method_kind is not None:
+                            method_element["methodKind"] = method_kind
+                        v3_data["elements"][method_id] = method_element
🧰 Tools
🪛 Ruff (0.14.3)

95-95: Unnecessary key check before dictionary access

Replace with dict.get

(RUF019)


113-113: Unnecessary key check before dictionary access

Replace with dict.get

(RUF019)

🤖 Prompt for AI Agents
In
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py
around lines 95 to 127, the converter currently creates placeholder
ClassAttribute/ClassMethod elements containing only id, name, type, owner and
bounds, dropping all original attribute/method metadata; update the conversion
to merge the original attribute/method dict into the new element so fields like
visibility, type, static, parameters and returnType are preserved (while still
ensuring id, name, type, owner and bounds are set/overridden as needed), i.e.
construct the v3 element by taking the original dict and then enforcing/adding
the required keys (id, type -> ClassAttribute/ClassMethod, owner, bounds) before
assigning into v3_data["elements"] and keep
element["attributes"]/element["methods"] as the ID lists.

@FelixTJDietrich FelixTJDietrich added the deploy:athena-test1 Athena Test Server 1 label Nov 7, 2025
@github-actions github-actions bot added lock:athena-test1 Is currently deployed to Athena Test Server 1 and removed deploy:athena-test1 Athena Test Server 1 labels Nov 7, 2025
Copy link
Contributor

@FelixTJDietrich FelixTJDietrich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good and also was tested with Artemis via test server

# Project files
COPY . ./

RUN poetry install --no-interaction --no-ansi
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure if this is necessary but it fixed a build issue

@github-actions
Copy link

Athena Test Results Summary

TestsPassed ✅SkippedFailed
Athena Test Report10 ran10 passed0 skipped0 failed

Failing Tests Summary

TestResult
No test annotations available

@github-actions
Copy link

📊 Detailed Coverage Table

Combining 3 coverage files...
Parsing test-results/programming_module_programming_llm_coverage.xml...
Parsing test-results/text_module_text_llm_coverage.xml...
Parsing test-results/modeling_module_modeling_llm_coverage.xml...
Combining duplicate packages...
Creating combined coverage file: test-results/combined_coverage.xml
✅ Combined coverage saved to test-results/combined_coverage.xml
📊 Combined 31 unique packages

📊 Combined Coverage Summary:

Package Line Rate Branch Rate Status
athena 37.8% 3.3%
athena.helpers 100.0% 100.0%
athena.helpers.programming 33.0% 0.0%
athena.helpers.text 0.0% 100.0%
athena.models 0.0% 0.0%
athena.schemas 76.5% 8.3%
athena.storage 21.1% 0.0%
llm_core 100.0% 100.0%
llm_core.core 54.4% 20.8%
llm_core.loaders 79.3% 37.5%
llm_core.loaders.model_loaders 68.8% 34.6%
llm_core.models 66.2% 33.3%
llm_core.models.providers 76.4% 56.2%
llm_core.utils 56.8% 22.6%
modeling.module_modeling_llm.module_modeling_llm 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer 41.7% 8.8%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer.parser 79.2% 60.2%
modeling.module_modeling_llm.module_modeling_llm.core 88.9% 50.0%
modeling.module_modeling_llm.module_modeling_llm.models 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.prompts 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.utils 100.0% 50.0%
programming.module_programming_llm.module_programming_llm 100.0% 100.0%
programming.module_programming_llm.module_programming_llm.helpers 27.6% 0.0%
programming.module_programming_llm.module_programming_llm.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm 72.7% 12.5%
text.module_text_llm.module_text_llm.default_approach 66.4% 36.1%
text.module_text_llm.module_text_llm.default_approach.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm.default_approach.schemas 100.0% 100.0%
text.module_text_llm.module_text_llm.divide_and_conquer 34.0% 0.0%
text.module_text_llm.module_text_llm.helpers 55.4% 26.7%
text.module_text_llm.module_text_llm.self_consistency 46.2% 0.0%

Total packages: 31

Note: Coverage thresholds: ✅ (≥70%), ❌ (<70%)

@github-actions
Copy link

There hasn't been any activity on this pull request recently. Therefore, this pull request has been automatically marked as stale and will be closed if no further activity occurs within seven days. Thank you for your contributions.

@github-actions github-actions bot added the stale label Nov 19, 2025
@maximiliansoelch maximiliansoelch removed stale lock:athena-test1 Is currently deployed to Athena Test Server 1 labels Nov 19, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

♻️ Duplicate comments (1)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py (1)

132-165: Attribute and method metadata is still being lost during v4 → v3 conversion.

Lines 139-145 and 157-163 create placeholder ClassAttribute and ClassMethod elements that preserve only id, name, type, owner, and bounds, discarding all other metadata from the v4 attributes and methods. This includes critical fields like visibility, type, static, parameters, and returnType that UMLParser depends on for correct diagram rendering.

As noted in the previous review, this causes diagrams like + foo(): String to collapse to plain foo, producing incorrect feedback for v4 models.

The previous review provided a detailed fix—please merge the original attribute/method dictionaries into the converted elements instead of creating minimal placeholders.

🧹 Nitpick comments (3)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py (1)

132-132: Optional: Simplify key checks with dict.get.

The conditions if "attributes" in node_data and node_data["attributes"]: (line 132) and if "methods" in node_data and node_data["methods"]: (line 150) can be simplified to if node_data.get("attributes"): and if node_data.get("methods"): respectively for more concise code.

Apply this diff:

-                if "attributes" in node_data and node_data["attributes"]:
+                if node_data.get("attributes"):
                     attribute_ids: list[str] = []
-                if "methods" in node_data and node_data["methods"]:
+                if node_data.get("methods"):
                     method_ids: list[str] = []

Also applies to: 150-150

athena/playground/src/components/details/exercise_detail/modeling.tsx (1)

24-38: Dynamic Apollon setup works; consider a few small robustness tweaks.

The dynamic import and editor init pattern looks fine, and the separate editor?.destroy() effect gives you a clean tear‑down. Two optional improvements you might consider:

  • Skip the import/editor init entirely when there is no exercise.example_solution, instead of relying on JSON.parse(exercise.example_solution || "{}"), to avoid unnecessary work and potential library‑side errors on {}.
  • Add a simple guard/cancellation flag so that if the component unmounts before the import resolves, you don’t end up calling setEditor on an unmounted component, and optionally handle a rejected import (e.g., log or show a fallback).

These are non‑blocking but would make the integration a bit more resilient.

athena/playground/src/components/details/submission_detail/modeling.tsx (1)

27-29: Reuse unreferencedFeedbacks for rendering to avoid redundant classification.

You already compute unreferencedFeedbacks (lines 27–29) and then re‑derive the same subset by calling getFeedbackReferenceType again inside the feedbacks?.map. Functionally this is fine, but you can simplify and avoid duplicate work by mapping over unreferencedFeedbacks directly:

-const unreferencedFeedbacks = feedbacks?.filter(
-  (feedback) => getFeedbackReferenceType(feedback) === "unreferenced"
-);
+const unreferencedFeedbacks =
+  feedbacks?.filter(
+    (feedback) => getFeedbackReferenceType(feedback) === "unreferenced",
+  ) ?? [];
...
-      {((unreferencedFeedbacks && unreferencedFeedbacks.length > 0) ||
-        onFeedbacksChange) && (
+      {((unreferencedFeedbacks.length > 0) || onFeedbacksChange) && (
         <div className="space-y-2 mt-5">
           <h3 className="ml-2 text-lg font-medium">Unreferenced Feedback</h3>
-          {feedbacks?.map(
-            (feedback) =>
-              getFeedbackReferenceType(feedback) === "unreferenced" && (
+          {unreferencedFeedbacks.map((feedback) => (
               <InlineFeedback
                 key={feedback.id}
                 feedback={feedback}
                 manualRating={manualRatings?.find(
                   (manualRating) => manualRating.feedbackId === feedback.id
                 )}

This keeps the render logic clearer and avoids repeatedly calling getFeedbackReferenceType for the same array.

Also applies to: 57-80

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 32958e5 and 4df297b.

⛔ Files ignored due to path filters (1)
  • athena/playground/package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (7)
  • athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/apollon_json_transformer.py (2 hunks)
  • athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py (1 hunks)
  • athena/playground/data/example/exercise-7.json (1 hunks)
  • athena/playground/package.json (1 hunks)
  • athena/playground/src/components/details/exercise_detail/modeling.tsx (1 hunks)
  • athena/playground/src/components/details/submission_detail/modeling.tsx (2 hunks)
  • athena/playground/src/pages/_app.tsx (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • athena/playground/src/pages/_app.tsx
🧰 Additional context used
🧬 Code graph analysis (3)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/apollon_json_transformer.py (1)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py (2)
  • SchemaConverter (9-228)
  • normalize_to_v3 (208-228)
athena/playground/src/components/details/submission_detail/modeling.tsx (2)
athena/playground/src/model/feedback.ts (3)
  • getFeedbackReferenceType (144-171)
  • createFeedbackItemUpdater (184-201)
  • createNewFeedback (209-221)
athena/playground/src/model/manual_rating.ts (1)
  • createManualRatingItemUpdater (17-41)
athena/playground/src/components/details/exercise_detail/modeling.tsx (1)
athena/playground/scripts/artemis/4_link_programming_repositories.mjs (1)
  • exercise (15-15)
🪛 Ruff (0.14.7)
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py

132-132: Unnecessary key check before dictionary access

Replace with dict.get

(RUF019)


150-150: Unnecessary key check before dictionary access

Replace with dict.get

(RUF019)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (13)
  • GitHub Check: build_image (athena/modules/programming/module_programming_llm)
  • GitHub Check: build_image (athena/playground)
  • GitHub Check: build_image (athena/modules/programming/module_programming_winnowing)
  • GitHub Check: build_image (athena/modules/text/module_text_cofee)
  • GitHub Check: build_image (athena/log_viewer)
  • GitHub Check: build_image (athena/modules/text/module_text_llm)
  • GitHub Check: build_image (athena/modules/programming/module_programming_themisml)
  • GitHub Check: build_image (athena/modules/programming/module_example)
  • GitHub Check: build_image (athena/assessment_module_manager)
  • GitHub Check: build_image (athena/modules/modeling/module_modeling_llm)
  • GitHub Check: build_image (athena/modules/programming/module_programming_apted)
  • GitHub Check: prospector
  • GitHub Check: test
🔇 Additional comments (5)
athena/playground/data/example/exercise-7.json (3)

1-12: Comprehensive test coverage and well-structured exercise metadata.

The exercise is thoughtfully designed with clear grading instructions, a realistic problem statement, and a well-formed example solution. The metadata aligns with the Apollon v4 modeling workflow.


12-103: High-quality test scenarios covering common BPMN modeling defects.

The six submissions cover a representative range of modeling errors:

  • Correct solution (submission 1)
  • Missing critical elements: start event, end event (submissions 2–3)
  • Missing tasks: two out of three required tasks (submissions 4–5)
  • Sequence error with all elements present (submission 6)

Feedback descriptions are specific, actionable, and tied to precise credit adjustments. This provides strong grounding for LLM-based grading and schema validation during the modeling assessment workflow.


10-10: The model structure differences between example_solution and submissions are intentional, not inconsistent. The example_solution includes metadata fields (id and title) because it represents a complete model reference, while all submission models (submissions 1–6) intentionally omit these fields, which is the correct pattern for student submissions. This structure aligns with typical grading systems where example solutions and student submissions have different schemas. No changes are needed.

Likely an incorrect or invalid review comment.

athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/apollon_json_transformer.py (1)

4-4: LGTM! Conversion logic successfully centralized.

The refactor addresses the previous review feedback by moving all schema conversion logic into the SchemaConverter class. The import, updated docstring, and usage of SchemaConverter.normalize_to_v3 are all correct and improve maintainability.

Also applies to: 14-14, 23-24

athena/playground/package.json (1)

25-27: Confirm @tumaet/[email protected] peer dependency compatibility before merging.

The dependency addition is consistent with the codebase (React 18.3.1, Next 14.2.33 in use). Verify that @tumaet/[email protected] declares compatible peer dependencies for your React and Next versions—check the package's peer dependency requirements in its npm entry or documentation.

Comment on lines +22 to +30
@staticmethod
def is_v3_schema(data: dict) -> bool:
"""
Check if the data is in v3.0.0 schema format.
:param data: The schema data to check
:return: True if v3 schema, False otherwise
"""
return "model" in data
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

Fragile v3 detection logic.

The is_v3_schema method only checks for the presence of a "model" key, which is fragile:

  • It doesn't verify the actual v3 structure or version field
  • It could false-positive if v2 or v4 schemas happen to contain a "model" key
  • Line 221 in normalize_to_v3 blindly accesses data["model"] without checking if the key exists, risking a KeyError

Consider strengthening the check:

 @staticmethod
 def is_v3_schema(data: dict) -> bool:
     """
     Check if the data is in v3.0.0 schema format.
     
     :param data: The schema data to check
     :return: True if v3 schema, False otherwise
     """
-    return "model" in data
+    # v3 schema wraps the model in a "model" key with version 3.0.0
+    if "model" not in data:
+        return False
+    model = data.get("model", {})
+    return isinstance(model, dict) and model.get("version") == "3.0.0"

And add error handling in normalize_to_v3:

     # If it's already v3 with nested model, extract it
     if SchemaConverter.is_v3_schema(data):
-        return data["model"]
+        return data.get("model", data)
🤖 Prompt for AI Agents
In
athena/modules/modeling/module_modeling_llm/module_modeling_llm/apollon_transformer/schema_converter.py
around lines 22 to 30, the is_v3_schema function is too fragile because it only
checks for a "model" key; update it to verify the schema version or required v3
structure (e.g., check for a top-level "version" equal to "3.0.0" or validate
presence/types of multiple v3-specific keys) and avoid relying on a single key,
and in normalize_to_v3 add guarded access to data["model"] (use .get or explicit
key-check), validate the retrieved value before using it, and raise or return a
clear, descriptive error when the expected v3 structure is missing instead of
letting a KeyError propagate.

Comment on lines 33 to +50
const editorRef = useRef<HTMLDivElement>(null);

const [editor, setEditor] = useState<any>();

// Initialize Apollon editor once
useEffect(() => {
const { ApollonEditor } = require("@ls1intum/apollon");

if (!editorRef.current) return;

const modelObject = JSON.parse(submission.model);

const newEditor = new ApollonEditor(editorRef.current, {
model: modelObject,
readonly: true,
mode: "Assessment",
scale: 0.8,
});

setEditor(newEditor);
if (!editorRef?.current) {
return;
}

}, [submission]);

// Update assessments when feedbacks change
useEffect(() => {
if (!editor) return;

const { addOrUpdateAssessment } = require("@ls1intum/apollon");
const modelObject = JSON.parse(submission.model);

const referencedFeedbacks = feedbacks.filter(
(f) => getFeedbackReferenceType(f) === "referenced"
);

referencedFeedbacks.forEach((feedback) => {
const modelingFeedback = feedback as ModelingFeedback;
const [referenceType, referenceId] =
modelingFeedback.reference?.split(":") ?? [];

addOrUpdateAssessment(modelObject, {
modelElementId: referenceId,
elementType: referenceType as UMLElementType | UMLRelationshipType,
score: modelingFeedback.credits,
feedback: modelingFeedback.description,
// Dynamically import both ApollonEditor and importDiagram to avoid SSR issues
import('@tumaet/apollon').then(({ ApollonEditor, importDiagram }) => {
setEditor(new ApollonEditor(editorRef.current!, {
model: importDiagram(JSON.parse(submission.model)),
readonly: true,
scale: 0.8
}));
});
});

(async () => {
const renderDone = editor.nextRender;
editor.model = modelObject;
await renderDone;
})();
}, [feedbacks, submission, editor]);

// Filter unreferenced feedbacks once
const unreferencedFeedbacks = feedbacks.filter(
(f) => getFeedbackReferenceType(f) === "unreferenced"
);
}, [editorRef, submission]);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

find . -type f -name "modeling.tsx" | head -20

Repository: ls1intum/edutelligence

Length of output: 211


🏁 Script executed:

wc -l ./athena/playground/src/components/details/submission_detail/modeling.tsx ./athena/playground/src/components/details/exercise_detail/modeling.tsx

Repository: ls1intum/edutelligence

Length of output: 232


🏁 Script executed:

cat -n ./athena/playground/src/components/details/submission_detail/modeling.tsx

Repository: ls1intum/edutelligence

Length of output: 4086


🏁 Script executed:

cat -n ./athena/playground/src/components/details/exercise_detail/modeling.tsx

Repository: ls1intum/edutelligence

Length of output: 2023


Add cleanup for the Apollon editor instance to prevent resource leaks.

The editor instance in state is never destroyed when the component unmounts or submission changes. In exercise_detail/modeling.tsx (lines 18–22), a separate useEffect explicitly calls editor?.destroy() on cleanup; without this here, old editor instances and their listeners leak into memory.

Add a cleanup effect mirroring the exercise detail pattern:

  const [editor, setEditor] = useState<any>();

  useEffect(() => {
    if (!editorRef?.current) {
      return;
    }
    
    import('@tumaet/apollon').then(({ ApollonEditor, importDiagram }) => {
      setEditor(new ApollonEditor(editorRef.current!, {
        model: importDiagram(JSON.parse(submission.model)),
        readonly: true,
        scale: 0.8
      }));
    });

  }, [editorRef, submission]);

+  useEffect(() => {
+    return () => {
+      editor?.destroy();
+    };
+  }, [editor]);

Optional improvements:

  • Wrap JSON.parse(submission.model) in try/catch to handle malformed models gracefully.
  • Add a cancellation flag inside the import effect so setEditor is skipped if the component unmounts before the promise resolves.
🤖 Prompt for AI Agents
In athena/playground/src/components/details/submission_detail/modeling.tsx
around lines 31 to 50, the Apollon editor created in the useEffect is never
cleaned up and can leak resources; update the effect to create a mounted/cancel
flag, wrap JSON.parse(submission.model) in try/catch to handle malformed models,
and after the dynamic import skip setEditor if unmounted; return a cleanup
function that calls editor?.destroy() (or the instance's destroy method) and
clears the mounted flag so old editor instances and listeners are properly torn
down when submission changes or the component unmounts.

@tamang29 tamang29 added deploy:athena-test1 Athena Test Server 1 and removed stale labels Dec 3, 2025
@github-actions github-actions bot added lock:athena-test1 Is currently deployed to Athena Test Server 1 and removed deploy:athena-test1 Athena Test Server 1 labels Dec 3, 2025
@tamang29 tamang29 removed the lock:athena-test1 Is currently deployed to Athena Test Server 1 label Dec 4, 2025
@github-actions
Copy link

github-actions bot commented Dec 4, 2025

Athena Test Results Summary

TestsPassed ✅SkippedFailed
Athena Test Report10 ran10 passed0 skipped0 failed

Failing Tests Summary

TestResult
No test annotations available

@github-actions
Copy link

github-actions bot commented Dec 4, 2025

📊 Detailed Coverage Table

Combining 3 coverage files...
Parsing test-results/programming_module_programming_llm_coverage.xml...
Parsing test-results/text_module_text_llm_coverage.xml...
Parsing test-results/modeling_module_modeling_llm_coverage.xml...
Combining duplicate packages...
Creating combined coverage file: test-results/combined_coverage.xml
✅ Combined coverage saved to test-results/combined_coverage.xml
📊 Combined 31 unique packages

📊 Combined Coverage Summary:

Package Line Rate Branch Rate Status
athena 37.8% 3.3%
athena.helpers 100.0% 100.0%
athena.helpers.programming 33.0% 0.0%
athena.helpers.text 0.0% 100.0%
athena.models 0.0% 0.0%
athena.schemas 76.5% 8.3%
athena.storage 21.1% 0.0%
llm_core 100.0% 100.0%
llm_core.core 54.4% 20.8%
llm_core.loaders 79.3% 37.5%
llm_core.loaders.model_loaders 68.1% 34.6%
llm_core.models 66.2% 33.3%
llm_core.models.providers 76.4% 56.2%
llm_core.utils 56.8% 22.6%
modeling.module_modeling_llm.module_modeling_llm 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer 43.2% 8.8%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer.parser 79.2% 60.2%
modeling.module_modeling_llm.module_modeling_llm.core 88.9% 50.0%
modeling.module_modeling_llm.module_modeling_llm.models 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.prompts 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.utils 100.0% 50.0%
programming.module_programming_llm.module_programming_llm 100.0% 100.0%
programming.module_programming_llm.module_programming_llm.helpers 27.6% 0.0%
programming.module_programming_llm.module_programming_llm.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm 72.7% 12.5%
text.module_text_llm.module_text_llm.default_approach 66.4% 36.1%
text.module_text_llm.module_text_llm.default_approach.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm.default_approach.schemas 100.0% 100.0%
text.module_text_llm.module_text_llm.divide_and_conquer 34.0% 0.0%
text.module_text_llm.module_text_llm.helpers 55.4% 26.7%
text.module_text_llm.module_text_llm.self_consistency 46.2% 0.0%

Total packages: 31

Note: Coverage thresholds: ✅ (≥70%), ❌ (<70%)

@github-actions
Copy link

github-actions bot commented Dec 4, 2025

Athena Test Results Summary

TestsPassed ✅SkippedFailed
Athena Test Report10 ran10 passed0 skipped0 failed

Failing Tests Summary

TestResult
No test annotations available

@github-actions
Copy link

github-actions bot commented Dec 4, 2025

📊 Detailed Coverage Table

Combining 3 coverage files...
Parsing test-results/programming_module_programming_llm_coverage.xml...
Parsing test-results/text_module_text_llm_coverage.xml...
Parsing test-results/modeling_module_modeling_llm_coverage.xml...
Combining duplicate packages...
Creating combined coverage file: test-results/combined_coverage.xml
✅ Combined coverage saved to test-results/combined_coverage.xml
📊 Combined 31 unique packages

📊 Combined Coverage Summary:

Package Line Rate Branch Rate Status
athena 37.8% 3.3%
athena.helpers 100.0% 100.0%
athena.helpers.programming 33.0% 0.0%
athena.helpers.text 0.0% 100.0%
athena.models 0.0% 0.0%
athena.schemas 76.5% 8.3%
athena.storage 21.1% 0.0%
llm_core 100.0% 100.0%
llm_core.core 54.4% 20.8%
llm_core.loaders 79.3% 37.5%
llm_core.loaders.model_loaders 68.1% 34.6%
llm_core.models 66.2% 33.3%
llm_core.models.providers 76.4% 56.2%
llm_core.utils 56.8% 22.6%
modeling.module_modeling_llm.module_modeling_llm 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer 43.2% 8.8%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer.parser 79.2% 60.2%
modeling.module_modeling_llm.module_modeling_llm.core 88.9% 50.0%
modeling.module_modeling_llm.module_modeling_llm.models 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.prompts 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.utils 100.0% 50.0%
programming.module_programming_llm.module_programming_llm 100.0% 100.0%
programming.module_programming_llm.module_programming_llm.helpers 27.6% 0.0%
programming.module_programming_llm.module_programming_llm.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm 72.7% 12.5%
text.module_text_llm.module_text_llm.default_approach 66.4% 36.1%
text.module_text_llm.module_text_llm.default_approach.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm.default_approach.schemas 100.0% 100.0%
text.module_text_llm.module_text_llm.divide_and_conquer 34.0% 0.0%
text.module_text_llm.module_text_llm.helpers 55.4% 26.7%
text.module_text_llm.module_text_llm.self_consistency 46.2% 0.0%

Total packages: 31

Note: Coverage thresholds: ✅ (≥70%), ❌ (<70%)

FelixTJDietrich
FelixTJDietrich previously approved these changes Dec 9, 2025
Copy link
Contributor

@FelixTJDietrich FelixTJDietrich left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code looks good

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

Athena Test Results Summary

TestsPassed ✅SkippedFailed
Athena Test Report10 ran10 passed0 skipped0 failed

Failing Tests Summary

TestResult
No test annotations available

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

📊 Detailed Coverage Table

Combining 3 coverage files...
Parsing test-results/programming_module_programming_llm_coverage.xml...
Parsing test-results/text_module_text_llm_coverage.xml...
Parsing test-results/modeling_module_modeling_llm_coverage.xml...
Combining duplicate packages...
Creating combined coverage file: test-results/combined_coverage.xml
✅ Combined coverage saved to test-results/combined_coverage.xml
📊 Combined 31 unique packages

📊 Combined Coverage Summary:

Package Line Rate Branch Rate Status
athena 37.8% 3.3%
athena.helpers 100.0% 100.0%
athena.helpers.programming 33.0% 0.0%
athena.helpers.text 0.0% 100.0%
athena.models 0.0% 0.0%
athena.schemas 76.5% 8.3%
athena.storage 21.1% 0.0%
llm_core 100.0% 100.0%
llm_core.core 54.4% 20.8%
llm_core.loaders 79.3% 37.5%
llm_core.loaders.model_loaders 68.1% 34.6%
llm_core.models 66.2% 33.3%
llm_core.models.providers 76.4% 56.2%
llm_core.utils 56.8% 22.6%
modeling.module_modeling_llm.module_modeling_llm 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer 43.2% 8.8%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer.parser 79.2% 60.2%
modeling.module_modeling_llm.module_modeling_llm.core 88.9% 50.0%
modeling.module_modeling_llm.module_modeling_llm.models 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.prompts 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.utils 100.0% 50.0%
programming.module_programming_llm.module_programming_llm 100.0% 100.0%
programming.module_programming_llm.module_programming_llm.helpers 27.6% 0.0%
programming.module_programming_llm.module_programming_llm.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm 72.7% 12.5%
text.module_text_llm.module_text_llm.default_approach 66.4% 36.1%
text.module_text_llm.module_text_llm.default_approach.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm.default_approach.schemas 100.0% 100.0%
text.module_text_llm.module_text_llm.divide_and_conquer 34.0% 0.0%
text.module_text_llm.module_text_llm.helpers 55.4% 26.7%
text.module_text_llm.module_text_llm.self_consistency 46.2% 0.0%

Total packages: 31

Note: Coverage thresholds: ✅ (≥70%), ❌ (<70%)

@tamang29 tamang29 added the deploy:athena-test1 Athena Test Server 1 label Dec 9, 2025
@github-actions github-actions bot removed the deploy:athena-test1 Athena Test Server 1 label Dec 9, 2025
@github-actions
Copy link

github-actions bot commented Dec 9, 2025

⚠️ Unable to deploy to test servers ⚠️

The docker build needs to run through before deploying.

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

Athena Test Results Summary

TestsPassed ✅SkippedFailed
Athena Test Report10 ran10 passed0 skipped0 failed

Failing Tests Summary

TestResult
No test annotations available

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

📊 Detailed Coverage Table

Combining 3 coverage files...
Parsing test-results/programming_module_programming_llm_coverage.xml...
Parsing test-results/text_module_text_llm_coverage.xml...
Parsing test-results/modeling_module_modeling_llm_coverage.xml...
Combining duplicate packages...
Creating combined coverage file: test-results/combined_coverage.xml
✅ Combined coverage saved to test-results/combined_coverage.xml
📊 Combined 31 unique packages

📊 Combined Coverage Summary:

Package Line Rate Branch Rate Status
athena 37.8% 3.3%
athena.helpers 100.0% 100.0%
athena.helpers.programming 33.0% 0.0%
athena.helpers.text 0.0% 100.0%
athena.models 0.0% 0.0%
athena.schemas 76.5% 8.3%
athena.storage 21.1% 0.0%
llm_core 100.0% 100.0%
llm_core.core 54.4% 20.8%
llm_core.loaders 79.3% 37.5%
llm_core.loaders.model_loaders 68.1% 34.6%
llm_core.models 66.2% 33.3%
llm_core.models.providers 76.4% 56.2%
llm_core.utils 56.8% 22.6%
modeling.module_modeling_llm.module_modeling_llm 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer 43.2% 8.8%
modeling.module_modeling_llm.module_modeling_llm.apollon_transformer.parser 79.2% 60.2%
modeling.module_modeling_llm.module_modeling_llm.core 88.9% 50.0%
modeling.module_modeling_llm.module_modeling_llm.models 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.prompts 100.0% 100.0%
modeling.module_modeling_llm.module_modeling_llm.utils 100.0% 50.0%
programming.module_programming_llm.module_programming_llm 100.0% 100.0%
programming.module_programming_llm.module_programming_llm.helpers 27.6% 0.0%
programming.module_programming_llm.module_programming_llm.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm 72.7% 12.5%
text.module_text_llm.module_text_llm.default_approach 66.4% 36.1%
text.module_text_llm.module_text_llm.default_approach.prompts 100.0% 100.0%
text.module_text_llm.module_text_llm.default_approach.schemas 100.0% 100.0%
text.module_text_llm.module_text_llm.divide_and_conquer 34.0% 0.0%
text.module_text_llm.module_text_llm.helpers 55.4% 26.7%
text.module_text_llm.module_text_llm.self_consistency 46.2% 0.0%

Total packages: 31

Note: Coverage thresholds: ✅ (≥70%), ❌ (<70%)

@tamang29 tamang29 added the deploy:athena-test1 Athena Test Server 1 label Dec 9, 2025
@github-actions github-actions bot added lock:athena-test1 Is currently deployed to Athena Test Server 1 and removed deploy:athena-test1 Athena Test Server 1 labels Dec 9, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

athena lock:athena-test1 Is currently deployed to Athena Test Server 1

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants