{"id":34670377,"url":"https://github.com/heziode/advent-of-code-ada-spark","last_synced_at":"2026-05-27T03:02:22.204Z","repository":{"id":327307051,"uuid":"1108762728","full_name":"Heziode/advent-of-code-ada-spark","owner":"Heziode","description":"Advent of Code - Ada / SPARK-verified puzzle solutions","archived":false,"fork":false,"pushed_at":"2025-12-13T10:02:16.000Z","size":248,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-12-15T00:28:22.929Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ada","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Heziode.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-12-02T22:12:26.000Z","updated_at":"2025-12-13T10:02:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Heziode/advent-of-code-ada-spark","commit_stats":null,"previous_names":["heziode/advent-of-code-ada-spark"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Heziode/advent-of-code-ada-spark","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heziode%2Fadvent-of-code-ada-spark","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heziode%2Fadvent-of-code-ada-spark/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heziode%2Fadvent-of-code-ada-spark/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heziode%2Fadvent-of-code-ada-spark/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Heziode","download_url":"https://codeload.github.com/Heziode/advent-of-code-ada-spark/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Heziode%2Fadvent-of-code-ada-spark/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33548246,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-12-24T19:54:05.287Z","updated_at":"2026-05-27T03:02:22.197Z","avatar_url":"https://github.com/Heziode.png","language":"Ada","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Advent of Code - SPARK-Verified Solutions\n\nSPARK/Ada solutions for [Advent of Code](https://adventofcode.com/) puzzles with formal verification (Silver level - Absence of Runtime Errors).\n\n## Overview\n\nThis project provides:\n- **SPARK-verified** puzzle solutions with formal proofs of absence of runtime errors\n- **Cascading Alire project structure** supporting multiple years\n- **Shared utility library** (`AoC_Common`) with reusable, proven components\n- **Ada 2022** standard with modern language features\n\n## Project Structure\n\n```\nAdvent_Of_Code/\n├── alire.toml              # Root project manifest\n├── advent_of_code.gpr      # Aggregate project (builds all)\n├── src/\n│   └── aoc_common/         # Shared SPARK-verified library\n│       ├── aoc_common.gpr\n│       └── src/\n│           ├── aoc_common.ads/adb           # Core types (Coordinate, Dimensions)\n│           ├── aoc_common-directions.ads/adb # Cardinal/ordinal directions\n│           ├── aoc_common-grids.ads/adb     # 2D grid utilities\n│           ├── aoc_common-file_io.ads/adb   # File parsing helpers\n│           └── aoc_common-parsing.ads/adb   # String parsing utilities\n└── 2025/\n    ├── aoc_2025.gpr        # Year 2025 aggregate\n    ├── day_01/             # Day 01 solution\n    │   ├── alire.toml\n    │   ├── aoc_2025_day_01.gpr\n    │   ├── src/\n    │   └── share/          # Puzzle input files\n    └── day_02/             # Day 02 solution\n        └── ...\n```\n\n## Requirements\n\n- **GNAT** \u003e= 12 (Ada 2022 support)\n- **Alire** package manager\n- **GNATprove** \u003e= 15.1.0 (for SPARK verification)\n\n## Building\n\n### Build Everything\n\n```bash\nalr build\n```\n\n### Build a Specific Day\n\n```bash\ncd 2025/day_01\nalr build\n```\n\n### Run a Solution\n\n```bash\ncd 2025/day_01\n./bin/main\n```\n\n## SPARK Verification\n\nAll core algorithms are formally verified using GNATprove at Silver level (Absence of Runtime Errors):\n\n```bash\ncd 2025/day_01\nalr exec -- gnatprove -P aoc_2025_day_01.gpr --mode=silver\n```\n\n### Verification Scope\n\n- **Verified (SPARK_Mode =\u003e On):** Pure algorithmic functions, coordinate arithmetic, parsing utilities\n- **Excluded (SPARK_Mode =\u003e Off):** File I/O operations (external effects cannot be formally verified)\n\n## Adding a New Day\n\n1. Copy an existing day scaffold:\n   ```bash\n   cp -r 2025/day_01 2025/day_XX\n   ```\n\n2. Rename packages in all files:\n   - `AoC_2025_Day_01` → `AoC_2025_Day_XX`\n   - Update `alire.toml`, `.gpr`, and source files\n\n3. Update `2025/aoc_2025.gpr` to include the new day\n\n4. Add puzzle input to `share/aoc_2025_day_XX/input.txt`\n\n5. Implement `Solve_Part_1` and `Solve_Part_2`\n\n## Adding a New Year\n\n1. Copy the year structure:\n   ```bash\n   cp -r 2025 YYYY\n   ```\n\n2. Rename all packages from `2025` to `YYYY`\n\n3. Update root `advent_of_code.gpr` to include the new year aggregate\n\n## Completed Puzzles\n\n### 2025\n\n| Day | Title | Part 1 | Part 2 | SPARK |\n|-----|-------|--------|--------|-------|\n| 01 | [Secret Entrance](2025/day_01/) | ⭐ | ⭐ | ✅ |\n| 02 | [Gift Shop](2025/day_02/) | ⭐ | ⭐ | ✅ |\n\n## License\n\nMIT License - Copyright (c) 2025 Heziode\n\n## Links\n\n- [Advent of Code](https://adventofcode.com/)\n- [Alire Package Manager](https://alire.ada.dev/)\n- [SPARK User's Guide](https://docs.adacore.com/spark2014-docs/html/ug/)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheziode%2Fadvent-of-code-ada-spark","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fheziode%2Fadvent-of-code-ada-spark","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fheziode%2Fadvent-of-code-ada-spark/lists"}