Skip to content

Commit 85f7083

Browse files
authored
(#100) git-ranker core loop unit 테스트 artifact 기록
- workflow repo에 spec, phases, runs evidence를 추가 - backend issue #88 / PR #89에 대응하는 control-plane 기록을 보존 - review_ready 상태의 task artifact를 publish 가능한 형태로 반영
1 parent f8a93c2 commit 85f7083

33 files changed

Lines changed: 869 additions & 0 deletions
Lines changed: 126 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
{
2+
"task_id": "task-gitranker-core-loop-unit-tests",
3+
"generated_at": "2026-04-16T05:48:14+00:00",
4+
"phases": [
5+
{
6+
"id": "phase-1",
7+
"title": "existing-tests-and-domain-core",
8+
"goal": "Harden existing unit tests and add detailed value/domain/orchestrator coverage for the core feedback loop without expanding beyond narrow unit tests.",
9+
"inputs": [
10+
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
11+
"git-ranker/AGENTS.md",
12+
"git-ranker/src/main/java/com/gitranker/api/domain/",
13+
"git-ranker/src/test/java/"
14+
],
15+
"allowed_write_paths": [
16+
"git-ranker/src/test/java/"
17+
],
18+
"acceptance": {
19+
"commands": [
20+
"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.*'"
21+
]
22+
},
23+
"test_policy": {
24+
"mode": "require_tests",
25+
"evidence": []
26+
},
27+
"order": 1,
28+
"status": "completed",
29+
"retry_count": 1,
30+
"required_reads": [
31+
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
32+
"git-ranker/AGENTS.md",
33+
"git-ranker/src/main/java/com/gitranker/api/domain/",
34+
"git-ranker/src/test/java/"
35+
],
36+
"starting_points": [
37+
"Read the locked spec for task-gitranker-core-loop-unit-tests.",
38+
"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.",
39+
"Confirm allowed write paths and acceptance commands before editing."
40+
],
41+
"deliverables": [
42+
"Harden existing unit tests and add detailed value/domain/orchestrator coverage for the core feedback loop without expanding beyond narrow unit tests."
43+
],
44+
"completion_signal": "phase-1 acceptance commands pass"
45+
},
46+
{
47+
"id": "phase-2",
48+
"title": "batch-feedback-loop-tests",
49+
"goal": "Add fine-grained batch feedback and verification loop unit tests covering boundary cases, skip/retry/error translation, and side effects.",
50+
"inputs": [
51+
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
52+
"git-ranker/src/main/java/com/gitranker/api/batch/",
53+
"git-ranker/src/test/java/"
54+
],
55+
"allowed_write_paths": [
56+
"git-ranker/src/test/java/"
57+
],
58+
"acceptance": {
59+
"commands": [
60+
"cd git-ranker && ./gradlew test --tests 'com.gitranker.api.batch.*'"
61+
]
62+
},
63+
"test_policy": {
64+
"mode": "require_tests",
65+
"evidence": []
66+
},
67+
"order": 2,
68+
"status": "completed",
69+
"retry_count": 1,
70+
"required_reads": [
71+
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
72+
"git-ranker/src/main/java/com/gitranker/api/batch/",
73+
"git-ranker/src/test/java/"
74+
],
75+
"starting_points": [
76+
"Read the locked spec for task-gitranker-core-loop-unit-tests.",
77+
"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.",
78+
"Confirm allowed write paths and acceptance commands before editing."
79+
],
80+
"deliverables": [
81+
"Add fine-grained batch feedback and verification loop unit tests covering boundary cases, skip/retry/error translation, and side effects."
82+
],
83+
"completion_signal": "phase-2 acceptance commands pass"
84+
},
85+
{
86+
"id": "phase-3",
87+
"title": "github-infra-and-full-suite",
88+
"goal": "Add exhaustive GitHub collection and error translation unit tests, then confirm the full git-ranker unit-test baseline stays green.",
89+
"inputs": [
90+
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
91+
"git-ranker/src/main/java/com/gitranker/api/infrastructure/github/",
92+
"git-ranker/src/test/java/"
93+
],
94+
"allowed_write_paths": [
95+
"git-ranker/src/test/java/"
96+
],
97+
"acceptance": {
98+
"commands": [
99+
"cd git-ranker && ./gradlew test --tests 'com.gitranker.api.infrastructure.github.*'",
100+
"cd git-ranker && ./gradlew test"
101+
]
102+
},
103+
"test_policy": {
104+
"mode": "require_tests",
105+
"evidence": []
106+
},
107+
"order": 3,
108+
"status": "completed",
109+
"retry_count": 2,
110+
"required_reads": [
111+
"workflows/tasks/task-gitranker-core-loop-unit-tests/spec.md",
112+
"git-ranker/src/main/java/com/gitranker/api/infrastructure/github/",
113+
"git-ranker/src/test/java/"
114+
],
115+
"starting_points": [
116+
"Read the locked spec for task-gitranker-core-loop-unit-tests.",
117+
"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.",
118+
"Confirm allowed write paths and acceptance commands before editing."
119+
],
120+
"deliverables": [
121+
"Add exhaustive GitHub collection and error translation unit tests, then confirm the full git-ranker unit-test baseline stays green."
122+
],
123+
"completion_signal": "phase-3 acceptance commands pass"
124+
}
125+
]
126+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"id": "20260416T055405-c7b7c277",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-1",
5+
"event": "phase_completion",
6+
"commands": [
7+
{
8+
"command": "phase completion",
9+
"status": "passed",
10+
"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"
11+
}
12+
],
13+
"result": "passed",
14+
"evidence": [
15+
"Added domain/value/orchestrator tests and hardened existing unit tests for error, fallback, boundary, and side-effect coverage."
16+
],
17+
"error_fingerprint": null,
18+
"next_action": "verify",
19+
"timestamp": "2026-04-16T05:54:05+00:00"
20+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"id": "20260416T055409-7d0a28cb",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-1",
5+
"event": "verification",
6+
"commands": [
7+
{
8+
"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.*'",
9+
"status": "failed",
10+
"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)"
11+
}
12+
],
13+
"result": "failed",
14+
"evidence": [],
15+
"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.*'",
16+
"next_action": "repair",
17+
"timestamp": "2026-04-16T05:54:09+00:00"
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"id": "20260416T055443-161dc9a6",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-1",
5+
"event": "reopened",
6+
"commands": [
7+
{
8+
"command": "reopen task",
9+
"status": "passed",
10+
"output": "Verification failed due to sandbox-denied Gradle lock file access; reopen phase to rerun verification with escalated permissions."
11+
}
12+
],
13+
"result": "passed",
14+
"evidence": [
15+
"Verification failed due to sandbox-denied Gradle lock file access; reopen phase to rerun verification with escalated permissions."
16+
],
17+
"error_fingerprint": null,
18+
"next_action": "plan or run",
19+
"timestamp": "2026-04-16T05:54:43+00:00"
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"id": "20260416T055503-5f5a11e6",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-1",
5+
"event": "phase_completion",
6+
"commands": [
7+
{
8+
"command": "phase completion",
9+
"status": "passed",
10+
"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"
11+
}
12+
],
13+
"result": "passed",
14+
"evidence": [
15+
"Reclosed phase-1 after sandbox-related verification repair; code/test changes unchanged."
16+
],
17+
"error_fingerprint": null,
18+
"next_action": "verify",
19+
"timestamp": "2026-04-16T05:55:03+00:00"
20+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"id": "20260416T055523-6d34b7f8",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-1",
5+
"event": "verification",
6+
"commands": [
7+
{
8+
"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.*'",
9+
"status": "passed",
10+
"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"
11+
}
12+
],
13+
"result": "passed",
14+
"evidence": [],
15+
"error_fingerprint": null,
16+
"next_action": "review",
17+
"timestamp": "2026-04-16T05:55:23+00:00"
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"id": "20260416T060406-fb8e67a9",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-2",
5+
"event": "phase_completion",
6+
"commands": [
7+
{
8+
"command": "phase completion",
9+
"status": "passed",
10+
"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"
11+
}
12+
],
13+
"result": "passed",
14+
"evidence": [],
15+
"error_fingerprint": null,
16+
"next_action": "verify",
17+
"timestamp": "2026-04-16T06:04:06+00:00"
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"id": "20260416T060409-cd1b0372",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-2",
5+
"event": "verification",
6+
"commands": [
7+
{
8+
"command": "cd git-ranker && ./gradlew test --tests 'com.gitranker.api.batch.*'",
9+
"status": "failed",
10+
"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)"
11+
}
12+
],
13+
"result": "failed",
14+
"evidence": [],
15+
"error_fingerprint": "verification:phase-2:cd git-ranker && ./gradlew test --tests 'com.gitranker.api.batch.*'",
16+
"next_action": "repair",
17+
"timestamp": "2026-04-16T06:04:09+00:00"
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"id": "20260416T060425-5d5d570b",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-2",
5+
"event": "reopened",
6+
"commands": [
7+
{
8+
"command": "reopen task",
9+
"status": "passed",
10+
"output": "Verification failed due to sandbox-denied Gradle wrapper lock access; reopen phase to rerun verification with escalated permissions."
11+
}
12+
],
13+
"result": "passed",
14+
"evidence": [
15+
"Verification failed due to sandbox-denied Gradle wrapper lock access; reopen phase to rerun verification with escalated permissions."
16+
],
17+
"error_fingerprint": null,
18+
"next_action": "plan or run",
19+
"timestamp": "2026-04-16T06:04:25+00:00"
20+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"id": "20260416T060435-a977ad16",
3+
"task_id": "task-gitranker-core-loop-unit-tests",
4+
"phase_id": "phase-2",
5+
"event": "phase_completion",
6+
"commands": [
7+
{
8+
"command": "phase completion",
9+
"status": "passed",
10+
"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"
11+
}
12+
],
13+
"result": "passed",
14+
"evidence": [],
15+
"error_fingerprint": null,
16+
"next_action": "verify",
17+
"timestamp": "2026-04-16T06:04:35+00:00"
18+
}

0 commit comments

Comments
 (0)