Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
126 changes: 126 additions & 0 deletions workflows/tasks/task-gitranker-core-loop-unit-tests/phases.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
{
"task_id": "task-gitranker-core-loop-unit-tests",
"generated_at": "2026-04-16T05:48:14+00:00",
"phases": [
{
"id": "phase-1",
"title": "existing-tests-and-domain-core",
"goal": "Harden existing unit tests and add detailed value/domain/orchestrator coverage for the core feedback loop without expanding beyond narrow unit tests.",
"inputs": [
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
"git-ranker/AGENTS.md",
"git-ranker/src/main/java/com/gitranker/api/domain/",
"git-ranker/src/test/java/"
],
"allowed_write_paths": [
"git-ranker/src/test/java/"
],
"acceptance": {
"commands": [
"cd git-ranker && ./gradlew test --tests 'com.gitranker.api.domain.auth.service.*' --tests 'com.gitranker.api.domain.badge.*' --tests 'com.gitranker.api.domain.log.*' --tests 'com.gitranker.api.domain.ranking.*' --tests 'com.gitranker.api.domain.user.*' --tests 'com.gitranker.api.global.util.*'"
]
},
"test_policy": {
"mode": "require_tests",
"evidence": []
},
"order": 1,
"status": "completed",
"retry_count": 1,
"required_reads": [
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
"git-ranker/AGENTS.md",
"git-ranker/src/main/java/com/gitranker/api/domain/",
"git-ranker/src/test/java/"
],
"starting_points": [
"Read the locked spec for task-gitranker-core-loop-unit-tests.",
"Inspect the active phase goal: Harden existing unit tests and add detailed value/domain/orchestrator coverage for the core feedback loop without expanding beyond narrow unit tests.",
"Confirm allowed write paths and acceptance commands before editing."
],
"deliverables": [
"Harden existing unit tests and add detailed value/domain/orchestrator coverage for the core feedback loop without expanding beyond narrow unit tests."
],
"completion_signal": "phase-1 acceptance commands pass"
},
{
"id": "phase-2",
"title": "batch-feedback-loop-tests",
"goal": "Add fine-grained batch feedback and verification loop unit tests covering boundary cases, skip/retry/error translation, and side effects.",
"inputs": [
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
"git-ranker/src/main/java/com/gitranker/api/batch/",
"git-ranker/src/test/java/"
],
"allowed_write_paths": [
"git-ranker/src/test/java/"
],
"acceptance": {
"commands": [
"cd git-ranker && ./gradlew test --tests 'com.gitranker.api.batch.*'"
]
},
"test_policy": {
"mode": "require_tests",
"evidence": []
},
"order": 2,
"status": "completed",
"retry_count": 1,
"required_reads": [
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
"git-ranker/src/main/java/com/gitranker/api/batch/",
"git-ranker/src/test/java/"
],
"starting_points": [
"Read the locked spec for task-gitranker-core-loop-unit-tests.",
"Inspect the active phase goal: Add fine-grained batch feedback and verification loop unit tests covering boundary cases, skip/retry/error translation, and side effects.",
"Confirm allowed write paths and acceptance commands before editing."
],
"deliverables": [
"Add fine-grained batch feedback and verification loop unit tests covering boundary cases, skip/retry/error translation, and side effects."
],
"completion_signal": "phase-2 acceptance commands pass"
},
{
"id": "phase-3",
"title": "github-infra-and-full-suite",
"goal": "Add exhaustive GitHub collection and error translation unit tests, then confirm the full git-ranker unit-test baseline stays green.",
"inputs": [
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
"git-ranker/src/main/java/com/gitranker/api/infrastructure/github/",
"git-ranker/src/test/java/"
],
"allowed_write_paths": [
"git-ranker/src/test/java/"
],
"acceptance": {
"commands": [
"cd git-ranker && ./gradlew test --tests 'com.gitranker.api.infrastructure.github.*'",
"cd git-ranker && ./gradlew test"
]
},
"test_policy": {
"mode": "require_tests",
"evidence": []
},
"order": 3,
"status": "completed",
"retry_count": 2,
"required_reads": [
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
"git-ranker/src/main/java/com/gitranker/api/infrastructure/github/",
"git-ranker/src/test/java/"
],
"starting_points": [
"Read the locked spec for task-gitranker-core-loop-unit-tests.",
"Inspect the active phase goal: Add exhaustive GitHub collection and error translation unit tests, then confirm the full git-ranker unit-test baseline stays green.",
"Confirm allowed write paths and acceptance commands before editing."
],
"deliverables": [
"Add exhaustive GitHub collection and error translation unit tests, then confirm the full git-ranker unit-test baseline stays green."
],
"completion_signal": "phase-3 acceptance commands pass"
}
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"id": "20260416T055405-c7b7c277",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-1",
"event": "phase_completion",
"commands": [
{
"command": "phase completion",
"status": "passed",
"output": "git-ranker/src/test/java/com/gitranker/api/domain/auth/service/AuthServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/badge/BadgeFormatterTest.java, git-ranker/src/test/java/com/gitranker/api/domain/badge/BadgeServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/badge/SvgBadgeRendererTest.java, git-ranker/src/test/java/com/gitranker/api/domain/log/ActivityLogOrchestratorTest.java, git-ranker/src/test/java/com/gitranker/api/domain/log/ActivityLogServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/log/ActivityLogTest.java, git-ranker/src/test/java/com/gitranker/api/domain/ranking/RankingRecalculationServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/ranking/RankingServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/UserTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserDeletionServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserPersistenceServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserQueryServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserRefreshServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserRegistrationServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/vo/ActivityStatisticsTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/vo/RankInfoTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/vo/ScoreTest.java, git-ranker/src/test/java/com/gitranker/api/global/util/TimeUtilsTest.java"
}
],
"result": "passed",
"evidence": [
"Added domain/value/orchestrator tests and hardened existing unit tests for error, fallback, boundary, and side-effect coverage."
],
"error_fingerprint": null,
"next_action": "verify",
"timestamp": "2026-04-16T05:54:05+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"id": "20260416T055409-7d0a28cb",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-1",
"event": "verification",
"commands": [
{
"command": "cd git-ranker && ./gradlew test --tests 'com.gitranker.api.domain.auth.service.*' --tests 'com.gitranker.api.domain.badge.*' --tests 'com.gitranker.api.domain.log.*' --tests 'com.gitranker.api.domain.ranking.*' --tests 'com.gitranker.api.domain.user.*' --tests 'com.gitranker.api.global.util.*'",
"status": "failed",
"output": "Exception in thread \"main\" java.io.FileNotFoundException: /Users/hyoseok/.gradle/wrapper/dists/gradle-9.2.1-bin/2t0n5ozlw9xmuyvbp7dnzaxug/gradle-9.2.1-bin.zip.lck (Operation not permitted)\n\tat java.base/java.io.RandomAccessFile.open0(Native Method)\n\tat java.base/java.io.RandomAccessFile.open(RandomAccessFile.java:338)\n\tat java.base/java.io.RandomAccessFile.<init>(RandomAccessFile.java:257)\n\tat java.base/java.io.RandomAccessFile.<init>(RandomAccessFile.java:211)\n\tat org.gradle.wrapper.GradleWrapperMain.main(SourceFile:67)"
}
],
"result": "failed",
"evidence": [],
"error_fingerprint": "verification:phase-1:cd git-ranker && ./gradlew test --tests 'com.gitranker.api.domain.auth.service.*' --tests 'com.gitranker.api.domain.badge.*' --tests 'com.gitranker.api.domain.log.*' --tests 'com.gitranker.api.domain.ranking.*' --tests 'com.gitranker.api.domain.user.*' --tests 'com.gitranker.api.global.util.*'",
"next_action": "repair",
"timestamp": "2026-04-16T05:54:09+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"id": "20260416T055443-161dc9a6",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-1",
"event": "reopened",
"commands": [
{
"command": "reopen task",
"status": "passed",
"output": "Verification failed due to sandbox-denied Gradle lock file access; reopen phase to rerun verification with escalated permissions."
}
],
"result": "passed",
"evidence": [
"Verification failed due to sandbox-denied Gradle lock file access; reopen phase to rerun verification with escalated permissions."
],
"error_fingerprint": null,
"next_action": "plan or run",
"timestamp": "2026-04-16T05:54:43+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"id": "20260416T055503-5f5a11e6",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-1",
"event": "phase_completion",
"commands": [
{
"command": "phase completion",
"status": "passed",
"output": "git-ranker/src/test/java/com/gitranker/api/domain/auth/service/AuthServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/badge/BadgeFormatterTest.java, git-ranker/src/test/java/com/gitranker/api/domain/badge/BadgeServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/badge/SvgBadgeRendererTest.java, git-ranker/src/test/java/com/gitranker/api/domain/log/ActivityLogOrchestratorTest.java, git-ranker/src/test/java/com/gitranker/api/domain/log/ActivityLogServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/log/ActivityLogTest.java, git-ranker/src/test/java/com/gitranker/api/domain/ranking/RankingRecalculationServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/ranking/RankingServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/UserTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserDeletionServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserPersistenceServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserQueryServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserRefreshServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/service/UserRegistrationServiceTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/vo/ActivityStatisticsTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/vo/RankInfoTest.java, git-ranker/src/test/java/com/gitranker/api/domain/user/vo/ScoreTest.java, git-ranker/src/test/java/com/gitranker/api/global/util/TimeUtilsTest.java"
}
],
"result": "passed",
"evidence": [
"Reclosed phase-1 after sandbox-related verification repair; code/test changes unchanged."
],
"error_fingerprint": null,
"next_action": "verify",
"timestamp": "2026-04-16T05:55:03+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"id": "20260416T055523-6d34b7f8",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-1",
"event": "verification",
"commands": [
{
"command": "cd git-ranker && ./gradlew test --tests 'com.gitranker.api.domain.auth.service.*' --tests 'com.gitranker.api.domain.badge.*' --tests 'com.gitranker.api.domain.log.*' --tests 'com.gitranker.api.domain.ranking.*' --tests 'com.gitranker.api.domain.user.*' --tests 'com.gitranker.api.global.util.*'",
"status": "passed",
"output": "Starting a Gradle Daemon, 1 incompatible Daemon could not be reused, use --status for details\n> Task :compileJava UP-TO-DATE\n> Task :processResources UP-TO-DATE\n> Task :classes UP-TO-DATE\n> Task :compileTestJava UP-TO-DATE\n> Task :processTestResources NO-SOURCE\n> Task :testClasses UP-TO-DATE\n> Task :test UP-TO-DATE\n\nBUILD SUCCESSFUL in 4s\n4 actionable tasks: 4 up-to-date\nConsider enabling configuration cache to speed up this build: https://docs.gradle.org/9.2.1/userguide/configuration_cache_enabling.html"
}
],
"result": "passed",
"evidence": [],
"error_fingerprint": null,
"next_action": "review",
"timestamp": "2026-04-16T05:55:23+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"id": "20260416T060406-fb8e67a9",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-2",
"event": "phase_completion",
"commands": [
{
"command": "phase completion",
"status": "passed",
"output": "git-ranker/src/test/java/com/gitranker/api/batch/listener/BatchProgressListenerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/listener/GitHubCostListenerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/listener/UserScoreCalculationSkipListenerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/metrics/BatchMetricsTest.java, git-ranker/src/test/java/com/gitranker/api/batch/processor/ScoreRecalculationProcessorTest.java, git-ranker/src/test/java/com/gitranker/api/batch/reader/UserItemReaderTest.java, git-ranker/src/test/java/com/gitranker/api/batch/scheduler/BatchSchedulerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/strategy/ActivityUpdateContextTest.java, git-ranker/src/test/java/com/gitranker/api/batch/strategy/FullActivityUpdateStrategyTest.java, git-ranker/src/test/java/com/gitranker/api/batch/strategy/IncrementalActivityUpdateStrategyTest.java, git-ranker/src/test/java/com/gitranker/api/batch/tasklet/RankingRecalculationTaskletTest.java, git-ranker/src/test/java/com/gitranker/api/batch/writer/UserItemWriterTest.java"
}
],
"result": "passed",
"evidence": [],
"error_fingerprint": null,
"next_action": "verify",
"timestamp": "2026-04-16T06:04:06+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"id": "20260416T060409-cd1b0372",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-2",
"event": "verification",
"commands": [
{
"command": "cd git-ranker && ./gradlew test --tests 'com.gitranker.api.batch.*'",
"status": "failed",
"output": "Exception in thread \"main\" java.io.FileNotFoundException: /Users/hyoseok/.gradle/wrapper/dists/gradle-9.2.1-bin/2t0n5ozlw9xmuyvbp7dnzaxug/gradle-9.2.1-bin.zip.lck (Operation not permitted)\n\tat java.base/java.io.RandomAccessFile.open0(Native Method)\n\tat java.base/java.io.RandomAccessFile.open(RandomAccessFile.java:338)\n\tat java.base/java.io.RandomAccessFile.<init>(RandomAccessFile.java:257)\n\tat java.base/java.io.RandomAccessFile.<init>(RandomAccessFile.java:211)\n\tat org.gradle.wrapper.GradleWrapperMain.main(SourceFile:67)"
}
],
"result": "failed",
"evidence": [],
"error_fingerprint": "verification:phase-2:cd git-ranker && ./gradlew test --tests 'com.gitranker.api.batch.*'",
"next_action": "repair",
"timestamp": "2026-04-16T06:04:09+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"id": "20260416T060425-5d5d570b",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-2",
"event": "reopened",
"commands": [
{
"command": "reopen task",
"status": "passed",
"output": "Verification failed due to sandbox-denied Gradle wrapper lock access; reopen phase to rerun verification with escalated permissions."
}
],
"result": "passed",
"evidence": [
"Verification failed due to sandbox-denied Gradle wrapper lock access; reopen phase to rerun verification with escalated permissions."
],
"error_fingerprint": null,
"next_action": "plan or run",
"timestamp": "2026-04-16T06:04:25+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"id": "20260416T060435-a977ad16",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-2",
"event": "phase_completion",
"commands": [
{
"command": "phase completion",
"status": "passed",
"output": "git-ranker/src/test/java/com/gitranker/api/batch/listener/BatchProgressListenerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/listener/GitHubCostListenerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/listener/UserScoreCalculationSkipListenerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/metrics/BatchMetricsTest.java, git-ranker/src/test/java/com/gitranker/api/batch/processor/ScoreRecalculationProcessorTest.java, git-ranker/src/test/java/com/gitranker/api/batch/reader/UserItemReaderTest.java, git-ranker/src/test/java/com/gitranker/api/batch/scheduler/BatchSchedulerTest.java, git-ranker/src/test/java/com/gitranker/api/batch/strategy/ActivityUpdateContextTest.java, git-ranker/src/test/java/com/gitranker/api/batch/strategy/FullActivityUpdateStrategyTest.java, git-ranker/src/test/java/com/gitranker/api/batch/strategy/IncrementalActivityUpdateStrategyTest.java, git-ranker/src/test/java/com/gitranker/api/batch/tasklet/RankingRecalculationTaskletTest.java, git-ranker/src/test/java/com/gitranker/api/batch/writer/UserItemWriterTest.java"
}
],
"result": "passed",
"evidence": [],
"error_fingerprint": null,
"next_action": "verify",
"timestamp": "2026-04-16T06:04:35+00:00"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"id": "20260416T060618-dd774817",
"task_id": "task-gitranker-core-loop-unit-tests",
"phase_id": "phase-2",
"event": "verification",
"commands": [
{
"command": "cd git-ranker && ./gradlew test --tests 'com.gitranker.api.batch.*'",
"status": "passed",
"output": "> Task :compileJava UP-TO-DATE\n> Task :processResources UP-TO-DATE\n> Task :classes UP-TO-DATE\n> Task :compileTestJava UP-TO-DATE\n> Task :processTestResources NO-SOURCE\n> Task :testClasses UP-TO-DATE\n> Task :test UP-TO-DATE\n\nBUILD SUCCESSFUL in 1s\n4 actionable tasks: 4 up-to-date\nConsider enabling configuration cache to speed up this build: https://docs.gradle.org/9.2.1/userguide/configuration_cache_enabling.html"
}
],
"result": "passed",
"evidence": [],
"error_fingerprint": null,
"next_action": "review",
"timestamp": "2026-04-16T06:06:18+00:00"
}
Loading
Loading