---
phase: quick
plan: 001
type: execute
wave: 1
depends_on: []
files_modified:
  - .planning/research/STACK.md
autonomous: true

must_haves:
  truths:
    - "JDK requirement is 21+ in STACK.md"
    - "Rationale explains Loom virtual threads benefit for JDBC blocking operations"
    - "Rationale clarifies ZIO fibers vs JVM virtual threads complementary relationship"
  artifacts:
    - path: ".planning/research/STACK.md"
      provides: "Updated JDK requirement with rationale"
      contains: "JDK | 21+"
  key_links: []
---

<objective>
Update JDK requirement from 17+ to 21+ in the stack documentation.

Purpose: JDK 21 brings Loom virtual threads which benefit JDBC blocking operations used by Quill. While ZIO provides its own fiber system, virtual threads complement ZIO by making blocking escape hatches (like JDBC) "virtually" non-blocking at the JVM level. JDK 21 is LTS (Sept 2023), equally stable as JDK 17.

Output: Updated .planning/research/STACK.md with JDK 21+ requirement and clear rationale
</objective>

<execution_context>
@/home/jin/.claude/get-shit-done/workflows/execute-plan.md
@/home/jin/.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@.planning/PROJECT.md
@.planning/research/STACK.md
</context>

<tasks>

<task type="auto">
  <name>Task 1: Update JDK requirement in research/STACK.md</name>
  <files>.planning/research/STACK.md</files>
  <action>
Update the Language & Runtime table entry for JDK:

FROM:
| JDK | 17+ | Runtime | Required for Scala 3.3.x LTS, widely available, long-term support |

TO:
| JDK | 21+ | Runtime | LTS (Sept 2023), Loom virtual threads benefit JDBC blocking operations in Quill |

Update the notes section after the table to add clarification about ZIO fibers vs Loom:

ADD after existing notes:
- JDK 21+ for Loom virtual threads: While ZIO provides its own fiber system, Quill uses JDBC which does blocking I/O. Virtual threads make these blocking calls "virtually" non-blocking at the JVM level. ZIO can use virtual thread executors for blocking operations, complementing ZIO fibers rather than replacing them.

Also update the Platform Requirements section if it mentions JDK 17 (search for any other JDK version references).
  </action>
  <verify>
grep -n "JDK.*21" .planning/research/STACK.md
grep -n "Loom\|virtual thread" .planning/research/STACK.md
  </verify>
  <done>
- JDK requirement shows 21+ (not 17+)
- Rationale mentions Loom virtual threads
- Explanation of ZIO fibers vs JVM virtual threads relationship included
  </done>
</task>

</tasks>

<verification>
- `grep "JDK | 21+" .planning/research/STACK.md` returns the updated table row
- `grep -i "loom\|virtual thread" .planning/research/STACK.md` returns explanatory text
- No references to JDK 17+ remain as a requirement (17 might still appear in context like "17+ which may limit deployment")
</verification>

<success_criteria>
- JDK requirement updated to 21+
- Rationale explains Loom virtual threads benefit for JDBC/Quill
- Clarifies ZIO fibers and JVM virtual threads are complementary
</success_criteria>

<output>
After completion, create `.planning/quick/001-update-jdk-requirement-to-21-for-loom-vi/001-SUMMARY.md`
</output>
