Skip to content

Releases: webtech-network/autograder

0.3.0

07 May 00:17
91035f0

Choose a tag to compare

New Features

  • AST-based Structural Analysis: Introduced a new StructuralAnalysisStep in the grading pipeline using ast-grep to parse submission files once and pass structural roots downstream for static checks.
  • Forbidden Keyword Structural Test: Added forbidden_keyword test support backed by AST queries for reliable construct detection.
  • Multiple Template Support: Pipeline/template loading now supports multiple templates (list or comma-separated), allowing mixed capabilities in a single grading config.
  • Template Split for Static vs Execution Tests: Static code analysis tests were moved to a dedicated static_analysis template, while execution-oriented tests remain in execution templates (e.g., input_output).

Refactors

  • Grader Architecture Cleanup: Extracted SubmissionGrader from GraderService and reorganized grader services for clearer separation of responsibilities and maintainability.

Bug Fixes

  • Multi-template Regression Fixes: Fixed submission_language collision in grading execution, improved template-name normalization/validation, and resolved stale template state in criteria tree service.
  • Static Analysis Reliability: Hardened structural-analysis availability handling and fixed regex escaping edge cases in forbidden-import checks.

What's Changed

  • Abstract syntax tree + forbidden keyword test by @jaoppb in #300
  • refactor: extract SubmissionGrader from GraderService by @jaoppb in #304
  • [Feature] Extract static analysis tests and add multi-template support (#305) by @ArthurCRodrigues in #306

Full Changelog: 0.2.0...0.3.0

0.2.0

23 Apr 10:59
79f80ac

Choose a tag to compare

New Features

  • External Execution Mode: Added a new external execution mode to the GitHub Action, allowing grading configurations to be managed centrally in Autograder Cloud instead of requiring config files in student repositories. The action fetches the grading config by ID from the cloud API, runs the pipeline locally, and exports results back for submission tracking and analytics. Existing repo mode remains the default and is fully backward-compatible.
  • Cloud API Contract: Introduced two new protected endpoints: GET /api/v1/configs/id/{config_id} for fetching grading configurations by internal ID, and POST /api/v1/submissions/external-results for ingesting externally computed grading results. Results are immediately visible through existing submission retrieval endpoints.
  • M2M Bearer Token Authentication: Protected external mode endpoints with machine-to-machine bearer token auth using AUTOGRADER_INTEGRATION_TOKEN. Validation uses hmac.compare_digest to prevent timing attacks. Existing public endpoints are unaffected.
  • Cloud Client and Exporter: Added cloud_client.py for HTTP communication with the cloud API (config fetch + result submission) and cloud_exporter.py for mode-specific result export. The Exporter abstract class now supports export_with_context for richer pipeline-aware exports.
  • Structured Logging Middleware: Added HTTP middleware for X-Request-ID propagation, per-request ContextVar logging, and a JSON formatter with service, env, method, path, status, and duration_ms fields. Configurable via LOG_LEVEL, SERVICE_NAME, and APP_ENV environment variables.

Bug Fixes

  • Grading Step model_config: Fixed model_config being set to forbid, which caused errors during the grading step.
  • Deliberate Execution Error Handling: Restored the except block that was accidentally removed during the asset injection refactor, which caused unhandled exceptions to propagate as raw 500 errors instead of structured SYSTEM_ERROR responses. Error result count now matches the number of requested test cases.

What's Changed

Full Changelog: 0.1.3...0.2.0

0.1.3

14 Apr 23:32
acc0957

Choose a tag to compare

New Features

  • S3-Compatible Asset Injection: Integrated support for grader-owned static assets (datasets, fixtures) stored in S3 buckets. These files are injected into the sandbox using a secure Base64-encoded process, ensuring full compatibility with high-isolation gVisor environments.
  • File Artifact Validation: Introduced the expect_file_artifact test to the Input/Output template. This allows the autograder to extract and validate files generated by student programs during execution, supporting exact, partial, and regex-based matching.

What's Changed

Full Changelog: 1.1.2...0.1.3

0.1.2

12 Apr 02:14
acc0957

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.1.1...1.1.2

0.1.1

07 Apr 10:49
aa8bb54

Choose a tag to compare

New features

  • I8N support
  • AI Execution Refactor

What's Changed

Full Changelog: 0.1.0...0.1.1

0.1.0

31 Mar 16:18
70b4778

Choose a tag to compare

Non Official Stable Release

What's Changed

Full Changelog: 0.0.9...0.1.0

0.0.9

25 Mar 11:23
5cd125e

Choose a tag to compare

What's Changed

Full Changelog: 0.0.8...0.0.9

0.0.8

20 Mar 15:43
ee67b02

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: 0.0.7...0.0.8

0.0.7

16 Mar 21:01
35439d5

Choose a tag to compare

What's Changed

Full Changelog: 0.0.6...0.0.7

0.0.6

11 Mar 09:44
05cd361

Choose a tag to compare

What's Changed

Full Changelog: 0.0.5...0.0.6