{"ts":"2026-09-02T12:43:49+09:00","date":"2026-09-02","project":"ReSSO merged PR #2; weekly released v0.281.0 (수동 동기화","result":"러너 git 식별자 미설정 수정)"}
{"ts":"2026-09-02T12:45:07+09:00","date":"2026-09-02","project":"Clustara","result":"merged (옛 러너 경로에서 수행된 회차 원장 이관)"}
{"ts":"2026-09-02T12:46:15+09:00","date":"2026-09-02","project":"AgentHub","result":"release-only, released v0.226.0"}
{"ts":"2026-09-02T13:08:36+09:00","date":"2026-09-02","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/101, release released"}
{"ts":"2026-09-02T13:17:44+09:00","date":"2026-09-02","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/1, release released"}
{"ts":"2026-09-02T13:24:40+09:00","date":"2026-09-02","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/1, release skipped"}
{"ts":"2026-09-02T13:39:37+09:00","date":"2026-09-02","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/1, release skipped"}
{"ts":"2026-09-02T13:45:03+09:00","date":"2026-09-02","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/1, release skipped"}
{"ts":"2026-09-02T13:56:58+09:00","date":"2026-09-02","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/1, released v2.1.1"}
{"ts":"2026-09-02T14:00:41+09:00","date":"2026-09-02","project":"dataworks","result":"no change"}
{"ts":"2026-09-02T14:10:39+09:00","date":"2026-09-02","project":"git-ctx","result":"no change"}
{"ts":"2026-09-02T14:20:51+09:00","date":"2026-09-02","project":"igame","result":"no change"}
{"ts":"2026-09-02T14:38:48+09:00","date":"2026-09-02","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/1, released v0.227.0"}
{"ts":"2026-09-02T14:48:11+09:00","date":"2026-09-02","project":"moina","result":"merged https://github.com/hkjang/moina/pull/1, released v0.1.16"}
{"ts":"2026-09-02T15:00:48+09:00","date":"2026-09-02","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/1, released v0.2.10"}
{"ts":"2026-09-02T15:18:30+09:00","date":"2026-09-02","project":"muni","result":"merged https://github.com/hkjang/muni/pull/1, released v0.22.0"}
{"ts":"2026-09-02T15:26:10+09:00","date":"2026-09-02","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/1, release released"}
{"ts":"2026-09-02T15:50:21+09:00","date":"2026-09-02","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/1, release released"}
{"ts":"2026-09-02T16:07:10+09:00","date":"2026-09-02","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/1, released v0.5.1"}
{"ts":"2026-09-02T16:17:39+09:00","date":"2026-09-02","project":"relio","result":"merged https://github.com/hkjang/relio/pull/1, released v1.11.8"}
{"ts":"2026-09-02T16:30:21+09:00","date":"2026-09-02","project":"umm","result":"merged https://github.com/hkjang/umm/pull/131, release released"}
{"ts":"2026-09-02T16:32:23+09:00","date":"2026-09-02","project":"Vendra/ai-admin/pii-masker/ptium","result":"태그 사후 푸시 및 Release 생성"}
{"ts":"2026-09-02T16:40:15+09:00","date":"2026-09-02","project":"ReSSO","result":"release-only, released v0.9.66"}
{"ts":"2026-09-02T17:02:51+09:00","date":"2026-09-02","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/1, release missing"}
{"ts":"2026-09-02T17:27:47+09:00","date":"2026-09-02","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/2, released v0.282.0"}
{"ts":"2026-09-02T17:38:41+09:00","date":"2026-09-02","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/2, released v0.227.0"}
{"ts":"2026-09-02T17:41:33+09:00","date":"2026-09-02","project":"Clustara","result":"release-only, released v0.9.262"}
{"ts":"2026-09-02T18:00:26+09:00","date":"2026-09-02","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/2, released v0.9.263"}
{"ts":"2026-09-02T18:20:44+09:00","date":"2026-09-02","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/2, released v0.2.19"}
{"ts":"2026-09-02T19:01:29+09:00","date":"2026-09-02","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/102, released v0.7.36"}
{"ts":"2026-09-02T19:17:33+09:00","date":"2026-09-02","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/2, released v1.2.2"}
{"ts":"2026-09-02T19:26:11+09:00","date":"2026-09-02","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/2, release skipped"}
{"ts":"2026-09-02T19:35:59+09:00","date":"2026-09-02","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/2, release skipped"}
{"ts":"2026-09-02T19:48:07+09:00","date":"2026-09-02","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/2, release skipped"}
{"ts":"2026-09-02T19:56:10+09:00","date":"2026-09-02","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/2, released v2.1.2"}
{"ts":"2026-09-02T20:32:28+09:00","date":"2026-09-02","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/14, release missing"}
{"ts":"2026-09-02T20:47:50+09:00","date":"2026-09-02","project":"igame","result":"merged https://github.com/hkjang/igame/pull/1, release missing"}
{"ts":"2026-09-02T20:56:46+09:00","date":"2026-09-02","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/2, released v0.229.0"}
{"ts":"2026-09-02T21:08:10+09:00","date":"2026-09-02","project":"moina","result":"merged https://github.com/hkjang/moina/pull/2, released v0.1.17"}
{"ts":"2026-09-02T21:20:20+09:00","date":"2026-09-02","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/2, released v0.2.11"}
{"ts":"2026-09-02T21:39:10+09:00","date":"2026-09-02","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/3, released v0.2.12"}
{"ts":"2026-09-02T21:47:26+09:00","date":"2026-09-02","project":"muni","result":"merged https://github.com/hkjang/muni/pull/2, released v0.23.0"}
{"ts":"2026-09-02T21:55:11+09:00","date":"2026-09-02","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/2, released v1.0.5"}
{"ts":"2026-09-02T22:08:13+09:00","date":"2026-09-02","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/2, release missing"}
{"ts":"2026-09-02T22:19:32+09:00","date":"2026-09-02","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/2, released v0.5.2"}
{"ts":"2026-09-02T22:29:35+09:00","date":"2026-09-02","project":"relio","result":"merged https://github.com/hkjang/relio/pull/2, released v1.11.9"}
{"ts":"2026-09-02T22:44:24+09:00","date":"2026-09-02","project":"umm","result":"merged https://github.com/hkjang/umm/pull/132, released v0.66.0"}
{"ts":"2026-09-02T23:03:41+09:00","date":"2026-09-02","project":"vibe-coders","result":"PR "}
{"ts":"2026-09-02T23:18:00+09:00","date":"2026-09-02","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/2, released v2.6.1"}
{"ts":"2026-09-03T00:01:09+09:00","date":"2026-09-02","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/3, released v0.283.0"}
{"ts":"2026-09-03T00:17:48+09:00","date":"2026-09-03","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/3, released v0.228.0"}
{"ts":"2026-09-03T00:29:50+09:00","date":"2026-09-03","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/3, released v0.9.264"}
{"ts":"2026-09-03T00:39:00+09:00","date":"2026-09-03","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/3, released v0.2.20"}
{"ts":"2026-09-03T00:46:03+09:00","date":"2026-09-03","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/1, release skipped"}
{"ts":"2026-09-03T01:04:28+09:00","date":"2026-09-03","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/4, released v0.9.67"}
{"ts":"2026-09-03T01:22:31+09:00","date":"2026-09-03","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/103, released v0.7.37"}
{"ts":"2026-09-03T01:36:32+09:00","date":"2026-09-03","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/3, released v1.2.3"}
{"ts":"2026-09-03T01:47:31+09:00","date":"2026-09-03","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/3, release skipped"}
{"ts":"2026-09-03T01:55:43+09:00","date":"2026-09-03","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/3, release skipped"}
{"ts":"2026-09-03T02:07:31+09:00","date":"2026-09-03","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/3, release skipped"}
{"ts":"2026-09-03T02:16:11+09:00","date":"2026-09-03","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/3, released v2.1.3"}
{"ts":"2026-09-03T02:29:10+09:00","date":"2026-09-03","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/2, released v0.9.37"}
{"ts":"2026-09-03T02:40:13+09:00","date":"2026-09-03","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/15, release missing"}
{"ts":"2026-09-03T02:56:36+09:00","date":"2026-09-03","project":"igame","result":"merged https://github.com/hkjang/igame/pull/2, released v0.7.2"}
{"ts":"2026-09-03T03:06:21+09:00","date":"2026-09-03","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/3, released v0.230.0"}
{"ts":"2026-09-03T03:22:37+09:00","date":"2026-09-03","project":"moina","result":"merged https://github.com/hkjang/moina/pull/3, released v0.1.18"}
{"ts":"2026-09-03T03:44:35+09:00","date":"2026-09-03","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/4, released v0.2.13"}
{"ts":"2026-09-03T04:00:01+09:00","date":"2026-09-03","project":"muni","result":"merged https://github.com/hkjang/muni/pull/3, released v0.24.0"}
{"ts":"2026-09-03T04:16:38+09:00","date":"2026-09-03","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/3, released v1.0.6"}
{"ts":"2026-09-03T04:28:02+09:00","date":"2026-09-03","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/3, released v1.69.21"}
{"ts":"2026-09-03T04:36:10+09:00","date":"2026-09-03","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/3, released v0.5.3"}
{"ts":"2026-09-03T04:47:28+09:00","date":"2026-09-03","project":"relio","result":"merged https://github.com/hkjang/relio/pull/3, released v1.11.10"}
{"ts":"2026-09-03T05:00:55+09:00","date":"2026-09-03","project":"umm","result":"merged https://github.com/hkjang/umm/pull/133, released v0.66.1"}
{"ts":"2026-09-03T05:19:24+09:00","date":"2026-09-03","project":"vibe-coders","result":"merged https://github.com/hkjang/vibe-coders/pull/9, released v0.82.0"}
{"ts":"2026-09-03T05:26:09+09:00","date":"2026-09-03","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/3, release missing"}
{"ts":"2026-09-03T06:06:28+09:00","date":"2026-09-03","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/4, released v0.284.0"}
{"ts":"2026-09-03T06:18:40+09:00","date":"2026-09-03","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/4, released v0.229.0"}
{"ts":"2026-09-03T06:29:43+09:00","date":"2026-09-03","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/4, released v0.9.265"}
{"ts":"2026-09-03T06:39:09+09:00","date":"2026-09-03","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/4, released v0.2.21"}
{"ts":"2026-09-03T06:43:51+09:00","date":"2026-09-03","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/2, release skipped"}
{"ts":"2026-09-03T07:05:38+09:00","date":"2026-09-03","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/5, released v0.9.68"}
{"ts":"2026-09-03T07:21:38+09:00","date":"2026-09-03","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/104, released v0.7.38"}
{"ts":"2026-09-03T07:35:53+09:00","date":"2026-09-03","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/4, release skipped"}
{"ts":"2026-09-03T07:46:51+09:00","date":"2026-09-03","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/4, release skipped"}
{"ts":"2026-09-03T07:56:10+09:00","date":"2026-09-03","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/5, release skipped"}
{"ts":"2026-09-03T08:05:36+09:00","date":"2026-09-03","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/4, released v2.1.4"}
{"ts":"2026-09-03T08:16:42+09:00","date":"2026-09-03","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/3, released v0.9.38"}
{"ts":"2026-09-03T08:26:10+09:00","date":"2026-09-03","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/4, released v0.9.39"}
{"ts":"2026-09-03T08:37:35+09:00","date":"2026-09-03","project":"igame","result":"merged https://github.com/hkjang/igame/pull/3, released v0.7.3"}
{"ts":"2026-09-03T08:49:59+09:00","date":"2026-09-03","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/4, released v0.231.0"}
{"ts":"2026-09-03T09:09:03+09:00","date":"2026-09-03","project":"moina","result":"merged https://github.com/hkjang/moina/pull/4, released v0.1.19"}
{"ts":"2026-09-03T09:27:26+09:00","date":"2026-09-03","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/5, released v0.2.14"}
{"ts":"2026-09-03T09:38:29+09:00","date":"2026-09-03","project":"muni","result":"merged https://github.com/hkjang/muni/pull/4, released v0.25.0"}
{"ts":"2026-09-03T09:46:26+09:00","date":"2026-09-03","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/4, released v1.0.7"}
{"ts":"2026-09-03T09:57:59+09:00","date":"2026-09-03","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/4, released v1.69.22"}
{"ts":"2026-09-03T10:05:39+09:00","date":"2026-09-03","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/4, release missing"}
{"ts":"2026-09-03T10:16:29+09:00","date":"2026-09-03","project":"relio","result":"merged https://github.com/hkjang/relio/pull/4, released v1.11.11"}
{"ts":"2026-09-03T10:31:00+09:00","date":"2026-09-03","project":"umm","result":"merged https://github.com/hkjang/umm/pull/135, released v0.66.3"}
{"ts":"2026-09-03T10:47:46+09:00","date":"2026-09-03","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/4, release missing"}
{"ts":"2026-09-03T11:28:26+09:00","date":"2026-09-03","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/5, released v0.285.0"}
{"ts":"2026-09-03T11:40:34+09:00","date":"2026-09-03","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/5, released v0.230.0"}
{"ts":"2026-09-03T12:04:59+09:00","date":"2026-09-03","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/5, released v0.9.266"}
{"ts":"2026-09-03T12:20:13+09:00","date":"2026-09-03","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/5, released v0.2.22"}
{"ts":"2026-09-03T12:49:33+09:00","date":"2026-09-03","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/6, release missing"}
{"ts":"2026-09-03T13:03:44+09:00","date":"2026-09-03","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/105, released v0.7.39"}
{"ts":"2026-09-03T13:20:54+09:00","date":"2026-09-03","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/4, released v1.2.4"}
{"ts":"2026-09-03T13:35:44+09:00","date":"2026-09-03","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/5, release skipped"}
{"ts":"2026-09-03T13:47:01+09:00","date":"2026-09-03","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/1, release skipped"}
{"ts":"2026-09-03T13:56:28+09:00","date":"2026-09-03","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/6, release skipped"}
{"ts":"2026-09-03T14:06:44+09:00","date":"2026-09-03","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/4, release skipped"}
{"ts":"2026-09-03T14:18:51+09:00","date":"2026-09-03","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/5, released v0.9.40"}
{"ts":"2026-09-03T14:30:23+09:00","date":"2026-09-03","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/16, released v0.77.3"}
{"ts":"2026-09-03T14:47:44+09:00","date":"2026-09-03","project":"igame","result":"merged https://github.com/hkjang/igame/pull/4, released v0.7.4"}
{"ts":"2026-09-03T14:58:10+09:00","date":"2026-09-03","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/1, released v1.3.0"}
{"ts":"2026-09-03T15:10:59+09:00","date":"2026-09-03","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/5, released v0.232.0"}
{"ts":"2026-09-03T15:33:41+09:00","date":"2026-09-03","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/6, released v0.233.0"}
{"ts":"2026-09-03T15:48:39+09:00","date":"2026-09-03","project":"moina","result":"merged https://github.com/hkjang/moina/pull/5, released v0.1.20"}
{"ts":"2026-09-03T16:10:50+09:00","date":"2026-09-03","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/6, release missing"}
{"ts":"2026-09-03T16:29:02+09:00","date":"2026-09-03","project":"muni","result":"merged https://github.com/hkjang/muni/pull/5, released v0.26.0"}
{"ts":"2026-09-03T16:38:37+09:00","date":"2026-09-03","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/5, released v1.0.8"}
{"ts":"2026-09-03T16:46:28+09:00","date":"2026-09-03","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/5, released v1.69.23"}
{"ts":"2026-09-03T17:03:23+09:00","date":"2026-09-03","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/5, released v0.5.5"}
{"ts":"2026-09-03T17:17:29+09:00","date":"2026-09-03","project":"relio","result":"merged https://github.com/hkjang/relio/pull/5, released v1.11.12"}
{"ts":"2026-09-03T17:31:40+09:00","date":"2026-09-03","project":"umm","result":"merged https://github.com/hkjang/umm/pull/137, released v0.67.1"}
{"ts":"2026-09-03T17:50:20+09:00","date":"2026-09-03","project":"vibe-coders","result":"merged https://github.com/hkjang/vibe-coders/pull/11, release missing"}
{"ts":"2026-09-03T18:08:15+09:00","date":"2026-09-03","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/5, released v2.6.2"}
{"ts":"2026-09-03T19:17:38+09:00","date":"2026-09-03","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/6, released v0.286.0"}
{"ts":"2026-09-03T19:47:06+09:00","date":"2026-09-03","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/6, released v0.231.0"}
{"ts":"2026-09-03T20:00:27+09:00","date":"2026-09-03","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/6, released v0.9.267"}
{"ts":"2026-09-03T20:22:15+09:00","date":"2026-09-03","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/6, released v0.2.23"}
{"ts":"2026-09-03T20:39:26+09:00","date":"2026-09-03","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/4, release skipped"}
{"ts":"2026-09-03T20:51:03+09:00","date":"2026-09-03","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/7, release missing"}
{"ts":"2026-09-03T21:14:55+09:00","date":"2026-09-03","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/106, released v0.7.40"}
{"ts":"2026-09-03T21:43:53+09:00","date":"2026-09-03","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/5, released v1.2.5, ASSETS MISSING"}
{"ts":"2026-09-03T21:58:41+09:00","date":"2026-09-03","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/6, release skipped"}
{"ts":"2026-09-03T22:04:51+09:00","date":"2026-09-03","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/2, release skipped"}
{"ts":"2026-09-03T22:15:55+09:00","date":"2026-09-03","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/7, release skipped"}
{"ts":"2026-09-03T22:23:42+09:00","date":"2026-09-03","project":"aiportal-py","result":"no change"}
{"ts":"2026-09-03T22:35:28+09:00","date":"2026-09-03","project":"dataworks","result":"no change"}
{"ts":"2026-09-03T22:44:46+09:00","date":"2026-09-03","project":"git-ctx","result":"no change"}
{"ts":"2026-09-03T22:53:53+09:00","date":"2026-09-03","project":"igame","result":"no change"}
{"ts":"2026-09-03T23:04:12+09:00","date":"2026-09-03","project":"jupiq","result":"no change"}
{"ts":"2026-09-03T23:21:20+09:00","date":"2026-09-03","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/7, release missing"}
{"ts":"2026-09-03T23:34:02+09:00","date":"2026-09-03","project":"moina","result":"no change"}
{"ts":"2026-09-03T23:43:49+09:00","date":"2026-09-03","project":"moyro","result":"no change"}
{"ts":"2026-09-03T23:50:43+09:00","date":"2026-09-03","project":"muni","result":"no change"}
{"ts":"2026-09-04T00:11:27+09:00","date":"2026-09-04","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/6, released v1.0.9"}
{"ts":"2026-09-04T00:28:10+09:00","date":"2026-09-04","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/6, released v1.69.24"}
{"ts":"2026-09-04T00:33:47+09:00","date":"2026-09-04","project":"releasedock","result":"no change"}
{"ts":"2026-09-04T00:50:24+09:00","date":"2026-09-04","project":"relio","result":"merged https://github.com/hkjang/relio/pull/6, released v1.11.13"}
{"ts":"2026-09-04T01:10:29+09:00","date":"2026-09-04","project":"umm","result":"merged https://github.com/hkjang/umm/pull/138, released v0.67.2"}
{"ts":"2026-09-04T01:51:28+09:00","date":"2026-09-04","project":"vibe-coders","result":"merged https://github.com/hkjang/vibe-coders/pull/12, released v0.82.2 +7 assets"}
{"ts":"2026-09-04T02:09:51+09:00","date":"2026-09-04","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/6, released v2.6.3"}
{"ts":"2026-09-04T02:53:20+09:00","date":"2026-09-04","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/7, release missing"}
{"ts":"2026-09-04T03:25:03+09:00","date":"2026-09-04","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/7, released v0.232.0"}
{"ts":"2026-09-04T03:41:02+09:00","date":"2026-09-04","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/7, released v0.9.268"}
{"ts":"2026-09-04T04:01:23+09:00","date":"2026-09-04","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/7, released v0.2.24"}
{"ts":"2026-09-04T04:14:56+09:00","date":"2026-09-04","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/6, release skipped"}
{"ts":"2026-09-04T04:46:56+09:00","date":"2026-09-04","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/8, released v0.9.69"}
{"ts":"2026-09-04T05:13:24+09:00","date":"2026-09-04","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/6, released v1.2.6, ASSETS MISSING"}
{"ts":"2026-09-04T05:30:51+09:00","date":"2026-09-04","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/7, release skipped"}
{"ts":"2026-09-04T05:45:54+09:00","date":"2026-09-04","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/3, release skipped"}
{"ts":"2026-09-04T05:56:58+09:00","date":"2026-09-04","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/8, release skipped"}
{"ts":"2026-09-04T06:09:30+09:00","date":"2026-09-04","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/5, release skipped"}
{"ts":"2026-09-04T06:20:59+09:00","date":"2026-09-04","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/6, released v0.9.41"}
{"ts":"2026-09-04T06:56:47+09:00","date":"2026-09-04","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/17, released v0.77.4"}
{"ts":"2026-09-04T06:58:55+09:00","date":"2026-09-04","project":"pii-masker","result":"assets-only, assets for v1.0.9 +1 assets"}
{"ts":"2026-09-04T07:00:27+09:00","date":"2026-09-04","project":"dataworks","result":"assets-only, assets failed"}
{"ts":"2026-09-04T07:02:07+09:00","date":"2026-09-04","project":"Clustara","result":"assets-only, assets for v0.9.268 +3 assets"}
{"ts":"2026-09-04T07:04:37+09:00","date":"2026-09-04","project":"ptium","result":"assets-only, assets missing"}
{"ts":"2026-09-04T07:06:26+09:00","date":"2026-09-04","project":"Invenqor","result":"assets-only, assets missing"}
{"ts":"2026-09-04T07:20:08+09:00","date":"2026-09-04","project":"igame","result":"merged https://github.com/hkjang/igame/pull/5, release failed"}
{"ts":"2026-09-04T08:18:12+09:00","date":"2026-09-04","project":"igame","result":"merged https://github.com/hkjang/igame/pull/6, released v0.7.5, ASSETS MISSING"}
{"ts":"2026-09-04T08:40:01+09:00","date":"2026-09-04","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/2, released v1.4.0, ASSETS MISSING"}
{"ts":"2026-09-04T09:11:05+09:00","date":"2026-09-04","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/8, released v0.235.0"}
{"ts":"2026-09-04T09:27:40+09:00","date":"2026-09-04","project":"moina","result":"merged https://github.com/hkjang/moina/pull/6, release missing"}
{"ts":"2026-09-04T10:01:08+09:00","date":"2026-09-04","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/7, released v0.2.15, ASSETS MISSING"}
{"ts":"2026-09-04T10:20:29+09:00","date":"2026-09-04","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/7, released v1.69.25 +7 assets"}
{"ts":"2026-09-04T10:40:54+09:00","date":"2026-09-04","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/8, released v1.69.26 +7 assets"}
{"ts":"2026-09-04T10:42:36+09:00","date":"2026-09-04","project":"dataworks","result":"assets-only, assets for v0.9.41 +1 assets"}
{"ts":"2026-09-04T10:44:55+09:00","date":"2026-09-04","project":"ptium","result":"assets-only, assets for v1.69.26 +7 assets"}
{"ts":"2026-09-04T10:56:34+09:00","date":"2026-09-04","project":"Invenqor","result":"assets-only, assets for v0.2.24 +25 assets"}
{"ts":"2026-09-04T10:58:19+09:00","date":"2026-09-04","project":"pii-masker","result":"assets-only v1.0.8, assets for v1.0.8 +1 assets"}
{"ts":"2026-09-04T11:00:30+09:00","date":"2026-09-04","project":"pii-masker","result":"assets-only v1.0.7, assets for v1.0.7 +1 assets"}
{"ts":"2026-09-04T11:02:02+09:00","date":"2026-09-04","project":"pii-masker","result":"assets-only v1.0.6, assets for v1.0.6 +1 assets"}
{"ts":"2026-09-04T11:03:35+09:00","date":"2026-09-04","project":"pii-masker","result":"assets-only v1.0.5, assets for v1.0.5 +1 assets"}
{"ts":"2026-09-04T11:05:04+09:00","date":"2026-09-04","project":"pii-masker","result":"assets-only v1.0.4, assets for v1.0.4 +1 assets"}
{"ts":"2026-09-04T11:06:47+09:00","date":"2026-09-04","project":"dataworks","result":"assets-only v0.9.40, assets for v0.9.40 +1 assets"}
{"ts":"2026-09-04T11:08:19+09:00","date":"2026-09-04","project":"dataworks","result":"assets-only v0.9.39, assets for v0.9.39 +1 assets"}
{"ts":"2026-09-04T11:09:53+09:00","date":"2026-09-04","project":"dataworks","result":"assets-only v0.9.38, assets for v0.9.38 +1 assets"}
{"ts":"2026-09-04T11:11:36+09:00","date":"2026-09-04","project":"dataworks","result":"assets-only v0.9.37, assets for v0.9.37 +1 assets"}
{"ts":"2026-09-04T11:13:06+09:00","date":"2026-09-04","project":"dataworks","result":"assets-only v0.9.36, assets for v0.9.36 +1 assets"}
{"ts":"2026-09-04T11:14:42+09:00","date":"2026-09-04","project":"Clustara","result":"assets-only v0.9.267, assets for v0.9.267 +3 assets"}
{"ts":"2026-09-04T11:16:08+09:00","date":"2026-09-04","project":"Clustara","result":"assets-only v0.9.266, assets for v0.9.266 +3 assets"}
{"ts":"2026-09-04T11:18:11+09:00","date":"2026-09-04","project":"Clustara","result":"assets-only v0.9.265, assets for v0.9.265 +3 assets"}
{"ts":"2026-09-04T11:20:06+09:00","date":"2026-09-04","project":"Clustara","result":"assets-only v0.9.264, assets for v0.9.264 +3 assets"}
{"ts":"2026-09-04T11:21:53+09:00","date":"2026-09-04","project":"Clustara","result":"assets-only v0.9.263, assets for v0.9.263 +3 assets"}
{"ts":"2026-09-04T11:23:34+09:00","date":"2026-09-04","project":"Clustara","result":"assets-only v0.9.262, assets for v0.9.262 +3 assets"}
{"ts":"2026-09-04T11:26:01+09:00","date":"2026-09-04","project":"ptium","result":"assets-only v1.69.24, assets for v1.69.24 +7 assets"}
{"ts":"2026-09-04T11:28:46+09:00","date":"2026-09-04","project":"ptium","result":"assets-only v1.69.23, assets for v1.69.23 +7 assets"}
{"ts":"2026-09-04T11:31:20+09:00","date":"2026-09-04","project":"ptium","result":"assets-only v1.69.22, assets for v1.69.22 +7 assets"}
{"ts":"2026-09-04T11:33:56+09:00","date":"2026-09-04","project":"ptium","result":"assets-only v1.69.21, assets for v1.69.21 +7 assets"}
{"ts":"2026-09-04T11:36:12+09:00","date":"2026-09-04","project":"ptium","result":"assets-only v1.69.19, assets for v1.69.19 +7 assets"}
{"ts":"2026-09-04T11:43:30+09:00","date":"2026-09-04","project":"Invenqor","result":"assets-only v0.2.23, assets for v0.2.23 +25 assets"}
{"ts":"2026-09-04T11:57:11+09:00","date":"2026-09-04","project":"Invenqor","result":"assets-only v0.2.22, assets for v0.2.22 +25 assets"}
{"ts":"2026-09-04T12:27:14+09:00","date":"2026-09-04","project":"Invenqor","result":"assets-only v0.2.21, assets for v0.2.21 +25 assets"}
{"ts":"2026-09-04T13:25:36+09:00","date":"2026-09-04","project":"Invenqor","result":"assets-only v0.2.20, assets for v0.2.20 +25 assets"}
{"ts":"2026-09-04T13:30:27+09:00","date":"2026-09-04","project":"Invenqor","result":"assets-only v0.2.19, assets for v0.2.19 +25 assets"}
{"ts":"2026-09-04T13:53:01+09:00","date":"2026-09-04","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/7, released v1.0.10 +1 assets"}
{"ts":"2026-09-04T14:39:50+09:00","date":"2026-09-04","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/6, released v0.5.6"}
{"ts":"2026-09-04T14:58:39+09:00","date":"2026-09-04","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/7, released v0.5.7"}
{"ts":"2026-09-04T15:28:29+09:00","date":"2026-09-04","project":"relio","result":"merged https://github.com/hkjang/relio/pull/7, released v1.11.14"}
{"ts":"2026-09-04T16:19:40+09:00","date":"2026-09-04","project":"relio","result":"merged https://github.com/hkjang/relio/pull/8, released v1.11.15, ASSETS MISSING"}
{"ts":"2026-09-04T17:04:55+09:00","date":"2026-09-04","project":"umm","result":"merged https://github.com/hkjang/umm/pull/143, released v0.71.1"}
{"ts":"2026-09-04T17:47:41+09:00","date":"2026-09-04","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/7, released v2.6.4"}
{"ts":"2026-09-04T21:15:51+09:00","date":"2026-09-04","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/8, released v0.289.0"}
{"ts":"2026-09-04T21:54:01+09:00","date":"2026-09-04","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/8, released v0.233.0, ASSETS MISSING"}
{"ts":"2026-09-04T22:19:25+09:00","date":"2026-09-04","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/8, released v0.9.269 +3 assets"}
{"ts":"2026-09-04T22:36:04+09:00","date":"2026-09-04","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/8, released v0.2.25 +25 assets"}
{"ts":"2026-09-04T22:49:01+09:00","date":"2026-09-04","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/9, release skipped"}
{"ts":"2026-09-04T23:18:01+09:00","date":"2026-09-04","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/9, released v0.9.70"}
{"ts":"2026-09-04T23:39:41+09:00","date":"2026-09-04","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/107, released v0.7.41"}
{"ts":"2026-09-04T23:57:14+09:00","date":"2026-09-04","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/9, released v1.2.9"}
{"ts":"2026-09-05T00:10:56+09:00","date":"2026-09-05","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/8, release skipped"}
{"ts":"2026-09-05T00:31:09+09:00","date":"2026-09-05","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/4, release skipped"}
{"ts":"2026-09-05T00:51:46+09:00","date":"2026-09-05","project":"aiportal-java","result":"merged https://github.com/hkjang/aiportal-java/pull/9, release skipped"}
{"ts":"2026-09-05T01:10:24+09:00","date":"2026-09-05","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/6, release skipped"}
{"ts":"2026-09-05T01:43:01+09:00","date":"2026-09-05","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/5, released v2.5.1"}
{"ts":"2026-09-05T02:05:15+09:00","date":"2026-09-05","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/7, released v0.9.42 +1 assets"}
{"ts":"2026-09-05T02:45:15+09:00","date":"2026-09-05","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/18, released v0.77.5"}
{"ts":"2026-09-05T03:23:56+09:00","date":"2026-09-05","project":"igame","result":"merged https://github.com/hkjang/igame/pull/7, released v0.7.6, ASSETS MISSING"}
{"ts":"2026-09-05T03:52:23+09:00","date":"2026-09-05","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/14, released v0.2.2"}
{"ts":"2026-09-05T04:17:56+09:00","date":"2026-09-05","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/3, released v1.4.4"}
{"ts":"2026-09-05T04:35:39+09:00","date":"2026-09-05","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/9, released v0.236.0"}
{"ts":"2026-09-05T05:15:27+09:00","date":"2026-09-05","project":"moina","result":"merged https://github.com/hkjang/moina/pull/7, released v0.1.21, ASSETS MISSING"}
{"ts":"2026-09-05T05:43:00+09:00","date":"2026-09-05","project":"muni","result":"merged https://github.com/hkjang/muni/pull/6, released v0.27.0"}
{"ts":"2026-09-05T06:02:56+09:00","date":"2026-09-05","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/8, released v1.0.11 +1 assets"}
{"ts":"2026-09-05T06:30:24+09:00","date":"2026-09-05","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/9, released v1.69.27 +7 assets"}
{"ts":"2026-09-05T06:55:19+09:00","date":"2026-09-05","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/8, released v0.5.8"}
{"ts":"2026-09-05T07:33:55+09:00","date":"2026-09-05","project":"relio","result":"merged https://github.com/hkjang/relio/pull/9, released v1.11.16, ASSETS MISSING"}
{"ts":"2026-09-05T08:12:27+09:00","date":"2026-09-05","project":"relio","result":"merged https://github.com/hkjang/relio/pull/10, released v1.11.17, ASSETS MISSING"}
{"ts":"2026-09-05T08:43:00+09:00","date":"2026-09-05","project":"umm","result":"merged https://github.com/hkjang/umm/pull/144, released v0.71.2"}
{"ts":"2026-09-05T09:12:52+09:00","date":"2026-09-05","project":"vibe-coders","result":"merged https://github.com/hkjang/vibe-coders/pull/14, released v0.83.0 +7 assets"}
{"ts":"2026-09-05T09:39:03+09:00","date":"2026-09-05","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/8, released v2.6.5"}
{"ts":"2026-09-05T10:00:32+09:00","date":"2026-09-05","project":"weekly","result":"no change"}
{"ts":"2026-09-05T10:46:02+09:00","date":"2026-09-05","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/9, released v0.234.0, ASSETS MISSING"}
{"ts":"2026-09-05T11:08:19+09:00","date":"2026-09-05","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/9, released v0.9.270 +3 assets"}
{"ts":"2026-09-05T11:20:20+09:00","date":"2026-09-05","project":"Invenqor","result":"guarded files, PR open https://github.com/hkjang/invenqor/pull/9"}
{"ts":"2026-09-05T11:44:57+09:00","date":"2026-09-05","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/11, release skipped"}
{"ts":"2026-09-05T16:24:11+09:00","date":"2026-09-05","project":"pii-masker","result":"CI no-ci, PR open https://github.com/hkjang/pii-masker/pull/9","outcome":"review-pending","run_id":"2026-09-05-160603-pii-masker-improve","base_sha":"304d6ead92ae3b5e59813e77184c5a8efc0d0750","head_sha":"de2351ccc414526cf34b76a4569ededcb42a8a65","pr":"https://github.com/hkjang/pii-masker/pull/9","stages":{"base":{"state":"pinned","reason":"main@304d6ea","at":"2026-09-05T16:06:07+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-05T16:16:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/9","at":"2026-09-05T16:16:15+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-05T16:19:45+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-05T16:24:11+09:00"}},"files":6,"additions":393,"deletions":31,"tests":2,"title":"Bound how many synchronous masks run at once"}
{"ts":"2026-09-05T16:44:50+09:00","date":"2026-09-05","project":"AgentHub","result":"guarded files, PR open https://github.com/hkjang/AgentHub/pull/10","outcome":"review-pending","run_id":"2026-09-05-163039-AgentHub-improve","base_sha":"0bbe238d5780344b61d9a363577aa61b524b6854","head_sha":"235f78be9b0d729f86aec7485c8052b0d05a3ed3","pr":"https://github.com/hkjang/AgentHub/pull/10","stages":{"base":{"state":"pinned","reason":"main@0bbe238","at":"2026-09-05T16:30:45+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-05T16:44:40+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/10","at":"2026-09-05T16:44:48+09:00"},"guard":{"state":"held","reason":"compose.yaml deploy/kubernetes/crd.yaml deploy/kubernetes/ollama-bridge.yaml ","at":"2026-09-05T16:44:48+09:00"}},"files":18,"additions":640,"deletions":81,"tests":6,"title":"fix: the order the policy rules were written in never reached the Pod"}
{"ts":"2026-09-05T16:47:00+09:00","date":"2026-09-05","project":"pii-masker","result":"release-only, released v1.0.12","outcome":"release-ready","run_id":"2026-09-05-164521-pii-masker-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"created","reason":"GitHub Release v1.0.12","at":"2026-09-05T16:46:53+09:00"},"assets":{"state":"verified","reason":"v1.0.12 자산 1개 (이전 v1.0.11: 1)","at":"2026-09-05T16:46:59+09:00"}}}
{"ts":"2026-09-05T16:57:50+09:00","date":"2026-09-05","project":"AgentHub","result":"error: interrupted before PR","outcome":"error","run_id":"2026-09-05-160040-AgentHub-improve","base_sha":"","head_sha":"","pr":"","stages":{"base":{"state":"pinned","reason":"main@0bbe238","at":"2026-09-05T16:00:45+09:00"},"resume":{"state":"closed","reason":"PR 이전 단계에서 중단 — 에이전트 단계는 재실행하지 않음","at":"2026-09-05T16:57:50+09:00"}}}
{"ts":"2026-09-05T16:57:51+09:00","date":"2026-09-05","project":"pii-masker","result":"resumed: merged https://github.com/hkjang/pii-masker/pull/9","outcome":"merged","run_id":"2026-09-05-160603-pii-masker-improve","base_sha":"","head_sha":"de2351ccc414526cf34b76a4569ededcb42a8a65","pr":"https://github.com/hkjang/pii-masker/pull/9","stages":{"base":{"state":"pinned","reason":"main@304d6ea","at":"2026-09-05T16:06:07+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-05T16:16:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/9","at":"2026-09-05T16:16:15+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-05T16:19:45+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-05T16:24:11+09:00"},"merge":{"state":"done","reason":"991fbe6d6cba1940b83e8138e817238a1dc6c40d (원격 확인)","at":"2026-09-05T16:57:51+09:00"}}}
{"ts":"2026-09-05T17:13:19+09:00","date":"2026-09-05","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/10, released v0.9.271","outcome":"release-ready","run_id":"2026-09-05-165039-Clustara-improve","base_sha":"8c34c0d3a60e8c59921c5c9f3c080eac68d54ab9","head_sha":"a0914c80ee50aa9ff20b01c17492d265fe6839a8","pr":"https://github.com/hkjang/clustara/pull/10","stages":{"base":{"state":"pinned","reason":"main@8c34c0d","at":"2026-09-05T16:50:42+09:00"},"resume":{"state":"closed","reason":"PR 이전 단계에서 중단 — 에이전트 단계는 재실행하지 않음","at":"2026-09-05T16:57:52+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-05T17:04:57+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/10","at":"2026-09-05T17:05:04+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-05T17:09:05+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-05T17:09:37+09:00"},"merge":{"state":"done","reason":"a0914c80ee50aa9ff20b01c17492d265fe6839a8","at":"2026-09-05T17:09:40+09:00"},"release":{"state":"created","reason":"GitHub Release v0.9.271","at":"2026-09-05T17:13:10+09:00"},"assets":{"state":"verified","reason":"v0.9.271 자산 3개 (이전 v0.9.270: 3)","at":"2026-09-05T17:13:19+09:00"}},"files":12,"additions":510,"deletions":57,"tests":4,"title":"fix(action): an approved delete_pod on a Deployment deleted a Pod instead (v0.9.271)"}
{"ts":"2026-09-05T17:27:33+09:00","date":"2026-09-05","project":"Invenqor","result":"verify failed: 실패한 검증: cargo test --quiet (exit 127)","outcome":"verify-failed","run_id":"2026-09-05-172039-Invenqor-improve","base_sha":"74b9a2bda803051781d259f37a2b148b0d4eb428","head_sha":"13fbffa4f826d7b7eb7c07c9b5ad02278df8a45e","pr":"","stages":{"base":{"state":"pinned","reason":"main@74b9a2b","at":"2026-09-05T17:20:42+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cargo test --quiet (exit 127)","at":"2026-09-05T17:27:33+09:00"}},"files":3,"additions":150,"deletions":17,"tests":2,"title":"fix: an attribute clause matched only values stored as text in the fallback"}
{"ts":"2026-09-05T17:43:11+09:00","date":"2026-09-05","project":"Quantoss","result":"CI no-ci, PR open https://github.com/hkjang/Quantoss/pull/12","outcome":"review-pending","run_id":"2026-09-05-173039-Quantoss-improve","base_sha":"eec27b5eda250656ba295850311419307a0980ad","head_sha":"212afd4215cb5b15e18760563aaca5e16c6333ef","pr":"https://github.com/hkjang/Quantoss/pull/12","stages":{"base":{"state":"pinned","reason":"main@eec27b5","at":"2026-09-05T17:30:41+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-05T17:36:27+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Quantoss/pull/12","at":"2026-09-05T17:36:32+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-05T17:38:45+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-05T17:43:11+09:00"}},"files":12,"additions":156,"deletions":15,"tests":3,"title":"미국 종목 가격이 정수로 뭉개지던 표시 일괄 수정 (신호 사유·진입 이벤트·상태 표)"}
{"ts":"2026-09-05T18:02:01+09:00","date":"2026-09-05","project":"ReSSO","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-05-175041-ReSSO-improve","base_sha":"060f26d92625237faa10797f128bfed60ecf0082","head_sha":"b25bc6325507cd4658640790dd1b43a1bc9a0dad","pr":"","stages":{"base":{"state":"pinned","reason":"main@060f26d","at":"2026-09-05T17:50:46+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-05T18:02:00+09:00"}},"files":7,"additions":280,"deletions":6,"tests":2,"title":"fix: stop a fault this side signing every operator out of the console"}
{"ts":"2026-09-05T22:20:03+09:00","date":"2026-09-05","project":"(runner)","result":"daily cap reached: 회차 60 ≥ 60","outcome":"error","run_id":"","base_sha":"","head_sha":"","pr":"","stages":{},"campaign":"","autonomy":""}
{"ts":"2026-09-06T00:17:21+09:00","date":"2026-09-06","project":"Clustara","result":"review held, PR open https://github.com/hkjang/clustara/pull/11","outcome":"review-pending","run_id":"2026-09-06-000042-Clustara-improve","base_sha":"8f09d19df03ce5eaaa2be1869615f96f88e03e2c","head_sha":"6ce336f0fde3c7fa072da88d5c8a7ee9a9aab671","pr":"https://github.com/hkjang/clustara/pull/11","stages":{"base":{"state":"pinned","reason":"main@8f09d19","at":"2026-09-06T00:00:46+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T00:00:47+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-06T00:12:41+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/11","at":"2026-09-06T00:12:49+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/analyzer/resourcesummary.go:42-47 PodResourceNumbers now applies the init-container max rule to LIMITS as well as requests. The max rule is correct for scheduling/capacity/cost (what the PR set out to fix), but LimCPUm/LimMemB feed runtime consumers that compare *running-container* metrics against them, so the pod is now measured against a limit no running container enforces. Concrete: pod with initContainer 'load-model' limits memory 8Gi and container 'app' limits memory 1Gi. main returns LimMemB=1Gi (the value the app container actually OOMKills at); HEAD returns 8Gi. The PR's own new test (internal/analyzer/capacity_effective_request_test.go:75) asserts exactly this new behavior (init 2Gi wins over app 512Mi), so it is confirmed, not hypothetical. / internal/analyzer/predictive_incident.go:52,60 consequence of the above: PodCPUSaturation / PodMemorySaturation and the 24h PredictedCPU/MemoryExhaustion drafts divide pod-level metric usage by q.LimCPUm / q.LimMemB. With app limit 1Gi and an init limit of 8Gi, a pod sitting at 950Mi used to trip the 0.9 ratio and emit a critical 'PodMemorySaturation' draft; it now computes 950Mi/8Gi = 0.12 and emits nothing. The alert is silently lost, with no test covering it and no mention in scripts/changelog.txt. / internal/proxy/admin_k8s_resource_advisor.go:81 -> internal/analyzer/resourceadvisor.go:86,129 same root cause on the advisor path: the CPU-throttling rule (UsageCPUm >= LimCPUm*throttleNearLimit) stops firing when an init container declares a larger CPU limit than the app containers, and the OOMKilled recommendation renders rec.Current = FormatMemBytes(in.LimMemB) — i.e. it tells the operator the pod's 'current memory limit' is the init container's 8Gi while the container that just OOMKilled is capped at 1Gi.","at":"2026-09-06T00:17:19+09:00"}},"campaign":"","autonomy":"release","files":9,"additions":337,"deletions":74,"tests":1,"title":"fix(capacity): finished pods held node capacity, cost and GPU slots (v0.9.272)"}
{"ts":"2026-09-06T00:29:35+09:00","date":"2026-09-06","project":"Invenqor","result":"verify failed: 실패한 검증: cargo test --quiet (exit 127)","outcome":"verify-failed","run_id":"2026-09-06-002042-Invenqor-improve","base_sha":"74b9a2bda803051781d259f37a2b148b0d4eb428","head_sha":"004dfd725662862efb309621e3d417ec1f529ca4","pr":"","stages":{"base":{"state":"pinned","reason":"main@74b9a2b","at":"2026-09-06T00:20:47+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T00:20:47+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cargo test --quiet (exit 127)","at":"2026-09-06T00:29:35+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":281,"deletions":33,"tests":1,"title":"fix: a CSV export that stopped at its row cap looked like the whole inventory"}
{"ts":"2026-09-06T00:47:45+09:00","date":"2026-09-06","project":"Quantoss","result":"CI no-ci, PR open https://github.com/hkjang/Quantoss/pull/13","outcome":"review-pending","run_id":"2026-09-06-003042-Quantoss-improve","base_sha":"f2723592afc7981643721b068344697aa93de890","head_sha":"e63952bfa4ca0d775d93ac6ac095b09fc8c9e8f1","pr":"https://github.com/hkjang/Quantoss/pull/13","stages":{"base":{"state":"pinned","reason":"main@f272359","at":"2026-09-06T00:30:45+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T00:30:45+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T00:38:27+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Quantoss/pull/13","at":"2026-09-06T00:38:33+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-06T00:43:23+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-06T00:47:44+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":254,"deletions":39,"tests":1,"title":"스윙 실행기가 마지막 봉만 보고 체결·청산하던 버그 수정"}
{"ts":"2026-09-06T00:59:15+09:00","date":"2026-09-06","project":"ReSSO","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-005044-ReSSO-improve","base_sha":"060f26d92625237faa10797f128bfed60ecf0082","head_sha":"9ba95ab06ed2f2d1653b6dd312c2d921e218fe9c","pr":"","stages":{"base":{"state":"pinned","reason":"main@060f26d","at":"2026-09-06T00:50:47+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T00:50:47+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T00:59:13+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":151,"deletions":1,"tests":1,"title":"fix: stop login blaming the password for a fault on this side"}
{"ts":"2026-09-06T01:18:24+09:00","date":"2026-09-06","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/108, released v0.7.42","outcome":"release-ready","run_id":"2026-09-06-010043-Vendra-improve","base_sha":"676a544b077e7fbbdcdce62c835e687ece63000f","head_sha":"87510e291dafd9c47245ce041f8905ba272d08e1","pr":"https://github.com/hkjang/Vendra/pull/108","stages":{"base":{"state":"pinned","reason":"main@676a544","at":"2026-09-06T01:00:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T01:00:50+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T01:10:25+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/108","at":"2026-09-06T01:10:31+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T01:15:31+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T01:16:03+09:00"},"merge":{"state":"done","reason":"87510e291dafd9c47245ce041f8905ba272d08e1","at":"2026-09-06T01:16:07+09:00"},"release":{"state":"published","reason":"v0.7.42","at":"2026-09-06T01:17:21+09:00"},"assets":{"state":"verified","reason":"v0.7.42 자산 1개 (이전 v0.7.41: 1)","at":"2026-09-06T01:18:23+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":499,"deletions":15,"tests":2,"title":"fix: let a request an approver sent back be sent again"}
{"ts":"2026-09-06T01:30:06+09:00","date":"2026-09-06","project":"ai-admin","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-012043-ai-admin-improve","base_sha":"1667ffb43d5883707aeeea9c2172e1ff616c39d8","head_sha":"e307d0d1e5abedbd25ef19ba5cc1cf0c135c98ee","pr":"","stages":{"base":{"state":"pinned","reason":"main@1667ffb","at":"2026-09-06T01:20:47+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T01:20:47+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T01:30:05+09:00"}},"campaign":"","autonomy":"release","files":21,"additions":259,"deletions":59,"tests":2,"title":"fix: stop reporting login backend failures as a wrong password"}
{"ts":"2026-09-06T01:47:32+09:00","date":"2026-09-06","project":"aiportal-front-admin","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-06-014043-aiportal-front-admin-improve","base_sha":"ce38705a2d64772e650cc77a7c31b3ec33d4ee41","head_sha":"e425b5478d9d1c42ded6ff997c89321ec60df5d4","pr":"","stages":{"base":{"state":"pinned","reason":"main@ce38705","at":"2026-09-06T01:40:46+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T01:40:46+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-06T01:47:32+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":219,"deletions":12,"tests":2,"title":"fix(admin-v2): 세션이 만료되면 라우트 이동을 기다리지 않고 복구한다"}
{"ts":"2026-09-06T02:03:41+09:00","date":"2026-09-06","project":"aiportal-front","result":"CI no-ci, PR open https://github.com/hkjang/aiportal-front/pull/5","outcome":"review-pending","run_id":"2026-09-06-015043-aiportal-front-improve","base_sha":"3824e48dc43ea26a923c82f5d88311fd0aa34d68","head_sha":"7ff4f4566571306f56b25e06de7e51a6782e06c1","pr":"https://github.com/hkjang/aiportal-front/pull/5","stages":{"base":{"state":"pinned","reason":"main@3824e48","at":"2026-09-06T01:50:46+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T01:50:46+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-06T01:56:25+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/5","at":"2026-09-06T01:56:32+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T01:59:21+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-06T02:03:40+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":185,"deletions":8,"tests":1,"title":"fix: 마크다운 렌더링 코드블록/표 래퍼 속성 유실 및 외부 링크 하드닝"}
{"ts":"2026-09-06T02:19:33+09:00","date":"2026-09-06","project":"aiportal-java","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-06-021043-aiportal-java-improve","base_sha":"3ffa5cab382960536cba210be6d2e59874ef7d58","head_sha":"5cb50b3e6904bd6c0c538fde686c8637e284abc3","pr":"","stages":{"base":{"state":"pinned","reason":"main@3ffa5ca","at":"2026-09-06T02:10:47+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T02:10:47+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-06T02:19:33+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":225,"deletions":0,"tests":1,"title":"fix(error): 잘못된 요청 파라미터가 400 대신 500 으로 응답되는 문제 수정"}
{"ts":"2026-09-06T02:31:55+09:00","date":"2026-09-06","project":"aiportal-py","result":"CI no-ci, PR open https://github.com/hkjang/aiportal-py/pull/7","outcome":"review-pending","run_id":"2026-09-06-022043-aiportal-py-improve","base_sha":"12d7a47bba7525eddc717c245ad26d01b51d1785","head_sha":"4587666b59e24c9b2e4b4ab9447ccac3c4989140","pr":"https://github.com/hkjang/aiportal-py/pull/7","stages":{"base":{"state":"pinned","reason":"main@12d7a47","at":"2026-09-06T02:20:46+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T02:20:46+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-06T02:25:39+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/7","at":"2026-09-06T02:25:45+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T02:27:34+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-06T02:31:55+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":97,"deletions":14,"tests":1,"title":"fix: 오류 경로의 미할당 이름 참조 수정 (감사 A-105)"}
{"ts":"2026-09-06T02:49:54+09:00","date":"2026-09-06","project":"appstore","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-024043-appstore-improve","base_sha":"818bc9405b2e2ef3f0fef2812276b3035d1c4ac6","head_sha":"b94f99feb620eb2cb8dcbb5fb4d336e973a54c8e","pr":"","stages":{"base":{"state":"pinned","reason":"main@818bc94","at":"2026-09-06T02:40:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T02:40:48+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T02:49:53+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":139,"deletions":9,"tests":3,"title":"fix: reject a bootstrap password that bcrypt cannot hash"}
{"ts":"2026-09-06T11:10:04+09:00","date":"2026-09-06","project":"(runner)","result":"daily cap reached: 회차 60 ≥ 60","outcome":"error","run_id":"","base_sha":"","head_sha":"","pr":"","stages":{},"campaign":"","autonomy":""}
{"ts":"2026-09-06T11:37:51+09:00","date":"2026-09-06","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/109, released v0.7.43","outcome":"release-ready","run_id":"2026-09-06-112045-Vendra-improve","base_sha":"185a85285b16de6b91d760b1468ade7a1c0f268f","head_sha":"5a089f20a914ab80a4c23e34488cf81ec2f7bca3","pr":"https://github.com/hkjang/Vendra/pull/109","stages":{"base":{"state":"pinned","reason":"main@185a852","at":"2026-09-06T11:20:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T11:20:52+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T11:31:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/109","at":"2026-09-06T11:31:50+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-06T11:35:03+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T11:35:35+09:00"},"merge":{"state":"done","reason":"5a089f20a914ab80a4c23e34488cf81ec2f7bca3","at":"2026-09-06T11:35:39+09:00"},"release":{"state":"published","reason":"v0.7.43","at":"2026-09-06T11:36:49+09:00"},"assets":{"state":"verified","reason":"v0.7.43 자산 1개 (이전 v0.7.42: 1)","at":"2026-09-06T11:37:51+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":550,"deletions":15,"tests":2,"title":"fix: keep the award as the bidder's standing, in the words that table holds"}
{"ts":"2026-09-06T11:52:07+09:00","date":"2026-09-06","project":"ai-admin","result":"guarded files, PR open https://github.com/hkjang/ai-admin/pull/10","outcome":"review-pending","run_id":"2026-09-06-114045-ai-admin-improve","base_sha":"1667ffb43d5883707aeeea9c2172e1ff616c39d8","head_sha":"96ee0648f0a2a87de1ef7b87fecdaa8076bcd028","pr":"https://github.com/hkjang/ai-admin/pull/10","stages":{"base":{"state":"pinned","reason":"main@1667ffb","at":"2026-09-06T11:40:47+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T11:40:47+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T11:51:58+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/10","at":"2026-09-06T11:52:05+09:00"},"guard":{"state":"held","reason":"compose.offline.yml internal/auth/auth.go internal/auth/auth_test.go ","at":"2026-09-06T11:52:05+09:00"}},"campaign":"","autonomy":"release","files":23,"additions":288,"deletions":59,"tests":3,"title":"fix: keep hostile request headers out of the audit and login path"}
{"ts":"2026-09-06T12:11:19+09:00","date":"2026-09-06","project":"aiportal-front","result":"CI no-ci, PR open https://github.com/hkjang/aiportal-front/pull/6","outcome":"review-pending","run_id":"2026-09-06-120044-aiportal-front-improve","base_sha":"3824e48dc43ea26a923c82f5d88311fd0aa34d68","head_sha":"089124b8be72825aa33a1f2b0999f712f4ecb065","pr":"https://github.com/hkjang/aiportal-front/pull/6","stages":{"base":{"state":"pinned","reason":"main@3824e48","at":"2026-09-06T12:00:47+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T12:00:47+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-06T12:05:14+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/6","at":"2026-09-06T12:05:18+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T12:07:04+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-06T12:11:18+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":370,"deletions":31,"tests":1,"title":"fix: 첨부파일 용량 안내 문구 옵션 반영 및 업로드 오류 오판 수정 및 단위 테스트 추가"}
{"ts":"2026-09-06T12:27:29+09:00","date":"2026-09-06","project":"aiportal-java","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-06-122045-aiportal-java-improve","base_sha":"3ffa5cab382960536cba210be6d2e59874ef7d58","head_sha":"acc190426c2fe81a6790910f5f7287d7764e26be","pr":"","stages":{"base":{"state":"pinned","reason":"main@3ffa5ca","at":"2026-09-06T12:20:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T12:20:49+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-06T12:27:28+09:00"}},"campaign":"","autonomy":"release","files":11,"additions":351,"deletions":80,"tests":6,"title":"refactor(cors): 허용 Origin 목록 이중 관리로 인한 인증 실패 응답 CORS 누락 수정"}
{"ts":"2026-09-06T12:37:34+09:00","date":"2026-09-06","project":"aiportal-java","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-06-123045-aiportal-java-improve","base_sha":"3ffa5cab382960536cba210be6d2e59874ef7d58","head_sha":"602dfc3845257e9655ddc23b4a08f0650a801edc","pr":"","stages":{"base":{"state":"pinned","reason":"main@3ffa5ca","at":"2026-09-06T12:30:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T12:30:49+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-06T12:37:34+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":411,"deletions":17,"tests":2,"title":"fix(athena): 응답 형식이 어긋난 Athena/IAM 응답에서 발생하는 NPE 수정"}
{"ts":"2026-09-06T12:52:56+09:00","date":"2026-09-06","project":"aiportal-py","result":"CI no-ci, PR open https://github.com/hkjang/aiportal-py/pull/8","outcome":"review-pending","run_id":"2026-09-06-124047-aiportal-py-improve","base_sha":"12d7a47bba7525eddc717c245ad26d01b51d1785","head_sha":"0ab2740e5147933065ce3852436f7defee49ec21","pr":"https://github.com/hkjang/aiportal-py/pull/8","stages":{"base":{"state":"pinned","reason":"main@12d7a47","at":"2026-09-06T12:40:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T12:40:50+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-06T12:46:10+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/8","at":"2026-09-06T12:46:15+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T12:48:42+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-06T12:52:56+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":427,"deletions":29,"tests":1,"title":"fix: 추천 질문 캐시를 원자적 교체 방식으로 변경 (감사 A-206)"}
{"ts":"2026-09-06T13:08:15+09:00","date":"2026-09-06","project":"dataworks","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-130045-dataworks-improve","base_sha":"2312a802daec9cebb83887077f9161cdd029557a","head_sha":"6423b092f15ec3a67dd937bb44c29f0a6253b095","pr":"","stages":{"base":{"state":"pinned","reason":"main@2312a80","at":"2026-09-06T13:00:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T13:00:48+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T13:08:14+09:00"}},"campaign":"","autonomy":"release","files":19,"additions":260,"deletions":53,"tests":3,"title":"chore: release v0.9.43"}
{"ts":"2026-09-06T13:50:09+09:00","date":"2026-09-06","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/19, released v0.77.6","outcome":"release-ready","run_id":"2026-09-06-131045-git-ctx-improve","base_sha":"07a5cccf887a401373ad1e24fb561861414cb9a3","head_sha":"0e6f2822ab7c4ea3c736eec3cadc900de269197c","pr":"https://github.com/hkjang/git-ctx/pull/19","stages":{"base":{"state":"pinned","reason":"main@07a5ccc","at":"2026-09-06T13:10:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T13:10:48+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T13:19:41+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/19","at":"2026-09-06T13:19:47+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-06T13:22:50+09:00"},"ci":{"state":"passed","reason":"검사 5개 모두 success","at":"2026-09-06T13:26:36+09:00"},"merge":{"state":"done","reason":"0e6f2822ab7c4ea3c736eec3cadc900de269197c","at":"2026-09-06T13:26:41+09:00"},"release":{"state":"published","reason":"v0.77.6","at":"2026-09-06T13:36:57+09:00"},"assets":{"state":"verified","reason":"v0.77.6 자산 2개 (이전 v0.77.5: 2)","at":"2026-09-06T13:50:08+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":191,"deletions":44,"tests":1,"title":"fix(search): judge an advisory only against the package it names"}
{"ts":"2026-09-06T14:42:38+09:00","date":"2026-09-06","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/20, released v0.77.7, ASSETS MISSING","outcome":"releasing","run_id":"2026-09-06-140046-git-ctx-improve","base_sha":"d66a8c5b1b79d4f7a3d5b84646319dddf15a4d43","head_sha":"ca7907ae9f192bacaefc7984519f2ee0de50ca09","pr":"https://github.com/hkjang/git-ctx/pull/20","stages":{"base":{"state":"pinned","reason":"main@d66a8c5","at":"2026-09-06T14:00:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T14:00:48+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T14:07:57+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/20","at":"2026-09-06T14:08:02+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T14:11:12+09:00"},"ci":{"state":"passed","reason":"검사 5개 모두 success","at":"2026-09-06T14:15:26+09:00"},"merge":{"state":"done","reason":"ca7907ae9f192bacaefc7984519f2ee0de50ca09","at":"2026-09-06T14:15:30+09:00"},"release":{"state":"published","reason":"v0.77.7","at":"2026-09-06T14:28:30+09:00"},"assets":{"state":"missing","reason":"이전 v0.77.6 엔 2개, v0.77.7 엔 0개 — 워크플로: Verified offline release: completed/success","at":"2026-09-06T14:42:37+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":91,"deletions":4,"tests":1,"title":"fix(search): judge every matching repository, and say when the scan stopped"}
{"ts":"2026-09-06T15:21:17+09:00","date":"2026-09-06","project":"igame","result":"merged https://github.com/hkjang/igame/pull/8, released v0.7.7, ASSETS MISSING","outcome":"releasing","run_id":"2026-09-06-145047-igame-improve","base_sha":"ef7660136bf839b23f20850aad92d6e9b44f3ff9","head_sha":"1a38dc3dc62a61cd6bbeef39888425c44293aeba","pr":"https://github.com/hkjang/igame/pull/8","stages":{"base":{"state":"pinned","reason":"main@ef76601","at":"2026-09-06T14:50:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T14:50:50+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T14:53:35+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/8","at":"2026-09-06T14:53:38+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T14:55:10+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-06T14:58:29+09:00"},"merge":{"state":"done","reason":"1a38dc3dc62a61cd6bbeef39888425c44293aeba","at":"2026-09-06T14:58:33+09:00"},"release":{"state":"published","reason":"v0.7.7","at":"2026-09-06T15:07:09+09:00"},"assets":{"state":"missing","reason":"이전 v0.7.6 엔 1개, v0.7.7 엔 0개 — 워크플로: Release offline image: in_progress/","at":"2026-09-06T15:21:15+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":68,"deletions":3,"tests":1,"title":"fix: stop /assets/ from listing every bundle file"}
{"ts":"2026-09-06T15:47:52+09:00","date":"2026-09-06","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/15, released v0.2.3","outcome":"release-ready","run_id":"2026-09-06-153047-jikim-improve","base_sha":"b90b4b755d10d9dcfc2f6a79793f7e021a805c02","head_sha":"dbf7b03a0e9b4ca27241cb80c44c883003e09f80","pr":"https://github.com/hkjang/jikim/pull/15","stages":{"base":{"state":"pinned","reason":"main@b90b4b7","at":"2026-09-06T15:30:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T15:30:49+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T15:35:06+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/15","at":"2026-09-06T15:35:11+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T15:37:07+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T15:38:34+09:00"},"merge":{"state":"done","reason":"dbf7b03a0e9b4ca27241cb80c44c883003e09f80","at":"2026-09-06T15:38:38+09:00"},"release":{"state":"published","reason":"v0.2.3","at":"2026-09-06T15:44:32+09:00"},"assets":{"state":"verified","reason":"v0.2.3 자산 2개 (이전 v0.2.2: 2)","at":"2026-09-06T15:47:53+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":107,"deletions":10,"tests":1,"title":"fix: reject mistyped security and general settings values"}
{"ts":"2026-09-06T16:00:43+09:00","date":"2026-09-06","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/4, release blocked (secrets)","outcome":"merged","run_id":"2026-09-06-155046-jupiq-improve","base_sha":"64dde7e941b3fd3164fdfdec041fa88b424b26c4","head_sha":"f34c6f8dbb2eea489e935ab20d26e9420afac397","pr":"https://github.com/hkjang/jupiq/pull/4","stages":{"base":{"state":"pinned","reason":"main@64dde7e","at":"2026-09-06T15:50:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T15:50:48+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T15:55:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/4","at":"2026-09-06T15:56:04+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T15:58:03+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-06T15:59:01+09:00"},"merge":{"state":"done","reason":"f34c6f8dbb2eea489e935ab20d26e9420afac397","at":"2026-09-06T15:59:06+09:00"},"release":{"state":"blocked","reason":"릴리즈 커밋에 비밀정보 의심","at":"2026-09-06T16:00:44+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":169,"deletions":5,"tests":1,"title":"fix: 응답 보안 헤더에 CSP 보강 지시자와 TLS 한정 HSTS를 추가한다"}
{"ts":"2026-09-06T16:26:12+09:00","date":"2026-09-06","project":"moina","result":"merged https://github.com/hkjang/moina/pull/8, release blocked (secrets)","outcome":"merged","run_id":"2026-09-06-161045-moina-improve","base_sha":"3d42486f540a1ba815b12623b121b96b777e1678","head_sha":"6806f4035f4e271220991422cedb1ef13d0be47e","pr":"https://github.com/hkjang/moina/pull/8","stages":{"base":{"state":"pinned","reason":"main@3d42486","at":"2026-09-06T16:10:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T16:10:50+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-06T16:15:21+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/8","at":"2026-09-06T16:15:26+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T16:17:16+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T16:23:25+09:00"},"merge":{"state":"done","reason":"6806f4035f4e271220991422cedb1ef13d0be47e","at":"2026-09-06T16:23:29+09:00"},"release":{"state":"blocked","reason":"릴리즈 커밋에 비밀정보 의심","at":"2026-09-06T16:26:10+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":49,"deletions":2,"tests":1,"title":"fix: tell MP4 apart from other ISO Base Media uploads by brand"}
{"ts":"2026-09-06T16:41:35+09:00","date":"2026-09-06","project":"moyro","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-06-163046-moyro-improve","base_sha":"2ed0530dd06d57f72007c0b4a8a52efe1f9d493e","head_sha":"83f7aaf7eb188c2c8866135f6e17d2e557fd7668","pr":"","stages":{"base":{"state":"pinned","reason":"main@2ed0530","at":"2026-09-06T16:30:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T16:30:50+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-06T16:41:35+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":458,"deletions":25,"tests":2,"title":"fix: make channel bookmark reordering actually reorder"}
{"ts":"2026-09-06T17:13:29+09:00","date":"2026-09-06","project":"muni","result":"merged https://github.com/hkjang/muni/pull/7, released v0.28.0","outcome":"release-ready","run_id":"2026-09-06-165045-muni-improve","base_sha":"0565111784c68b4170a010fa0869007797323b75","head_sha":"a488f720b9b7a8964910ce39a90c7341ccbc3e05","pr":"https://github.com/hkjang/muni/pull/7","stages":{"base":{"state":"pinned","reason":"main@0565111","at":"2026-09-06T16:50:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T16:50:51+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T17:00:23+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/muni/pull/7","at":"2026-09-06T17:00:27+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T17:04:07+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T17:04:37+09:00"},"merge":{"state":"done","reason":"a488f720b9b7a8964910ce39a90c7341ccbc3e05","at":"2026-09-06T17:04:40+09:00"},"release":{"state":"published","reason":"v0.28.0","at":"2026-09-06T17:10:08+09:00"},"assets":{"state":"verified","reason":"v0.28.0 자산 1개 (이전 v0.27.0: 1)","at":"2026-09-06T17:13:28+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":183,"deletions":19,"tests":4,"title":"feat: 한글 문서의 쪽 나누기를 읽고, .hwpx 로 씁니다"}
{"ts":"2026-09-06T17:50:01+09:00","date":"2026-09-06","project":"muni","result":"merged https://github.com/hkjang/muni/pull/8, released v0.29.0","outcome":"release-ready","run_id":"2026-09-06-172046-muni-improve","base_sha":"5e618fd38738adebdace8e69241be232430df4a3","head_sha":"69d2decaabb032496e25f7d0db64dd5e6f5e5829","pr":"https://github.com/hkjang/muni/pull/8","stages":{"base":{"state":"pinned","reason":"main@5e618fd","at":"2026-09-06T17:20:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T17:20:50+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T17:36:01+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/muni/pull/8","at":"2026-09-06T17:36:08+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T17:39:54+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T17:40:25+09:00"},"merge":{"state":"done","reason":"69d2decaabb032496e25f7d0db64dd5e6f5e5829","at":"2026-09-06T17:40:28+09:00"},"release":{"state":"published","reason":"v0.29.0","at":"2026-09-06T17:46:15+09:00"},"assets":{"state":"verified","reason":"v0.29.0 자산 1개 (이전 v0.28.0: 1)","at":"2026-09-06T17:50:01+09:00"}},"campaign":"","autonomy":"release","files":10,"additions":346,"deletions":12,"tests":4,"title":"fix: 옛 한글 문서에서 그림이 이웃의 그림으로 들어오던 것을 고칩니다"}
{"ts":"2026-09-06T18:11:01+09:00","date":"2026-09-06","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/10, released v1.0.13","outcome":"release-ready","run_id":"2026-09-06-180047-pii-masker-improve","base_sha":"991fbe6d6cba1940b83e8138e817238a1dc6c40d","head_sha":"95b805d4150b12e692732f13997434736eb343d3","pr":"https://github.com/hkjang/pii-masker/pull/10","stages":{"base":{"state":"pinned","reason":"main@991fbe6","at":"2026-09-06T18:00:53+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T18:00:53+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-06T18:06:23+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/10","at":"2026-09-06T18:06:28+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T18:08:37+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-06T18:09:07+09:00"},"merge":{"state":"done","reason":"95b805d4150b12e692732f13997434736eb343d3","at":"2026-09-06T18:09:10+09:00"},"release":{"state":"published","reason":"v1.0.13","at":"2026-09-06T18:10:52+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.13","at":"2026-09-06T18:10:55+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-06T18:10:56+09:00"},"assets":{"state":"verified","reason":"v1.0.13 자산 1개 (이전 v1.0.12: 1)","at":"2026-09-06T18:11:00+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":390,"deletions":7,"tests":2,"title":"Shut down gracefully and time out stalled connections"}
{"ts":"2026-09-06T18:27:57+09:00","date":"2026-09-06","project":"releasedock","result":"guarded files, PR open https://github.com/hkjang/releasedock/pull/9","outcome":"review-pending","run_id":"2026-09-06-182046-releasedock-improve","base_sha":"82af81f38e414c86132209fce7f0ad03943114e8","head_sha":"5a663d7973b6d7ded190b0e3254b9b22438915c5","pr":"https://github.com/hkjang/releasedock/pull/9","stages":{"base":{"state":"pinned","reason":"main@82af81f","at":"2026-09-06T18:20:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T18:20:50+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-06T18:27:50+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/9","at":"2026-09-06T18:27:56+09:00"},"guard":{"state":"held","reason":"backend/internal/store/migrations/025_simple_stage_held.sql ","at":"2026-09-06T18:27:54+09:00"}},"campaign":"","autonomy":"release","files":17,"additions":156,"deletions":28,"tests":4,"title":"chore: release v0.5.9"}
{"ts":"2026-09-06T19:02:10+09:00","date":"2026-09-06","project":"relio","result":"merged https://github.com/hkjang/relio/pull/11, released v1.11.18, ASSETS MISSING (release workflow FAILED), queued for fix","outcome":"releasing","run_id":"2026-09-06-183046-relio-improve","base_sha":"26aa161407f3588695d8690b66c3e18b3811d009","head_sha":"38255ae8407c4a493220a073fe6c5698a64bd5a7","pr":"https://github.com/hkjang/relio/pull/11","stages":{"base":{"state":"pinned","reason":"main@26aa161","at":"2026-09-06T18:30:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T18:30:50+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T18:36:44+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/11","at":"2026-09-06T18:36:51+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T18:39:12+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T18:40:10+09:00"},"merge":{"state":"done","reason":"38255ae8407c4a493220a073fe6c5698a64bd5a7","at":"2026-09-06T18:40:15+09:00"},"release":{"state":"published","reason":"v1.11.18","at":"2026-09-06T18:45:41+09:00"},"assets":{"state":"missing","reason":"이전 v1.11.14 엔 1개, v1.11.18 엔 0개 — 워크플로: Release Offline Docker Image: completed/failure","at":"2026-09-06T18:59:41+09:00"},"workflow":{"state":"failed-twice","reason":"Verify upgrade from previous release","at":"2026-09-06T19:02:09+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":147,"deletions":11,"tests":2,"title":"fix(api): read a bounded integer query parameter as the number sent"}
{"ts":"2026-09-06T19:19:09+09:00","date":"2026-09-06","project":"relio","result":"fix-round: guarded files, PR open https://github.com/hkjang/relio/pull/12, rollback PR ","outcome":"review-pending","run_id":"2026-09-06-191047-relio-improve","base_sha":"342312268af55c0db9f6309643ccb8544e3882e2","head_sha":"3e85fcf9bb922e6233b816b32f5fccb813ef220b","pr":"https://github.com/hkjang/relio/pull/12","stages":{"base":{"state":"pinned","reason":"main@3423122","at":"2026-09-06T19:10:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T19:10:51+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T19:18:55+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/12","at":"2026-09-06T19:19:02+09:00"},"guard":{"state":"held","reason":".github/workflows/ci.yml .github/workflows/release.yml ","at":"2026-09-06T19:19:02+09:00"},"rollback":{"state":"pr-opened","reason":"","at":"2026-09-06T19:19:09+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":194,"deletions":7,"tests":0,"title":"fix(release): upgrade from the newest release that was published"}
{"ts":"2026-09-06T19:44:08+09:00","date":"2026-09-06","project":"umm","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-192047-umm-improve","base_sha":"59ae1ba2af873beb2143ee8d50845e000f7b8d18","head_sha":"4450bb28bd5fb3dc68a75295d0c859e352a0bc0f","pr":"","stages":{"base":{"state":"pinned","reason":"main@59ae1ba","at":"2026-09-06T19:20:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T19:20:57+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T19:44:06+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":114,"deletions":6,"tests":1,"title":"Release v0.71.3 a space opened at somebody else's last week"}
{"ts":"2026-09-06T19:57:47+09:00","date":"2026-09-06","project":"umm","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-195045-umm-improve","base_sha":"59ae1ba2af873beb2143ee8d50845e000f7b8d18","head_sha":"d0351b333ab3ec4a20ef0d5442190b34d7f079b6","pr":"","stages":{"base":{"state":"pinned","reason":"main@59ae1ba","at":"2026-09-06T19:50:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T19:50:52+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T19:57:46+09:00"}},"campaign":"","autonomy":"release","files":10,"additions":192,"deletions":19,"tests":2,"title":"Release v0.71.4 a title made of one blank space"}
{"ts":"2026-09-06T20:00:48+09:00","date":"2026-09-06","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-06-200047-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-06T20:00:48+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-06T20:23:24+09:00","date":"2026-09-06","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/9, release blocked (secrets)","outcome":"merged","run_id":"2026-09-06-201046-visitflow-improve","base_sha":"2adfd641d29367fbfcfd940051d24e24c5bc5835","head_sha":"6efcbf02e876e2554dc233a882f297e6dc98ef99","pr":"https://github.com/hkjang/visitflow/pull/9","stages":{"base":{"state":"pinned","reason":"main@2adfd64","at":"2026-09-06T20:10:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T20:10:48+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T20:14:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/visitflow/pull/9","at":"2026-09-06T20:15:05+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T20:18:57+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T20:19:27+09:00"},"merge":{"state":"done","reason":"6efcbf02e876e2554dc233a882f297e6dc98ef99","at":"2026-09-06T20:19:29+09:00"},"release":{"state":"blocked","reason":"릴리즈 커밋에 비밀정보 의심","at":"2026-09-06T20:23:23+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":135,"deletions":3,"tests":2,"title":"fix(mcp): count visit statistics over the days the statistics screen shows"}
{"ts":"2026-09-06T20:53:18+09:00","date":"2026-09-06","project":"weekly","result":"no change","outcome":"no-change","run_id":"2026-09-06-203047-weekly-improve","base_sha":"5763cd2e9970a70724edbc1dca9abaa928b2a5e7","head_sha":"","pr":"","stages":{"base":{"state":"pinned","reason":"main@5763cd2","at":"2026-09-06T20:30:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T20:30:50+09:00"},"improve":{"state":"no-change","reason":"커밋 없음","at":"2026-09-06T20:53:18+09:00"}},"campaign":"","autonomy":"release"}
{"ts":"2026-09-06T21:09:10+09:00","date":"2026-09-06","project":"AgentHub","result":"guarded files, PR open https://github.com/hkjang/AgentHub/pull/11","outcome":"review-pending","run_id":"2026-09-06-210049-AgentHub-improve","base_sha":"0bbe238d5780344b61d9a363577aa61b524b6854","head_sha":"1c4057fdc43a46bd55c507c09eb5235685545aec","pr":"https://github.com/hkjang/AgentHub/pull/11","stages":{"base":{"state":"pinned","reason":"main@0bbe238","at":"2026-09-06T21:00:56+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T21:00:56+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T21:09:01+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/11","at":"2026-09-06T21:09:08+09:00"},"guard":{"state":"held","reason":"compose.yaml deploy/kubernetes/ollama-bridge.yaml ","at":"2026-09-06T21:09:08+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":228,"deletions":5,"tests":1,"title":"fix: a compressed answer went past the MCP gateway unread"}
{"ts":"2026-09-06T21:45:18+09:00","date":"2026-09-06","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/12, released v0.9.273, asset manifest failed, ASSETS MISSING","outcome":"releasing","run_id":"2026-09-06-211047-Clustara-improve","base_sha":"8f09d19df03ce5eaaa2be1869615f96f88e03e2c","head_sha":"8ce755e0ac2b8b39601c70c73f4d469f31b7ffca","pr":"https://github.com/hkjang/clustara/pull/12","stages":{"base":{"state":"pinned","reason":"main@8f09d19","at":"2026-09-06T21:10:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T21:10:52+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-06T21:22:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/12","at":"2026-09-06T21:22:16+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-06T21:26:56+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-06T21:27:23+09:00"},"merge":{"state":"done","reason":"8ce755e0ac2b8b39601c70c73f4d469f31b7ffca","at":"2026-09-06T21:27:27+09:00"},"release":{"state":"published","reason":"v0.9.273","at":"2026-09-06T21:31:16+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.273","at":"2026-09-06T21:31:20+09:00"},"manifest":{"state":"failed","reason":"누락/불량: clustara-v0.9.273.tar.gz.sha256(too-small) README-offline-v0.9.273.md(too-small)","at":"2026-09-06T21:31:21+09:00"},"assets":{"state":"missing","reason":"이전 v0.9.271 엔 3개, v0.9.273 엔 0개 — 워크플로: null: null/null","at":"2026-09-06T21:45:17+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":249,"deletions":24,"tests":2,"title":"fix(security): the unhardened pods were the ones labelled \"restricted\" (v0.9.273)"}
{"ts":"2026-09-06T21:57:43+09:00","date":"2026-09-06","project":"Invenqor","result":"verify failed: 실패한 검증: cargo test --quiet (exit 127)","outcome":"verify-failed","run_id":"2026-09-06-215047-Invenqor-improve","base_sha":"74b9a2bda803051781d259f37a2b148b0d4eb428","head_sha":"96777cce3cbdce234babb803f323db9528d81745","pr":"","stages":{"base":{"state":"pinned","reason":"main@74b9a2b","at":"2026-09-06T21:50:53+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T21:50:53+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cargo test --quiet (exit 127)","at":"2026-09-06T21:57:43+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":209,"deletions":45,"tests":2,"title":"fix: a query cut by the row cap was reported as the whole answer"}
{"ts":"2026-09-06T22:29:16+09:00","date":"2026-09-06","project":"Quantoss","result":"CI no-ci, PR open https://github.com/hkjang/Quantoss/pull/15","outcome":"review-pending","run_id":"2026-09-06-220047-Quantoss-improve","base_sha":"3533317d93553138ca8edfe6de59a97a2dd44d2e","head_sha":"805f1040014ea2e9c14d11f59fa4cf08039277ad","pr":"https://github.com/hkjang/Quantoss/pull/15","stages":{"base":{"state":"pinned","reason":"main@3533317","at":"2026-09-06T22:00:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T22:00:51+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T22:17:50+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Quantoss/pull/15","at":"2026-09-06T22:17:56+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T22:25:02+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-06T22:29:16+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":49,"deletions":3,"tests":1,"title":"부분 체결 매도 중 서버 손절 예약 재등록 제거 (이중 매도·유령 예약 방지)"}
{"ts":"2026-09-06T22:41:09+09:00","date":"2026-09-06","project":"ReSSO","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-223046-ReSSO-improve","base_sha":"060f26d92625237faa10797f128bfed60ecf0082","head_sha":"7753752843d54806f4ea86fdb9ac5615ef5c0b39","pr":"","stages":{"base":{"state":"pinned","reason":"main@060f26d","at":"2026-09-06T22:30:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T22:30:51+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T22:41:08+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":294,"deletions":4,"tests":1,"title":"fix: stop the token endpoint blaming the grant for faults on this side"}
{"ts":"2026-09-06T23:09:41+09:00","date":"2026-09-06","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/110, released v0.7.44","outcome":"release-ready","run_id":"2026-09-06-225047-Vendra-improve","base_sha":"7b128b487ce91c5715c15da68221ab4c27e9c897","head_sha":"0d72e4bdfac8e4024a0d688c60a0e2335fd7f04d","pr":"https://github.com/hkjang/Vendra/pull/110","stages":{"base":{"state":"pinned","reason":"main@7b128b4","at":"2026-09-06T22:50:54+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T22:50:54+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-06T23:00:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/110","at":"2026-09-06T23:01:07+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-06T23:05:40+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-06T23:06:11+09:00"},"merge":{"state":"done","reason":"0d72e4bdfac8e4024a0d688c60a0e2335fd7f04d","at":"2026-09-06T23:06:13+09:00"},"release":{"state":"published","reason":"v0.7.44","at":"2026-09-06T23:08:39+09:00"},"assets":{"state":"verified","reason":"v0.7.44 자산 1개 (이전 v0.7.43: 1)","at":"2026-09-06T23:09:40+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":450,"deletions":8,"tests":2,"title":"fix: let an approval rule be written for the work it is meant to hold"}
{"ts":"2026-09-06T23:27:34+09:00","date":"2026-09-06","project":"ai-admin","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-232046-ai-admin-improve","base_sha":"1667ffb43d5883707aeeea9c2172e1ff616c39d8","head_sha":"df278de87de54b728f95e9268a9b9956829af933","pr":"","stages":{"base":{"state":"pinned","reason":"main@1667ffb","at":"2026-09-06T23:20:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T23:20:49+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T23:27:33+09:00"}},"campaign":"","autonomy":"release","files":20,"additions":166,"deletions":66,"tests":2,"title":"fix: fail the dashboard instead of reporting a query failure as zero"}
{"ts":"2026-09-06T23:35:45+09:00","date":"2026-09-06","project":"aiportal-front-admin","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-06-233046-aiportal-front-admin-improve","base_sha":"ce38705a2d64772e650cc77a7c31b3ec33d4ee41","head_sha":"ad2f001381dddc9c64e865dc771836ef3de9530f","pr":"","stages":{"base":{"state":"pinned","reason":"main@ce38705","at":"2026-09-06T23:30:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T23:30:49+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-06T23:35:44+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":199,"deletions":11,"tests":1,"title":"fix(admin-v2): 목록의 날짜 값을 시간대와 형식에 흔들리지 않게 표시한다"}
{"ts":"2026-09-06T23:47:12+09:00","date":"2026-09-06","project":"aiportal-front","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-06-234045-aiportal-front-improve","base_sha":"3824e48dc43ea26a923c82f5d88311fd0aa34d68","head_sha":"0890257419ff5d1310435b587d77a65669444da8","pr":"","stages":{"base":{"state":"pinned","reason":"main@3824e48","at":"2026-09-06T23:40:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T23:40:48+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-06T23:47:11+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":447,"deletions":60,"tests":1,"title":"fix: 토큰 재발급 인터셉터 리프레시 락 누수 수정 및 단위 테스트 추가"}
{"ts":"2026-09-07T00:07:34+09:00","date":"2026-09-06","project":"aiportal-java","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-06-235046-aiportal-java-improve","base_sha":"3ffa5cab382960536cba210be6d2e59874ef7d58","head_sha":"a2bcb2b4dce4681857922de8e96a94f090db6417","pr":"","stages":{"base":{"state":"pinned","reason":"main@3ffa5ca","at":"2026-09-06T23:50:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-06T23:50:51+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-07T00:07:34+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":309,"deletions":6,"tests":3,"title":"fix(tools,authority,statistics): 조회 결과 없음이 500 오류로 응답되는 문제 수정"}
{"ts":"2026-09-07T00:25:05+09:00","date":"2026-09-07","project":"aiportal-py","result":"CI no-ci, PR open https://github.com/hkjang/aiportal-py/pull/9","outcome":"review-pending","run_id":"2026-09-07-001048-aiportal-py-improve","base_sha":"12d7a47bba7525eddc717c245ad26d01b51d1785","head_sha":"90199dcd390fd040458c910499cdc0664ef73702","pr":"https://github.com/hkjang/aiportal-py/pull/9","stages":{"base":{"state":"pinned","reason":"main@12d7a47","at":"2026-09-07T00:10:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T00:10:51+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-07T00:18:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/9","at":"2026-09-07T00:18:14+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-07T00:20:51+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-07T00:25:04+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":496,"deletions":31,"tests":1,"title":"fix: 기동 시 정책 토큰 무기한 대기 제거하고 degraded 기동 도입 (감사 A-002)"}
{"ts":"2026-09-07T00:36:58+09:00","date":"2026-09-07","project":"appstore","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-07-003046-appstore-improve","base_sha":"818bc9405b2e2ef3f0fef2812276b3035d1c4ac6","head_sha":"ee70048aadc66082c58b96172f722a9f8893e41c","pr":"","stages":{"base":{"state":"pinned","reason":"main@818bc94","at":"2026-09-07T00:30:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T00:30:51+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-07T00:36:58+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":90,"deletions":3,"tests":1,"title":"fix: bound the bootstrap login username"}
{"ts":"2026-09-07T00:54:44+09:00","date":"2026-09-07","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/8, release blocked (secrets)","outcome":"merged","run_id":"2026-09-07-004046-dataworks-improve","base_sha":"2312a802daec9cebb83887077f9161cdd029557a","head_sha":"b616421c102fd77ddbf7de52f425e89672ee71ef","pr":"https://github.com/hkjang/dataworks/pull/8","stages":{"base":{"state":"pinned","reason":"main@2312a80","at":"2026-09-07T00:40:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T00:40:49+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T00:46:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/8","at":"2026-09-07T00:46:46+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-07T00:49:38+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-07T00:50:07+09:00"},"merge":{"state":"done","reason":"b616421c102fd77ddbf7de52f425e89672ee71ef","at":"2026-09-07T00:50:11+09:00"},"release":{"state":"blocked","reason":"릴리즈 커밋에 비밀정보 의심","at":"2026-09-07T00:54:43+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":248,"deletions":17,"tests":2,"title":"fix: evaluate the active entitlement when a key holds several for one product"}
{"ts":"2026-09-07T01:11:49+09:00","date":"2026-09-07","project":"git-ctx","result":"guarded files, PR open https://github.com/hkjang/git-ctx/pull/21","outcome":"review-pending","run_id":"2026-09-07-010047-git-ctx-improve","base_sha":"6fa3eec52aacda343a86c9e3335419cce9e58834","head_sha":"fecee25848881c3ed88e67d5bb989dcce739371b","pr":"https://github.com/hkjang/git-ctx/pull/21","stages":{"base":{"state":"pinned","reason":"main@6fa3eec","at":"2026-09-07T01:00:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T01:00:50+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T01:11:43+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/21","at":"2026-09-07T01:11:47+09:00"},"guard":{"state":"held","reason":"deploy/kubernetes/base/deployment.yaml ","at":"2026-09-07T01:11:48+09:00"}},"campaign":"","autonomy":"release","files":14,"additions":273,"deletions":38,"tests":2,"title":"release: v0.77.8"}
{"ts":"2026-09-07T01:26:42+09:00","date":"2026-09-07","project":"igame","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-07-012047-igame-improve","base_sha":"423dc7b212683fd30ecce1f134878875bd613ff0","head_sha":"308f5794a98c401906c9c95d5873206662f7bb50","pr":"","stages":{"base":{"state":"pinned","reason":"main@423dc7b","at":"2026-09-07T01:20:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T01:20:51+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-07T01:26:42+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":157,"deletions":2,"tests":1,"title":"fix: count the session in progress against the daily play limit"}
{"ts":"2026-09-07T01:41:41+09:00","date":"2026-09-07","project":"jikim","result":"guarded files, PR open https://github.com/hkjang/jikim/pull/16","outcome":"review-pending","run_id":"2026-09-07-013046-jikim-improve","base_sha":"2cc673e6d785af3099c29737deec155ef5dd27af","head_sha":"a20a367e4f5527e1b2458723f7528f6fdb26093e","pr":"https://github.com/hkjang/jikim/pull/16","stages":{"base":{"state":"pinned","reason":"main@2cc673e","at":"2026-09-07T01:30:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T01:30:49+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T01:41:36+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/16","at":"2026-09-07T01:41:42+09:00"},"guard":{"state":"held","reason":".github/workflows/release.yml docker-compose.yml internal/httpapi/secret_handlers.go ","at":"2026-09-07T01:41:42+09:00"}},"campaign":"","autonomy":"release","files":33,"additions":414,"deletions":98,"tests":3,"title":"release: 신뢰 Reverse Proxy 클라이언트 IP 판별을 v0.2.4로 릴리스"}
{"ts":"2026-09-07T01:59:02+09:00","date":"2026-09-07","project":"jupiq","result":"review held, PR open https://github.com/hkjang/jupiq/pull/5","outcome":"review-pending","run_id":"2026-09-07-015048-jupiq-improve","base_sha":"d247a9d12d68ee3957b32e5d87ee7c45c4f513d1","head_sha":"e87047385711c1cf3f4071bc76b3a269c65acd70","pr":"https://github.com/hkjang/jupiq/pull/5","stages":{"base":{"state":"pinned","reason":"main@d247a9d","at":"2026-09-07T01:50:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T01:50:51+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T01:55:19+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/5","at":"2026-09-07T01:55:26+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/collector/collector.go:67-79 (goHub) + collector.go:112-117/171-181 (collectHubs/due) — 세마포어에 shedding(포기 경로)이 없어 대기 큐가 무한히 자란다. goHub은 슬롯이 없으면 ctx가 취소될 때까지 goroutine을 만든 채 무조건 대기시키고, due()는 '완료 시각'이 아니라 '큐에 넣은 시각'을 c.last[hub.ID]에 기록하므로 이전 프로브가 아직 큐에 남아 있어도 다음 주기에 같은 허브의 프로브가 또 쌓인다. 유입률 = N/CollectIntervalSeconds, 소화율 = 8/probe_duration 이므로 허브가 응답 불능이라 25초 타임아웃을 다 쓰는 상황에서는 소화율이 8/25=0.32/s로 고정된다. 최소 간격 30초(internal/store/hubs.go:30)에서 허브 12개만 모두 도달 불가여도 유입 0.4/s > 소화 0.32/s 가 되어 goroutine과 중복 프로브가 무한 누적된다(분당 +5개, 하루 7천여 개). 변경 전에는 허브 수만큼(=N개) 동시에 떠서 25초 안에 모두 회수됐으므로 정상 상태였다. 즉 '리소스 사용을 상한한다'는 목적의 변경이, 이 상한이 실제로 필요하다고 주석(collector.go:18-22)에 적어 둔 바로 그 시나리오(허브 수십 개 + 타임아웃)에서 무한 증가하는 누수를 새로 만든다. 동시에 허브 health 갱신이 설정 간격보다 계속 뒤처져 상태 표시가 만성적으로 stale 해진다. TryAcquire/포화 시 skip, 또는 허브별 in-flight 중복 방지가 필요하다. / internal/collector/collector_test.go:91-172 — 새 테스트 3개가 모두 c.goHub/c.waitForHubs를 직접 호출할 뿐, 이번 변경의 실제 배선(collector.go:117에서 collectHubs가 goHub을 경유하는지, collector.go:49에서 Run이 waitForHubs를 defer 하는지, cmd/jupiq/main.go:55-76의 collectorDone 대기)은 어느 것도 검증하지 않는다. collectHubs를 다시 `go func(){...}()`로 되돌리거나 Run의 `defer c.waitForHubs()`를 지워도 세 테스트는 모두 통과한다(헬퍼만 남기면 그린). 동시성 변경에서 회귀를 막아 주는 지점이 비어 있다.","at":"2026-09-07T01:59:00+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":150,"deletions":4,"tests":1,"title":"fix: 허브 수집 goroutine에 동시 실행 상한과 종료 대기를 도입한다"}
{"ts":"2026-09-07T02:17:32+09:00","date":"2026-09-07","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/10, released v0.237.0","outcome":"release-ready","run_id":"2026-09-07-020048-kanpic-improve","base_sha":"ad09d5fd53842b3cde31dd10f27e722abc20d8d4","head_sha":"7cdb124953c013bef095924a27ee6be0a821e762","pr":"https://github.com/hkjang/kanpic/pull/10","stages":{"base":{"state":"pinned","reason":"main@ad09d5f","at":"2026-09-07T02:01:01+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T02:01:01+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T02:05:14+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/10","at":"2026-09-07T02:05:22+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T02:07:39+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-07T02:13:19+09:00"},"merge":{"state":"done","reason":"7cdb124953c013bef095924a27ee6be0a821e762","at":"2026-09-07T02:13:23+09:00"},"release":{"state":"published","reason":"v0.237.0","at":"2026-09-07T02:15:07+09:00"},"assets":{"state":"verified","reason":"v0.237.0 자산 2개 (이전 v0.236.0: 2)","at":"2026-09-07T02:17:31+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":122,"deletions":2,"tests":1,"title":"fix: 외부 호출 캐시가 그때의 크기 상한과 시간 제한을 함께 기억한다"}
{"ts":"2026-09-07T02:36:02+09:00","date":"2026-09-07","project":"moina","result":"merged https://github.com/hkjang/moina/pull/9, release blocked (secrets)","outcome":"merged","run_id":"2026-09-07-022048-moina-improve","base_sha":"13fce09952faa7589af38837495cacd7772a415b","head_sha":"6eb0753baa7f62531858279b75a2c6b21724adf7","pr":"https://github.com/hkjang/moina/pull/9","stages":{"base":{"state":"pinned","reason":"main@13fce09","at":"2026-09-07T02:20:53+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T02:20:53+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-07T02:24:51+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/9","at":"2026-09-07T02:24:55+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T02:26:34+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-07T02:32:37+09:00"},"merge":{"state":"done","reason":"6eb0753baa7f62531858279b75a2c6b21724adf7","at":"2026-09-07T02:32:41+09:00"},"release":{"state":"blocked","reason":"릴리즈 커밋에 비밀정보 의심","at":"2026-09-07T02:36:00+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":76,"deletions":2,"tests":1,"title":"fix: keep non-ASCII media filenames intact in Content-Disposition"}
{"ts":"2026-09-07T02:51:42+09:00","date":"2026-09-07","project":"moyro","result":"verify failed: 실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","outcome":"verify-failed","run_id":"2026-09-07-024047-moyro-improve","base_sha":"2ed0530dd06d57f72007c0b4a8a52efe1f9d493e","head_sha":"444c3a72a78f473ba441c9333b60e00614845c87","pr":"","stages":{"base":{"state":"pinned","reason":"main@2ed0530","at":"2026-09-07T02:40:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T02:40:53+09:00"},"verify":{"state":"failed","reason":"실행한 검증 명령이 없음 — 정책(verify) 또는 자동 감지 필요","at":"2026-09-07T02:51:42+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":464,"deletions":24,"tests":2,"title":"fix: bound what a client can park in the preferences table"}
{"ts":"2026-09-07T03:13:32+09:00","date":"2026-09-07","project":"muni","result":"review held, PR open https://github.com/hkjang/muni/pull/9","outcome":"review-pending","run_id":"2026-09-07-030049-muni-improve","base_sha":"94fecbdf0897b64d8127a6b593513d6ca075a287","head_sha":"7c5e17267c1b89cb83fcc1f263e10d6acb9e6feb","pr":"https://github.com/hkjang/muni/pull/9","stages":{"base":{"state":"pinned","reason":"main@94fecbd","at":"2026-09-07T03:00:55+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T03:00:55+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T03:08:35+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/muni/pull/9","at":"2026-09-07T03:08:43+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: frontend/src/features/editor/ImageMenu.tsx:56 — heightFor()가 null 을 돌려줄 때(저장된 width 가 없을 때) 남아 있는 stale height 를 지우지 않고 width 만 갱신합니다. 그 결과 노드는 {width: 새 값, height: 옛 값} 이 되고 imageAttributes.ts:81 의 renderHTML 이 `aspect-ratio: 358/40` 을 그립니다. 재현: 편집기에 `<img src=... height=\"40\">` 또는 `<img src=... style=\"height:40px\">` 를 붙여 넣으면(파싱 결과 {width:null, height:40} — 실제로 확인) 처음에는 정상으로 그려지지만, 이미지 메뉴의 50% 단추를 한 번 누르는 순간 358x40 의 납작한 띠로 찌그러집니다. 이 PR 이전에는 height 가 스키마에 없어 같은 조작이 비율을 지켰으므로 명백한 회귀이며, 찌그러진 값은 그대로 저장되어 render.go 의 aspect-ratio 와 docx runs.go:227-231(attrWidth/attrHeight 를 그대로 사용)을 거쳐 HTML·PDF·DOCX 내보내기까지 전파됩니다. 고칠 곳은 한 줄입니다 — 그 분기에서 `{ width, height: null }` 로 stale height 를 함께 지우면 됩니다. / frontend/src/features/editor/extensions/imageAttributes.ts:69 — 위 결함의 근인이자 PR 자신이 세운 규칙과의 모순입니다. 서버 쪽 import_html.go:585-594 는 \"높이는 너비 옆에 있을 때만 뜻이 있다\"며 너비 없는 height 를 일부러 버리고 TestImportedPictureSizeIgnoresAHeightAlone 으로 그것을 못박아 두었는데, 편집기의 parseHTML 은 같은 규칙 없이 element.getAttribute(\"height\") / element.style.height 를 너비와 무관하게 단독으로 받아들입니다. 붙여넣기는 서버 import 를 거치지 않고 ProseMirror 클립보드 파서가 이 parseHTML 을 직접 쓰므로, 두 경로가 같은 입력에 다르게 답합니다.","at":"2026-09-07T03:13:32+09:00"}},"campaign":"","autonomy":"release","files":11,"additions":306,"deletions":9,"tests":4,"title":"feat: 그림을 그려진 모양 그대로 편집기와 HTML·PDF 까지 옮깁니다"}
{"ts":"2026-09-07T03:27:43+09:00","date":"2026-09-07","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/11, released v1.0.14","outcome":"release-ready","run_id":"2026-09-07-032049-pii-masker-improve","base_sha":"4a33c19eac59f1f0c82d2ec7bd523475787dcbe5","head_sha":"823763ead8b8dedd8b3579982acdacf22176d342","pr":"https://github.com/hkjang/pii-masker/pull/11","stages":{"base":{"state":"pinned","reason":"main@4a33c19","at":"2026-09-07T03:20:56+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T03:20:56+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-07T03:23:24+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/11","at":"2026-09-07T03:23:32+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T03:25:20+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-07T03:25:49+09:00"},"merge":{"state":"done","reason":"823763ead8b8dedd8b3579982acdacf22176d342","at":"2026-09-07T03:25:51+09:00"},"release":{"state":"published","reason":"v1.0.14","at":"2026-09-07T03:27:35+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.14","at":"2026-09-07T03:27:38+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-07T03:27:38+09:00"},"assets":{"state":"verified","reason":"v1.0.14 자산 1개 (이전 v1.0.13: 1)","at":"2026-09-07T03:27:43+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":147,"deletions":4,"tests":1,"title":"Stream job results from disk instead of buffering them"}
{"ts":"2026-09-07T03:37:11+09:00","date":"2026-09-07","project":"ptium","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-07-033048-ptium-improve","base_sha":"e9a50db08e0cdda39f9acf430e7031ee73c845bf","head_sha":"ae451c57e06940a96dbbe32552bafa291fce3005","pr":"","stages":{"base":{"state":"pinned","reason":"main@e9a50db","at":"2026-09-07T03:30:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T03:30:57+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-07T03:37:11+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":218,"deletions":20,"tests":1,"title":"Point a continued sheet slide at the rows it holds"}
{"ts":"2026-09-07T03:54:27+09:00","date":"2026-09-07","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/10, released v0.5.9","outcome":"release-ready","run_id":"2026-09-07-034048-releasedock-improve","base_sha":"82af81f38e414c86132209fce7f0ad03943114e8","head_sha":"cef1a0c2d71a1dbf475d15d9268977dc68840af3","pr":"https://github.com/hkjang/releasedock/pull/10","stages":{"base":{"state":"pinned","reason":"main@82af81f","at":"2026-09-07T03:40:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T03:40:52+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-07T03:46:33+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/10","at":"2026-09-07T03:46:40+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T03:48:43+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-07T03:49:13+09:00"},"merge":{"state":"done","reason":"cef1a0c2d71a1dbf475d15d9268977dc68840af3","at":"2026-09-07T03:49:18+09:00"},"release":{"state":"published","reason":"v0.5.9","at":"2026-09-07T03:52:06+09:00"},"assets":{"state":"verified","reason":"v0.5.9 자산 2개 (이전 v0.5.8: 2)","at":"2026-09-07T03:54:27+09:00"}},"campaign":"","autonomy":"release","files":10,"additions":175,"deletions":13,"tests":1,"title":"chore: release v0.5.9"}
{"ts":"2026-09-07T04:09:14+09:00","date":"2026-09-07","project":"relio","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-07-040051-relio-improve","base_sha":"342312268af55c0db9f6309643ccb8544e3882e2","head_sha":"253c768eaedac5cc4d0b94fe2f00e3721540ad06","pr":"","stages":{"base":{"state":"pinned","reason":"main@3423122","at":"2026-09-07T04:00:55+09:00"},"autonomy":{"state":"low-risk","reason":"롤백 PR ","at":"2026-09-07T04:00:55+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-07T04:09:14+09:00"}},"campaign":"","autonomy":"low-risk","files":3,"additions":193,"deletions":17,"tests":1,"title":"fix(auth): spend the same password derivation on every login outcome"}
{"ts":"2026-09-07T04:22:19+09:00","date":"2026-09-07","project":"umm","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-07-041048-umm-improve","base_sha":"59ae1ba2af873beb2143ee8d50845e000f7b8d18","head_sha":"34f5413375692a9d20845e761dbe56790769797e","pr":"","stages":{"base":{"state":"pinned","reason":"main@59ae1ba","at":"2026-09-07T04:10:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T04:10:59+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-07T04:22:18+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":280,"deletions":40,"tests":1,"title":"Release v0.71.5 a thought cut apart by its own handwriting"}
{"ts":"2026-09-07T04:30:52+09:00","date":"2026-09-07","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-07-043051-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-07T04:30:52+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T04:54:23+09:00","date":"2026-09-07","project":"visitflow","result":"merged https://github.com/hkjang/visitflow/pull/10, release blocked (secrets)","outcome":"merged","run_id":"2026-09-07-044048-visitflow-improve","base_sha":"a84c8d83ee8311bfbcd413a4cf46184f24aaa5f8","head_sha":"d0b0cac27dbfbb18386d5e678aa9c0497314b1e1","pr":"https://github.com/hkjang/visitflow/pull/10","stages":{"base":{"state":"pinned","reason":"main@a84c8d8","at":"2026-09-07T04:40:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T04:40:52+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T04:47:39+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/visitflow/pull/10","at":"2026-09-07T04:47:43+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T04:51:00+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-07T04:51:30+09:00"},"merge":{"state":"done","reason":"d0b0cac27dbfbb18386d5e678aa9c0497314b1e1","at":"2026-09-07T04:51:34+09:00"},"release":{"state":"blocked","reason":"릴리즈 커밋에 비밀정보 의심","at":"2026-09-07T04:54:21+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":141,"deletions":9,"tests":2,"title":"fix(exports): say when the row cap cut a CSV download short"}
{"ts":"2026-09-07T05:52:36+09:00","date":"2026-09-07","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/9, release blocked (secrets)","outcome":"merged","run_id":"2026-09-07-050049-weekly-improve","base_sha":"5763cd2e9970a70724edbc1dca9abaa928b2a5e7","head_sha":"6d8b1092de8b9a101901e63590993b04d402ae1f","pr":"https://github.com/hkjang/weekly/pull/9","stages":{"base":{"state":"pinned","reason":"main@5763cd2","at":"2026-09-07T05:00:53+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T05:00:53+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T05:26:05+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/weekly/pull/9","at":"2026-09-07T05:26:13+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T05:33:20+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-07T05:48:14+09:00"},"merge":{"state":"done","reason":"6d8b1092de8b9a101901e63590993b04d402ae1f","at":"2026-09-07T05:48:18+09:00"},"release":{"state":"blocked","reason":"릴리즈 커밋에 비밀정보 의심","at":"2026-09-07T05:52:35+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":161,"deletions":11,"tests":1,"title":"fix: 주 격자를 옮겨도 참여 분석이 이미 낸 보고서를 셉니다"}
{"ts":"2026-09-07T06:24:18+09:00","date":"2026-09-07","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/12, released v0.235.0","outcome":"release-ready","run_id":"2026-09-07-060049-AgentHub-improve","base_sha":"0bbe238d5780344b61d9a363577aa61b524b6854","head_sha":"d1b479a0e177e42910449c555afd94ea802b30ac","pr":"https://github.com/hkjang/AgentHub/pull/12","stages":{"base":{"state":"pinned","reason":"main@0bbe238","at":"2026-09-07T06:00:56+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T06:00:57+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T06:10:14+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/12","at":"2026-09-07T06:10:23+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-07T06:13:52+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-07T06:14:23+09:00"},"merge":{"state":"done","reason":"d1b479a0e177e42910449c555afd94ea802b30ac","at":"2026-09-07T06:14:27+09:00"},"release":{"state":"published","reason":"v0.235.0","at":"2026-09-07T06:19:06+09:00"},"assets":{"state":"verified","reason":"v0.235.0 자산 8개 (이전 v0.234.0: 10)","at":"2026-09-07T06:24:17+09:00"}},"campaign":"","autonomy":"release","files":17,"additions":241,"deletions":18,"tests":2,"title":"fix: a policy rule naming a person never applied to a model call"}
{"ts":"2026-09-07T07:07:15+09:00","date":"2026-09-07","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/13, released v0.9.274, asset manifest failed","outcome":"release-ready","run_id":"2026-09-07-063049-Clustara-improve","base_sha":"3a064e26819d6454b4ada223119e008ae45d8625","head_sha":"6d7f136cb4e481fa5db1125edd4dad0e0ffd6bb6","pr":"https://github.com/hkjang/clustara/pull/13","stages":{"base":{"state":"pinned","reason":"main@3a064e2","at":"2026-09-07T06:30:53+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T06:30:53+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-07T06:57:37+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/13","at":"2026-09-07T06:57:43+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-07T07:03:06+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-07T07:03:33+09:00"},"merge":{"state":"done","reason":"6d7f136cb4e481fa5db1125edd4dad0e0ffd6bb6","at":"2026-09-07T07:03:37+09:00"},"release":{"state":"published","reason":"v0.9.274","at":"2026-09-07T07:07:11+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.274","at":"2026-09-07T07:07:12+09:00"},"manifest":{"state":"failed","reason":"누락/불량: clustara-v0.9.274.tar.gz.sha256(too-small) README-offline-v0.9.274.md(too-small)","at":"2026-09-07T07:07:13+09:00"},"assets":{"state":"n/a","reason":"이전 릴리즈에도 자산 없음","at":"2026-09-07T07:07:14+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":365,"deletions":15,"tests":2,"title":"fix(security): a scan stored as \"unknown\" was read by the Trivy parser (v0.9.274)"}
{"ts":"2026-09-07T07:15:25+09:00","date":"2026-09-07","project":"Invenqor","result":"verify failed: 실패한 검증: cargo test --quiet (exit 127)","outcome":"verify-failed","run_id":"2026-09-07-071051-Invenqor-improve","base_sha":"74b9a2bda803051781d259f37a2b148b0d4eb428","head_sha":"0b45b2dc6db981b45e40324685548c4d3cfdf0a9","pr":"","stages":{"base":{"state":"pinned","reason":"main@74b9a2b","at":"2026-09-07T07:10:58+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T07:10:58+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cargo test --quiet (exit 127)","at":"2026-09-07T07:15:24+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":136,"deletions":8,"tests":1,"title":"fix: a full page of MCP results claimed there was another page"}
{"ts":"2026-09-07T07:36:29+09:00","date":"2026-09-07","project":"ReSSO","result":"review held, PR open https://github.com/hkjang/ReSSO/pull/10","outcome":"review-pending","run_id":"2026-09-07-072050-ReSSO-improve","base_sha":"060f26d92625237faa10797f128bfed60ecf0082","head_sha":"acac75431416f2694c288e69adc684590f2d784b","pr":"https://github.com/hkjang/ReSSO/pull/10","stages":{"base":{"state":"pinned","reason":"main@060f26d","at":"2026-09-07T07:20:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T07:20:57+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T07:30:33+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/10","at":"2026-09-07T07:30:41+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/httpserver/oidc.go:545 새 분류가 store.ErrNotFound 만 '호출자 사실'로 보기 때문에, 호출자가 보낸 잘못된 입력에서 나온 DB 오류까지 '조회 실패(=우리 잘못)'로 취급된다. client_id 에 NUL 바이트를 넣으면 ClientByIdentifier 의 텍스트 파라미터가 PostgreSQL 에서 'invalid byte sequence for encoding UTF8 (SQLSTATE 22021)' 로 실패하고 ErrNotFound 가 아니므로, 인증되지 않은 호출자가 /token, /token/introspect, /revoke 에 대해 횟수 제한 없이 500 server_error 를 받아낸다. 실측 확인: 동일한 임시 통합 테스트로 HEAD 는 25회 연속 500(제한 없음), main 은 1회차 401 → 25회차 429 였다. 장애가 전혀 없는데도 요청마다 ERROR 로그 'client authentication could not be decided' 가 남는다 / internal/httpserver/oidc.go:509-512 위 결함으로 함수 주석의 계약이 코드와 어긋난 채 남았다. 주석은 실패 카운팅 목적이 '비밀값 추측을 제한하고, 인증되지 않은 호출자가 자격증명 검증 경로를 계속 붙잡고 있지 못하게' 하는 것이라고 말하지만, 이제 잘못된 형식의 client_id 로 보낸 요청은 client 버킷·address 버킷 어디에도 세지 않아 200/5분 주소 제한을 그대로 우회한다(정상 형식의 없는 client_id 는 여전히 ErrNotFound 로 세므로, 우회는 잘못된 입력에서만 생기는 새 경로다) / docs/operations.md:65 이번 PR 이 추가한 운영 지침이 위 결함 때문에 성립하지 않는다. 문서는 500 + 로그 'client authentication could not be decided' 를 '조회 자체를 못 한 상태(저장소 장애)' 의 신호로 읽으라고 말하지만, 인증되지 않은 외부 호출자가 바이트 하나로 이 신호를 원하는 만큼 만들어 낼 수 있어 오탐 호출(false page)이 가능하다","at":"2026-09-07T07:36:27+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":178,"deletions":2,"tests":1,"title":"fix: separate a credential this service could not check from one it rejected"}
{"ts":"2026-09-07T08:04:51+09:00","date":"2026-09-07","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/111, released v0.7.45","outcome":"release-ready","run_id":"2026-09-07-074049-Vendra-improve","base_sha":"5d29bb963bb07389cee3d9196d3dd9f107893a60","head_sha":"d1337ad4dd5baa0b3f680a59368aaf43d4c2e6bd","pr":"https://github.com/hkjang/Vendra/pull/111","stages":{"base":{"state":"pinned","reason":"main@5d29bb9","at":"2026-09-07T07:40:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T07:40:57+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T07:57:13+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/111","at":"2026-09-07T07:57:20+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-07T08:01:48+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-07T08:02:22+09:00"},"merge":{"state":"done","reason":"d1337ad4dd5baa0b3f680a59368aaf43d4c2e6bd","at":"2026-09-07T08:02:26+09:00"},"release":{"state":"published","reason":"v0.7.45","at":"2026-09-07T08:03:46+09:00"},"assets":{"state":"verified","reason":"v0.7.45 자산 1개 (이전 v0.7.44: 1)","at":"2026-09-07T08:04:51+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":528,"deletions":27,"tests":3,"title":"fix: let a wrong approval rule be corrected, and hold the edit to the checks the creation passed"}
{"ts":"2026-09-07T08:20:10+09:00","date":"2026-09-07","project":"ai-admin","result":"guarded files, PR open https://github.com/hkjang/ai-admin/pull/11","outcome":"review-pending","run_id":"2026-09-07-081100-ai-admin-improve","base_sha":"1667ffb43d5883707aeeea9c2172e1ff616c39d8","head_sha":"7318a5d826b333ffc5635d783e4c0765d10f6f6f","pr":"https://github.com/hkjang/ai-admin/pull/11","stages":{"base":{"state":"pinned","reason":"main@1667ffb","at":"2026-09-07T08:11:04+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T08:11:04+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-07T08:20:01+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/11","at":"2026-09-07T08:20:08+09:00"},"guard":{"state":"held","reason":"compose.offline.yml ","at":"2026-09-07T08:20:08+09:00"}},"campaign":"","autonomy":"release","files":23,"additions":235,"deletions":75,"tests":3,"title":"fix: abort a chat answer that was cut short instead of ending it cleanly"}
{"ts":"2026-09-07T08:45:45+09:00","date":"2026-09-07","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/9, release skipped","outcome":"merged","run_id":"2026-09-07-083054-aiportal-front-admin-improve","base_sha":"ce38705a2d64772e650cc77a7c31b3ec33d4ee41","head_sha":"c99bca97c9a36516b1d3cce89d7ced31f09dac4e","pr":"https://github.com/hkjang/aiportal-front-admin/pull/9","stages":{"base":{"state":"pinned","reason":"main@ce38705","at":"2026-09-07T08:30:58+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T08:30:58+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-07T08:38:37+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/9","at":"2026-09-07T08:38:43+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T08:44:04+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-07T08:44:37+09:00"},"merge":{"state":"done","reason":"c99bca97c9a36516b1d3cce89d7ced31f09dac4e","at":"2026-09-07T08:44:41+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 이 저장소에는 릴리즈 관례가 존재하지 않는다. git tag 0개(로컬·원격 모두), GitHub Release 0개, CHANGELOG.md / docs/RELEASE*.md / 릴리즈 노트 없음, .github/workflows 디렉터리 자체가 없음, scripts/release*.sh·Makefile 등 릴리즈 스크립트도 없음. 버전 필드는 root package.json 0.0.0(private)과 upgrade/admin-v2/package.json 0.1.0 두 곳에 있으나 둘 다 최초 커밋 값 그대로이며 git 이력상 한 번도 증가한 적이 없다. 배포는 .gitlab-ci.yml이 main/develop 브랜치 push에 반응해 build 후 PVC 경로로 복사하는 방식이라 태그·버전과 무관하다. docs/IMPROVEMENTS.md OBS-001도 'release/version 표식'을 아직 없는 항목으로 적고 있고 docs/INDEX.md는 '날짜와 version history는 실제 release 근거가 있을 때만 기록한다'고 명시한다. 따라서 어떤 패키지의 버전을 올릴지, 태그 형식, 릴리즈 노트 위치·양식을 전부 새로 정해야 하므로 지침 5에 따라 아무것도 만들지 않고 skipped로 기록한다.","at":"2026-09-07T08:45:45+09:00"}},"campaign":"","autonomy":"release","files":9,"additions":1044,"deletions":13,"tests":3,"title":"fix(admin-v2): 딥링크 query가 바뀌면 화면 조건을 다시 맞춘다"}
{"ts":"2026-09-07T08:59:57+09:00","date":"2026-09-07","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/7, release skipped","outcome":"merged","run_id":"2026-09-07-085051-aiportal-front-improve","base_sha":"3824e48dc43ea26a923c82f5d88311fd0aa34d68","head_sha":"cdc157a917437fed79ebdc20a9f47ed1618994c1","pr":"https://github.com/hkjang/aiportal-front/pull/7","stages":{"base":{"state":"pinned","reason":"main@3824e48","at":"2026-09-07T08:50:54+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T08:50:54+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-07T08:55:49+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/7","at":"2026-09-07T08:55:55+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T08:58:07+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-07T08:58:40+09:00"},"merge":{"state":"done","reason":"cdc157a917437fed79ebdc20a9f47ed1618994c1","at":"2026-09-07T08:58:44+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 관례가 전혀 없는 저장소입니다. 확인 결과: (1) git 태그 0개(`git tag | wc -l` = 0), (2) GitHub Release 이력 없음(러너가 미리 가져온 목록이 비어 있음), (3) CHANGELOG.md / docs/RELEASE*.md / 릴리즈 노트 파일 없음(docs/ 는 개발·테스트 가이드만 존재), (4) 릴리즈 커밋 양식 없음 — 전체 커밋 11개가 `first commit` + fix/test 커밋과 PR 머지뿐이고 release/버전 관련 커밋이 하나도 없음, (5) 버전 파일 사실상 없음 — package.json 은 `\"private\": true` 에 `\"version\": \"0.0.0\"` 으로 first commit 이후 한 번도 갱신된 적이 없는 Vite 스캐폴드 기본값이며, README.md 의 `## 버전 기록` 표(`0.0.1 | 2025-01-01 | 초기 릴리스`) 역시 first commit 부터 그대로인 보일러플레이트로 이후 4번의 수정 커밋에서 전혀 갱신되지 않았고 package.json 값(0.0.0)과도 어긋남, (6) 릴리즈/패키징 스크립트 없음 — scripts/ 디렉터리·Makefile 부재, package.json scripts 는 dev/build/preview/test 뿐, (7) .github 디렉터리 자체가 없어 태그 푸시나 릴리즈에 반응하는 워크플로 없음. 유일한 CI 는 .gitlab-ci.yml 이며 태그가 아니라 브랜치 푸시(main/develop)에 반응해 `npm run build:*` 후 PVC 디렉터리로 dist 를 복사하는 방식이라 버전·태그 개념을 쓰지 않음. 따라서 버전 체계(0.0.0 vs README 의 0.0.1 중 무엇을 기준으로 할지), 태그 형식, 릴리즈 노트 위치·양식을 이번에 새로 정해야 하는데 이는 사람이 결정할 일이므로 지침 5에 따라 아무것도 만들지 않고 건너뜁니다. 저장소는 손대지 않았고 워킹트리는 깨끗합니다(커밋·태그·파일 변경 없음).","at":"2026-09-07T08:59:56+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":330,"deletions":47,"tests":1,"title":"fix: 로그아웃 후 사용자 정보 잔존 및 탭 간 동기화 누락 수정"}
{"ts":"2026-09-07T09:18:30+09:00","date":"2026-09-07","project":"aiportal-java","result":"verify failed: 실패한 검증: ./gradlew --quiet test (exit 126)","outcome":"verify-failed","run_id":"2026-09-07-091050-aiportal-java-improve","base_sha":"3ffa5cab382960536cba210be6d2e59874ef7d58","head_sha":"12cfb27f3779d06b5c35a1421a779aafca65d0e8","pr":"","stages":{"base":{"state":"pinned","reason":"main@3ffa5ca","at":"2026-09-07T09:10:55+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T09:10:55+09:00"},"verify":{"state":"failed","reason":"실패한 검증: ./gradlew --quiet test (exit 126)","at":"2026-09-07T09:18:29+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":160,"deletions":23,"tests":1,"title":"fix(drm): DRM 복호화 실패가 성공으로 위장되어 암호문이 그대로 처리되는 문제 수정"}
{"ts":"2026-09-07T09:46:14+09:00","date":"2026-09-07","project":"weekly","result":"release-only, released v0.290.0","outcome":"release-ready","run_id":"2026-09-07-091911-weekly-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"published","reason":"v0.290.0","at":"2026-09-07T09:44:36+09:00"},"assets":{"state":"verified","reason":"v0.290.0 자산 1개 (이전 v0.289.0: 1)","at":"2026-09-07T09:46:13+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T09:49:03+09:00","date":"2026-09-07","project":"moina","result":"release-only, release skipped","outcome":"merged","run_id":"2026-09-07-094646-moina-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈할 새 변경이 없습니다. 이번 세션의 대상인 Content-Disposition RFC 6266 수정(6eb0753)은 2026-09-07 02:32에 PR #9(50cc89a)로 main에 머지된 뒤, 06:59의 Flow 성능 커밋(aaea11b)과 함께 07:10의 릴리즈 커밋 f6651f5 = 태그 v0.1.23에 이미 포함되어 나갔습니다(GitHub Release moina v0.1.23, 2026-09-06T22:24:40Z, asset moina-v0.1.23.tar.gz). 현재 HEAD·origin/main·태그 v0.1.23이 모두 f6651f5로 동일하고 `git log v0.1.23..HEAD`와 `git diff v0.1.23 HEAD`가 비어 있어, v0.1.24를 끊으면 내용이 완전히 같은 이미지에 태그만 새로 붙는 빈 릴리즈가 됩니다. 버전 파일과 문서만 올리는 릴리즈는 이 저장소의 관례(릴리즈 커밋이 그 릴리즈가 담은 수정을 README 릴리스 문단에 기술)와도 맞지 않아 수행하지 않았습니다. 저장소는 정상 상태이며 되돌린 변경은 없습니다.","at":"2026-09-07T09:49:02+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T09:51:58+09:00","date":"2026-09-07","project":"visitflow","result":"release-only, release skipped","outcome":"merged","run_id":"2026-09-07-094934-visitflow-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"skipped","reason":"릴리즈 안 함: Nothing new to release: HEAD (70941c2 'feat(notifications): e-mail channel for delivery rules') is already the tagged commit of v2.7.0 on origin (git ls-remote: refs/tags/v2.7.0^{} -> 70941c22cb4a09ebf59280700374bbb9caef71ff), and GitHub Release 'VisitFlow v2.7.0' with asset visitflow-v2.7.0.tar.gz already exists. 'git log v2.7.0..HEAD' is empty and all version markers (README.md, docs/index.html, web/package.json, web/package-lock.json) already read 2.7.0, so a new tag would ship an identical tree. Note: local-only tags v2.6.6/v2.6.7 from earlier sessions were never pushed (absent from origin and from GitHub Releases); they were superseded by v2.7.0, which contains those same fixes (PRs #9 and #10). Release assets are produced by .github/workflows/release.yml on tag push, so no local artifacts were needed.","at":"2026-09-07T09:51:57+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:00:38+09:00","date":"2026-09-07","project":"dataworks","result":"release-only, released v0.9.43","outcome":"release-ready","run_id":"2026-09-07-095229-dataworks-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"published","reason":"v0.9.43","at":"2026-09-07T10:00:28+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.43","at":"2026-09-07T10:00:32+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.43.tar.gz ","at":"2026-09-07T10:00:33+09:00"},"assets":{"state":"verified","reason":"v0.9.43 자산 1개 (이전 v0.9.42: 1)","at":"2026-09-07T10:00:38+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:02:30+09:00","date":"2026-09-07","project":"jupiq","result":"release-only, release skipped","outcome":"merged","run_id":"2026-09-07-100110-jupiq-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈할 미출시 커밋이 없습니다. origin/main과 이 체크아웃의 HEAD가 모두 def3e1928d68b0d1d1a2221b95f000da85eb57ea이며, 이는 이미 태그 v1.4.6이 가리키는 커밋이고 GitHub Release jupiq v1.4.6(2026-09-07T00:38:58Z)으로 이미 배포되었습니다. git diff v1.4.6..HEAD와 git log v1.4.6..HEAD 모두 비어 있고 VERSION은 1.4.6입니다. 이번에 언급된 '허브 수집 goroutine 동시 실행 상한' 변경(e870473)은 git tag --contains 결과 v1.4.5·v1.4.6에 이미 포함되어 있습니다. 내용 변경이 전혀 없는 v1.4.7 태그를 새로 만드는 것은 빈 릴리즈이므로 수행하지 않았습니다.","at":"2026-09-07T10:02:30+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:07:42+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/10","outcome":"review-pending","run_id":"2026-09-07-100710-AgentHub-approve","base_sha":"","head_sha":"235f78be9b0d729f86aec7485c8052b0d05a3ed3","pr":"https://github.com/hkjang/AgentHub/pull/10","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:07:42+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:08:48+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/11","outcome":"review-pending","run_id":"2026-09-07-100815-AgentHub-approve","base_sha":"","head_sha":"1c4057fdc43a46bd55c507c09eb5235685545aec","pr":"https://github.com/hkjang/AgentHub/pull/11","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:08:47+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:10:45+09:00","date":"2026-09-07","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/12 (approved), release skipped","outcome":"merged","run_id":"2026-09-07-100921-Quantoss-approve","base_sha":"","head_sha":"212afd4215cb5b15e18760563aaca5e16c6333ef","pr":"https://github.com/hkjang/Quantoss/pull/12","stages":{"merge":{"state":"done","reason":"212afd4215cb5b15e18760563aaca5e16c6333ef (사람 승인)","at":"2026-09-07T10:09:56+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. 태그 0개(git tag --sort=-creatordate 결과 없음), GitHub Release 없음(러너 제공 목록 비어 있음), .github/workflows 디렉터리 자체가 없어 태그/릴리즈에 반응하는 워크플로 없음, CHANGELOG.md·docs/RELEASE*.md 등 릴리즈 노트 없음, 버전 파일 없음(package.json/pyproject.toml/VERSION/Cargo.toml/Chart.yaml/Makefile 부재, go.mod 에는 모듈 경로만), git log --all 에 release/릴리즈 관련 커밋 0건, scripts/ 에는 check_dashboard.sh·lab.sh·run.sh·run_cmd.sh 뿐으로 release/offline/package 빌드 스크립트 없음. 코드 내 유일한 '버전'인 internal/agent/publish.go 의 BuildVersion() 은 VCS 커밋 해시 7자리를 반환하는 빌드 스탬프로 릴리즈 버전 체계가 아님. 관례를 새로 정하는 것은 사람의 몫이므로 커밋·태그·파일을 만들지 않았습니다.","at":"2026-09-07T10:10:45+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:20:50+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/10, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-102006-AgentHub-approve","base_sha":"","head_sha":"235f78be9b0d729f86aec7485c8052b0d05a3ed3","pr":"https://github.com/hkjang/AgentHub/pull/10","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:20:38+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T10:20:49+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:22:01+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/11, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-102121-AgentHub-approve","base_sha":"","head_sha":"1c4057fdc43a46bd55c507c09eb5235685545aec","pr":"https://github.com/hkjang/AgentHub/pull/11","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:21:53+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T10:22:00+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:23:13+09:00","date":"2026-09-07","project":"Quantoss","result":"approved https://github.com/hkjang/Quantoss/pull/13, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-102232-Quantoss-approve","base_sha":"","head_sha":"e63952bfa4ca0d775d93ac6ac095b09fc8c9e8f1","pr":"https://github.com/hkjang/Quantoss/pull/13","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:23:04+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T10:23:12+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:25:11+09:00","date":"2026-09-07","project":"Quantoss","result":"merged https://github.com/hkjang/Quantoss/pull/15 (approved), release skipped","outcome":"merged","run_id":"2026-09-07-102343-Quantoss-approve","base_sha":"","head_sha":"805f1040014ea2e9c14d11f59fa4cf08039277ad","pr":"https://github.com/hkjang/Quantoss/pull/15","stages":{"merge":{"state":"done","reason":"805f1040014ea2e9c14d11f59fa4cf08039277ad (사람 승인)","at":"2026-09-07T10:24:18+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 관례가 전혀 없는 저장소입니다. git 태그 0개(`git tag | wc -l` = 0), GitHub Release 목록 비어 있음, `.github/workflows/` 없음. 버전 파일(package.json/pyproject.toml/VERSION/version.go/Cargo.toml/Chart.yaml 등) 없음 — go.mod 에도 module 경로와 go 1.26 뿐이고 semver 없음. CHANGELOG.md·docs/RELEASE*.md·릴리즈 노트 없음(전체 히스토리 `git log --diff-filter=A --all` 에도 그런 파일이 추가된 적 없음). scripts/ 에는 check_dashboard.sh·lab.sh·run.sh·run_cmd.sh 뿐이고 release/offline/package 스크립트나 Makefile 없음. 커밋 로그의 '버전'은 모두 status.json 의 '게이트 코드 버전'(git 커밋 해시 기반 VersionHash/BuildVersion)이며 릴리즈 버전이 아닙니다. 관례를 새로 정하는 것은 사람의 몫이므로 태그·버전 파일·릴리즈 노트를 만들지 않았습니다. 저장소는 변경 없이 그대로입니다.","at":"2026-09-07T10:25:11+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:35:34+09:00","date":"2026-09-07","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/10 (approved), released v1.2.10","outcome":"release-ready","run_id":"2026-09-07-102543-ai-admin-approve","base_sha":"","head_sha":"96ee0648f0a2a87de1ef7b87fecdaa8076bcd028","pr":"https://github.com/hkjang/ai-admin/pull/10","stages":{"merge":{"state":"done","reason":"96ee0648f0a2a87de1ef7b87fecdaa8076bcd028 (사람 승인)","at":"2026-09-07T10:26:18+09:00"},"release":{"state":"published","reason":"v1.2.10","at":"2026-09-07T10:33:58+09:00"},"assets":{"state":"verified","reason":"v1.2.10 자산 2개 (이전 v1.2.9: 2)","at":"2026-09-07T10:35:33+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:37:35+09:00","date":"2026-09-07","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/5 (approved), release skipped","outcome":"merged","run_id":"2026-09-07-103605-aiportal-front-approve","base_sha":"","head_sha":"7ff4f4566571306f56b25e06de7e51a6782e06c1","pr":"https://github.com/hkjang/aiportal-front/pull/5","stages":{"merge":{"state":"done","reason":"7ff4f4566571306f56b25e06de7e51a6782e06c1 (사람 승인)","at":"2026-09-07T10:36:40+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없습니다. 태그 0개(git tag 결과 없음), GitHub Release 없음, CHANGELOG/릴리즈 노트 파일 없음, 릴리즈 커밋 양식 없음(전체 13개 커밋 중 해당 없음). package.json 의 version 은 first commit 이후 한 번도 변경되지 않은 기본값 \"0.0.0\" 이며 private:true 입니다. README.md / docs/01-시작하기.md 의 '버전 기록' 표는 0.0.1 / 2025-01-01 초기 릴리스 한 줄짜리 템플릿 잔재로 package.json 값과도 어긋나 실제 릴리즈를 추적한 적이 없습니다. .github/workflows 는 존재하지 않고 .gitlab-ci.yml 은 브랜치 기반 build/deploy 만 정의하여 태그·릴리즈에 반응하지 않습니다. scripts/ 나 Makefile 등 릴리즈 자산 생성 스크립트도 없습니다. 릴리즈 관례를 새로 정하는 것은 사람의 판단이므로 버전 변경·커밋·태그를 만들지 않았습니다.","at":"2026-09-07T10:37:34+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:39:35+09:00","date":"2026-09-07","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/6 (approved), release skipped","outcome":"merged","run_id":"2026-09-07-103805-aiportal-front-approve","base_sha":"","head_sha":"089124b8be72825aa33a1f2b0999f712f4ecb065","pr":"https://github.com/hkjang/aiportal-front/pull/6","stages":{"merge":{"state":"done","reason":"089124b8be72825aa33a1f2b0999f712f4ecb065 (사람 승인)","at":"2026-09-07T10:38:40+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. git 태그가 하나도 없고(`git tag` 결과 없음), package.json 의 version 은 최초 커밋(ab700ba) 이래 계속 스캐폴드 기본값 \"0.0.0\" 이며 한 번도 증가된 적이 없습니다. CHANGELOG.md / docs/RELEASE*.md 등 릴리즈 노트가 없고, GitHub Release 목록도 비어 있으며 .github/workflows 디렉터리 자체가 존재하지 않습니다. 배포는 .gitlab-ci.yml 의 GitLab CI 가 브랜치 푸시($CI_COMMIT_BRANCH == \"main\"/\"develop\") 로만 트리거되며 태그나 릴리즈에 반응하지 않습니다(docs/08-GitLab-CICD-가이드.md 의 $CI_COMMIT_TAG 예시는 실제 파이프라인이 아니라 문서의 rules 사용 예시임). release/offline/package 용 스크립트나 Makefile, 릴리즈 자산도 없습니다. 따를 기존 관례가 없어 버전 체계·태그 형식·릴리즈 노트 양식을 새로 정하는 것은 사람의 판단이므로 아무것도 만들지 않고 건너뜁니다.","at":"2026-09-07T10:39:35+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:41:42+09:00","date":"2026-09-07","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/7 (approved), release skipped","outcome":"merged","run_id":"2026-09-07-104006-aiportal-py-approve","base_sha":"","head_sha":"4587666b59e24c9b2e4b4ab9447ccac3c4989140","pr":"https://github.com/hkjang/aiportal-py/pull/7","stages":{"merge":{"state":"done","reason":"4587666b59e24c9b2e4b4ab9447ccac3c4989140 (사람 승인)","at":"2026-09-07T10:40:41+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. git 태그 0개, GitHub Release 없음, CHANGELOG.md/docs/RELEASE*.md 등 릴리즈 노트 없음, 버전 파일 없음(pyproject.toml/setup.py/VERSION/package.json 모두 부재). api.py:106 의 version=\"1.0.0\" 은 FastAPI 앱 메타데이터로 first commit 이후 한 번도 변경된 적이 없어 릴리즈 버전 파일로 볼 수 없습니다. .github/workflows 도 없고, 배포는 .gitlab-ci.yml 이 main/develop 브랜치 푸시에 반응해 git reset --hard 후 k8s rollout restart/podman restart 하는 브랜치 기반 방식이라 태그·버전·릴리즈 자산을 전혀 쓰지 않습니다. 릴리즈 스크립트(scripts/release*.sh, Makefile, Dockerfile, docker-compose)도 없습니다. 새 버전 관례를 정하는 것은 사람의 몫이므로 태그·커밋·파일 변경을 만들지 않았습니다.","at":"2026-09-07T10:41:42+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:43:40+09:00","date":"2026-09-07","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/8 (approved), release skipped","outcome":"merged","run_id":"2026-09-07-104213-aiportal-py-approve","base_sha":"","head_sha":"0ab2740e5147933065ce3852436f7defee49ec21","pr":"https://github.com/hkjang/aiportal-py/pull/8","stages":{"merge":{"state":"done","reason":"0ab2740e5147933065ce3852436f7defee49ec21 (사람 승인)","at":"2026-09-07T10:42:48+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없음: git tag 0개, CHANGELOG.md/docs/RELEASE*.md 등 릴리즈 노트 없음, GitHub Release 없음, 릴리즈/태그 반응 워크플로 없음(.github/workflows 자체가 없음). pyproject.toml/setup.py/package.json/VERSION/Makefile 등 버전 파일도 없으며 유일한 버전 문자열인 api.py:107 version=\"1.0.0\" 은 FastAPI OpenAPI 메타데이터로 first commit(2075c62) 이후 한 번도 변경된 적이 없음. 배포는 .gitlab-ci.yml 이 main/develop 브랜치 푸시에 반응해 배포 디렉터리를 git reset --hard 후 rollout restart/podman restart 하는 브랜치 기반 방식이라 버전·태그를 사용하지 않음. 릴리즈 관례를 새로 정하는 것은 사람의 몫이므로 버전 파일·태그·릴리즈 노트를 만들지 않고 건너뜀.","at":"2026-09-07T10:43:40+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:45:20+09:00","date":"2026-09-07","project":"relio","result":"approved https://github.com/hkjang/relio/pull/12","outcome":"review-pending","run_id":"2026-09-07-104519-relio-approve","base_sha":"","head_sha":"3e85fcf9bb922e6233b816b32f5fccb813ef220b","pr":"https://github.com/hkjang/relio/pull/12","stages":{"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-07T10:45:20+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:54:04+09:00","date":"2026-09-07","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/10, release skipped","outcome":"merged","run_id":"2026-09-07-104622-aiportal-py-improve","base_sha":"8c39dd66240199697991cc6536aa262a07cb263d","head_sha":"be496d6bf07a4ca9aea16a7455f299cdb6fe3538","pr":"https://github.com/hkjang/aiportal-py/pull/10","stages":{"base":{"state":"pinned","reason":"main@8c39dd6","at":"2026-09-07T10:46:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T10:46:24+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-07T10:50:43+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/10","at":"2026-09-07T10:50:49+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T10:52:15+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-07T10:52:47+09:00"},"merge":{"state":"done","reason":"be496d6bf07a4ca9aea16a7455f299cdb6fe3538","at":"2026-09-07T10:52:51+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 관례가 전혀 없습니다. git tag 0개, CHANGELOG/docs/RELEASE* 없음, GitHub Release 없음, 버전 파일(pyproject.toml/setup.py/VERSION/package.json/Chart.yaml/Makefile) 없음, .github 워크플로 없음, 릴리즈/패키징 스크립트 없음. 유일한 버전 리터럴인 api.py:108 version=\"1.0.0\" 은 FastAPI app 메타데이터로 first commit(2075c62) 에서 추가된 뒤 이후 20개 커밋(자동 수정 머지 8건 포함) 동안 한 번도 변경되지 않아 릴리즈 버전으로 관리되는 값이 아닙니다. 배포는 .gitlab-ci.yml 의 deploy stage 6개 job 이 main/develop 브랜치 푸시에 반응해 배포 호스트에서 git reset --hard 후 rollout/podman restart 하는 브랜치 기반 연속 배포이며, 태그에 반응하는 rule 이 없습니다. docs/ROADMAP.md 의 'Release R0~R5' 는 향후 계획 마일스톤이지 발행된 릴리즈 이력이 아닙니다. 관례를 새로 정하는 것은 사람의 일이므로 태그·버전 파일·릴리즈 노트를 만들지 않고 건너뜁니다. 저장소는 변경하지 않았습니다.","at":"2026-09-07T10:54:04+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":254,"deletions":8,"tests":1,"title":"fix: /health 가 공용 Milvus default alias 를 끊지 않도록 전용 alias 도입 (감사 A-007)"}
{"ts":"2026-09-07T10:55:18+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/10, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-105438-AgentHub-approve","base_sha":"","head_sha":"235f78be9b0d729f86aec7485c8052b0d05a3ed3","pr":"https://github.com/hkjang/AgentHub/pull/10","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:55:10+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T10:55:17+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:56:26+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/11, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-105545-AgentHub-approve","base_sha":"","head_sha":"1c4057fdc43a46bd55c507c09eb5235685545aec","pr":"https://github.com/hkjang/AgentHub/pull/11","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:56:17+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T10:56:24+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:57:41+09:00","date":"2026-09-07","project":"Quantoss","result":"approved https://github.com/hkjang/Quantoss/pull/13, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-105657-Quantoss-approve","base_sha":"","head_sha":"e63952bfa4ca0d775d93ac6ac095b09fc8c9e8f1","pr":"https://github.com/hkjang/Quantoss/pull/13","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:57:30+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T10:57:39+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:58:50+09:00","date":"2026-09-07","project":"aiportal-py","result":"approved https://github.com/hkjang/aiportal-py/pull/9, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-105812-aiportal-py-approve","base_sha":"","head_sha":"90199dcd390fd040458c910499cdc0664ef73702","pr":"https://github.com/hkjang/aiportal-py/pull/9","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T10:58:45+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T10:58:49+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T10:59:24+09:00","date":"2026-09-07","project":"relio","result":"approved https://github.com/hkjang/relio/pull/12","outcome":"review-pending","run_id":"2026-09-07-105922-relio-approve","base_sha":"","head_sha":"3e85fcf9bb922e6233b816b32f5fccb813ef220b","pr":"https://github.com/hkjang/relio/pull/12","stages":{"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-07T10:59:24+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:10:47+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/10, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-111006-AgentHub-approve","base_sha":"","head_sha":"235f78be9b0d729f86aec7485c8052b0d05a3ed3","pr":"https://github.com/hkjang/AgentHub/pull/10","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:10:38+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:10:46+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:11:55+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/11, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-111115-AgentHub-approve","base_sha":"","head_sha":"1c4057fdc43a46bd55c507c09eb5235685545aec","pr":"https://github.com/hkjang/AgentHub/pull/11","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:11:47+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:11:54+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:13:05+09:00","date":"2026-09-07","project":"Quantoss","result":"approved https://github.com/hkjang/Quantoss/pull/13, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-111223-Quantoss-approve","base_sha":"","head_sha":"e63952bfa4ca0d775d93ac6ac095b09fc8c9e8f1","pr":"https://github.com/hkjang/Quantoss/pull/13","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:12:56+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:13:02+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:14:13+09:00","date":"2026-09-07","project":"aiportal-py","result":"approved https://github.com/hkjang/aiportal-py/pull/9, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-111335-aiportal-py-approve","base_sha":"","head_sha":"90199dcd390fd040458c910499cdc0664ef73702","pr":"https://github.com/hkjang/aiportal-py/pull/9","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:14:08+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:14:12+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:14:42+09:00","date":"2026-09-07","project":"relio","result":"approved https://github.com/hkjang/relio/pull/12","outcome":"review-pending","run_id":"2026-09-07-111441-relio-approve","base_sha":"","head_sha":"3e85fcf9bb922e6233b816b32f5fccb813ef220b","pr":"https://github.com/hkjang/relio/pull/12","stages":{"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-07T11:14:42+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:35:37+09:00","date":"2026-09-07","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/6, released v2.5.2","outcome":"release-ready","run_id":"2026-09-07-111546-appstore-improve","base_sha":"818bc9405b2e2ef3f0fef2812276b3035d1c4ac6","head_sha":"ab67119aec5db75af522709fc1004107bb03fcd2","pr":"https://github.com/hkjang/appstore/pull/6","stages":{"base":{"state":"pinned","reason":"main@818bc94","at":"2026-09-07T11:15:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T11:15:50+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-07T11:21:17+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/6","at":"2026-09-07T11:21:23+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T11:23:10+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-07T11:25:44+09:00"},"merge":{"state":"done","reason":"ab67119aec5db75af522709fc1004107bb03fcd2","at":"2026-09-07T11:25:48+09:00"},"release":{"state":"published","reason":"v2.5.2","at":"2026-09-07T11:33:30+09:00"},"assets":{"state":"verified","reason":"v2.5.2 자산 1개 (이전 v2.5.1: 1)","at":"2026-09-07T11:35:36+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":89,"deletions":25,"tests":2,"title":"fix: keep the editorial order in the MCP featured shelf"}
{"ts":"2026-09-07T11:40:46+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/10, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-114006-AgentHub-approve","base_sha":"","head_sha":"235f78be9b0d729f86aec7485c8052b0d05a3ed3","pr":"https://github.com/hkjang/AgentHub/pull/10","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:40:38+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:40:45+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:41:52+09:00","date":"2026-09-07","project":"AgentHub","result":"approved https://github.com/hkjang/AgentHub/pull/11, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-114112-AgentHub-approve","base_sha":"","head_sha":"1c4057fdc43a46bd55c507c09eb5235685545aec","pr":"https://github.com/hkjang/AgentHub/pull/11","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:41:43+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:41:50+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:43:00+09:00","date":"2026-09-07","project":"Quantoss","result":"approved https://github.com/hkjang/Quantoss/pull/13, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-114219-Quantoss-approve","base_sha":"","head_sha":"e63952bfa4ca0d775d93ac6ac095b09fc8c9e8f1","pr":"https://github.com/hkjang/Quantoss/pull/13","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:42:51+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:42:59+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:44:06+09:00","date":"2026-09-07","project":"aiportal-py","result":"approved https://github.com/hkjang/aiportal-py/pull/9, rebase conflict","outcome":"review-pending","run_id":"2026-09-07-114330-aiportal-py-approve","base_sha":"","head_sha":"90199dcd390fd040458c910499cdc0664ef73702","pr":"https://github.com/hkjang/aiportal-py/pull/9","stages":{"merge":{"state":"failed","reason":"머지 실패 (conflict)","at":"2026-09-07T11:44:01+09:00"},"rebase":{"state":"conflict","reason":"자동 리베이스 실패 — 수동 해결 필요","at":"2026-09-07T11:44:05+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T11:44:35+09:00","date":"2026-09-07","project":"relio","result":"approved https://github.com/hkjang/relio/pull/12","outcome":"review-pending","run_id":"2026-09-07-114434-relio-approve","base_sha":"","head_sha":"3e85fcf9bb922e6233b816b32f5fccb813ef220b","pr":"https://github.com/hkjang/relio/pull/12","stages":{"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-07T11:44:35+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-07T12:01:22+09:00","date":"2026-09-07","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/9, released v0.9.44","outcome":"release-ready","run_id":"2026-09-07-114539-dataworks-improve","base_sha":"5169c8a18659cb42c762f29d72fd0126cd3c7456","head_sha":"6130f6f5afc989ef01f8eb9b5a68aa159f9f439f","pr":"https://github.com/hkjang/dataworks/pull/9","stages":{"base":{"state":"pinned","reason":"main@5169c8a","at":"2026-09-07T11:45:42+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-07T11:45:42+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-07T11:51:55+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/9","at":"2026-09-07T11:52:02+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-07T11:55:14+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-07T11:55:47+09:00"},"merge":{"state":"done","reason":"6130f6f5afc989ef01f8eb9b5a68aa159f9f439f","at":"2026-09-07T11:55:51+09:00"},"release":{"state":"published","reason":"v0.9.44","at":"2026-09-07T12:01:12+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.44","at":"2026-09-07T12:01:16+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.44.tar.gz ","at":"2026-09-07T12:01:17+09:00"},"assets":{"state":"verified","reason":"v0.9.44 자산 1개 (이전 v0.9.43: 1)","at":"2026-09-07T12:01:21+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":232,"deletions":2,"tests":1,"title":"fix: answer data product queries with the contracted field spelling"}
{"ts":"2026-09-07T12:10:04+09:00","date":"2026-09-07","project":"(runner)","result":"daily cap reached: 회차 64 ≥ 60","outcome":"error","run_id":"","base_sha":"","head_sha":"","pr":"","stages":{},"campaign":"","autonomy":""}
{"ts":"2026-09-08T09:39:57+09:00","date":"2026-09-08","project":"AgentHub","result":"release-only, released v0.236.0, ASSETS MISSING","outcome":"releasing","run_id":"2026-09-08-091949-AgentHub-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"published","reason":"v0.236.0","at":"2026-09-08T09:25:19+09:00"},"assets":{"state":"missing","reason":"이전 v0.235.0 엔 8개, v0.236.0 엔 0개 — 워크플로: Offline Image Release: in_progress/","at":"2026-09-08T09:39:56+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T09:53:38+09:00","date":"2026-09-08","project":"relio","result":"release-only, released v1.11.19","outcome":"release-ready","run_id":"2026-09-08-094239-relio-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"published","reason":"v1.11.19","at":"2026-09-08T09:49:31+09:00"},"assets":{"state":"verified","reason":"v1.11.19 자산 1개 (이전 v1.11.14: 1)","at":"2026-09-08T09:53:38+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T10:20:19+09:00","date":"2026-09-08","project":"AgentHub","result":"review held, PR open https://github.com/hkjang/AgentHub/pull/13","outcome":"review-pending","run_id":"2026-09-08-100054-AgentHub-improve","base_sha":"127a7b8adb4d0c5ca301d213ce91b4acc342143a","head_sha":"47a7de9645917f20ea0c2b64fd77a0d182d6f0d6","pr":"https://github.com/hkjang/AgentHub/pull/13","stages":{"base":{"state":"pinned","reason":"main@127a7b8","at":"2026-09-08T10:01:01+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T10:01:01+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-08T10:14:26+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/13","at":"2026-09-08T10:14:34+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: cmd/runtime-proxy/mcp.go:339-347 주석은 \"검토자에게 보이는 것은 마스킹된 형태\"이고 \"값을 보내면 이 규칙이 막으려는 바로 그 테이블에 복사된다\"고 단언하지만, 코드가 승인 요청에 싣는 replacement 는 클래스 동작이 Redact 일 때만 마스킹된다. 클래스가 기록만(Audit)이면 internal/dlp/dlp.go:311 의 cuts 가 비어 result.Text 가 원문 그대로이고, cmd/runtime-proxy/dlp.go:78 이 그 원문을 돌려주므로 masked.Params.Arguments 에 주민등록번호 원본이 그대로 들어간다. 그 값은 awaitApproval -> approver.decide -> POST 를 거쳐 internal/api/toolapproval.go:82 와 internal/store/toolapproval.go:112 에서 tool_approvals.arguments 컬럼에 평문 저장된다. 즉 커밋 메시지가 동기로 든 바로 그 구성(클래스는 기록만, 규칙으로 나머지를 잡는다)에서 effect=require_approval 인 데이터클래스 규칙은 민감값을 컨트롤 플레인 DB 에 새로 기록한다. main 에서는 이 규칙이 Pod 에 도달하지 못했으므로 이 기록 자체가 없었고, 이번 변경으로 새로 생기는 경로다. 임시 테스트로 재현 확인함(scannerFor(\"rrn\",\"audit\") + require_approval 규칙 -> 승인 요청 본문에 900101-1234568 원문 포함). / cmd/runtime-proxy/dataclass_test.go:77 TestADataClassGateWaitsForAPerson 이 위 단언(\"The reviewer sees the call, and never the value in it\")을 검증하지만 scannerFor(\"rrn\",\"redact\") 한 가지 구성만 쓴다. 마스킹은 DLP 의 Redact 동작이 해 준 것이지 이 변경이 보장하는 것이 아니어서, 주석이 깨지는 유일한 구성(기록만/Audit)은 테스트가 전혀 건드리지 않는다. 새 기능이 내세우는 보안 속성을 실제로 성립하지 않는 조건에서 통과시키는 테스트다.","at":"2026-09-08T10:20:17+09:00"}},"campaign":"","autonomy":"release","files":17,"additions":730,"deletions":65,"tests":5,"title":"fix: a policy rule about a data class never reached the Pod"}
{"ts":"2026-09-08T10:56:40+09:00","date":"2026-09-08","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/14, released v0.9.275, asset manifest failed","outcome":"release-ready","run_id":"2026-09-08-103054-Clustara-improve","base_sha":"6d2c5795699c3b1ef1bf4ba50147df3b5e668992","head_sha":"467635da731cb57c03ab65e2daadf3bf0dbdd950","pr":"https://github.com/hkjang/clustara/pull/14","stages":{"base":{"state":"pinned","reason":"main@6d2c579","at":"2026-09-08T10:30:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T10:30:59+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-08T10:42:41+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/14","at":"2026-09-08T10:42:48+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-08T10:49:30+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-08T10:50:01+09:00"},"merge":{"state":"done","reason":"467635da731cb57c03ab65e2daadf3bf0dbdd950","at":"2026-09-08T10:50:05+09:00"},"release":{"state":"published","reason":"v0.9.275","at":"2026-09-08T10:56:32+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.275","at":"2026-09-08T10:56:37+09:00"},"manifest":{"state":"failed","reason":"누락/불량: clustara-v0.9.275.tar.gz.sha256(too-small) README-offline-v0.9.275.md(too-small)","at":"2026-09-08T10:56:38+09:00"},"assets":{"state":"n/a","reason":"이전 릴리즈에도 자산 없음","at":"2026-09-08T10:56:39+09:00"}},"campaign":"","autonomy":"release","files":9,"additions":469,"deletions":35,"tests":4,"title":"fix(terminal): a root wipe spelled `r\"m\" -rf /` passed every gate and ran"}
{"ts":"2026-09-08T11:15:43+09:00","date":"2026-09-08","project":"Clustara","result":"assets-only, assets for v0.9.275, asset manifest failed, ASSETS MISSING","outcome":"releasing","run_id":"2026-09-08-105933-Clustara-assets","base_sha":"","head_sha":"","pr":"","stages":{"manifest":{"state":"failed","reason":"누락/불량: clustara-v0.9.275.tar.gz.sha256(too-small) README-offline-v0.9.275.md(too-small)","at":"2026-09-08T11:01:11+09:00"},"assets":{"state":"missing","reason":"이전 v0.9.271 엔 3개, v0.9.275 엔 0개 — 워크플로: null: null/null","at":"2026-09-08T11:15:43+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T11:18:20+09:00","date":"2026-09-08","project":"Clustara","result":"assets-only, assets for v0.9.275","outcome":"release-ready","run_id":"2026-09-08-111617-Clustara-assets","base_sha":"","head_sha":"","pr":"","stages":{"manifest":{"state":"ok","reason":"clustara-v0.9.275.tar.gz clustara-v0.9.275.tar.gz.sha256 README-offline-v0.9.275.md ","at":"2026-09-08T11:18:10+09:00"},"assets":{"state":"verified","reason":"v0.9.275 자산 3개 (이전 v0.9.271: 3)","at":"2026-09-08T11:18:20+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T12:28:50+09:00","date":"2026-09-08","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/10, release missing","outcome":"merged","run_id":"2026-09-08-112054-Invenqor-improve","base_sha":"74b9a2bda803051781d259f37a2b148b0d4eb428","head_sha":"46dac3b22d67859074dd60876a7fc4d235084247","pr":"https://github.com/hkjang/invenqor/pull/10","stages":{"base":{"state":"pinned","reason":"main@74b9a2b","at":"2026-09-08T11:21:00+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T11:21:00+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-08T11:27:35+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/10","at":"2026-09-08T11:27:39+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T11:29:36+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-08T11:32:30+09:00"},"merge":{"state":"done","reason":"46dac3b22d67859074dd60876a7fc4d235084247","at":"2026-09-08T11:32:35+09:00"},"release":{"state":"missing","reason":"릴리즈 결과 없음/손상: missing","at":"2026-09-08T12:28:38+09:00"}},"campaign":"","autonomy":"release","files":1,"additions":237,"deletions":0,"tests":1,"title":"test: pin what an API key gets from the external API"}
{"ts":"2026-09-08T13:13:14+09:00","date":"2026-09-08","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/11, released v0.9.71","outcome":"release-ready","run_id":"2026-09-08-123054-ReSSO-improve","base_sha":"060f26d92625237faa10797f128bfed60ecf0082","head_sha":"0f2b4c883a24f8a62b08d37c82e9c9813ac743fb","pr":"https://github.com/hkjang/ReSSO/pull/11","stages":{"base":{"state":"pinned","reason":"main@060f26d","at":"2026-09-08T12:30:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T12:30:59+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T12:48:25+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/11","at":"2026-09-08T12:48:33+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T12:53:20+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T12:56:13+09:00"},"merge":{"state":"done","reason":"0f2b4c883a24f8a62b08d37c82e9c9813ac743fb","at":"2026-09-08T12:56:19+09:00"},"release":{"state":"published","reason":"v0.9.71","at":"2026-09-08T13:09:01+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.71","at":"2026-09-08T13:09:06+09:00"},"assets":{"state":"verified","reason":"v0.9.71 자산 2개 (이전 v0.9.70: 2)","at":"2026-09-08T13:13:07+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":243,"deletions":2,"tests":1,"title":"fix: stop the OIDC endpoints reporting a fault here as a missing realm"}
{"ts":"2026-09-08T14:24:36+09:00","date":"2026-09-08","project":"Invenqor","result":"release-only, released v0.2.26","outcome":"release-ready","run_id":"2026-09-08-131347-Invenqor-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"published","reason":"v0.2.26","at":"2026-09-08T14:23:19+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.26","at":"2026-09-08T14:23:24+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf RELEASE_NOTES_v0.2.26.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf compose.offline.yaml openapi.yaml invenqor-0.2.26.tar.gz invenqor-0.2.26.tar.gz.sha256 invenqor-0.2.26.tgz invenqor-0.2.26.tgz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.26.tar.gz invenqor-agents-0.2.26.tar.gz.sha256 ","at":"2026-09-08T14:23:24+09:00"},"assets":{"state":"verified","reason":"v0.2.26 자산 25개 (이전 v0.2.25: 25)","at":"2026-09-08T14:24:21+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T14:52:40+09:00","date":"2026-09-08","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/112, released v0.7.46","outcome":"release-ready","run_id":"2026-09-08-143053-Vendra-improve","base_sha":"eab9bf451cf36a52c3cd0e8ba987709933059865","head_sha":"eef34dc72171005e265dadb50cfd805d4904e0ee","pr":"https://github.com/hkjang/Vendra/pull/112","stages":{"base":{"state":"pinned","reason":"main@eab9bf4","at":"2026-09-08T14:31:00+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T14:31:00+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T14:44:04+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/112","at":"2026-09-08T14:44:13+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T14:48:55+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T14:49:25+09:00"},"merge":{"state":"done","reason":"eef34dc72171005e265dadb50cfd805d4904e0ee","at":"2026-09-08T14:49:30+09:00"},"release":{"state":"published","reason":"v0.7.46","at":"2026-09-08T14:51:36+09:00"},"assets":{"state":"verified","reason":"v0.7.46 자산 1개 (이전 v0.7.45: 1)","at":"2026-09-08T14:52:39+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":805,"deletions":14,"tests":4,"title":"fix: hold a supplier's two ways of being reached to being ones, in one shape"}
{"ts":"2026-09-08T15:25:41+09:00","date":"2026-09-08","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/12, released v1.2.11","outcome":"release-ready","run_id":"2026-09-08-150055-ai-admin-improve","base_sha":"02e6d67618e0c4127ceaa65e068ff89173afdcaa","head_sha":"990c7fbe499763caf34f06c407ecfbc755fd6d89","pr":"https://github.com/hkjang/ai-admin/pull/12","stages":{"base":{"state":"pinned","reason":"main@02e6d67","at":"2026-09-08T15:00:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T15:00:57+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T15:09:12+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/12","at":"2026-09-08T15:09:18+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T15:11:42+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T15:15:03+09:00"},"merge":{"state":"done","reason":"990c7fbe499763caf34f06c407ecfbc755fd6d89","at":"2026-09-08T15:15:09+09:00"},"release":{"state":"published","reason":"v1.2.11","at":"2026-09-08T15:24:07+09:00"},"assets":{"state":"verified","reason":"v1.2.11 자산 2개 (이전 v1.2.10: 2)","at":"2026-09-08T15:25:40+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":227,"deletions":9,"tests":1,"title":"fix: report database failures instead of state conflicts"}
{"ts":"2026-09-08T15:40:24+09:00","date":"2026-09-08","project":"ai-admin","result":"guarded files, PR open https://github.com/hkjang/ai-admin/pull/13","outcome":"review-pending","run_id":"2026-09-08-153055-ai-admin-improve","base_sha":"f1dfcb865f0d06bf8e3a14df986428e39f9d3a79","head_sha":"71122c3526a7531dda86134b5df0a401261e513a","pr":"https://github.com/hkjang/ai-admin/pull/13","stages":{"base":{"state":"pinned","reason":"main@f1dfcb8","at":"2026-09-08T15:30:58+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T15:30:58+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T15:40:16+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/13","at":"2026-09-08T15:40:22+09:00"},"guard":{"state":"held","reason":"internal/auth/auth.go ","at":"2026-09-08T15:40:22+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":254,"deletions":10,"tests":2,"title":"fix: report an unverifiable credential instead of an expired session"}
{"ts":"2026-09-08T15:57:33+09:00","date":"2026-09-08","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/10, release skipped","outcome":"merged","run_id":"2026-09-08-155053-aiportal-front-admin-improve","base_sha":"e23261d70b7884bc957b998c06792977b649c693","head_sha":"e7b7527c180f6c88c319a9380f21df5d1a7378d1","pr":"https://github.com/hkjang/aiportal-front-admin/pull/10","stages":{"base":{"state":"pinned","reason":"main@e23261d","at":"2026-09-08T15:50:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T15:50:57+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-08T15:54:41+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/10","at":"2026-09-08T15:54:47+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T15:56:00+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-08T15:56:30+09:00"},"merge":{"state":"done","reason":"e7b7527c180f6c88c319a9380f21df5d1a7378d1","at":"2026-09-08T15:56:35+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없습니다. git 태그 0개(`git tag | wc -l` = 0), CHANGELOG/RELEASE 노트 파일 없음, GitHub Release 없음, .github/workflows 디렉터리 자체가 없음. 유일한 CI인 .gitlab-ci.yml은 브랜치 기준 build/deploy(dist를 PVC로 복사)만 하고 태그·릴리즈에 반응하지 않습니다. 버전 필드는 루트 package.json(private, 0.0.0)과 upgrade/admin-v2/package.json(private, 0.1.0)에 있지만 `git log -p --follow`로 확인한 결과 두 값 모두 최초 생성 커밋 이후 한 번도 변경된 적이 없어 버전 증가 관례가 존재하지 않습니다. docs/INDEX.md도 \"날짜와 version history는 실제 release 근거가 있을 때만 기록한다\"고 명시합니다. 따라야 할 이전 방식이 없어 릴리즈 관례를 새로 만드는 대신 아무 변경도 하지 않았습니다(커밋·태그·파일 수정 없음, 작업 트리 clean).","at":"2026-09-08T15:57:33+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":127,"deletions":1,"tests":1,"title":"fix(admin-v2): 자동 갱신이 운영 현황 표를 주기마다 비우지 않게 한다"}
{"ts":"2026-09-08T16:11:58+09:00","date":"2026-09-08","project":"aiportal-front","result":"needs approval (risk=medium, files=2), PR open https://github.com/hkjang/aiportal-front/pull/8","outcome":"review-pending","run_id":"2026-09-08-160056-aiportal-front-improve","base_sha":"92b5e59a21d9ae8cc6021981d7022b43cdd6a868","head_sha":"5c935ea7e18780d123343c0f22d5b07ce2797fc7","pr":"https://github.com/hkjang/aiportal-front/pull/8","stages":{"base":{"state":"pinned","reason":"main@92b5e59","at":"2026-09-08T16:00:59+09:00"},"autonomy":{"state":"held","reason":"low-risk 단계 — 위험도 medium, 파일 2: 사람 승인 필요","at":"2026-09-08T16:11:58+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-08T16:08:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/8","at":"2026-09-08T16:09:06+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-08T16:11:57+09:00"}},"campaign":"","autonomy":"low-risk","files":2,"additions":577,"deletions":52,"tests":1,"title":"fix: OCR 사용 횟수 초기화 누락 및 상태 스토어 정합성 수정"}
{"ts":"2026-09-08T16:25:09+09:00","date":"2026-09-08","project":"aiportal-java","result":"verify failed: 실패한 검증: ./gradlew --quiet test (exit 126)","outcome":"verify-failed","run_id":"2026-09-08-162054-aiportal-java-improve","base_sha":"3ffa5cab382960536cba210be6d2e59874ef7d58","head_sha":"e10459acf46622279a516dbbabcc592efce7644f","pr":"","stages":{"base":{"state":"pinned","reason":"main@3ffa5ca","at":"2026-09-08T16:20:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T16:20:59+09:00"},"verify":{"state":"failed","reason":"실패한 검증: ./gradlew --quiet test (exit 126)","at":"2026-09-08T16:25:09+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":284,"deletions":10,"tests":2,"title":"fix(board): 등록·수정·삭제에서도 조회수가 오르는 문제 수정"}
{"ts":"2026-09-08T16:41:11+09:00","date":"2026-09-08","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/11, release skipped","outcome":"merged","run_id":"2026-09-08-163056-aiportal-py-improve","base_sha":"5b315cf43e9d9583c19373cb0b0fb2501dccd581","head_sha":"5d67513d4698f2e1ac574d47291155290d456ae2","pr":"https://github.com/hkjang/aiportal-py/pull/11","stages":{"base":{"state":"pinned","reason":"main@5b315cf","at":"2026-09-08T16:30:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T16:30:59+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-08T16:36:19+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/11","at":"2026-09-08T16:36:26+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T16:39:36+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-08T16:40:06+09:00"},"merge":{"state":"done","reason":"5d67513d4698f2e1ac574d47291155290d456ae2","at":"2026-09-08T16:40:11+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. git tag 0개(`git tag | wc -l` = 0), 사전 조회된 GitHub Release 목록 비어 있음, `.github/workflows` 디렉터리 자체가 없음. 버전 파일 부재(pyproject.toml/setup.py/setup.cfg/VERSION/Chart.yaml/package.json/Makefile 모두 없음; 유일한 버전 문자열인 api.py:123 `version=\"1.0.0\"` 은 FastAPI OpenAPI 메타데이터로 `git log -S` 결과 first commit(2075c62) 이후 한 번도 변경된 적 없음). CHANGELOG.md·docs/RELEASE*.md 등 릴리즈 노트 부재(docs/ROADMAP.md 의 R0~R5 는 버전이 아니라 로드맵 단계). 릴리즈 스크립트·검사 스크립트 부재(scripts/ 디렉터리 비어 있음). 유일한 CI 인 .gitlab-ci.yml 은 태그가 아니라 브랜치(main/develop) 푸시에 반응해 배포 호스트에서 `git reset --hard origin/$CI_COMMIT_BRANCH` 후 파드/컨테이너를 재시작하는 방식이라 버전·태그·산출물을 전혀 사용하지 않습니다. 따를 이전 관례가 없어 지침 5에 따라 버전·태그·노트·자산을 아무것도 만들지 않았습니다. 관례 수립은 사람의 결정입니다. 저장소 변경 없음(HEAD f2f984b, working tree clean).","at":"2026-09-08T16:41:11+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":397,"deletions":21,"tests":1,"title":"fix: 검색 경로의 Milvus default alias 재사용 분리 (감사 A-007 후속)"}
{"ts":"2026-09-08T17:01:18+09:00","date":"2026-09-08","project":"appstore","result":"review held, PR open https://github.com/hkjang/appstore/pull/7","outcome":"review-pending","run_id":"2026-09-08-165054-appstore-improve","base_sha":"d68a8c2c8677f69beb23baf0ea9c69604f109f03","head_sha":"f7aaeace87a90b1975b34944f5cd68d92c718e05","pr":"https://github.com/hkjang/appstore/pull/7","stages":{"base":{"state":"pinned","reason":"main@d68a8c2","at":"2026-09-08T16:51:00+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T16:51:00+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T16:58:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/7","at":"2026-09-08T16:58:53+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: server:1 (binary blob) — commit 9d81c75, whose stated scope is only the Retry-After header fix, also adds a 20,911,024-byte compiled ELF x86-64 Go binary named `server`. `file` reports it is dynamically linked, 'with debug_info, not stripped', and `strings` shows it was built without -trimpath from this worktree, so it embeds absolute local build paths (/home/hkjang/.cache/auto-improve-wt/appstore/cmd/server/main.go, .../internal/crypto/secret.go, etc.). This is a stray local `go build` artifact swept in by a blanket `git add`; it is completely unrelated to the diff's purpose (범위 이탈). / server:1 — the binary is not ignored anywhere: .gitignore lists `/appstore` but not `/server` (`git check-ignore -v server` exits 1), so the artifact will silently reappear in future commits. .dockerignore likewise ignores `appstore` but not `server`, and the Dockerfile go-build stage does `COPY . ./`, so the 20MB blob is shipped into the Docker build context and the builder layer on every image build. / server:1 — this is not cleanly revertable (되돌리기 어려움). `git revert` deletes the file from the tree but the 20MB blob stays in main's history forever once merged; removing it requires a history rewrite (filter-repo/BFG) and a force-push coordinated with every clone. A merge is therefore a one-way door for repository size.","at":"2026-09-08T17:01:16+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":382,"deletions":4,"tests":3,"title":"test: cover the static bundle handler and the shared middleware"}
{"ts":"2026-09-08T17:29:01+09:00","date":"2026-09-08","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/10, released v0.9.45","outcome":"release-ready","run_id":"2026-09-08-171056-dataworks-improve","base_sha":"6e4dfd06f6f53e13276166cea1c9e32c7fe95941","head_sha":"49b560217681c87fe2601c1f4690d1e71732d9d6","pr":"https://github.com/hkjang/dataworks/pull/10","stages":{"base":{"state":"pinned","reason":"main@6e4dfd0","at":"2026-09-08T17:10:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T17:10:59+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T17:19:23+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/10","at":"2026-09-08T17:19:32+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T17:22:05+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T17:22:35+09:00"},"merge":{"state":"done","reason":"49b560217681c87fe2601c1f4690d1e71732d9d6","at":"2026-09-08T17:22:40+09:00"},"release":{"state":"published","reason":"v0.9.45","at":"2026-09-08T17:28:51+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.45","at":"2026-09-08T17:28:56+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.45.tar.gz ","at":"2026-09-08T17:28:57+09:00"},"assets":{"state":"verified","reason":"v0.9.45 자산 1개 (이전 v0.9.44: 1)","at":"2026-09-08T17:29:00+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":258,"deletions":6,"tests":1,"title":"feat: warn before data product access expires and let the window be chosen"}
{"ts":"2026-09-08T17:43:39+09:00","date":"2026-09-08","project":"git-ctx","result":"review held, PR open https://github.com/hkjang/git-ctx/pull/22","outcome":"review-pending","run_id":"2026-09-08-173055-git-ctx-improve","base_sha":"6fa3eec52aacda343a86c9e3335419cce9e58834","head_sha":"214bf0124cc003cd9efd90446a3085c5c488920e","pr":"https://github.com/hkjang/git-ctx/pull/22","stages":{"base":{"state":"pinned","reason":"main@6fa3eec","at":"2026-09-08T17:30:58+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T17:30:58+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-08T17:39:20+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/22","at":"2026-09-08T17:39:27+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/manifest/manifest.go:254 parseGradle was rewritten from a whole-content regex to a line-by-line scan (`for _, raw := range strings.Split(content, \"\\n\")` with `gradleDeclaration` at manifest.go:217 anchored `^...$`), so a declaration wrapped over more than one line is now dropped. The old regex `(implementation|...)\\s*[( ]\\s*['\\\"]` let `\\s*` cross the newline and read it. Verified by running both parsers on the same input: for `dependencies {\\n implementation(\\n \"androidx.compose.ui:ui:1.5.0\"\\n )\\n testImplementation (\\n 'org.mockito:mockito-core:5.3.1'\\n )\\n implementation \"androidx.room:room-runtime:2.6.1\"\\n}` the parser on main returns all three packages, HEAD returns only androidx.room:room-runtime. This wrapped form is normal Kotlin-DSL / formatter-wrapped Groovy style, so a repository that declares a library only that way silently leaves the inventory — the exact failure the commit message says it is fixing ('absent reads exactly like a repository that does not use the library at all'). Behaviour therefore contradicts the commit message, which describes the change as purely additive. / internal/manifest/manifest_test.go:258 neither new test covers a declaration split across lines, so the regression above is not caught; the added cases only exercise single-line shapes.","at":"2026-09-08T17:43:38+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":159,"deletions":11,"tests":1,"title":"fix(manifest): read the Gradle declarations the inventory was dropping"}
{"ts":"2026-09-08T18:10:44+09:00","date":"2026-09-08","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/15, released v0.9.276","outcome":"release-ready","run_id":"2026-09-08-175100-Clustara-improve","base_sha":"30c38120b6d7609e9a6d05fcc9b01bbceac97c13","head_sha":"bc8218ae122ce936a2561431ac46ae1ed5de9599","pr":"https://github.com/hkjang/clustara/pull/15","stages":{"base":{"state":"pinned","reason":"main@30c3812","at":"2026-09-08T17:51:04+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T17:51:04+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-08T18:00:43+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/15","at":"2026-09-08T18:00:52+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T18:03:56+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-08T18:04:27+09:00"},"merge":{"state":"done","reason":"bc8218ae122ce936a2561431ac46ae1ed5de9599","at":"2026-09-08T18:04:31+09:00"},"release":{"state":"published","reason":"v0.9.276","at":"2026-09-08T18:10:30+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.276","at":"2026-09-08T18:10:35+09:00"},"manifest":{"state":"ok","reason":"clustara-v0.9.276.tar.gz clustara-v0.9.276.tar.gz.sha256 README-offline-v0.9.276.md ","at":"2026-09-08T18:10:36+09:00"},"assets":{"state":"verified","reason":"v0.9.276 자산 3개 (이전 v0.9.275: 3)","at":"2026-09-08T18:10:43+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":252,"deletions":26,"tests":2,"title":"fix(security): a certificate that expired 6 hours ago was reported as valid"}
{"ts":"2026-09-08T18:12:15+09:00","date":"2026-09-08","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/14, released v0.237.0","outcome":"release-ready","run_id":"2026-09-08-175057-AgentHub-improve","base_sha":"127a7b8adb4d0c5ca301d213ce91b4acc342143a","head_sha":"18a4f57a7b5f924144f8d02f8c30e10eac51be70","pr":"https://github.com/hkjang/AgentHub/pull/14","stages":{"base":{"state":"pinned","reason":"main@127a7b8","at":"2026-09-08T17:51:01+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T17:51:01+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-08T17:59:16+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/14","at":"2026-09-08T17:59:25+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T18:02:12+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T18:02:43+09:00"},"merge":{"state":"done","reason":"18a4f57a7b5f924144f8d02f8c30e10eac51be70","at":"2026-09-08T18:02:48+09:00"},"release":{"state":"published","reason":"v0.237.0","at":"2026-09-08T18:07:43+09:00"},"assets":{"state":"verified","reason":"v0.237.0 자산 8개 (이전 v0.236.0: 10)","at":"2026-09-08T18:12:14+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":182,"deletions":24,"tests":2,"title":"fix: a rule naming an agent never applied to its planner or its judge"}
{"ts":"2026-09-08T18:28:38+09:00","date":"2026-09-08","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/11, released v0.2.27","outcome":"release-ready","run_id":"2026-09-08-175105-Invenqor-improve","base_sha":"65855ed5244bfcf5fa5381a73839ba6815d91b3e","head_sha":"09ceaca703a86f262872e28ef3e248f21d3daa7a","pr":"https://github.com/hkjang/invenqor/pull/11","stages":{"base":{"state":"pinned","reason":"main@65855ed","at":"2026-09-08T17:51:09+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T17:51:09+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-08T17:59:15+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/11","at":"2026-09-08T17:59:20+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T18:02:08+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-08T18:04:04+09:00"},"merge":{"state":"done","reason":"09ceaca703a86f262872e28ef3e248f21d3daa7a","at":"2026-09-08T18:04:08+09:00"},"release":{"state":"published","reason":"v0.2.27","at":"2026-09-08T18:27:19+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.27","at":"2026-09-08T18:27:24+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf compose.offline.yaml EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf invenqor-0.2.27.tar.gz invenqor-0.2.27.tar.gz.sha256 invenqor-0.2.27.tgz invenqor-0.2.27.tgz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.27.tar.gz invenqor-agents-0.2.27.tar.gz.sha256 openapi.yaml RELEASE_NOTES_v0.2.27.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf ","at":"2026-09-08T18:27:26+09:00"},"assets":{"state":"verified","reason":"v0.2.27 자산 25개 (이전 v0.2.26: 25)","at":"2026-09-08T18:28:24+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":260,"deletions":17,"tests":1,"title":"fix: a CSV export that hit its row limit looked complete"}
{"ts":"2026-09-08T18:54:22+09:00","date":"2026-09-08","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/14, released v1.2.12","outcome":"release-ready","run_id":"2026-09-08-183103-ai-admin-improve","base_sha":"f1dfcb865f0d06bf8e3a14df986428e39f9d3a79","head_sha":"57b504200dfacf7a56b1ef4e7fd396718942fd8e","pr":"https://github.com/hkjang/ai-admin/pull/14","stages":{"base":{"state":"pinned","reason":"main@f1dfcb8","at":"2026-09-08T18:31:06+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T18:31:06+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T18:39:27+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/14","at":"2026-09-08T18:39:34+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T18:42:22+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T18:45:12+09:00"},"merge":{"state":"done","reason":"57b504200dfacf7a56b1ef4e7fd396718942fd8e","at":"2026-09-08T18:45:16+09:00"},"release":{"state":"published","reason":"v1.2.12","at":"2026-09-08T18:52:50+09:00"},"assets":{"state":"verified","reason":"v1.2.12 자산 2개 (이전 v1.2.11: 2)","at":"2026-09-08T18:54:21+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":191,"deletions":29,"tests":1,"title":"fix: save profile and preference changes instead of losing them"}
{"ts":"2026-09-08T18:55:43+09:00","date":"2026-09-08","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/113, released v0.7.47","outcome":"release-ready","run_id":"2026-09-08-183058-Vendra-improve","base_sha":"e5a7ae848b0d53a43c7efe01c841e16a6a1cc7e7","head_sha":"b9019b54216cb49d9f0314e6e27d0ca3fa81c770","pr":"https://github.com/hkjang/Vendra/pull/113","stages":{"base":{"state":"pinned","reason":"main@e5a7ae8","at":"2026-09-08T18:31:03+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T18:31:03+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T18:46:27+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/113","at":"2026-09-08T18:46:34+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T18:52:05+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T18:52:37+09:00"},"merge":{"state":"done","reason":"b9019b54216cb49d9f0314e6e27d0ca3fa81c770","at":"2026-09-08T18:52:41+09:00"},"release":{"state":"published","reason":"v0.7.47","at":"2026-09-08T18:54:41+09:00"},"assets":{"state":"verified","reason":"v0.7.47 자산 1개 (이전 v0.7.46: 1)","at":"2026-09-08T18:55:43+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":426,"deletions":3,"tests":2,"title":"fix: let the numbers a supplier is registered under be corrected"}
{"ts":"2026-09-08T19:04:50+09:00","date":"2026-09-08","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/12, released v0.9.72","outcome":"release-ready","run_id":"2026-09-08-183056-ReSSO-improve","base_sha":"1002adf63571fcfbe0207c48d849de36c35ab271","head_sha":"baef5f3cc337b63e42aa3134bb34dbbbd816a22b","pr":"https://github.com/hkjang/ReSSO/pull/12","stages":{"base":{"state":"pinned","reason":"main@1002adf","at":"2026-09-08T18:30:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T18:30:57+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T18:39:51+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/12","at":"2026-09-08T18:39:59+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T18:43:27+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T18:47:16+09:00"},"merge":{"state":"done","reason":"baef5f3cc337b63e42aa3134bb34dbbbd816a22b","at":"2026-09-08T18:47:21+09:00"},"release":{"state":"published","reason":"v0.9.72","at":"2026-09-08T19:00:45+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.72","at":"2026-09-08T19:00:48+09:00"},"assets":{"state":"verified","reason":"v0.9.72 자산 2개 (이전 v0.9.71: 2)","at":"2026-09-08T19:04:47+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":210,"deletions":7,"tests":1,"title":"fix: stop the authorization endpoint reporting a fault here as an unknown client"}
{"ts":"2026-09-08T19:17:57+09:00","date":"2026-09-08","project":"aiportal-java","result":"verify failed: 실패한 검증: ./gradlew --quiet test (exit 1)","outcome":"verify-failed","run_id":"2026-09-08-191105-aiportal-java-improve","base_sha":"fafe97aae9328678049cff64234b197844eb96c0","head_sha":"71c6872805802c20c4077e7488dea9fb08d033c6","pr":"","stages":{"base":{"state":"pinned","reason":"main@fafe97a","at":"2026-09-08T19:11:08+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T19:11:08+09:00"},"verify":{"state":"failed","reason":"실패한 검증: ./gradlew --quiet test (exit 1)","at":"2026-09-08T19:17:57+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":331,"deletions":60,"tests":2,"title":"fix(policy): 빈 정책 저장이 무시되는데 성공으로 응답되는 문제 수정"}
{"ts":"2026-09-08T19:20:43+09:00","date":"2026-09-08","project":"aiportal-front","result":"needs approval (risk=medium, files=5), PR open https://github.com/hkjang/aiportal-front/pull/9","outcome":"review-pending","run_id":"2026-09-08-191100-aiportal-front-improve","base_sha":"92b5e59a21d9ae8cc6021981d7022b43cdd6a868","head_sha":"ac1dd94095e660e20fd8987863d2441f586198a9","pr":"https://github.com/hkjang/aiportal-front/pull/9","stages":{"base":{"state":"pinned","reason":"main@92b5e59","at":"2026-09-08T19:11:03+09:00"},"autonomy":{"state":"held","reason":"low-risk 단계 — 위험도 medium, 파일 5: 사람 승인 필요","at":"2026-09-08T19:20:42+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-08T19:17:10+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/9","at":"2026-09-08T19:17:16+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-08T19:20:42+09:00"}},"campaign":"","autonomy":"low-risk","files":5,"additions":408,"deletions":79,"tests":1,"title":"fix: 노트북/업무도구 목록 캐시 사용자 간 잔존 및 조회 실패 수정"}
{"ts":"2026-09-08T19:47:34+09:00","date":"2026-09-08","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/11, released v0.9.46","outcome":"release-ready","run_id":"2026-09-08-193102-dataworks-improve","base_sha":"324ddd048ef3ae9b18a40d532d97524b77769e27","head_sha":"0c635587985464fa417cafca40652fe69affadc0","pr":"https://github.com/hkjang/dataworks/pull/11","stages":{"base":{"state":"pinned","reason":"main@324ddd0","at":"2026-09-08T19:31:05+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T19:31:05+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T19:37:44+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/11","at":"2026-09-08T19:37:50+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-08T19:40:47+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T19:41:17+09:00"},"merge":{"state":"done","reason":"0c635587985464fa417cafca40652fe69affadc0","at":"2026-09-08T19:41:22+09:00"},"release":{"state":"published","reason":"v0.9.46","at":"2026-09-08T19:47:21+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.46","at":"2026-09-08T19:47:26+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.46.tar.gz ","at":"2026-09-08T19:47:27+09:00"},"assets":{"state":"verified","reason":"v0.9.46 자산 1개 (이전 v0.9.45: 1)","at":"2026-09-08T19:47:33+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":231,"deletions":31,"tests":2,"title":"fix: query the entitlement whose contract scope is still live"}
{"ts":"2026-09-08T19:56:48+09:00","date":"2026-09-08","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/8, released v2.5.3","outcome":"release-ready","run_id":"2026-09-08-193057-appstore-improve","base_sha":"1780c763668c5ecf2ba60fbf5505e4b5cf592d6a","head_sha":"51574eee6aed770a76a928c67e6bc1d699343ee0","pr":"https://github.com/hkjang/appstore/pull/8","stages":{"base":{"state":"pinned","reason":"main@1780c76","at":"2026-09-08T19:31:01+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T19:31:01+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T19:41:23+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/8","at":"2026-09-08T19:41:30+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T19:44:20+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T19:46:14+09:00"},"merge":{"state":"done","reason":"51574eee6aed770a76a928c67e6bc1d699343ee0","at":"2026-09-08T19:46:19+09:00"},"release":{"state":"published","reason":"v2.5.3","at":"2026-09-08T19:54:42+09:00"},"assets":{"state":"verified","reason":"v2.5.3 자산 1개 (이전 v2.5.2: 1)","at":"2026-09-08T19:56:46+09:00"}},"campaign":"","autonomy":"release","files":9,"additions":110,"deletions":17,"tests":3,"title":"fix: normalize the bytes a catalog filter sends to PostgreSQL"}
{"ts": "2026-09-08T20:14:48+09:00", "date": "2026-09-08", "project": "git-ctx", "result": "merged https://github.com/hkjang/git-ctx/pull/23, released v0.77.8", "outcome": "release-ready", "run_id": "2026-09-08-193107-git-ctx-improve", "base_sha": "6fa3eec52aacda343a86c9e3335419cce9e58834", "head_sha": "c8c5f5e77677a853c9fa60c44542115eb959a83c", "pr": "https://github.com/hkjang/git-ctx/pull/23", "stages": {"base": {"state": "pinned", "reason": "main@6fa3eec", "at": "2026-09-08T19:31:10+09:00"}, "autonomy": {"state": "release", "reason": "", "at": "2026-09-08T19:31:10+09:00"}, "verify": {"state": "passed", "reason": "검증 3개 통과 (auto)", "at": "2026-09-08T19:38:29+09:00"}, "pr": {"state": "created", "reason": "https://github.com/hkjang/git-ctx/pull/23", "at": "2026-09-08T19:38:37+09:00"}, "review": {"state": "approved", "reason": "리뷰 승인 (risk=low)", "at": "2026-09-08T19:42:11+09:00"}, "ci": {"state": "passed", "reason": "검사 5개 모두 success", "at": "2026-09-08T19:45:56+09:00"}, "merge": {"state": "done", "reason": "c8c5f5e77677a853c9fa60c44542115eb959a83c", "at": "2026-09-08T19:46:01+09:00"}, "release": {"state": "published", "reason": "v0.77.8", "at": "2026-09-08T20:01:28+09:00"}, "assets": {"state": "verified", "reason": "v0.77.8 자산 2개 (이전 v0.77.7: 2)", "at": "2026-09-08T20:14:47+09:00"}}, "campaign": "", "autonomy": "release", "files": 2, "additions": 190, "deletions": 25, "tests": 1, "title": "fix(manifest): read the TOML dependencies stated under a path"}
{"ts":"2026-09-08T20:20:05+09:00","date":"2026-09-08","project":"aiportal-front-admin","result":"resumed: merged https://github.com/hkjang/aiportal-front-admin/pull/11","outcome":"merged","run_id":"2026-09-08-191055-aiportal-front-admin-improve","base_sha":"","head_sha":"4ec1f38591ee48f40334de01458132b424759e08","pr":"https://github.com/hkjang/aiportal-front-admin/pull/11","stages":{"base":{"state":"pinned","reason":"main@13b6a48","at":"2026-09-08T19:10:58+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T19:10:58+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-08T19:17:12+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/11","at":"2026-09-08T19:17:16+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T19:19:22+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-08T19:19:51+09:00"},"merge":{"state":"done","reason":"724b9921402536c153642a2f1efee7bd3e4c822b (원격 확인)","at":"2026-09-08T20:20:05+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 이 저장소에는 릴리즈 관례가 전혀 없습니다. git 태그 0개(`git tag -l` 비어 있음), GitHub Release 없음(러너가 가져온 목록이 비어 있음), CHANGELOG.md·docs/RELEASE*.md 등 릴리즈 노트 없음, `.github/workflows/` 자체가 없음. 유일한 CI인 `.gitlab-ci.yml`은 main/develop 브랜치 푸시에 반응해 `npm run build:*` 후 dist를 PVC 디렉터리로 복사할 뿐 태그·릴리즈·산출물 업로드를 하지 않습니다. 버전 필드는 root `package.json`(kcb_ai 0.0.0)과 `upgrade/admin-v2/package.json`(@aiportal/admin-v2 0.1.0)에 있지만 둘 다 `private: true`이고 `git log -p`로 확인한 결과 최초 커밋 이후 한 번도 증가한 적이 없어(각각 0.0.0/0.1.0 그대로) 릴리즈 표식으로 쓰인 적이 없습니다. 즉 따라 할 이전 방식(태그 형식, 버전 증가 단위, 노트 양식·위치, 자산 규칙)이 존재하지 않으므로 관례를 새로 만들지 않고 건너뜁니다. 저장소는 변경 없이 그대로 두었습니다(커밋·태그 생성 없음).","at":"2026-09-08T19:21:02+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T20:31:52+09:00","date":"2026-09-08","project":"igame","result":"verify failed: 실패한 검증: cd web && npm run build --silent (exit 1)","outcome":"verify-failed","run_id":"2026-09-08-202131-igame-improve","base_sha":"423dc7b212683fd30ecce1f134878875bd613ff0","head_sha":"2d2d220d1bcbe35d03d03e3e9304a4123db941c7","pr":"","stages":{"base":{"state":"pinned","reason":"main@423dc7b","at":"2026-09-08T20:21:32+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T20:21:32+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cd web && npm run build --silent (exit 1)","at":"2026-09-08T20:31:51+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":105,"deletions":4,"tests":1,"title":"fix: refuse an allowed origin the CSP header would drop"}
{"ts":"2026-09-08T20:37:18+09:00","date":"2026-09-08","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/6, released v1.4.8","outcome":"release-ready","run_id":"2026-09-08-202139-jupiq-improve","base_sha":"8fb544636c203ae39bf1b8e111d52e134d1d621b","head_sha":"24a5e0cb1349b92b31aab71f821f5f088ec4f226","pr":"https://github.com/hkjang/jupiq/pull/6","stages":{"base":{"state":"pinned","reason":"main@8fb5446","at":"2026-09-08T20:21:41+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T20:21:41+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T20:26:15+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/6","at":"2026-09-08T20:26:21+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T20:27:33+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-08T20:29:26+09:00"},"merge":{"state":"done","reason":"24a5e0cb1349b92b31aab71f821f5f088ec4f226","at":"2026-09-08T20:29:31+09:00"},"release":{"state":"published","reason":"v1.4.8","at":"2026-09-08T20:34:45+09:00"},"assets":{"state":"verified","reason":"v1.4.8 자산 1개 (이전 v1.4.7: 1)","at":"2026-09-08T20:37:17+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":162,"deletions":2,"tests":1,"title":"test: secure 패키지의 문자열 암복호화·파생키·토큰 생성을 검증한다"}
{"ts":"2026-09-08T20:41:40+09:00","date":"2026-09-08","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/17, released v0.2.4","outcome":"release-ready","run_id":"2026-09-08-202134-jikim-improve","base_sha":"2cc673e6d785af3099c29737deec155ef5dd27af","head_sha":"29788a6bfbc9bf7bd6add6149f98d43819bfab53","pr":"https://github.com/hkjang/jikim/pull/17","stages":{"base":{"state":"pinned","reason":"main@2cc673e","at":"2026-09-08T20:21:36+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T20:21:36+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T20:27:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/17","at":"2026-09-08T20:28:06+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-08T20:31:46+09:00"},"merge":{"state":"done","reason":"29788a6bfbc9bf7bd6add6149f98d43819bfab53","at":"2026-09-08T20:32:20+09:00"},"release":{"state":"published","reason":"v0.2.4","at":"2026-09-08T20:38:10+09:00"},"assets":{"state":"verified","reason":"v0.2.4 자산 2개 (이전 v0.2.3: 2)","at":"2026-09-08T20:41:38+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":362,"deletions":9,"tests":1,"title":"feat: support OpenBao Transit batch_input and batch_results"}
{"ts":"2026-09-08T20:53:20+09:00","date":"2026-09-08","project":"git-ctx","result":"resumed: merged https://github.com/hkjang/git-ctx/pull/23, released v0.77.8","outcome":"release-ready","run_id":"2026-09-08-193107-git-ctx-improve","base_sha":"","head_sha":"c8c5f5e77677a853c9fa60c44542115eb959a83c","pr":"https://github.com/hkjang/git-ctx/pull/23","stages":{"base":{"state":"pinned","reason":"main@6fa3eec","at":"2026-09-08T19:31:10+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T19:31:10+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-08T19:38:29+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/23","at":"2026-09-08T19:38:37+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T19:42:11+09:00"},"ci":{"state":"passed","reason":"검사 5개 모두 success","at":"2026-09-08T19:45:56+09:00"},"merge":{"state":"done","reason":"36af4f8a1a35c744056eb8840e9ad53efe3c0847 (원격 확인)","at":"2026-09-08T20:50:06+09:00"},"release":{"state":"published","reason":"v0.77.8","at":"2026-09-08T20:53:15+09:00"},"assets":{"state":"verified","reason":"v0.77.8 자산 2개 (이전 v0.77.7: 2)","at":"2026-09-08T20:53:19+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T21:06:04+09:00","date":"2026-09-08","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/8 (approved), release skipped","outcome":"merged","run_id":"2026-09-08-210434-aiportal-front-approve","base_sha":"","head_sha":"5c935ea7e18780d123343c0f22d5b07ce2797fc7","pr":"https://github.com/hkjang/aiportal-front/pull/8","stages":{"merge":{"state":"done","reason":"5c935ea7e18780d123343c0f22d5b07ce2797fc7 (사람 승인)","at":"2026-09-08T21:05:07+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. git tag 0개, 릴리즈 성격의 커밋 0개(모든 커밋이 fix/test + auto/* PR 머지), CHANGELOG.md·docs/RELEASE*.md 없음, GitHub Release 없음, .github/workflows 없음. package.json 은 private:true 에 version 이 최초 커밋 이후 Vite 스캐폴드 기본값 0.0.0 그대로이며 한 번도 변경된 적이 없습니다. README/docs 의 '버전 기록' 표는 최초 커밋에 포함된 문서 템플릿 보일러플레이트(0.0.1 / 2025-01-01 / 초기 릴리스)로, 이후 갱신된 적이 없어 릴리즈 관례로 볼 수 없습니다. 배포는 .gitlab-ci.yml 이 main/develop 브랜치 푸시에 반응해 npm run build 후 PVC 디렉터리로 복사하는 방식(태그 미사용, 산출물 첨부 없음)이며 릴리즈 스크립트·Makefile 도 없습니다. 따라야 할 기존 방식이 없으므로 버전 체계·태그 형식을 새로 정하지 않고 건너뜁니다.","at":"2026-09-08T21:06:04+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T21:07:59+09:00","date":"2026-09-08","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/9 (approved), release skipped","outcome":"merged","run_id":"2026-09-08-210639-aiportal-front-approve","base_sha":"","head_sha":"ac1dd94095e660e20fd8987863d2441f586198a9","pr":"https://github.com/hkjang/aiportal-front/pull/9","stages":{"merge":{"state":"done","reason":"ac1dd94095e660e20fd8987863d2441f586198a9 (사람 승인)","at":"2026-09-08T21:07:12+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: No release history exists in this repository: zero git tags, no GitHub Releases, no CHANGELOG.md or docs/RELEASE*.md, and no release/version-bump commits in git log. package.json has stayed at the Vite scaffold default \"version\": \"0.0.0\" since the first commit (never bumped). There are no .github/workflows and no release/packaging scripts (no scripts/, no Makefile); .gitlab-ci.yml only reacts to CI_COMMIT_BRANCH (branch-based build/deploy), never to CI_COMMIT_TAG. Establishing a versioning/tagging convention is a human decision, so no version file, notes, commit, or tag was created.","at":"2026-09-08T21:07:59+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T21:20:03+09:00","date":"2026-09-08","project":"moyro","result":"verify failed: 실패한 검증: cd webapp && ([ -d node_modules ] || npm ci --no-audit --no-fund) && npm run typecheck --silent && npm","outcome":"verify-failed","run_id":"2026-09-08-210926-moyro-improve","base_sha":"f31824481af19d94897d10d23f61e92b69572f03","head_sha":"0f307b8ca4ac8ad7cda5f9c05c8881bafb41ddd8","pr":"","stages":{"base":{"state":"pinned","reason":"main@f318244","at":"2026-09-08T21:09:31+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T21:09:31+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cd webapp && ([ -d node_modules ] || npm ci --no-audit --no-fund) && npm run typecheck --silent && npm test --silent (exit 2)","at":"2026-09-08T21:20:02+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":505,"deletions":18,"tests":2,"title":"fix: stop a lost reminder dispatch from stranding the reminder forever"}
{"ts":"2026-09-08T21:26:53+09:00","date":"2026-09-08","project":"moina","result":"merged https://github.com/hkjang/moina/pull/10, release tag held (failed)","outcome":"releasing","run_id":"2026-09-08-210921-moina-improve","base_sha":"f6651f5f7369584769b1cbb49d8883a57332c0cd","head_sha":"a97950d1e206bde5f159d0ad9fb58f692dc96db5","pr":"https://github.com/hkjang/moina/pull/10","stages":{"base":{"state":"pinned","reason":"main@f6651f5","at":"2026-09-08T21:09:26+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T21:09:26+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T21:13:50+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/10","at":"2026-09-08T21:13:54+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T21:16:23+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T21:22:02+09:00"},"merge":{"state":"done","reason":"a97950d1e206bde5f159d0ad9fb58f692dc96db5","at":"2026-09-08T21:22:06+09:00"},"release":{"state":"ci-blocked","reason":"릴리즈 커밋 CI: failed — 성공이 아닌 검사: Source tests=failure (태그 보류)","at":"2026-09-08T21:26:49+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":160,"deletions":2,"tests":2,"title":"fix: revalidate media instead of caching it for an hour"}
{"ts":"2026-09-08T21:33:48+09:00","date":"2026-09-08","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/11, released v0.238.0","outcome":"release-ready","run_id":"2026-09-08-210919-kanpic-improve","base_sha":"0f46c11d63aa0e3a2829f1e6b3f09fa0bc4b761e","head_sha":"a981f8ec4e856385b5822e3261d8e02c9999fbc4","pr":"https://github.com/hkjang/kanpic/pull/11","stages":{"base":{"state":"pinned","reason":"main@0f46c11","at":"2026-09-08T21:09:28+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T21:09:28+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T21:13:01+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/11","at":"2026-09-08T21:13:11+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T21:15:20+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T21:21:28+09:00"},"merge":{"state":"done","reason":"a981f8ec4e856385b5822e3261d8e02c9999fbc4","at":"2026-09-08T21:21:33+09:00"},"release":{"state":"published","reason":"v0.238.0","at":"2026-09-08T21:32:12+09:00"},"assets":{"state":"verified","reason":"v0.238.0 자산 2개 (이전 v0.237.0: 2)","at":"2026-09-08T21:33:47+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":86,"deletions":5,"tests":1,"title":"fix: 원격 탓으로 난 외부 호출 실패는 잠깐만 캐시에 담는다"}
{"ts":"2026-09-08T21:39:50+09:00","date":"2026-09-08","project":"igame","result":"assets-only, assets for v0.7.7, asset conflict","outcome":"release-ready","run_id":"2026-09-08-213748-igame-assets","base_sha":"","head_sha":"","pr":"","stages":{"manifest":{"state":"ok","reason":"igame-v0.7.7.tar.gz ","at":"2026-09-08T21:39:45+09:00"},"assets":{"state":"verified","reason":"v0.7.7 자산 1개 (이전 v0.7.6: 1)","at":"2026-09-08T21:39:49+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-08T21:58:49+09:00","date":"2026-09-08","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/12, released v1.0.15","outcome":"release-ready","run_id":"2026-09-08-215056-pii-masker-improve","base_sha":"94535c529c6bab89505e0dfe50d8e270c8f8d48e","head_sha":"4c797c3f8160fb6c4024721d92459a7ea5c8d00f","pr":"https://github.com/hkjang/pii-masker/pull/12","stages":{"base":{"state":"pinned","reason":"main@94535c5","at":"2026-09-08T21:51:03+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T21:51:03+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-08T21:54:16+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/12","at":"2026-09-08T21:54:25+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T21:55:48+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-08T21:56:15+09:00"},"merge":{"state":"done","reason":"4c797c3f8160fb6c4024721d92459a7ea5c8d00f","at":"2026-09-08T21:56:19+09:00"},"release":{"state":"published","reason":"v1.0.15","at":"2026-09-08T21:58:37+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.15","at":"2026-09-08T21:58:40+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-08T21:58:41+09:00"},"assets":{"state":"verified","reason":"v1.0.15 자산 1개 (이전 v1.0.14: 1)","at":"2026-09-08T21:58:48+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":120,"deletions":8,"tests":2,"title":"Cap the number of jobs the history endpoint returns"}
{"ts":"2026-09-08T22:07:45+09:00","date":"2026-09-08","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/11, released v0.5.10","outcome":"release-ready","run_id":"2026-09-08-215106-releasedock-improve","base_sha":"328576caec5aec0735aeba0d6a89e51b72fd956e","head_sha":"8e6f8a7edf9d3fe7c569074e8fc9ae41661aeeb4","pr":"https://github.com/hkjang/releasedock/pull/11","stages":{"base":{"state":"pinned","reason":"main@328576c","at":"2026-09-08T21:51:09+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T21:51:09+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T21:56:29+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/11","at":"2026-09-08T21:56:36+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T21:59:03+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T21:59:33+09:00"},"merge":{"state":"done","reason":"8e6f8a7edf9d3fe7c569074e8fc9ae41661aeeb4","at":"2026-09-08T21:59:39+09:00"},"release":{"state":"published","reason":"v0.5.10","at":"2026-09-08T22:05:44+09:00"},"assets":{"state":"verified","reason":"v0.5.10 자산 2개 (이전 v0.5.9: 2)","at":"2026-09-08T22:07:44+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":239,"deletions":5,"tests":1,"title":"fix: name the downloaded run log and say when it is cut short"}
{"ts":"2026-09-08T22:09:16+09:00","date":"2026-09-08","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/10, released v1.69.28","outcome":"release-ready","run_id":"2026-09-08-215101-ptium-improve","base_sha":"e9a50db08e0cdda39f9acf430e7031ee73c845bf","head_sha":"75376f7572343fe8e7a68b701e154d5e2d478591","pr":"https://github.com/hkjang/ptium/pull/10","stages":{"base":{"state":"pinned","reason":"main@e9a50db","at":"2026-09-08T21:51:10+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T21:51:10+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-08T21:54:44+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/10","at":"2026-09-08T21:54:53+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T21:56:14+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T21:59:07+09:00"},"merge":{"state":"done","reason":"75376f7572343fe8e7a68b701e154d5e2d478591","at":"2026-09-08T21:59:11+09:00"},"release":{"state":"published","reason":"v1.69.28","at":"2026-09-08T22:08:53+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.69.28","at":"2026-09-08T22:09:00+09:00"},"manifest":{"state":"ok","reason":"ptium-1.69.28.tar.gz ptium-1.69.28.tar.gz.sha256 docker-compose.ptium-1.69.28.yml ptium-1.69.28.env.example load-ptium-1.69.28.ps1 load-ptium-1.69.28.sh ptium-1.69.28.kubernetes.yaml ","at":"2026-09-08T22:08:59+09:00"},"assets":{"state":"verified","reason":"v1.69.28 자산 7개 (이전 v1.69.27: 7)","at":"2026-09-08T22:09:15+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":224,"deletions":2,"tests":1,"title":"Leave a workbook's hidden sheets out of the deck"}
{"ts":"2026-09-08T22:19:56+09:00","date":"2026-09-08","project":"relio","result":"merged https://github.com/hkjang/relio/pull/13","outcome":"merged","run_id":"2026-09-08-221056-relio-improve","base_sha":"e88b4909efb9843f726e77c7d22cfe75fd67093a","head_sha":"d9ee0c8255c3e94358bdcf5cae1fd71eb0db4909","pr":"https://github.com/hkjang/relio/pull/13","stages":{"base":{"state":"pinned","reason":"main@e88b490","at":"2026-09-08T22:11:00+09:00"},"autonomy":{"state":"low-risk","reason":"롤백 PR ","at":"2026-09-08T22:11:00+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T22:16:21+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/13","at":"2026-09-08T22:16:28+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T22:18:25+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-08T22:19:51+09:00"},"merge":{"state":"done","reason":"d9ee0c8255c3e94358bdcf5cae1fd71eb0db4909","at":"2026-09-08T22:19:53+09:00"},"release":{"state":"skipped","reason":"자율화 단계 low-risk — 릴리즈는 사람이","at":"2026-09-08T22:19:56+09:00"}},"campaign":"","autonomy":"low-risk","files":4,"additions":234,"deletions":5,"tests":2,"title":"fix(audit): keep an event from being lost by the address it came from"}
{"ts":"2026-09-08T22:49:49+09:00","date":"2026-09-08","project":"umm","result":"merged https://github.com/hkjang/umm/pull/145, released v0.71.3","outcome":"release-ready","run_id":"2026-09-08-221101-umm-improve","base_sha":"59ae1ba2af873beb2143ee8d50845e000f7b8d18","head_sha":"d1014caaae644630c96d840f82ecda1bd65a1456","pr":"https://github.com/hkjang/umm/pull/145","stages":{"base":{"state":"pinned","reason":"main@59ae1ba","at":"2026-09-08T22:11:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T22:11:12+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-08T22:18:43+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/umm/pull/145","at":"2026-09-08T22:18:52+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T22:21:51+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T22:31:43+09:00"},"merge":{"state":"done","reason":"d1014caaae644630c96d840f82ecda1bd65a1456","at":"2026-09-08T22:31:45+09:00"},"release":{"state":"published","reason":"v0.71.3","at":"2026-09-08T22:48:11+09:00"},"assets":{"state":"verified","reason":"v0.71.3 자산 3개 (이전 v0.71.2: 3)","at":"2026-09-08T22:49:46+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":263,"deletions":7,"tests":1,"title":"Name the Markdown export in a header a client can read"}
{"ts":"2026-09-08T22:50:38+09:00","date":"2026-09-08","project":"weekly","result":"CI timeout, PR open https://github.com/hkjang/weekly/pull/10","outcome":"review-pending","run_id":"2026-09-08-221106-weekly-improve","base_sha":"8787c77676a90ec125d5a51003b6bc320ba1546e","head_sha":"7ba8318b8c8ad14fe9d0a0bd345513a7b94b7c16","pr":"https://github.com/hkjang/weekly/pull/10","stages":{"base":{"state":"pinned","reason":"main@8787c77","at":"2026-09-08T22:11:10+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T22:11:10+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T22:28:05+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/weekly/pull/10","at":"2026-09-08T22:28:13+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T22:31:58+09:00"},"ci":{"state":"timeout","reason":"제한 시간 안에 CI 완료를 확인하지 못함","at":"2026-09-08T22:50:38+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":96,"deletions":3,"tests":2,"title":"fix: 주 격자를 옮겨도 MCP 보고서 검색이 그 주의 보고서를 찾습니다"}
{"ts":"2026-09-08T23:21:45+09:00","date":"2026-09-08","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/16, released v0.9.277","outcome":"release-ready","run_id":"2026-09-08-230105-Clustara-improve","base_sha":"c9dda9725af7ae9d5c11c12de1251d1ebf8fb605","head_sha":"9b9a98a4b84a0cd96beda09f5ac0f985818f5eb2","pr":"https://github.com/hkjang/clustara/pull/16","stages":{"base":{"state":"pinned","reason":"main@c9dda97","at":"2026-09-08T23:01:10+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T23:01:10+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-08T23:11:51+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/16","at":"2026-09-08T23:11:59+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T23:14:41+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-08T23:15:12+09:00"},"merge":{"state":"done","reason":"9b9a98a4b84a0cd96beda09f5ac0f985818f5eb2","at":"2026-09-08T23:15:17+09:00"},"release":{"state":"published","reason":"v0.9.277","at":"2026-09-08T23:21:29+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.277","at":"2026-09-08T23:21:34+09:00"},"manifest":{"state":"ok","reason":"clustara-v0.9.277.tar.gz clustara-v0.9.277.tar.gz.sha256 README-offline-v0.9.277.md ","at":"2026-09-08T23:21:35+09:00"},"assets":{"state":"verified","reason":"v0.9.277 자산 3개 (이전 v0.9.276: 3)","at":"2026-09-08T23:21:45+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":394,"deletions":41,"tests":3,"title":"fix(exposure): a wildcard-certificate Ingress was reported as plaintext"}
{"ts":"2026-09-08T23:26:30+09:00","date":"2026-09-08","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/15, released v0.238.0","outcome":"release-ready","run_id":"2026-09-08-230100-AgentHub-improve","base_sha":"3e1ecce2e1af6855015004c147b1eeb085254630","head_sha":"babe33c70d443e800a068397d8b99a8bfcf828f1","pr":"https://github.com/hkjang/AgentHub/pull/15","stages":{"base":{"state":"pinned","reason":"main@3e1ecce","at":"2026-09-08T23:01:10+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T23:01:10+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-08T23:12:10+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/15","at":"2026-09-08T23:12:17+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T23:16:08+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T23:16:40+09:00"},"merge":{"state":"done","reason":"babe33c70d443e800a068397d8b99a8bfcf828f1","at":"2026-09-08T23:16:45+09:00"},"release":{"state":"published","reason":"v0.238.0","at":"2026-09-08T23:21:59+09:00"},"assets":{"state":"verified","reason":"v0.238.0 자산 8개 (이전 v0.237.0: 8)","at":"2026-09-08T23:26:29+09:00"}},"campaign":"","autonomy":"release","files":9,"additions":331,"deletions":54,"tests":4,"title":"fix: the two boundaries that send text out of the building recorded nothing"}
{"ts":"2026-09-08T23:28:20+09:00","date":"2026-09-08","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/12, released v0.2.28","outcome":"release-ready","run_id":"2026-09-08-230110-Invenqor-improve","base_sha":"d688c91c3050ed7cc557c8369eb2c495cc2f3965","head_sha":"eaa460bdd5aaf2d0d487102adb65c6f8df3f6d7a","pr":"https://github.com/hkjang/invenqor/pull/12","stages":{"base":{"state":"pinned","reason":"main@d688c91","at":"2026-09-08T23:01:16+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T23:01:16+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-08T23:07:53+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/12","at":"2026-09-08T23:08:01+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T23:10:49+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-08T23:13:09+09:00"},"merge":{"state":"done","reason":"eaa460bdd5aaf2d0d487102adb65c6f8df3f6d7a","at":"2026-09-08T23:13:15+09:00"},"release":{"state":"published","reason":"v0.2.28","at":"2026-09-08T23:26:58+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.28","at":"2026-09-08T23:27:03+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf RELEASE_NOTES_v0.2.28.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf compose.offline.yaml invenqor-0.2.28.tar.gz invenqor-0.2.28.tar.gz.sha256 invenqor-0.2.28.tgz invenqor-0.2.28.tgz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.28.tar.gz invenqor-agents-0.2.28.tar.gz.sha256 openapi.yaml ","at":"2026-09-08T23:27:05+09:00"},"assets":{"state":"verified","reason":"v0.2.28 자산 25개 (이전 v0.2.27: 25)","at":"2026-09-08T23:28:06+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":180,"deletions":15,"tests":2,"title":"fix: an attribute equality never matched a number the agent reported"}
{"ts":"2026-09-08T23:42:47+09:00","date":"2026-09-08","project":"ReSSO","result":"guarded files, PR open https://github.com/hkjang/ReSSO/pull/13","outcome":"review-pending","run_id":"2026-09-08-233059-ReSSO-improve","base_sha":"3b3275dc4abc265d5196b25209b8a2dc9c1cb359","head_sha":"cc1b642fdfb5ea1f82dd920cbd59fdfe210cc038","pr":"https://github.com/hkjang/ReSSO/pull/13","stages":{"base":{"state":"pinned","reason":"main@3b3275d","at":"2026-09-08T23:31:05+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T23:31:05+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T23:42:38+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/13","at":"2026-09-08T23:42:44+09:00"},"guard":{"state":"held","reason":"internal/store/migrations/015_authorization_request_id_token_hint.sql ","at":"2026-09-08T23:42:44+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":181,"deletions":11,"tests":1,"title":"fix: hold the login form to the account the id_token_hint named"}
{"ts":"2026-09-08T23:46:27+09:00","date":"2026-09-08","project":"Vendra","result":"review held, PR open https://github.com/hkjang/Vendra/pull/114","outcome":"review-pending","run_id":"2026-09-08-233104-Vendra-improve","base_sha":"aada71865880e5bdace3926e3596f8bd217e454e","head_sha":"df479bfce8ab377b43c642124d007b08a3b06301","pr":"https://github.com/hkjang/Vendra/pull/114","stages":{"base":{"state":"pinned","reason":"main@aada718","at":"2026-09-08T23:31:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T23:31:11+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T23:43:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/114","at":"2026-09-08T23:43:17+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: web/src/pages/Suppliers.tsx:439,468 — `ownerId` state is seeded with `supplier.ownerId` and the id is sent on EVERY save, so any edit to a supplier whose current owner is deactivated or outside the caller's data scope is rejected 400 '담당자는 조직 범위 안의 활성 내부 사용자만 지정할 수 있습니다' by the new check in internal/httpapi/suppliers.go:490, even though the user never touched the 담당자 box. This is a regression against main (the field was previously dropped and the edit succeeded), and it hits exactly the scenario the commit message names ('a supplier whose 담당자 has left the company'). Verified by running SupplierEdit under vitest with ownerId=<departed>: the select renders with DOM value \"\" (the id matches no <option>, so the box looks blank/미지정) while patch() is called with ownerId=\"22222222-2222-2222-2222-222222222222\". The backend refuses a deactivated id with 400 per the PR's own case in internal/httpapi/supplierowner_test.go:127 ('an account that has been deactivated'). Fix: send ownerId only when it differs from supplier.ownerId (or reset the state to \"\" when the id is not among the loaded candidates). / web/src/pages/supplier-owner.test.tsx:80 — the test for that exact case ('says so when the owner is no longer somebody who can hold the record') asserts only the hint text and never asserts what is submitted, so it passes while the form ships an id the API will refuse. The suite's other cases only ever submit ids that are in the candidate list, so nothing covers the out-of-scope/departed owner on save.","at":"2026-09-08T23:46:25+09:00"}},"campaign":"","autonomy":"release","files":12,"additions":617,"deletions":29,"tests":4,"title":"fix: let a supplier be handed to the person who now looks after it"}
{"ts":"2026-09-08T23:54:05+09:00","date":"2026-09-08","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/15, released v1.2.14","outcome":"release-ready","run_id":"2026-09-08-233109-ai-admin-improve","base_sha":"0cd3b297d64e1c5b50547d8cb9ebbb13d8b183b1","head_sha":"d2835d6157cf0c256bc55e877df53377a4f04fd4","pr":"https://github.com/hkjang/ai-admin/pull/15","stages":{"base":{"state":"pinned","reason":"main@0cd3b29","at":"2026-09-08T23:31:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-08T23:31:13+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-08T23:37:55+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/15","at":"2026-09-08T23:38:02+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-08T23:42:38+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-08T23:44:01+09:00"},"merge":{"state":"done","reason":"d2835d6157cf0c256bc55e877df53377a4f04fd4","at":"2026-09-08T23:44:06+09:00"},"release":{"state":"published","reason":"v1.2.14","at":"2026-09-08T23:52:33+09:00"},"assets":{"state":"verified","reason":"v1.2.14 자산 2개 (이전 v1.2.13: 2)","at":"2026-09-08T23:54:04+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":354,"deletions":29,"tests":3,"title":"fix: abort a chat answer that was cut short instead of ending it cleanly"}
{"ts":"2026-09-09T00:10:55+09:00","date":"2026-09-09","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/12, release skipped","outcome":"merged","run_id":"2026-09-09-000110-aiportal-py-improve","base_sha":"f2f984b6c5b019c8bb68bf93bae5d2a0acb8cdc2","head_sha":"efd08781c4fdf127ca081fd08ce7967f7f343fb2","pr":"https://github.com/hkjang/aiportal-py/pull/12","stages":{"base":{"state":"pinned","reason":"main@f2f984b","at":"2026-09-09T00:01:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T00:01:13+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-09T00:06:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/12","at":"2026-09-09T00:07:06+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T00:09:20+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T00:09:50+09:00"},"merge":{"state":"done","reason":"efd08781c4fdf127ca081fd08ce7967f7f343fb2","at":"2026-09-09T00:09:55+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 이 저장소에는 릴리즈 이력이 전혀 없습니다. git tag 0개(`git tag | wc -l` == 0), CHANGELOG.md·docs/RELEASE*.md 등 릴리즈 노트 없음, GitHub Release 목록 비어 있음, .github/workflows 없음(러너 제공 정보와 일치). 버전이 적힌 파일도 없습니다(pyproject.toml/setup.py/setup.cfg/VERSION/package.json/Makefile 모두 부재). 유일한 버전 문자열은 api.py:123 의 FastAPI OpenAPI 메타데이터 `version=\"1.0.0\"` 이며, `git log -L 123,123:api.py` 결과 first commit(2075c62) 이후 한 번도 변경된 적이 없어 릴리즈용 버전 파일로 관리되고 있지 않습니다. 배포는 .gitlab-ci.yml 이 담당하는데 태그가 아니라 브랜치 기준(`$CI_COMMIT_BRANCH == \"main\"|\"develop\"` 조건으로 배포 디렉터리에서 `git reset --hard origin/$CI_COMMIT_BRANCH` 후 rollout restart/podman restart)이라 태그·버전 개념 자체가 파이프라인에 없습니다. docs/ROADMAP.md 의 R0~R5 \"Release\" 표는 버전 릴리즈가 아니라 개선 단계 계획입니다. 릴리즈 자산을 만드는 스크립트(scripts/, Makefile)도 없습니다. 관례를 새로 정하는 것은 사람의 판단이므로 태그·버전 파일·릴리즈 노트를 만들지 않고 건너뜁니다.","at":"2026-09-09T00:10:55+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":374,"deletions":77,"tests":1,"title":"fix: 첨부파일 추출이 예외 객체·None 대신 항상 문자열을 반환 (감사 A-110)"}
{"ts":"2026-09-09T00:11:12+09:00","date":"2026-09-09","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/12, release skipped","outcome":"merged","run_id":"2026-09-09-000100-aiportal-front-admin-improve","base_sha":"724b9921402536c153642a2f1efee7bd3e4c822b","head_sha":"815b0108438f1ce6009ff9066590ea413eaa6f1e","pr":"https://github.com/hkjang/aiportal-front-admin/pull/12","stages":{"base":{"state":"pinned","reason":"main@724b992","at":"2026-09-09T00:01:03+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T00:01:03+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-09T00:07:12+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/12","at":"2026-09-09T00:07:19+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T00:09:28+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T00:09:58+09:00"},"merge":{"state":"done","reason":"815b0108438f1ce6009ff9066590ea413eaa6f1e","at":"2026-09-09T00:10:04+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 관례가 존재하지 않습니다. 태그 0개(git tag 결과 없음), CHANGELOG/RELEASE 노트 파일 없음, GitHub Release 이력 없음, .github/workflows 없음. package.json의 version은 루트가 first commit 이후 계속 0.0.0, upgrade/admin-v2가 워크스페이스 생성 커밋(81b150f) 이후 계속 0.1.0으로 한 번도 증가한 적이 없어 릴리즈 버전으로 쓰인 적이 없습니다. 배포는 .gitlab-ci.yml이 main/develop 브랜치 push에만 반응하는 CI(태그·릴리즈 트리거 없음)로 이루어지고, upgrade/admin-v2/deploy의 스크립트도 npm offline cache 반입과 dist rsync용이라 릴리즈 자산 생성 절차가 아닙니다. 관례를 새로 정하는 것은 사람의 일이므로 태그·버전 변경·노트를 만들지 않았습니다.","at":"2026-09-09T00:11:12+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":167,"deletions":7,"tests":3,"title":"fix(admin-v2): 총건수가 줄어 범위를 벗어난 페이지를 스스로 되짚게 한다"}
{"ts":"2026-09-09T00:11:46+09:00","date":"2026-09-09","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/10, release skipped","outcome":"merged","run_id":"2026-09-09-000105-aiportal-front-improve","base_sha":"624472e474bf7b6cf4a1df24bf799ccb45b36541","head_sha":"17c6048ccdd002de88441270ea7057dc480343d4","pr":"https://github.com/hkjang/aiportal-front/pull/10","stages":{"base":{"state":"pinned","reason":"main@624472e","at":"2026-09-09T00:01:07+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T00:01:07+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-09T00:07:14+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/10","at":"2026-09-09T00:07:21+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T00:10:09+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T00:10:39+09:00"},"merge":{"state":"done","reason":"17c6048ccdd002de88441270ea7057dc480343d4","at":"2026-09-09T00:10:49+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없습니다: git 태그 0개, CHANGELOG/릴리즈 노트 파일 없음, GitHub Release 없음, 릴리즈 스크립트/워크플로 없음(.github 디렉터리 자체가 없음). package.json 의 version 은 Vite 스캐폴드 기본값 0.0.0 이며 first commit 이후 10건의 PR 이 머지되는 동안 한 번도 변경된 적이 없어 버전 파일로 관리되고 있지 않습니다(README.md / docs/01-시작하기.md 의 '버전 기록' 표에 적힌 0.0.1(2025-01-01, 초기 릴리스)도 최초 커밋 이후 갱신된 적이 없고 package.json 값과도 불일치하는 문서 보일러플레이트입니다). 배포는 .gitlab-ci.yml 이 main/develop 브랜치 푸시에 반응해 npm run build:* 후 PVC 디렉터리로 복사하는 방식이라 버전·태그 개념을 사용하지 않습니다. 버전 체계와 태그 형식을 새로 정하는 것은 사람의 결정이므로 아무것도 만들지 않았습니다(커밋·태그·파일 변경 없음, 작업 트리 clean).","at":"2026-09-09T00:11:45+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":485,"deletions":32,"tests":2,"title":"fix: 인증/채팅세션 저장소 방어 및 탭 동기화 플래그 충돌 수정"}
{"ts":"2026-09-09T00:37:39+09:00","date":"2026-09-09","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/12, released v0.9.47","outcome":"release-ready","run_id":"2026-09-09-002104-dataworks-improve","base_sha":"c3474c19b9539632cd069dc72553a2b26a8a4419","head_sha":"7d46aaba76269b8d746ed435299162c534fd874e","pr":"https://github.com/hkjang/dataworks/pull/12","stages":{"base":{"state":"pinned","reason":"main@c3474c1","at":"2026-09-09T00:21:08+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T00:21:08+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T00:26:51+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/12","at":"2026-09-09T00:27:00+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T00:30:18+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T00:30:47+09:00"},"merge":{"state":"done","reason":"7d46aaba76269b8d746ed435299162c534fd874e","at":"2026-09-09T00:30:51+09:00"},"release":{"state":"published","reason":"v0.9.47","at":"2026-09-09T00:37:29+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.47","at":"2026-09-09T00:37:34+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.47.tar.gz ","at":"2026-09-09T00:37:35+09:00"},"assets":{"state":"verified","reason":"v0.9.47 자산 1개 (이전 v0.9.46: 1)","at":"2026-09-09T00:37:41+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":330,"deletions":14,"tests":1,"title":"fix: only count contract masking the runtime actually performs"}
{"ts":"2026-09-09T00:45:25+09:00","date":"2026-09-09","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/9, released v2.5.4","outcome":"release-ready","run_id":"2026-09-09-002059-appstore-improve","base_sha":"26767d1a48bb78add0ab9b948fc6f5ff214fccf3","head_sha":"fec02b9b86cfe4986327353455d37f7890d517df","pr":"https://github.com/hkjang/appstore/pull/9","stages":{"base":{"state":"pinned","reason":"main@26767d1","at":"2026-09-09T00:21:04+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T00:21:04+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T00:28:35+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/9","at":"2026-09-09T00:28:42+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T00:30:00+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T00:33:47+09:00"},"merge":{"state":"done","reason":"fec02b9b86cfe4986327353455d37f7890d517df","at":"2026-09-09T00:33:51+09:00"},"release":{"state":"published","reason":"v2.5.4","at":"2026-09-09T00:42:24+09:00"},"assets":{"state":"verified","reason":"v2.5.4 자산 1개 (이전 v2.5.3: 1)","at":"2026-09-09T00:45:24+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":75,"deletions":3,"tests":1,"title":"fix: bound the rejection reason a reviewer stores"}
{"ts":"2026-09-09T01:06:51+09:00","date":"2026-09-09","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/24, released v0.77.9","outcome":"release-ready","run_id":"2026-09-09-002109-git-ctx-improve","base_sha":"ad2efeb218c666b2aa2d9d5cb999a33320984ed1","head_sha":"b03d2676811b03c1a0ee8352c64cdefdd4c0559d","pr":"https://github.com/hkjang/git-ctx/pull/24","stages":{"base":{"state":"pinned","reason":"main@ad2efeb","at":"2026-09-09T00:21:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T00:21:13+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-09T00:31:36+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/24","at":"2026-09-09T00:31:44+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-09T00:35:50+09:00"},"ci":{"state":"passed","reason":"검사 5개 모두 success","at":"2026-09-09T00:39:05+09:00"},"merge":{"state":"done","reason":"b03d2676811b03c1a0ee8352c64cdefdd4c0559d","at":"2026-09-09T00:39:10+09:00"},"release":{"state":"published","reason":"v0.77.9","at":"2026-09-09T00:53:36+09:00"},"assets":{"state":"verified","reason":"v0.77.9 자산 2개 (이전 v0.77.8: 2)","at":"2026-09-09T01:06:50+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":219,"deletions":25,"tests":1,"title":"fix(manifest): read the two PEP 440 operators the pattern left out"}
{"ts":"2026-09-09T01:28:05+09:00","date":"2026-09-09","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/7, released v1.4.9","outcome":"release-ready","run_id":"2026-09-09-011109-jupiq-improve","base_sha":"43fd67721ebf1dcb1ce99216d0c8e43f8ebb3e7d","head_sha":"5780506427f7e2a63cb17e6f328de8245988bce0","pr":"https://github.com/hkjang/jupiq/pull/7","stages":{"base":{"state":"pinned","reason":"main@43fd677","at":"2026-09-09T01:11:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T01:11:12+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T01:15:07+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/7","at":"2026-09-09T01:15:14+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T01:16:51+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-09T01:19:13+09:00"},"merge":{"state":"done","reason":"5780506427f7e2a63cb17e6f328de8245988bce0","at":"2026-09-09T01:19:19+09:00"},"release":{"state":"published","reason":"v1.4.9","at":"2026-09-09T01:25:02+09:00"},"assets":{"state":"verified","reason":"v1.4.9 자산 1개 (이전 v1.4.8: 1)","at":"2026-09-09T01:28:03+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":78,"deletions":0,"tests":1,"title":"fix: 큰 페이지 번호가 OFFSET을 음수로 뒤집지 않도록 pageBounds를 제한한다"}
{"ts":"2026-09-09T01:29:23+09:00","date":"2026-09-09","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/18, released v0.2.5","outcome":"release-ready","run_id":"2026-09-09-011104-jikim-improve","base_sha":"f655a905aacc691c2488ab68cdf59a6c75f9bdb1","head_sha":"ab3f6b11f152a4bc5e256d2b5b96c5595dcab14b","pr":"https://github.com/hkjang/jikim/pull/18","stages":{"base":{"state":"pinned","reason":"main@f655a90","at":"2026-09-09T01:11:06+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T01:11:06+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T01:15:24+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/18","at":"2026-09-09T01:15:28+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T01:18:09+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T01:18:39+09:00"},"merge":{"state":"done","reason":"ab3f6b11f152a4bc5e256d2b5b96c5595dcab14b","at":"2026-09-09T01:18:44+09:00"},"release":{"state":"published","reason":"v0.2.5","at":"2026-09-09T01:25:52+09:00"},"assets":{"state":"verified","reason":"v0.2.5 자산 2개 (이전 v0.2.4: 2)","at":"2026-09-09T01:29:21+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":202,"deletions":15,"tests":2,"title":"fix: map Transit store failures to their real status instead of 400"}
{"ts":"2026-09-09T01:49:21+09:00","date":"2026-09-09","project":"igame","result":"merged https://github.com/hkjang/igame/pull/9, released v0.7.8","outcome":"release-ready","run_id":"2026-09-09-011059-igame-improve","base_sha":"423dc7b212683fd30ecce1f134878875bd613ff0","head_sha":"270a2e187c80c09ee5d446a439e27e20d48f28d9","pr":"https://github.com/hkjang/igame/pull/9","stages":{"base":{"state":"pinned","reason":"main@423dc7b","at":"2026-09-09T01:11:02+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T01:11:02+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-09T01:16:18+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/9","at":"2026-09-09T01:16:25+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T01:18:28+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T01:22:14+09:00"},"merge":{"state":"done","reason":"270a2e187c80c09ee5d446a439e27e20d48f28d9","at":"2026-09-09T01:22:19+09:00"},"release":{"state":"published","reason":"v0.7.8","at":"2026-09-09T01:32:40+09:00"},"assets":{"state":"verified","reason":"v0.7.8 자산 1개 (이전 v0.7.7: 1)","at":"2026-09-09T01:49:18+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":141,"deletions":11,"tests":1,"title":"fix: stop group rankings from listing an organization the policy hides"}
{"ts":"2026-09-09T02:12:51+09:00","date":"2026-09-09","project":"moina","result":"CI failed, PR open https://github.com/hkjang/moina/pull/11","outcome":"verify-failed","run_id":"2026-09-09-020103-moina-improve","base_sha":"945ba035039daf10defb83397eac74b08efecdbd","head_sha":"9c1a7aa76e93a76f38cd91c28594320fc7f2197a","pr":"https://github.com/hkjang/moina/pull/11","stages":{"base":{"state":"pinned","reason":"main@945ba03","at":"2026-09-09T02:01:07+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T02:01:07+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T02:05:56+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/11","at":"2026-09-09T02:06:03+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T02:08:08+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: Image and browser smoke=failure","at":"2026-09-09T02:12:51+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":95,"deletions":7,"tests":2,"title":"feat: tell iPhone users how to attach a HEIC photo as JPEG"}
{"ts":"2026-09-09T02:12:59+09:00","date":"2026-09-09","project":"moyro","result":"verify failed: 실패한 검증: cd webapp && ([ -d node_modules ] || npm ci --no-audit --no-fund) && npm run typecheck --silent && npm","outcome":"verify-failed","run_id":"2026-09-09-020108-moyro-improve","base_sha":"f31824481af19d94897d10d23f61e92b69572f03","head_sha":"504c0f7051d2d30fe96d00cd6875ea05e6cfa6f2","pr":"","stages":{"base":{"state":"pinned","reason":"main@f318244","at":"2026-09-09T02:01:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T02:01:12+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cd webapp && ([ -d node_modules ] || npm ci --no-audit --no-fund) && npm run typecheck --silent && npm test --silent (exit 2)","at":"2026-09-09T02:12:58+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":465,"deletions":11,"tests":2,"title":"fix: stop a reconnect from leaving a connected user marked offline"}
{"ts":"2026-09-09T02:26:45+09:00","date":"2026-09-09","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/12, released v0.239.0","outcome":"release-ready","run_id":"2026-09-09-020058-kanpic-improve","base_sha":"5c30d95340919331b1f0ed85d87607c37a69e570","head_sha":"e9b7b5b142f0a4687bdd1f1b8c7f9194fd06b322","pr":"https://github.com/hkjang/kanpic/pull/12","stages":{"base":{"state":"pinned","reason":"main@5c30d95","at":"2026-09-09T02:01:06+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T02:01:06+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T02:05:29+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/12","at":"2026-09-09T02:05:39+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T02:08:33+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T02:14:10+09:00"},"merge":{"state":"done","reason":"e9b7b5b142f0a4687bdd1f1b8c7f9194fd06b322","at":"2026-09-09T02:14:14+09:00"},"release":{"state":"published","reason":"v0.239.0","at":"2026-09-09T02:25:08+09:00"},"assets":{"state":"verified","reason":"v0.239.0 자산 2개 (이전 v0.238.0: 2)","at":"2026-09-09T02:26:44+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":123,"deletions":17,"tests":3,"title":"test: 줄 끝의 CR 이 열을 가르는 규칙에 걸리지 않음을 못 박는다"}
{"ts":"2026-09-09T02:39:03+09:00","date":"2026-09-09","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/13, released v1.0.16","outcome":"release-ready","run_id":"2026-09-09-023058-pii-masker-improve","base_sha":"7341a8985a44992599f08398e584d09e28025d1a","head_sha":"f63e825fb03f82a7ff350a1fe04f6318e3153109","pr":"https://github.com/hkjang/pii-masker/pull/13","stages":{"base":{"state":"pinned","reason":"main@7341a89","at":"2026-09-09T02:31:03+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T02:31:03+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-09T02:34:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/13","at":"2026-09-09T02:34:50+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T02:36:36+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T02:37:05+09:00"},"merge":{"state":"done","reason":"f63e825fb03f82a7ff350a1fe04f6318e3153109","at":"2026-09-09T02:37:10+09:00"},"release":{"state":"published","reason":"v1.0.16","at":"2026-09-09T02:38:53+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.16","at":"2026-09-09T02:38:56+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-09T02:38:57+09:00"},"assets":{"state":"verified","reason":"v1.0.16 자산 1개 (이전 v1.0.15: 1)","at":"2026-09-09T02:39:05+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":237,"deletions":4,"tests":2,"title":"Encode non-ASCII download file names per RFC 6266"}
{"ts":"2026-09-09T02:46:16+09:00","date":"2026-09-09","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/12, released v0.5.11","outcome":"release-ready","run_id":"2026-09-09-023108-releasedock-improve","base_sha":"f20d23efa42b97089448bf7cc45936d3010e3042","head_sha":"6b795ec9feba2c9b9fe29757bb0761e6fd591417","pr":"https://github.com/hkjang/releasedock/pull/12","stages":{"base":{"state":"pinned","reason":"main@f20d23e","at":"2026-09-09T02:31:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T02:31:11+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T02:36:28+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/12","at":"2026-09-09T02:36:35+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T02:38:36+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T02:39:03+09:00"},"merge":{"state":"done","reason":"6b795ec9feba2c9b9fe29757bb0761e6fd591417","at":"2026-09-09T02:39:09+09:00"},"release":{"state":"published","reason":"v0.5.11","at":"2026-09-09T02:43:43+09:00"},"assets":{"state":"verified","reason":"v0.5.11 자산 2개 (이전 v0.5.10: 2)","at":"2026-09-09T02:46:15+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":138,"deletions":12,"tests":1,"title":"fix: say when the run log view is cut short, and stop it rewinding to the first line"}
{"ts":"2026-09-09T02:50:43+09:00","date":"2026-09-09","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/11, released v1.69.29","outcome":"release-ready","run_id":"2026-09-09-023103-ptium-improve","base_sha":"536aa5fae7ecde2d97644ead3646ab0812ca92dc","head_sha":"e4dfa3237d0b160d9d90c7d583b193c755a660cf","pr":"https://github.com/hkjang/ptium/pull/11","stages":{"base":{"state":"pinned","reason":"main@536aa5f","at":"2026-09-09T02:31:09+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T02:31:09+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-09T02:38:12+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/11","at":"2026-09-09T02:38:22+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T02:40:58+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T02:42:25+09:00"},"merge":{"state":"done","reason":"e4dfa3237d0b160d9d90c7d583b193c755a660cf","at":"2026-09-09T02:42:30+09:00"},"release":{"state":"published","reason":"v1.69.29","at":"2026-09-09T02:50:19+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.69.29","at":"2026-09-09T02:50:26+09:00"},"manifest":{"state":"ok","reason":"ptium-1.69.29.tar.gz ptium-1.69.29.tar.gz.sha256 docker-compose.ptium-1.69.29.yml ptium-1.69.29.env.example load-ptium-1.69.29.ps1 load-ptium-1.69.29.sh ptium-1.69.29.kubernetes.yaml ","at":"2026-09-09T02:50:25+09:00"},"assets":{"state":"verified","reason":"v1.69.29 자산 7개 (이전 v1.69.28: 7)","at":"2026-09-09T02:50:42+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":253,"deletions":30,"tests":4,"title":"Read a workbook's dates from the day it counts from"}
{"ts":"2026-09-09T03:15:00+09:00","date":"2026-09-09","project":"relio","result":"merged https://github.com/hkjang/relio/pull/14","outcome":"merged","run_id":"2026-09-09-030059-relio-improve","base_sha":"81847af4e7aafa07f84db502516457b9c4b93bc1","head_sha":"9571cbd8288342b52d4d4d739d509383542fde35","pr":"https://github.com/hkjang/relio/pull/14","stages":{"base":{"state":"pinned","reason":"main@81847af","at":"2026-09-09T03:01:02+09:00"},"autonomy":{"state":"low-risk","reason":"롤백 PR ","at":"2026-09-09T03:01:02+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T03:10:51+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/14","at":"2026-09-09T03:10:56+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T03:14:25+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T03:14:55+09:00"},"merge":{"state":"done","reason":"9571cbd8288342b52d4d4d739d509383542fde35","at":"2026-09-09T03:14:59+09:00"},"release":{"state":"skipped","reason":"자율화 단계 low-risk — 릴리즈는 사람이","at":"2026-09-09T03:15:00+09:00"}},"campaign":"","autonomy":"low-risk","files":12,"additions":567,"deletions":9,"tests":2,"title":"fix(settings): derive dates from the configured system.timezone"}
{"ts":"2026-09-09T03:38:09+09:00","date":"2026-09-09","project":"umm","result":"merged https://github.com/hkjang/umm/pull/146, released v0.71.4","outcome":"release-ready","run_id":"2026-09-09-030104-umm-improve","base_sha":"e36ece0234bd890f7f7672b3fcb9644e55e84895","head_sha":"62189cef813acc77ea46e2cc2165faa63dd0951d","pr":"https://github.com/hkjang/umm/pull/146","stages":{"base":{"state":"pinned","reason":"main@e36ece0","at":"2026-09-09T03:01:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T03:01:11+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-09T03:07:45+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/umm/pull/146","at":"2026-09-09T03:07:55+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T03:10:26+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T03:20:45+09:00"},"merge":{"state":"done","reason":"62189cef813acc77ea46e2cc2165faa63dd0951d","at":"2026-09-09T03:20:54+09:00"},"release":{"state":"published","reason":"v0.71.4","at":"2026-09-09T03:36:30+09:00"},"assets":{"state":"verified","reason":"v0.71.4 자산 2개 (이전 v0.71.3: 3)","at":"2026-09-09T03:38:06+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":200,"deletions":5,"tests":3,"title":"Give a saved picture back the name it arrived with"}
{"ts":"2026-09-09T03:59:34+09:00","date":"2026-09-09","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/11, released v0.294.0","outcome":"release-ready","run_id":"2026-09-09-030109-weekly-improve","base_sha":"8787c77676a90ec125d5a51003b6bc320ba1546e","head_sha":"2bf7649a2e54e6f7399fbfc607aa0f29c0208c62","pr":"https://github.com/hkjang/weekly/pull/11","stages":{"base":{"state":"pinned","reason":"main@8787c77","at":"2026-09-09T03:01:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T03:01:12+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T03:18:16+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/weekly/pull/11","at":"2026-09-09T03:18:24+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T03:21:23+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T03:40:02+09:00"},"merge":{"state":"done","reason":"2bf7649a2e54e6f7399fbfc607aa0f29c0208c62","at":"2026-09-09T03:40:06+09:00"},"release":{"state":"published","reason":"v0.294.0","at":"2026-09-09T03:58:01+09:00"},"assets":{"state":"verified","reason":"v0.294.0 자산 1개 (이전 v0.293.0: 1)","at":"2026-09-09T03:59:33+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":110,"deletions":10,"tests":2,"title":"fix: 상황판을 읽지 못한 것을 '이번 달 계획 없음'으로 그리지 않습니다"}
{"ts":"2026-09-09T04:17:30+09:00","date":"2026-09-09","project":"ReSSO","result":"release-only, released v0.9.73","outcome":"release-ready","run_id":"2026-09-09-040023-ReSSO-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"published","reason":"v0.9.73","at":"2026-09-09T04:13:25+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.73","at":"2026-09-09T04:13:30+09:00"},"assets":{"state":"verified","reason":"v0.9.73 자산 2개 (이전 v0.9.72: 2)","at":"2026-09-09T04:17:24+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T04:34:24+09:00","date":"2026-09-09","project":"moina","result":"release-only, released v0.1.25","outcome":"release-ready","run_id":"2026-09-09-041814-moina-release","base_sha":"","head_sha":"","pr":"","stages":{"release":{"state":"published","reason":"v0.1.25","at":"2026-09-09T04:29:23+09:00"},"assets":{"state":"verified","reason":"v0.1.25 자산 1개 (이전 v0.1.23: 1)","at":"2026-09-09T04:34:21+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T04:58:34+09:00","date":"2026-09-09","project":"AgentHub","result":"review held, PR open https://github.com/hkjang/AgentHub/pull/16","outcome":"review-pending","run_id":"2026-09-09-044057-AgentHub-improve","base_sha":"88b4ec133eeb00d27e0c6ade4b75a55d9d0deb03","head_sha":"00450c55c242073e7ed61538b932070e64ed3a8c","pr":"https://github.com/hkjang/AgentHub/pull/16","stages":{"base":{"state":"pinned","reason":"main@88b4ec1","at":"2026-09-09T04:41:04+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T04:41:04+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-09T04:54:02+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/16","at":"2026-09-09T04:54:06+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/execution/scmpost.go:442 리뷰 코멘트 경계의 정책 행위자(actor)를 잘못 해석합니다. contentGuard 는 agent.OwnerID(에이전트 정의 소유자)로 UserByID 를 조회해 guard.Owner 를 채우지만, 같은 파일의 announceReview 는 이미 task 를 인자로 받고 있고 이 플랫폼의 다른 모든 정책 지점은 작업 소유자를 씁니다 — 모델 경계 review.go:411 (workflow.Step{... OwnerID: task.OwnerID}), 그리고 이번에 함께 고친 내보내기 경계 store/provenance.go:104 (DecisionForTask 가 t.owner_id 를 읽음). 두 소유자는 실제로 갈립니다: control.go:221 위임은 OwnerID: task.OwnerID 로 AgentID: target.ID 인 다른 사람의 에이전트에 자식 작업을 만들고, scheduler.go:83 / dispatcher.go:106 은 trigger.OwnerID 를 씁니다. 그 결과 공유 리뷰 에이전트(관리자 소유)에 계약직의 작업이 위임되면 roles:[contractor] + actions:[review.comment] 규칙이 관리자 역할로 평가되어 매칭되지 않고, 등급의 전역 동작(기록만)이 결정해 주민등록번호가 그대로 남의 pull request 에 게시됩니다. 이 커밋이 고치겠다고 선언한 바로 그 실패가 두 경계 중 한 곳에 그대로 남아 있습니다. (자격증명 조회 SCMTokenFor 는 agent.OwnerID 가 맞으므로 단순 치환이 아니라 두 값을 분리해야 합니다.) / internal/execution/contentpolicy_test.go:97 새 테스트가 이 결함을 구조적으로 볼 수 없습니다. TestARuleAboutAPersonDecidesAtTheBoundariesThatPublish 는 ContentGuard{... Owner: store.User{Role: \"contractor\"}} 를 손으로 만들어 SendDecision/PostReviewComment 에 직접 넘기므로, 결함이 있는 배선(o.contentGuard / d.contentGuard 가 어느 소유자를 조회하는지)은 한 번도 실행되지 않습니다. 보완용으로 추가된 contentpolicy_test.go:180 TestBothSendersAreGivenThePolicyAndTheOwner 는 빌더 소스에 \"UserByID(\" 문자열이 있는지만 확인하고 어떤 소유자를 넘기는지는 단언하지 않아, 잘못된 소유자를 조회해도 통과합니다. 즉 헤드라인 시나리오가 프로덕션 배선에서 동작한다는 증거가 이 PR 안에 없습니다.","at":"2026-09-09T04:58:32+09:00"}},"campaign":"","autonomy":"release","files":20,"additions":531,"deletions":115,"tests":8,"title":"fix: a rule about a person never applied to the two paths that publish"}
{"ts":"2026-09-09T05:03:10+09:00","date":"2026-09-09","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/17, released v0.9.278","outcome":"release-ready","run_id":"2026-09-09-044102-Clustara-improve","base_sha":"99213e0d72671a69d2f1a1b7ef54f5fa1145c650","head_sha":"07fee740790ef2f732d5de36d7d7bc0deecdd972","pr":"https://github.com/hkjang/clustara/pull/17","stages":{"base":{"state":"pinned","reason":"main@99213e0","at":"2026-09-09T04:41:06+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T04:41:06+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-09T04:50:56+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/17","at":"2026-09-09T04:51:04+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T04:56:35+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T04:57:06+09:00"},"merge":{"state":"done","reason":"07fee740790ef2f732d5de36d7d7bc0deecdd972","at":"2026-09-09T04:57:10+09:00"},"release":{"state":"published","reason":"v0.9.278","at":"2026-09-09T05:02:56+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.278","at":"2026-09-09T05:03:01+09:00"},"manifest":{"state":"ok","reason":"clustara-v0.9.278.tar.gz clustara-v0.9.278.tar.gz.sha256 README-offline-v0.9.278.md ","at":"2026-09-09T05:03:03+09:00"},"assets":{"state":"verified","reason":"v0.9.278 자산 3개 (이전 v0.9.277: 3)","at":"2026-09-09T05:03:12+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":269,"deletions":37,"tests":3,"title":"fix(connectivity): another cluster's Pods and Services satisfied this cluster's checks"}
{"ts":"2026-09-09T05:05:46+09:00","date":"2026-09-09","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/13, released v0.2.29","outcome":"release-ready","run_id":"2026-09-09-044107-Invenqor-improve","base_sha":"92961e302aed11ab5801e984376508f3e3d5b69d","head_sha":"9ff2a9a9bd2e2c261d5729abb8f98a87480bc29a","pr":"https://github.com/hkjang/invenqor/pull/13","stages":{"base":{"state":"pinned","reason":"main@92961e3","at":"2026-09-09T04:41:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T04:41:12+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-09T04:47:07+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/13","at":"2026-09-09T04:47:15+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T04:49:30+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-09T04:51:50+09:00"},"merge":{"state":"done","reason":"9ff2a9a9bd2e2c261d5729abb8f98a87480bc29a","at":"2026-09-09T04:51:55+09:00"},"release":{"state":"published","reason":"v0.2.29","at":"2026-09-09T05:04:22+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.29","at":"2026-09-09T05:04:27+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf RELEASE_NOTES_v0.2.29.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf compose.offline.yaml invenqor-0.2.29.tar.gz invenqor-0.2.29.tar.gz.sha256 invenqor-0.2.29.tgz invenqor-0.2.29.tgz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.29.tar.gz invenqor-agents-0.2.29.tar.gz.sha256 openapi.yaml ","at":"2026-09-09T05:04:29+09:00"},"assets":{"state":"verified","reason":"v0.2.29 자산 25개 (이전 v0.2.28: 25)","at":"2026-09-09T05:05:32+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":219,"deletions":44,"tests":1,"title":"fix: a query result that hit its limit looked complete"}
{"ts":"2026-09-09T05:53:57+09:00","date":"2026-09-09","project":"AgentHub","result":"manual: merged https://github.com/hkjang/AgentHub/pull/17, released v0.239.0","outcome":"release-ready","run_id":"2026-09-09-051059-AgentHub-improve","base_sha":"88b4ec133eeb00d27e0c6ade4b75a55d9d0deb03","head_sha":"abe993437589dcc37268f6950c683b4d4093b4f9","pr":"https://github.com/hkjang/AgentHub/pull/17","stages":{"base":{"state":"pinned","reason":"main@88b4ec1","at":"2026-09-09T05:11:01+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T05:11:01+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-09T05:22:51+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/17","at":"2026-09-09T05:22:58+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-09T05:27:53+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T05:28:22+09:00"},"merge":{"state":"done","reason":"abe993437589dcc37268f6950c683b4d4093b4f9","at":"2026-09-09T05:28:27+09:00"},"release":{"state":"published","reason":"v0.239.0","at":"2026-09-09T05:32:49+09:00"},"assets":{"state":"verified","reason":"v0.239.0 자산 9개 (이전 v0.238.0: 8)","at":"2026-09-09T05:53:52+09:00"}},"campaign":"","autonomy":"release","files":21,"additions":787,"deletions":115,"tests":9,"title":"fix: a rule about a person never applied to the two paths that publish"}
{"ts":"2026-09-09T06:08:38+09:00","date":"2026-09-09","project":"ai-admin","result":"guarded files, PR open https://github.com/hkjang/ai-admin/pull/16","outcome":"review-pending","run_id":"2026-09-09-060109-ai-admin-improve","base_sha":"7c12b73f1d107da587ffdcf2146a2d1c22eea3c6","head_sha":"4d333cf5f1850a2408633b9187c1494928a61b57","pr":"https://github.com/hkjang/ai-admin/pull/16","stages":{"base":{"state":"pinned","reason":"main@7c12b73","at":"2026-09-09T06:01:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T06:01:13+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T06:08:31+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/16","at":"2026-09-09T06:08:38+09:00"},"guard":{"state":"held","reason":"internal/auth/auth.go ","at":"2026-09-09T06:08:38+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":240,"deletions":21,"tests":3,"title":"fix: report an SSO backend outage instead of an account problem"}
{"ts":"2026-09-09T06:17:30+09:00","date":"2026-09-09","project":"Vendra","result":"merged https://github.com/hkjang/Vendra/pull/115, released v0.7.48","outcome":"release-ready","run_id":"2026-09-09-060104-Vendra-improve","base_sha":"aada71865880e5bdace3926e3596f8bd217e454e","head_sha":"7cf4d4b2952a26143ff6f762448c3cffe3fc35df","pr":"https://github.com/hkjang/Vendra/pull/115","stages":{"base":{"state":"pinned","reason":"main@aada718","at":"2026-09-09T06:01:10+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T06:01:10+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T06:11:03+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/115","at":"2026-09-09T06:11:12+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T06:14:30+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T06:15:02+09:00"},"merge":{"state":"done","reason":"7cf4d4b2952a26143ff6f762448c3cffe3fc35df","at":"2026-09-09T06:15:04+09:00"},"release":{"state":"published","reason":"v0.7.48","at":"2026-09-09T06:16:25+09:00"},"assets":{"state":"verified","reason":"v0.7.48 자산 1개 (이전 v0.7.47: 1)","at":"2026-09-09T06:17:29+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":432,"deletions":13,"tests":3,"title":"fix: say which of the two things a signup collides with is already on file"}
{"ts":"2026-09-09T06:37:26+09:00","date":"2026-09-09","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/14, released v0.9.74","outcome":"release-ready","run_id":"2026-09-09-060059-ReSSO-improve","base_sha":"533309464fb55aacae741530f61fe25b83cbf646","head_sha":"62332db958d372370a78f46a4ff9ccb70aa47b8a","pr":"https://github.com/hkjang/ReSSO/pull/14","stages":{"base":{"state":"pinned","reason":"main@5333094","at":"2026-09-09T06:01:04+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T06:01:04+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T06:12:39+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/14","at":"2026-09-09T06:12:45+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T06:17:44+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T06:19:10+09:00"},"merge":{"state":"done","reason":"62332db958d372370a78f46a4ff9ccb70aa47b8a","at":"2026-09-09T06:19:16+09:00"},"release":{"state":"published","reason":"v0.9.74","at":"2026-09-09T06:33:21+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.74","at":"2026-09-09T06:33:26+09:00"},"assets":{"state":"verified","reason":"v0.9.74 자산 2개 (이전 v0.9.73: 2)","at":"2026-09-09T06:37:20+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":196,"deletions":2,"tests":1,"title":"feat: count the authorization requests this service could not serve"}
{"ts":"2026-09-09T06:59:16+09:00","date":"2026-09-09","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/13, release skipped","outcome":"merged","run_id":"2026-09-09-065112-aiportal-front-admin-improve","base_sha":"de562413943255c58b4f64ad9430d5ea1198b377","head_sha":"ccd146d89e22118dd85d084224aa5db9d137e49a","pr":"https://github.com/hkjang/aiportal-front-admin/pull/13","stages":{"base":{"state":"pinned","reason":"main@de56241","at":"2026-09-09T06:51:16+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T06:51:16+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-09T06:55:40+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/13","at":"2026-09-09T06:55:47+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T06:57:18+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T06:57:47+09:00"},"merge":{"state":"done","reason":"ccd146d89e22118dd85d084224aa5db9d137e49a","at":"2026-09-09T06:57:53+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 관례가 존재하지 않습니다. git tag 0개, GitHub Release 0개, .github/workflows 없음, CHANGELOG.md/docs/RELEASE*.md 없음, 릴리즈 스크립트 없음(전체 .sh/.mjs/.md/.yml에서 'git tag'/'gh release'/'npm publish'/'CHANGELOG'/'semver' 검색 결과 0건). 버전 필드는 package.json(0.0.0)과 upgrade/admin-v2/package.json(0.1.0)에 있으나 둘 다 private:true이고 git log -p 확인 결과 최초 생성 커밋에서 기록된 뒤 한 번도 올린 적이 없습니다. 배포는 .gitlab-ci.yml이 main/develop 브랜치 push에 반응해 build 후 PVC로 복사하는 방식이며 태그나 버전을 전혀 참조하지 않습니다. upgrade/admin-v2/deploy의 스크립트도 lockfile 해시 기반 offline npm cache 번들과 rsync 변경분 배포로, 버전이 붙은 릴리즈 자산을 만들지 않습니다. docs/INDEX.md:168에 '날짜와 version history는 실제 release 근거가 있을 때만 기록한다'는 저장소 자체 규칙도 있습니다. 따라야 할 이전 방식이 없어 버전 증가 단위·태그 형식·릴리즈 노트 양식을 새로 정하게 되므로, 관례 수립은 사람의 판단에 맡기고 아무 변경도 만들지 않았습니다. 작업 트리는 깨끗한 상태 그대로입니다.","at":"2026-09-09T06:59:16+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":143,"deletions":8,"tests":1,"title":"fix(admin-v2): 보이지 않는 탭에서는 운영 현황 폴링을 멈춘다"}
{"ts":"2026-09-09T06:59:17+09:00","date":"2026-09-09","project":"aiportal-py","result":"review held, PR open https://github.com/hkjang/aiportal-py/pull/13","outcome":"review-pending","run_id":"2026-09-09-065122-aiportal-py-improve","base_sha":"e49b6d2f7b690dcda8272e1ed6e2745e386b5c60","head_sha":"1bf242623d664c24f1a93c78265117da28e2882b","pr":"https://github.com/hkjang/aiportal-py/pull/13","stages":{"base":{"state":"pinned","reason":"main@e49b6d2","at":"2026-09-09T06:51:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T06:51:23+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-09T06:56:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/13","at":"2026-09-09T06:57:00+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: util/task_supervisor.py:83-97 _on_done() 의 shutdown 예외 처리가 'cancelled' 상태에만 적용되어, 정상 종료 시 feedback_batch 가 매번 오탐 ERROR 를 남긴다. service/feedbackservice.py:276-278 의 feedback_batch_loop 은 asyncio.CancelledError 를 잡아 break 하고 정상 반환한다. 이 경우 Python 3.8+ 에서 task.cancelled() 는 False, exception() 은 None 이 되므로(3.13 에서 재현 확인) _describe() 는 'cancelled' 가 아니라 'stopped'(util/task_supervisor.py:114) 를 돌려주고, _on_done 은 self._shutting_down 이 True 인데도 else 분기로 떨어져 \"'feedback_batch' 가 예고 없이 종료되었습니다. 해당 주기 작업이 더 이상 실행되지 않습니다.\" 를 ERROR 로 기록한다. api.py:119-124 의 begin_shutdown() → cancel() → gather() 경로에서 콜백이 실제로 실행되므로 서버를 정상 종료할 때마다 발생한다. / docs/OPERATIONS.md:81-90 운영 문서와 실제 동작이 어긋난다. 표는 status 'stopped' 를 '예외 없이 끝남 (무한 루프이므로 비정상) → 로그 확인 후 재기동' 으로 규정하지만, 위 결함 때문에 아무 문제 없는 정상 shutdown 마다 그 ERROR 가 찍힌다. 운영자가 런북대로 대응하면 존재하지 않는 장애를 추적하게 되고, 관측성 신호를 만드는 것이 목적인 변경이 오히려 신호를 오염시킨다. / tests/unit/test_task_supervisor.py:141-171 테스트가 이 결함을 잡지 못한다. test_task_finishing_without_error_is_still_abnormal 은 begin_shutdown() 없이 finish() 만, test_cancel_during_shutdown_is_not_an_error 는 cancel() 만 검증할 뿐, 실제 운영 경로인 'begin_shutdown() 이후 CancelledError 를 삼키고 정상 종료' 조합이 없다. FakeTask 는 cancel() 이 곧 cancelled()==True 라고 가정하는데(tests/unit/test_task_supervisor.py:67-69) 이는 CancelledError 를 잡는 실제 루프의 동작과 다르므로, 대역 자체가 결함을 감춘다.","at":"2026-09-09T06:59:16+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":531,"deletions":9,"tests":1,"title":"fix: 백그라운드 task 종료를 로그·/health 로 관측 가능하게 (감사 A-003)"}
{"ts":"2026-09-09T07:00:27+09:00","date":"2026-09-09","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/11, release skipped","outcome":"merged","run_id":"2026-09-09-065117-aiportal-front-improve","base_sha":"6ed4d7236f6b0deebc07b43e93ec3f206653b32e","head_sha":"1c6c38ef380977ee868174ccc8019c6144bea09b","pr":"https://github.com/hkjang/aiportal-front/pull/11","stages":{"base":{"state":"pinned","reason":"main@6ed4d72","at":"2026-09-09T06:51:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T06:51:21+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-09T06:56:11+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/11","at":"2026-09-09T06:56:19+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T06:58:45+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T06:59:15+09:00"},"merge":{"state":"done","reason":"1c6c38ef380977ee868174ccc8019c6144bea09b","at":"2026-09-09T06:59:20+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소. 확인 결과: (1) git 태그 0개(refs/tags 자체가 없음), (2) package.json 이 vite 스캐폴드 기본값 \"version\": \"0.0.0\" + \"private\": true 이며 첫 커밋 이후 24개 커밋 전체에서 한 번도 변경된 적 없음(git log -p -- package.json 으로 확인), 그 외 VERSION/Cargo.toml/pyproject.toml 등 버전 파일 없음, (3) CHANGELOG.md / docs/RELEASE*.md / 릴리즈 노트 없음(docs/ 의 '버전 기록' 표는 각 가이드 문서 자체의 개정 이력으로, 저장소 첫 커밋보다 앞선 2025-01-01 '0.0.1 초기 릴리스' 항목뿐이라 제품 릴리즈 관례가 아님), (4) GitHub Release 목록 비어 있음, (5) .github/workflows 없음 - 배포는 .gitlab-ci.yml 이 담당하는데 main/develop 브랜치 push 에만 반응해 npm run build:* 후 dist 를 PVC 로 복사할 뿐 태그나 버전을 전혀 사용하지 않음, (6) scripts/ 디렉터리·Makefile·릴리즈 검사 스크립트 없음, (7) 릴리즈 커밋 양식도 없음(전체 로그가 fix:/test: 커밋과 auto/* 브랜치 머지뿐). 지시에 따라 버전 체계·태그 형식·노트 양식을 새로 정하지 않고 아무 변경 없이 건너뜀. 워크트리는 커밋/태그 없이 깨끗한 상태(HEAD 9524657)로 유지.","at":"2026-09-09T07:00:27+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":296,"deletions":8,"tests":1,"title":"fix: 공용 저장소 사용자 캐시 로그아웃 잔존 및 storage 예외 방어"}
{"ts":"2026-09-09T07:20:27+09:00","date":"2026-09-09","project":"aiportal-py","result":"manual: merged https://github.com/hkjang/aiportal-py/pull/14, release skipped","outcome":"merged","run_id":"2026-09-09-071058-aiportal-py-improve","base_sha":"e49b6d2f7b690dcda8272e1ed6e2745e386b5c60","head_sha":"effe9e0c0d0eea40dcffa8b29918c2cb6d68c746","pr":"https://github.com/hkjang/aiportal-py/pull/14","stages":{"base":{"state":"pinned","reason":"main@e49b6d2","at":"2026-09-09T07:11:01+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T07:11:01+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-09T07:16:23+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/14","at":"2026-09-09T07:16:30+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T07:18:35+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T07:19:05+09:00"},"merge":{"state":"done","reason":"effe9e0c0d0eea40dcffa8b29918c2cb6d68c746","at":"2026-09-09T07:19:07+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. git tag 0개(로컬·origin 모두 refs/tags/* 없음), GitHub Release 없음, .github/workflows 디렉터리 자체가 없음, CHANGELOG.md·docs/RELEASE*.md 없음, VERSION/pyproject.toml/setup.py/Makefile/package.json 등 버전 파일 없음, scripts/ 디렉터리와 릴리즈·오프라인 빌드 스크립트 없음, 29개 커밋 전체에 릴리즈·버전 범프 커밋 없음(fix:/docs: 와 merge 커밋뿐). 유일한 버전 문자열인 api.py:133 version=\"1.0.0\" 은 FastAPI OpenAPI 메타데이터로 first commit(2075c62) 이후 한 번도 변경된 적이 없고 릴리즈 절차와 무관합니다. 배포는 .gitlab-ci.yml 의 deploy stage 가 main/develop 브랜치 푸시에 반응해 git reset --hard origin/$CI_COMMIT_BRANCH 후 k8s rollout restart/podman restart 를 하는 브랜치 추적 방식이며 태그·버전을 쓰지 않습니다. docs/DEPLOYMENT.md 도 Dockerfile·Compose·Kubernetes manifest 가 저장소에 없어 이미지 빌드는 배포 호스트에서 별도 관리한다고 명시하므로 재현할 릴리즈 자산 관례도 없습니다. 버전 체계·태그 형식·릴리즈 노트 양식을 새로 정하는 것은 사람의 결정이므로 아무것도 만들지 않았습니다.","at":"2026-09-09T07:20:23+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":770,"deletions":9,"tests":1,"title":"fix: 백그라운드 task 종료를 로그·/health 로 관측 가능하게 (감사 A-003)"}
{"ts":"2026-09-09T07:46:41+09:00","date":"2026-09-09","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/13, released v0.9.48","outcome":"release-ready","run_id":"2026-09-09-073104-dataworks-improve","base_sha":"7d64032d0f391f0e6bc112017eb0bb4e304ea95e","head_sha":"9be6396323bf5fc21c433f8dde0f31fadd8c2c4a","pr":"https://github.com/hkjang/dataworks/pull/13","stages":{"base":{"state":"pinned","reason":"main@7d64032","at":"2026-09-09T07:31:07+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T07:31:07+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T07:35:49+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/13","at":"2026-09-09T07:35:57+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T07:38:46+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T07:39:16+09:00"},"merge":{"state":"done","reason":"9be6396323bf5fc21c433f8dde0f31fadd8c2c4a","at":"2026-09-09T07:39:21+09:00"},"release":{"state":"published","reason":"v0.9.48","at":"2026-09-09T07:46:26+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.48","at":"2026-09-09T07:46:32+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.48.tar.gz ","at":"2026-09-09T07:46:34+09:00"},"assets":{"state":"verified","reason":"v0.9.48 자산 1개 (이전 v0.9.47: 1)","at":"2026-09-09T07:46:39+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":171,"deletions":0,"tests":1,"title":"fix: reject contract scopes the runtime can never serve"}
{"ts":"2026-09-09T07:52:56+09:00","date":"2026-09-09","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/10, released v2.5.5","outcome":"release-ready","run_id":"2026-09-09-073059-appstore-improve","base_sha":"6a02639765cdb4e5f7f954d888c938487f96826b","head_sha":"f005d7bf375bb874e59e2ef7cab7c67ed3244936","pr":"https://github.com/hkjang/appstore/pull/10","stages":{"base":{"state":"pinned","reason":"main@6a02639","at":"2026-09-09T07:31:03+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T07:31:03+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T07:37:56+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/10","at":"2026-09-09T07:38:03+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T07:40:24+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T07:42:18+09:00"},"merge":{"state":"done","reason":"f005d7bf375bb874e59e2ef7cab7c67ed3244936","at":"2026-09-09T07:42:20+09:00"},"release":{"state":"published","reason":"v2.5.5","at":"2026-09-09T07:50:55+09:00"},"assets":{"state":"verified","reason":"v2.5.5 자산 1개 (이전 v2.5.4: 1)","at":"2026-09-09T07:52:55+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":150,"deletions":4,"tests":2,"title":"fix: bound the branding upload before it reaches the disk"}
{"ts":"2026-09-09T08:17:05+09:00","date":"2026-09-09","project":"git-ctx","result":"merged https://github.com/hkjang/git-ctx/pull/25, released v0.77.10","outcome":"release-ready","run_id":"2026-09-09-073109-git-ctx-improve","base_sha":"df33d8ef349e3ab613864c98a56b06f69b70d7b4","head_sha":"894a8682027773d54453400f1220c103f877ef02","pr":"https://github.com/hkjang/git-ctx/pull/25","stages":{"base":{"state":"pinned","reason":"main@df33d8e","at":"2026-09-09T07:31:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T07:31:12+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-09T07:39:16+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/25","at":"2026-09-09T07:39:23+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T07:42:19+09:00"},"ci":{"state":"passed","reason":"검사 5개 모두 success","at":"2026-09-09T07:46:58+09:00"},"merge":{"state":"done","reason":"894a8682027773d54453400f1220c103f877ef02","at":"2026-09-09T07:47:02+09:00"},"release":{"state":"published","reason":"v0.77.10","at":"2026-09-09T08:03:51+09:00"},"assets":{"state":"verified","reason":"v0.77.10 자산 2개 (이전 v0.77.9: 2)","at":"2026-09-09T08:17:04+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":143,"deletions":12,"tests":1,"title":"fix(manifest): read the requirements files a project actually names"}
{"ts":"2026-09-09T08:25:17+09:00","date":"2026-09-09","project":"igame","result":"guarded files, PR open https://github.com/hkjang/igame/pull/10","outcome":"review-pending","run_id":"2026-09-09-082058-igame-improve","base_sha":"e5e27eba362021f5397928a8845e5a5636323e3c","head_sha":"14dfcad0a6fe225ae2e9188145137f7dc13b84ad","pr":"https://github.com/hkjang/igame/pull/10","stages":{"base":{"state":"pinned","reason":"main@e5e27eb","at":"2026-09-09T08:21:02+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T08:21:02+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-09T08:25:07+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/10","at":"2026-09-09T08:25:14+09:00"},"guard":{"state":"held","reason":"internal/api/admin_secret_test.go ","at":"2026-09-09T08:25:14+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":130,"deletions":3,"tests":1,"title":"fix: stop a failed settings read from erasing the stored OIDC and AI secrets"}
{"ts":"2026-09-09T08:35:24+09:00","date":"2026-09-09","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/8, released v1.4.10","outcome":"release-ready","run_id":"2026-09-09-082108-jupiq-improve","base_sha":"ced6ae1388332724157c5597e13bccbd94cb84d2","head_sha":"d867fe4ab8b3ae5e684dfe1e8dd1ab28a818486e","pr":"https://github.com/hkjang/jupiq/pull/8","stages":{"base":{"state":"pinned","reason":"main@ced6ae1","at":"2026-09-09T08:21:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T08:21:11+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T08:26:00+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/8","at":"2026-09-09T08:26:06+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T08:27:25+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-09T08:29:19+09:00"},"merge":{"state":"done","reason":"d867fe4ab8b3ae5e684dfe1e8dd1ab28a818486e","at":"2026-09-09T08:29:24+09:00"},"release":{"state":"published","reason":"v1.4.10","at":"2026-09-09T08:32:22+09:00"},"assets":{"state":"verified","reason":"v1.4.10 자산 1개 (이전 v1.4.9: 1)","at":"2026-09-09T08:35:22+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":102,"deletions":25,"tests":1,"title":"refactor: 호출자가 없는 parseTimeQuery를 제거한다"}
{"ts":"2026-09-09T08:38:14+09:00","date":"2026-09-09","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/21, released v0.2.6","outcome":"release-ready","run_id":"2026-09-09-082103-jikim-improve","base_sha":"05f9f62d3834de1e30f9fc17bd1ba3c72e7a10ab","head_sha":"c5926b5d619a22fd87f69d0e3864bc65ca416207","pr":"https://github.com/hkjang/jikim/pull/21","stages":{"base":{"state":"pinned","reason":"main@05f9f62","at":"2026-09-09T08:21:06+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T08:21:06+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T08:25:37+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/21","at":"2026-09-09T08:25:44+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T08:28:30+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T08:29:28+09:00"},"merge":{"state":"done","reason":"c5926b5d619a22fd87f69d0e3864bc65ca416207","at":"2026-09-09T08:29:33+09:00"},"release":{"state":"published","reason":"v0.2.6","at":"2026-09-09T08:35:13+09:00"},"assets":{"state":"verified","reason":"v0.2.6 자산 2개 (이전 v0.2.5: 2)","at":"2026-09-09T08:38:13+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":144,"deletions":10,"tests":1,"title":"fix: hide store internals from MCP tool errors"}
{"ts":"2026-09-09T08:40:21+09:00","date":"2026-09-09","project":"igame","result":"approved https://github.com/hkjang/igame/pull/10","outcome":"review-pending","run_id":"2026-09-09-084019-igame-approve","base_sha":"","head_sha":"14dfcad0a6fe225ae2e9188145137f7dc13b84ad","pr":"https://github.com/hkjang/igame/pull/10","stages":{"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-09T08:40:21+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T08:52:18+09:00","date":"2026-09-09","project":"moyro","result":"verify failed: 실패한 검증: cd webapp && ([ -d node_modules ] || npm ci --no-audit --no-fund) && npm run typecheck --silent && npm","outcome":"verify-failed","run_id":"2026-09-09-084151-moyro-improve","base_sha":"f31824481af19d94897d10d23f61e92b69572f03","head_sha":"1940f5c629c76e0982bee9cba81e088b9e41a483","pr":"","stages":{"base":{"state":"pinned","reason":"main@f318244","at":"2026-09-09T08:41:56+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T08:41:56+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cd webapp && ([ -d node_modules ] || npm ci --no-audit --no-fund) && npm run typecheck --silent && npm test --silent (exit 2)","at":"2026-09-09T08:52:17+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":322,"deletions":8,"tests":2,"title":"fix: stop the daily digest from quoting the reader and cutting Korean mid-character"}
{"ts":"2026-09-09T09:10:13+09:00","date":"2026-09-09","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/13, released v0.240.0","outcome":"release-ready","run_id":"2026-09-09-084144-kanpic-improve","base_sha":"fd8f97b4e9dc8432bde1b0eb96afd1ecd66dd19f","head_sha":"c27367cc11e4a5ef81cf3904f6b9927b4091111b","pr":"https://github.com/hkjang/kanpic/pull/13","stages":{"base":{"state":"pinned","reason":"main@fd8f97b","at":"2026-09-09T08:41:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T08:41:52+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T08:48:44+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/13","at":"2026-09-09T08:48:54+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T08:52:35+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T08:57:18+09:00"},"merge":{"state":"done","reason":"c27367cc11e4a5ef81cf3904f6b9927b4091111b","at":"2026-09-09T08:57:20+09:00"},"release":{"state":"published","reason":"v0.240.0","at":"2026-09-09T09:08:40+09:00"},"assets":{"state":"verified","reason":"v0.240.0 자산 2개 (이전 v0.239.0: 2)","at":"2026-09-09T09:10:12+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":112,"deletions":21,"tests":3,"title":"fix: 표 위의 제목 줄이 파일을 어떻게 가를지 정하지 않는다"}
{"ts":"2026-09-09T09:10:39+09:00","date":"2026-09-09","project":"moina","result":"merged https://github.com/hkjang/moina/pull/12, released v0.1.26","outcome":"release-ready","run_id":"2026-09-09-084149-moina-improve","base_sha":"7238e9bb4a0bbf281708d7d3667ddbf67e8fb691","head_sha":"a85d26e873f1a469e14cceaa7dcefcee58d20d56","pr":"https://github.com/hkjang/moina/pull/12","stages":{"base":{"state":"pinned","reason":"main@7238e9b","at":"2026-09-09T08:41:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T08:41:51+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T08:45:31+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/12","at":"2026-09-09T08:45:35+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T08:47:05+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T08:54:06+09:00"},"merge":{"state":"done","reason":"a85d26e873f1a469e14cceaa7dcefcee58d20d56","at":"2026-09-09T08:54:07+09:00"},"release":{"state":"published","reason":"v0.1.26","at":"2026-09-09T09:05:10+09:00"},"assets":{"state":"verified","reason":"v0.1.26 자산 1개 (이전 v0.1.25: 1)","at":"2026-09-09T09:10:36+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":62,"deletions":2,"tests":1,"title":"fix: tell API clients how to re-upload a rejected HEIC photo as JPEG"}
{"ts":"2026-09-09T09:20:23+09:00","date":"2026-09-09","project":"igame","result":"approved https://github.com/hkjang/igame/pull/10","outcome":"review-pending","run_id":"2026-09-09-092021-igame-approve","base_sha":"","head_sha":"14dfcad0a6fe225ae2e9188145137f7dc13b84ad","pr":"https://github.com/hkjang/igame/pull/10","stages":{"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-09T09:20:23+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T10:30:58+09:00","date":"2026-09-09","project":"moyro","result":"manual: merged https://github.com/hkjang/moyro/pull/8, released v0.2.26","outcome":"release-ready","run_id":"2026-09-09-092150-moyro-improve","base_sha":"f31824481af19d94897d10d23f61e92b69572f03","head_sha":"0993c4b186d53dc1188ae1baaad5f8c3a0b61e63","pr":"https://github.com/hkjang/moyro/pull/8","stages":{"base":{"state":"pinned","reason":"main@f318244","at":"2026-09-09T09:21:55+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T09:21:56+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-09T09:46:36+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moyro/pull/8","at":"2026-09-09T09:46:43+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T09:49:12+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-09T09:57:24+09:00"},"merge":{"state":"done","reason":"0993c4b186d53dc1188ae1baaad5f8c3a0b61e63","at":"2026-09-09T09:57:29+09:00"},"release":{"state":"published","reason":"v0.2.26","at":"2026-09-09T10:13:49+09:00"},"assets":{"state":"verified","reason":"v0.2.26 자산 1개 (이전 v0.2.25: 1)","at":"2026-09-09T10:30:54+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":22,"deletions":0,"tests":1,"title":"fix: pin the webapp type scope so stray @types packages cannot break typecheck"}
{"ts":"2026-09-09T10:48:51+09:00","date":"2026-09-09","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/14, released v1.0.17","outcome":"release-ready","run_id":"2026-09-09-104105-pii-masker-improve","base_sha":"2b449d26d0a5bfdaee39bcd0dff2fbde75c2c1d0","head_sha":"4b4ba614dd05d6c54e1bc17739e81803dae4bd09","pr":"https://github.com/hkjang/pii-masker/pull/14","stages":{"base":{"state":"pinned","reason":"main@2b449d2","at":"2026-09-09T10:41:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T10:41:13+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-09T10:45:00+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/14","at":"2026-09-09T10:45:09+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T10:46:25+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T10:46:57+09:00"},"merge":{"state":"done","reason":"4b4ba614dd05d6c54e1bc17739e81803dae4bd09","at":"2026-09-09T10:47:01+09:00"},"release":{"state":"published","reason":"v1.0.17","at":"2026-09-09T10:48:40+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.17","at":"2026-09-09T10:48:43+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-09T10:48:44+09:00"},"assets":{"state":"verified","reason":"v1.0.17 자산 1개 (이전 v1.0.16: 1)","at":"2026-09-09T10:48:50+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":102,"deletions":5,"tests":1,"title":"Keep document responses out of caches"}
{"ts":"2026-09-09T10:52:49+09:00","date":"2026-09-09","project":"ptium","result":"review held, PR open https://github.com/hkjang/ptium/pull/12","outcome":"review-pending","run_id":"2026-09-09-104110-ptium-improve","base_sha":"01e78a77c42681d43377c2063ae50a2cd8979845","head_sha":"cf1429bc145b91ddfb4e01ea0629dfd98ccb0f71","pr":"https://github.com/hkjang/ptium/pull/12","stages":{"base":{"state":"pinned","reason":"main@01e78a7","at":"2026-09-09T10:41:19+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T10:41:19+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-09T10:47:47+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/12","at":"2026-09-09T10:47:57+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: server/internal/docs/tables.go:287 amountSigns 에 고정 공백(U+00A0)을 추가하면서 allNumeric 이 \"1\\u00a0200\" 같은 셀을 숫자로 받아들이지만, 이 값을 실제로 그리는 server/internal/deck/source.go:710 bareNumber 는 첫 고정 공백에서 멈춰 1 로 읽습니다. 실제로 확인함: CSV \"지역,매출 / 서울,1\\u00a0200 / 부산,980\" 이 HEAD 에서는 ::columns 로 분류되고 deck 파싱 결과가 서울=1, 부산=980 이 되어, 라벨은 1 200 인데 막대는 980 짜리 부산보다 1/980 높이로 그려집니다(막대 순서가 뒤집힌 차트). main 에서는 같은 시트가 ::table 로 남아 잘못된 숫자를 그리는 경로 자체가 없었으므로 이 diff 가 새로 만든 회귀입니다. ASCII 공백판 동일 결함은 기존에도 있었으나, 고정 공백은 이번에 추가된 것입니다. / server/internal/docs/sheetamounts_test.go:105 {\"1\\u00a0200\", 1200, true} 로 amountOf 가 1200 을 읽는다고 못박고 있지만, 같은 값을 소비하는 deck 쪽은 1 로 읽습니다. 테스트가 두 파서의 불일치를 검증하지 못하고 오히려 고정시켰습니다(allNumeric 은 amountOf 의 반환값을 버리고 ok 만 쓰므로 단위 테스트만으로는 드러나지 않음). / server/internal/deck/source.go:695-697 주석과 커밋 메시지가 \"괄호 없이 읽으면 환불이 340 을 판 달과 같은 높이로 축 위에 그려졌다\"고 하며 부호를 붙이는 것이 그 문제의 수정인 것처럼 설명하지만, 실제 렌더링은 바뀌지 않습니다. 그림 경로는 server/internal/pptx/blocks.go:1240 과 1293 에서 math.Abs(item.number()) 로 높이를 잡아 -340 도 +340 과 똑같은 막대를 축 위에 그리고, 부호를 살리는 네이티브 차트 경로는 server/internal/pptx/chartblock.go:150-156 의 chartNumberFormat 이 표시 문자열 \"(340)\" 를 거부해(number 가 빈 문자열이 됨) 진입하지 못합니다. \"(340)\" 이 든 블록에 대해 chartPart 가 nil 을 반환하는 것을 직접 실행해 확인했습니다. 즉 설명된 사용자 가시 효과는 어디에서도 일어나지 않으며, 이를 검증하는 테스트도 없습니다(새 테스트는 파서 반환값만 단언).","at":"2026-09-09T10:52:48+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":202,"deletions":1,"tests":2,"title":"Read a sheet of money as a column of figures"}
{"ts":"2026-09-09T11:02:09+09:00","date":"2026-09-09","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/13, released v0.5.12","outcome":"release-ready","run_id":"2026-09-09-104115-releasedock-improve","base_sha":"f11d933b7c6bb20d29aeae29466f4556a9578f14","head_sha":"0edd7bb80a1f17b8266fbfe897d1e1c027dabb8c","pr":"https://github.com/hkjang/releasedock/pull/13","stages":{"base":{"state":"pinned","reason":"main@f11d933","at":"2026-09-09T10:41:19+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T10:41:19+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T10:50:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/13","at":"2026-09-09T10:50:14+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T10:54:15+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T10:54:48+09:00"},"merge":{"state":"done","reason":"0edd7bb80a1f17b8266fbfe897d1e1c027dabb8c","at":"2026-09-09T10:54:52+09:00"},"release":{"state":"published","reason":"v0.5.12","at":"2026-09-09T10:59:56+09:00"},"assets":{"state":"verified","reason":"v0.5.12 자산 2개 (이전 v0.5.11: 2)","at":"2026-09-09T11:02:08+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":387,"deletions":21,"tests":2,"title":"fix: write the uploaded package straight to its target directory"}
{"ts":"2026-09-09T11:26:51+09:00","date":"2026-09-09","project":"ptium","result":"manual: review held, PR open https://github.com/hkjang/ptium/pull/13","outcome":"review-pending","run_id":"2026-09-09-111106-ptium-improve","base_sha":"01e78a77c42681d43377c2063ae50a2cd8979845","head_sha":"9f32aea1e885c35f94a87ea577e0a73298e33051","pr":"https://github.com/hkjang/ptium/pull/13","stages":{"base":{"state":"pinned","reason":"main@01e78a7","at":"2026-09-09T11:11:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T11:11:12+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-09T11:20:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/13","at":"2026-09-09T11:20:51+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: server/internal/figures/figures.go:73 `case character == ',' || unicode.IsSpace(character)` no longer ends the figure at a space, so a value holding several numbers glues them together. The documented line-chart row form (docs/deck-source.md:91 `- 전환 전 | 120, 118, 121, 119`) is parsed by parseSourceItem -> figures.Of into 1.20118121119e+11 instead of 120. Verified by running the same probe on both trees: main gives Number=120 for that row, HEAD gives Number=1.20118121119e+11. / server/internal/deck/source.go:700 the regression above escapes to user-visible output. compile.go leaves Items on a ::line block (only ::table clears them, compile.go:143), pptx.SanitizeBlock keeps them, and inspect.go:752 includes BlockLine in plottedFigures. statesFigure(\"120, 118, 121, 119\") is false, so the audit emits the finding `figures with no source: 전환 전 120118121119` (verified by direct call to plottedFigures). Before this change it read `전환 전 120`. No test covers this path.","at":"2026-09-09T11:26:46+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":373,"deletions":29,"tests":2,"title":"Read a sheet of money by one reading, not two"}
{"ts":"2026-09-09T11:45:48+09:00","date":"2026-09-09","project":"ptium","result":"manual: review held, PR open https://github.com/hkjang/ptium/pull/14","outcome":"review-pending","run_id":"2026-09-09-113105-ptium-improve","base_sha":"01e78a77c42681d43377c2063ae50a2cd8979845","head_sha":"1483b237f326d5773b34671d1f54d1ccfcd4b8c3","pr":"https://github.com/hkjang/ptium/pull/14","stages":{"base":{"state":"pinned","reason":"main@01e78a7","at":"2026-09-09T11:31:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T11:31:12+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-09T11:40:09+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/14","at":"2026-09-09T11:40:19+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: server/internal/deck/source.go:695-697 주석이 하지 않는 일을 한다고 말합니다. \"read without its brackets the refund drew above the axis, the same height as a month that sold 340\" 이 변경으로 고쳐지지 않습니다. 미리보기 렌더러는 server/internal/pptx/blocks.go:1240(layoutColumns)과 1293(layoutBars)에서 math.Abs(item.number())로 막대 높이를 잡고, 내보내기 경로는 server/internal/pptx/chartblock.go:141 chartNumberFormat이 \"(\"로 시작하는 display를 거부해 chartPart가 nil을 반환합니다. 실제로 확인함: Items{서울 1,200 / 부산 (340) Number=-340}에 대해 chartPart==nil이고 layoutColumns가 그린 부산 막대는 baseline(Y=3565152) 위쪽 Y=2638220..3565152, 높이 926932 = 340/1200 비율 — 340을 판 달과 똑같은 높이로 축 위에 그대로 그려집니다. 같은 PR의 server/internal/docs/sheetamounts_test.go:172-174 주석은 \"a bar is drawn by its size alone ... rather than the height on the slide\"라며 이 사실을 인정하고 있어, 출하되는 소스 파일 주석과 테스트 주석이 서로 모순됩니다. 공용 파서의 의미를 바꾸는 근거가 사실과 다릅니다. / server/internal/deck/source.go:699-700 괄호 판정에 짝 검사가 없습니다. TrimSpace 후 \"(\"로 시작하고 \")\"로 끝나기만 하면 무조건 음수로 읽고, 안쪽은 관대한 bareNumber가 읽으므로 회계상 음수가 아닌 값의 부호가 뒤집힙니다. 실행 확인: parseNumber(\"(3개월)\")=-3 (이전 3), parseNumber(\"(2024년 기준)\")=-2024 (이전 2024), parseNumber(\"(주1) 매출 1,200 (억원)\")=-1 (이전 1, 괄호가 짝이 아닌데 통째로 감쌌다고 판정), parseNumber(\"(-1)\")=+1. 같은 PR의 docs.amountOf(server/internal/docs/tables.go:281-284)는 안쪽 전체를 strconv.ParseFloat로 엄격히 검사해 이 문제가 없는데, deck 쪽만 검사가 빠졌습니다. 눈에 보이는 피해는 막대가 Abs를 쓰는 덕에 제한적이지만, 저장되는 item.Number 부호와 감사/노트가 인용하는 수치가 기존 덱에서 조용히 바뀌고, server/internal/pptx/blocks.go:612-614 meter는 음수 비율을 0으로 깎으므로 \"(80%)\"로 쓰인 행은 80% 채움에서 빈 트랙으로 바뀝니다. 새 테스트는 이 경로를 하나도 덮지 않습니다.","at":"2026-09-09T11:45:44+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":348,"deletions":1,"tests":2,"title":"Read a sheet of money as a column of figures"}
{"ts":"2026-09-09T12:08:48+09:00","date":"2026-09-09","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/15, released v1.69.30","outcome":"release-ready","run_id":"2026-09-09-115108-ptium-improve","base_sha":"01e78a77c42681d43377c2063ae50a2cd8979845","head_sha":"481b189de29a7e8a9ee0cd5453ad710ee153db3d","pr":"https://github.com/hkjang/ptium/pull/15","stages":{"base":{"state":"pinned","reason":"main@01e78a7","at":"2026-09-09T11:51:14+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T11:51:14+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-09T11:55:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/15","at":"2026-09-09T11:56:04+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T11:58:00+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T12:00:36+09:00"},"merge":{"state":"done","reason":"481b189de29a7e8a9ee0cd5453ad710ee153db3d","at":"2026-09-09T12:00:40+09:00"},"release":{"state":"published","reason":"v1.69.30","at":"2026-09-09T12:08:26+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.69.30","at":"2026-09-09T12:08:32+09:00"},"manifest":{"state":"ok","reason":"ptium-1.69.30.tar.gz ptium-1.69.30.tar.gz.sha256 docker-compose.ptium-1.69.30.yml ptium-1.69.30.env.example load-ptium-1.69.30.ps1 load-ptium-1.69.30.sh ptium-1.69.30.kubernetes.yaml ","at":"2026-09-09T12:08:33+09:00"},"assets":{"state":"verified","reason":"v1.69.30 자산 7개 (이전 v1.69.29: 7)","at":"2026-09-09T12:08:47+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":196,"deletions":0,"tests":1,"title":"Read a strict-schema workbook's date as the day it says"}
{"ts":"2026-09-09T12:11:42+09:00","date":"2026-09-09","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/15, released v1.0.18","outcome":"release-ready","run_id":"2026-09-09-115103-pii-masker-improve","base_sha":"991aebd38e4773688377dbc1c45e67504437db0d","head_sha":"3b9f130d569868a5df87c446102c23a33b8e8482","pr":"https://github.com/hkjang/pii-masker/pull/15","stages":{"base":{"state":"pinned","reason":"main@991aebd","at":"2026-09-09T11:51:09+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T11:51:09+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-09T12:04:30+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/15","at":"2026-09-09T12:04:38+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T12:09:00+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T12:09:33+09:00"},"merge":{"state":"done","reason":"3b9f130d569868a5df87c446102c23a33b8e8482","at":"2026-09-09T12:09:36+09:00"},"release":{"state":"published","reason":"v1.0.18","at":"2026-09-09T12:11:16+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.18","at":"2026-09-09T12:11:19+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-09T12:11:20+09:00"},"assets":{"state":"verified","reason":"v1.0.18 자산 1개 (이전 v1.0.17: 1)","at":"2026-09-09T12:11:41+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":435,"deletions":6,"tests":2,"title":"Let running async jobs finish before shutting down"}
{"ts":"2026-09-09T12:14:07+09:00","date":"2026-09-09","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/14, released v0.5.13","outcome":"release-ready","run_id":"2026-09-09-115113-releasedock-improve","base_sha":"2a1299a6985e42b02ec1720ee47f9644e4d7ace1","head_sha":"c3d268ab8dbe8f3e41e8b7c5765e1e6325f0ffa7","pr":"https://github.com/hkjang/releasedock/pull/14","stages":{"base":{"state":"pinned","reason":"main@2a1299a","at":"2026-09-09T11:51:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T11:51:17+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T12:00:37+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/14","at":"2026-09-09T12:00:44+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T12:05:31+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T12:06:03+09:00"},"merge":{"state":"done","reason":"c3d268ab8dbe8f3e41e8b7c5765e1e6325f0ffa7","at":"2026-09-09T12:06:07+09:00"},"release":{"state":"published","reason":"v0.5.13","at":"2026-09-09T12:11:54+09:00"},"assets":{"state":"verified","reason":"v0.5.13 자산 2개 (이전 v0.5.12: 2)","at":"2026-09-09T12:14:05+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":414,"deletions":7,"tests":2,"title":"feat: show the other packages of the same upload on the run screen"}
{"ts":"2026-09-09T12:20:05+09:00","date":"2026-09-09","project":"(runner)","result":"daily cap reached: 릴리즈 32 ≥ 30","outcome":"error","run_id":"","base_sha":"","head_sha":"","pr":"","stages":{},"campaign":"","autonomy":""}
{"ts":"2026-09-09T12:41:03+09:00","date":"2026-09-09","project":"relio","result":"review held, PR open https://github.com/hkjang/relio/pull/15","outcome":"review-pending","run_id":"2026-09-09-123107-relio-improve","base_sha":"7f192a8cf29a9562c942659a130d57ea6a30bc0f","head_sha":"2c282f4ad14e5a86c6c67fbfc42a226b77d5a0a2","pr":"https://github.com/hkjang/relio/pull/15","stages":{"base":{"state":"pinned","reason":"main@7f192a8","at":"2026-09-09T12:31:12+09:00"},"autonomy":{"state":"low-risk","reason":"롤백 PR ","at":"2026-09-09T12:31:12+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T12:38:16+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/15","at":"2026-09-09T12:38:30+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/crm/service.go:478 `today := s.Clock.DateAt(ctx, now)` 가 `s.DB.Query(...)` + `defer rows.Close()` 이후에 놓여 있어, 풀 커넥션을 쥔 상태에서 timezone.Loader 가 같은 pgxpool 로 두 번째 커넥션을 요청한다. 바로 앞 커밋 9571cbd 가 internal/server/today.go:69-71 에 \"Read outside the row loop: the zone lookup is its own query and would otherwise take a second pooled connection while these rows are open.\" 라고 명시적으로 남긴 불변식을 이번 변경이 그대로 위반한다. pool 은 database.go:22 의 `pgxpool.New` 기본값(MaxConns = max(4, NumCPU))이고 zone 캐시는 30초라, 캐시 만료 시점에 ListOpportunities 가 MaxConns 개 동시에 들어오면 모두 rows 커넥션을 쥔 채 두 번째 Acquire 에서 서로를 기다린다. http.Server 의 WriteTimeout 은 핸들러의 request context 를 취소하지 않으므로 클라이언트가 끊을 때까지 스톨이 풀리지 않는다. 수정은 한 줄 이동(`s.DB.Query` 호출 전으로 옮기기)이며, 그렇게 해도 주석이 말한 \"페이지 전체를 한 날짜로 판정\"·\"페이지당 조회 1회\" 라는 의도는 그대로 유지된다. / internal/crm/service.go:478 같은 이유로 이 경로에는 회귀 테스트가 없다. 새 테스트 3개는 모두 순수 함수 `opportunityHealth` 만 호출하고 `ListOpportunities` 는 실행하지 않으므로, 커넥션 홀딩 문제를 잡아내지 못한다.","at":"2026-09-09T12:41:02+09:00"}},"campaign":"","autonomy":"low-risk","files":9,"additions":279,"deletions":22,"tests":4,"title":"fix(intelligence): count D-days on the configured timezone's calendar"}
{"ts":"2026-09-09T12:42:37+09:00","date":"2026-09-09","project":"weekly","result":"no change","outcome":"no-change","run_id":"2026-09-09-123117-weekly-improve","base_sha":"149adb962c439cc4fef51eb575d0fd7d29b185dc","head_sha":"","pr":"","stages":{"base":{"state":"pinned","reason":"main@149adb9","at":"2026-09-09T12:31:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T12:31:21+09:00"},"improve":{"state":"no-change","reason":"커밋 없음","at":"2026-09-09T12:42:36+09:00"}},"campaign":"","autonomy":"release"}
{"ts":"2026-09-09T13:07:39+09:00","date":"2026-09-09","project":"umm","result":"merged https://github.com/hkjang/umm/pull/147, released v0.71.5","outcome":"release-ready","run_id":"2026-09-09-123112-umm-improve","base_sha":"e467ba4000f7dd674bf1b6a5d42f593759dc9d1a","head_sha":"335f18283aa0514721d132dbc17fba1e88f72ef5","pr":"https://github.com/hkjang/umm/pull/147","stages":{"base":{"state":"pinned","reason":"main@e467ba4","at":"2026-09-09T12:31:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T12:31:24+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-09T12:38:52+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/umm/pull/147","at":"2026-09-09T12:39:02+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T12:41:52+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T12:50:37+09:00"},"merge":{"state":"done","reason":"335f18283aa0514721d132dbc17fba1e88f72ef5","at":"2026-09-09T12:50:41+09:00"},"release":{"state":"published","reason":"v0.71.5","at":"2026-09-09T13:05:55+09:00"},"assets":{"state":"verified","reason":"v0.71.5 자산 3개 (이전 v0.71.4: 3)","at":"2026-09-09T13:07:37+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":164,"deletions":8,"tests":1,"title":"Keep a name on the line the export gives it"}
{"ts":"2026-09-09T13:11:02+09:00","date":"2026-09-09","project":"relio","result":"merged https://github.com/hkjang/relio/pull/15 (approved)","outcome":"merged","run_id":"2026-09-09-131024-relio-approve","base_sha":"","head_sha":"43b38046f6119dca0575044159b92a14521ae295","pr":"https://github.com/hkjang/relio/pull/15","stages":{"merge":{"state":"done","reason":"43b38046f6119dca0575044159b92a14521ae295 (사람 승인)","at":"2026-09-09T13:10:59+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T13:23:01+09:00","date":"2026-09-09","project":"Invenqor","result":"CI failed, PR open https://github.com/hkjang/invenqor/pull/14","outcome":"verify-failed","run_id":"2026-09-09-131243-Invenqor-improve","base_sha":"e60b934305633f57de922f002416ecabc2faeab3","head_sha":"72139537ab95a988c202549c0019807fcc75d531","pr":"https://github.com/hkjang/invenqor/pull/14","stages":{"base":{"state":"pinned","reason":"main@e60b934","at":"2026-09-09T13:12:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T13:12:48+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-09T13:18:41+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/14","at":"2026-09-09T13:18:48+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T13:20:56+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: dependency-audit=failure","at":"2026-09-09T13:23:01+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":193,"deletions":10,"tests":1,"title":"fix: an MCP page that ended on the limit promised a page that was not there"}
{"ts":"2026-09-09T13:23:29+09:00","date":"2026-09-09","project":"AgentHub","result":"review held, PR open https://github.com/hkjang/AgentHub/pull/18","outcome":"review-pending","run_id":"2026-09-09-131233-AgentHub-improve","base_sha":"d62f99803c8810a0a10bc462ef03a810db008959","head_sha":"e16350d9ba028b8aecff27a6c2b9a4ea7b9e8f9b","pr":"https://github.com/hkjang/AgentHub/pull/18","stages":{"base":{"state":"pinned","reason":"main@d62f998","at":"2026-09-09T13:12:35+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T13:12:35+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-09T13:19:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/18","at":"2026-09-09T13:20:05+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/execution/provenance.go:59-60 The scan now covers Agent, but the audit entry written on the very same call still carries the raw, unscrubbed name: SendDecision takes the record by value, so exportDecision's `record.Agent` is the pre-scrub string and it is passed as details[\"agent\"] to recordContentScan. With the PR's own example (an agent named \"민원 900101-1234568 담당\", rrn=block) the RRN is refused at the HTTP boundary and then persisted verbatim in audit_events.details — and audit details are read back and shipped out again by store.AuditTrailEach (internal/store/audit.go:114). Before this change that path could not fire for an agent-name value (no findings -> recordContentScan returns early, as its own comment says), so the PR converts an external leak into a stored one. It contradicts recordContentScan's doc at internal/execution/contentscan.go:119-121 (\"never the value itself\") and dlp.Scan's at internal/dlp/dlp.go:~268 (\"never logged and never stored\"). Passing record.AgentID (already the audit subject) instead would keep the entry useful without storing the value. / internal/execution/provenance.go:233-236 Agent and Category are the same string by construction — internal/store/provenance.go:122 does `record.Category = record.Agent` — so scanning both reports every agent-name finding twice. Verified by calling scrubDecision directly with Agent=Category=\"민원 900101-1234568 담당\": findings=2, Labels()=[주민등록번호 주민등록번호], Summary()=\"주민등록번호 1건, 주민등록번호 1건\", and the operator-facing sentence becomes \"결정 기록에 주민등록번호, 주민등록번호가 포함되어 보내지 않았습니다\". That is the double-reporting scrubDecision's own comment (provenance.go:262-264, \"an entry per field would tell the operator the same record left three times\") and dlp's claim() mechanism (internal/dlp/dlp.go:~415, \"so one value is reported once\") both exist to prevent. The new test bakes it in rather than catching it: provenance_test.go:337 asserts exactly 3 findings for a single RRN that appears in two mirrored fields plus Model. Findings should be merged per class before they reach WithheldError/Summary, or Category should be scanned as the copy it is.","at":"2026-09-09T13:23:27+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":161,"deletions":10,"tests":1,"title":"fix: the exported decision record was scanned three fields out of nine"}
{"ts":"2026-09-09T13:30:51+09:00","date":"2026-09-09","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/18, released v0.9.279","outcome":"release-ready","run_id":"2026-09-09-131238-Clustara-improve","base_sha":"3c2a6949ea5113c335f8e57d3f43a4306f1df8e7","head_sha":"c8d678f6de40c19db93176213773f1485859d58a","pr":"https://github.com/hkjang/clustara/pull/18","stages":{"base":{"state":"pinned","reason":"main@3c2a694","at":"2026-09-09T13:12:43+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T13:12:43+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-09T13:21:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/18","at":"2026-09-09T13:21:16+09:00"},"merge":{"state":"done","reason":"c8d678f6de40c19db93176213773f1485859d58a","at":"2026-09-09T13:24:52+09:00"},"release":{"state":"published","reason":"v0.9.279","at":"2026-09-09T13:30:35+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.279","at":"2026-09-09T13:30:40+09:00"},"manifest":{"state":"ok","reason":"clustara-v0.9.279.tar.gz clustara-v0.9.279.tar.gz.sha256 README-offline-v0.9.279.md ","at":"2026-09-09T13:30:42+09:00"},"assets":{"state":"verified","reason":"v0.9.279 자산 3개 (이전 v0.9.278: 3)","at":"2026-09-09T13:30:50+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":177,"deletions":11,"tests":1,"title":"fix(images): an untagged image behind a registry port passed the mutable-tag checks"}
{"ts":"2026-09-09T14:06:26+09:00","date":"2026-09-09","project":"AgentHub","result":"manual: merged https://github.com/hkjang/AgentHub/pull/19, released v0.240.0","outcome":"release-ready","run_id":"2026-09-09-134106-AgentHub-improve","base_sha":"d62f99803c8810a0a10bc462ef03a810db008959","head_sha":"7051d734f7b81684fd46378dd8cdcfd24c51ab6f","pr":"https://github.com/hkjang/AgentHub/pull/19","stages":{"base":{"state":"pinned","reason":"main@d62f998","at":"2026-09-09T13:41:08+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T13:41:08+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-09T13:50:06+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/19","at":"2026-09-09T13:50:13+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-09T13:55:12+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-09T13:55:44+09:00"},"merge":{"state":"done","reason":"7051d734f7b81684fd46378dd8cdcfd24c51ab6f","at":"2026-09-09T13:55:48+09:00"},"release":{"state":"published","reason":"v0.240.0","at":"2026-09-09T14:01:00+09:00"},"assets":{"state":"verified","reason":"v0.240.0 자산 8개 (이전 v0.239.0: 10)","at":"2026-09-09T14:06:23+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":406,"deletions":26,"tests":3,"title":"fix: the exported decision record was scanned three fields out of nine"}
{"ts":"2026-09-09T14:18:08+09:00","date":"2026-09-09","project":"ai-admin","result":"guarded files, PR open https://github.com/hkjang/ai-admin/pull/17","outcome":"review-pending","run_id":"2026-09-09-141118-ai-admin-improve","base_sha":"119218bcc22d1961ce6acaf991f8e61e38a65514","head_sha":"3c8226c1ae2297efec3740c4f148aaf657614427","pr":"https://github.com/hkjang/ai-admin/pull/17","stages":{"base":{"state":"pinned","reason":"main@119218b","at":"2026-09-09T14:11:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T14:11:22+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T14:18:00+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/17","at":"2026-09-09T14:18:06+09:00"},"guard":{"state":"held","reason":".github/workflows/ci.yml ","at":"2026-09-09T14:18:06+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":39,"deletions":2,"tests":0,"title":"ci: 테스트가 잡지 못하는 회귀를 검사하는 lint 단계 추가"}
{"ts":"2026-09-09T14:21:48+09:00","date":"2026-09-09","project":"Vendra","result":"guarded files, PR open https://github.com/hkjang/Vendra/pull/116","outcome":"review-pending","run_id":"2026-09-09-141113-Vendra-improve","base_sha":"0a6918cf463f931f89d47fef98db905c730fad4a","head_sha":"c29f64d298382b972b0efeea5d1f5068439a9910","pr":"https://github.com/hkjang/Vendra/pull/116","stages":{"base":{"state":"pinned","reason":"main@0a6918c","at":"2026-09-09T14:11:20+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T14:11:20+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T14:21:37+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/116","at":"2026-09-09T14:21:46+09:00"},"guard":{"state":"held","reason":"internal/db/migrations/016_invitation_revocation.sql ","at":"2026-09-09T14:21:47+09:00"}},"campaign":"","autonomy":"release","files":9,"additions":620,"deletions":8,"tests":2,"title":"fix: let an invitation that went to the wrong address be called back"}
{"ts":"2026-09-09T14:47:41+09:00","date":"2026-09-09","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/15, released v0.9.75","outcome":"release-ready","run_id":"2026-09-09-141108-ReSSO-improve","base_sha":"60486d4403a574a7d7c5bf66c11889aa52f13557","head_sha":"d8026c1a12d3757ea142898245cb248ea95ea42e","pr":"https://github.com/hkjang/ReSSO/pull/15","stages":{"base":{"state":"pinned","reason":"main@60486d4","at":"2026-09-09T14:11:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T14:11:13+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T14:22:48+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/15","at":"2026-09-09T14:22:56+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T14:25:42+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T14:30:20+09:00"},"merge":{"state":"done","reason":"d8026c1a12d3757ea142898245cb248ea95ea42e","at":"2026-09-09T14:30:25+09:00"},"release":{"state":"published","reason":"v0.9.75","at":"2026-09-09T14:43:14+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.75","at":"2026-09-09T14:43:19+09:00"},"assets":{"state":"verified","reason":"v0.9.75 자산 2개 (이전 v0.9.74: 2)","at":"2026-09-09T14:47:34+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":71,"deletions":16,"tests":1,"title":"fix: stop a caller's max_age from reporting itself as a fault here"}
{"ts":"2026-09-09T15:15:10+09:00","date":"2026-09-09","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/14, release skipped","outcome":"merged","run_id":"2026-09-09-150603-aiportal-front-admin-improve","base_sha":"365bf7f89e9945e4bbf217ca714ed4fc7e694564","head_sha":"732897a90eb7a381af111f12b8820be6c38ef182","pr":"https://github.com/hkjang/aiportal-front-admin/pull/14","stages":{"base":{"state":"pinned","reason":"main@365bf7f","at":"2026-09-09T15:06:06+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:06:06+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-09T15:10:56+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/14","at":"2026-09-09T15:11:02+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T15:13:15+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T15:13:47+09:00"},"merge":{"state":"done","reason":"732897a90eb7a381af111f12b8820be6c38ef182","at":"2026-09-09T15:13:52+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없어 따라할 관례가 없다. 확인한 근거: (1) 태그 0개 - `git tag -l` 이 비어 있고 refs/tags 아래 ref 도 없다. (2) GitHub Release 없음(러너 제공 목록 비어 있음), `.github/workflows` 디렉터리 자체가 없다. (3) CHANGELOG.md / docs/RELEASE*.md / 릴리즈 노트 형식 문서가 없다. (4) 배포는 `.gitlab-ci.yml` 이 브랜치 기준으로만 한다 - main/develop push 시 `npm run build:*` 후 dist 를 PVC 경로에 cp 하는 continuous deploy 이고, 태그·버전·artifact 보관 단계가 없다. (5) 버전 필드는 package.json(root `kcb_ai` 0.0.0)와 upgrade/admin-v2/package.json(`@aiportal/admin-v2` 0.1.0)에 있지만 둘 다 `private: true` 이고, 전체 히스토리에서 파일 생성 시점 이후 한 번도 변경된 적이 없다(`git log -p --all` 의 version 라인 diff 가 최초 추가 2건뿐). 즉 릴리즈 표식이 아니라 scaffolding 기본값이다. (6) 문서도 이를 뒷받침한다 - docs/IMPROVEMENTS.md OBS-001 은 'release/version 표식'을 아직 하지 않은 개선 과제로 적어 두었고, docs/INDEX.md 작성 원칙은 '날짜와 version history는 실제 release 근거가 있을 때만 기록한다'고 못박는다. 따라서 버전 증가 단위, 태그 형식, 릴리즈 노트 양식·언어를 새로 정하는 일이 되므로 절차 5에 따라 아무 변경도 만들지 않았다. 워크트리는 커밋·태그 없이 clean 상태 그대로다. 릴리즈 자산 스크립트도 없다(upgrade/admin-v2/deploy 의 create-offline-cache.sh 는 npm offline cache 생성, deploy-changed.sh 는 변경 파일 배포용이며 둘 다 릴리즈 패키징이 아니다).","at":"2026-09-09T15:15:10+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":199,"deletions":11,"tests":1,"title":"fix(admin-v2): 목록의 날짜 값을 시간대와 형식에 흔들리지 않게 표시한다"}
{"ts":"2026-09-09T15:15:23+09:00","date":"2026-09-09","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/12, release skipped","outcome":"merged","run_id":"2026-09-09-150608-aiportal-front-improve","base_sha":"952465712d429acf2f93f3a0daffab6839a400de","head_sha":"79ca84543febe8c04500182d48ea324e1b5f6fa0","pr":"https://github.com/hkjang/aiportal-front/pull/12","stages":{"base":{"state":"pinned","reason":"main@9524657","at":"2026-09-09T15:06:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:06:11+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-09T15:11:02+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/12","at":"2026-09-09T15:11:08+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T15:13:37+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T15:14:09+09:00"},"merge":{"state":"done","reason":"79ca84543febe8c04500182d48ea324e1b5f6fa0","at":"2026-09-09T15:14:13+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없어 따라할 관례가 없음. git tag 0개(전체 26커밋), 릴리즈 커밋 0건, CHANGELOG/docs/RELEASE* 없음, .github/workflows 없음, scripts/release*.sh·Makefile 없음, GitHub Release 목록 비어 있음. 버전이 적힌 곳은 (1) package.json \"version\": \"0.0.0\" - 최초 임포트 이후 한 번도 변경된 적 없는 vite 스캐폴드 기본값, (2) README.md '버전 기록' 표의 '0.0.1 | 2025-01-01 | 초기 릴리스' - first commit 에 들어온 뒤 수정 이력 없는 템플릿 문구이며 package.json 값과도 불일치. 둘 다 릴리즈 절차가 갱신해 온 흔적이 없음. 배포는 .gitlab-ci.yml 이 main/develop 브랜치 푸시에 반응해 npm run build 후 PVC 디렉터리로 복사하는 방식이라 태그·릴리즈와 무관함. 따라서 버전 체계·태그 형식·릴리즈 노트 양식을 새로 정해야 하는 상황이므로 지침에 따라 아무것도 만들지 않고 skip 함(관례 수립은 사람의 몫). 작업 트리는 변경 없이 clean 상태로 유지.","at":"2026-09-09T15:15:22+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":246,"deletions":31,"tests":1,"title":"fix: 기본앱 조회 실패 처리 및 마운트 시 중복 API 호출 제거"}
{"ts":"2026-09-09T15:16:05+09:00","date":"2026-09-09","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/15, release skipped","outcome":"merged","run_id":"2026-09-09-150613-aiportal-py-improve","base_sha":"4708ba563d945ea15f364300ccc3fb339a152670","head_sha":"6b83be188546dc6af627aca85549debb6f8006ed","pr":"https://github.com/hkjang/aiportal-py/pull/15","stages":{"base":{"state":"pinned","reason":"main@4708ba5","at":"2026-09-09T15:06:16+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:06:16+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-09T15:12:14+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/15","at":"2026-09-09T15:12:19+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T15:14:28+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-09T15:15:00+09:00"},"merge":{"state":"done","reason":"6b83be188546dc6af627aca85549debb6f8006ed","at":"2026-09-09T15:15:05+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. git tag 0개(태그를 만든 적 없음), 버전 파일 없음(pyproject.toml/setup.py/VERSION/package.json/Chart.yaml/Makefile/Dockerfile 모두 부재), CHANGELOG.md 및 docs/RELEASE*.md 없음, 릴리즈 형식의 커밋 메시지도 히스토리에 없음, GitHub Release 기록 없음. .github/ 디렉터리 자체가 없고 유일한 CI 인 .gitlab-ci.yml 은 브랜치 push 기반 배포(git reset --hard origin/$CI_COMMIT_BRANCH 후 kubectl rollout restart / podman restart)라 태그나 버전을 전혀 사용하지 않습니다. 릴리즈용 빌드·패키징 스크립트도 없어 재현할 자산이 없습니다. docs/ROADMAP.md 의 'Release R0~R5' 는 버전 릴리즈가 아니라 내부 로드맵 단계 표기입니다. 관례를 새로 정하는 것은 사람의 일이므로 태그·버전 파일·릴리즈 노트를 만들지 않고 건너뜁니다. 작업 트리는 변경 없이 clean 상태입니다.","at":"2026-09-09T15:16:04+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":490,"deletions":15,"tests":1,"title":"fix: 스페이스 첨부 색인이 누적 배치를 반복 삽입하는 문제 수정 (감사 A-111)"}
{"ts":"2026-09-09T15:21:10+09:00","date":"2026-09-09","project":"appstore","result":"hold: budget","outcome":"error","run_id":"2026-09-09-152109-appstore-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:21:10+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T15:21:15+09:00","date":"2026-09-09","project":"dataworks","result":"hold: budget","outcome":"error","run_id":"2026-09-09-152114-dataworks-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:21:15+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T15:21:20+09:00","date":"2026-09-09","project":"git-ctx","result":"hold: budget","outcome":"error","run_id":"2026-09-09-152119-git-ctx-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:21:20+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T15:31:32+09:00","date":"2026-09-09","project":"appstore","result":"review held, PR open https://github.com/hkjang/appstore/pull/11","outcome":"review-pending","run_id":"2026-09-09-152109-appstore-improve","base_sha":"247b89756f9b2d5ac20ea9c8f8f75596ff3801a7","head_sha":"68543753603fd4c5e002ae9891774511fc589872","pr":"https://github.com/hkjang/appstore/pull/11","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:21:10+09:00"},"base":{"state":"pinned","reason":"main@247b897","at":"2026-09-09T15:21:14+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:21:14+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T15:28:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/11","at":"2026-09-09T15:28:48+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/httpapi/validation.go:48-52 categorySlugPattern 이 앱 슬러그보다 밑줄을 더 허용하는 유일한 근거로 \"the seeded taxonomy ships slugs such as 'enterprise_ops' and those are live URLs\" 를 들지만 이는 사실이 아닙니다. 시드는 apps_enriched.json 의 category 값을 internal/database/seed.go:217 에서 slugify() 로 통과시키고, slugify(internal/database/seed.go:245-262)는 문자/숫자가 아닌 룬을 '-' 로 바꾸므로 DB 에 저장되는 슬러그는 'enterprise-ops', 'ai-agents' 입니다(임시 테스트로 직접 실행해 확인). 즉 기존 slugPattern 으로도 관리자가 잠기는 일은 없었고, 커밋 메시지·주석이 말하는 동작과 실제 시스템 상태가 다릅니다(판정 항목 3). / internal/httpapi/validation_test.go:124-133 TestValidateCategoryInputKeepsTheSeededTaxonomyEditable 은 \"The shipped categories carry underscore slugs and those are live /categories/{slug} URLs\" 라는 위 거짓 전제를 테스트 이름과 주석으로 고정합니다. 실제로 존재하지 않는 회귀를 지키는 테스트라 이후 슬러그 규칙을 앱과 통일하려는 변경을 부당하게 막습니다. / web/src/pages/admin-pages.tsx:1271-1275 프런트 슬러그 필터를 /[^a-z0-9-]/ 에서 /[^a-z0-9_-]/ 로 넓힌 것도 같은 거짓 근거(주석 1272-1273)에 기대고 있습니다. 이번 변경의 목적은 '렌더링되는 카테고리 필드에 상한을 두는 것'인데, 근거가 성립하지 않는 슬러그 문자셋 완화가 서버·클라이언트 양쪽에 섞여 들어갔습니다(판정 항목 4).","at":"2026-09-09T15:31:30+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":145,"deletions":5,"tests":1,"title":"fix: bound the category fields the browse page renders"}
{"ts":"2026-09-09T15:32:55+09:00","date":"2026-09-09","project":"git-ctx","result":"guarded files, PR open https://github.com/hkjang/git-ctx/pull/26","outcome":"review-pending","run_id":"2026-09-09-152119-git-ctx-improve","base_sha":"3527d486572b25e14cb7b4d2d41f500aeb689ca0","head_sha":"49b72bfcb73876bf807d28a53072bc10582491c1","pr":"https://github.com/hkjang/git-ctx/pull/26","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:21:20+09:00"},"base":{"state":"pinned","reason":"main@3527d48","at":"2026-09-09T15:21:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:21:23+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-09T15:32:47+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/26","at":"2026-09-09T15:32:53+09:00"},"guard":{"state":"held","reason":"internal/contentsecurity/credential_shapes_test.go ","at":"2026-09-09T15:32:54+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":79,"deletions":5,"tests":2,"title":"fix(contentsecurity): keep masking inside the line it started on"}
{"ts":"2026-09-09T15:36:19+09:00","date":"2026-09-09","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/14, released v0.9.49","outcome":"release-ready","run_id":"2026-09-09-152114-dataworks-improve","base_sha":"7a5804a91efd0058bb295354cde7ada5234e6998","head_sha":"6835849fd9cbe5a5bc6eff74b4a0f2376d251d45","pr":"https://github.com/hkjang/dataworks/pull/14","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:21:15+09:00"},"base":{"state":"pinned","reason":"main@7a5804a","at":"2026-09-09T15:21:18+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:21:18+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T15:25:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/14","at":"2026-09-09T15:25:49+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-09T15:28:17+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-09T15:28:50+09:00"},"merge":{"state":"done","reason":"6835849fd9cbe5a5bc6eff74b4a0f2376d251d45","at":"2026-09-09T15:28:55+09:00"},"release":{"state":"published","reason":"v0.9.49","at":"2026-09-09T15:36:07+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.49","at":"2026-09-09T15:36:12+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.49.tar.gz ","at":"2026-09-09T15:36:13+09:00"},"assets":{"state":"verified","reason":"v0.9.49 자산 1개 (이전 v0.9.48: 1)","at":"2026-09-09T15:36:18+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":83,"deletions":1,"tests":2,"title":"fix: stop nagging to renew contracts that were already closed"}
{"ts":"2026-09-09T15:41:09+09:00","date":"2026-09-09","project":"igame","result":"hold: budget","outcome":"error","run_id":"2026-09-09-154109-igame-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:41:09+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T15:41:14+09:00","date":"2026-09-09","project":"jikim","result":"hold: budget","outcome":"error","run_id":"2026-09-09-154114-jikim-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:41:14+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T15:41:19+09:00","date":"2026-09-09","project":"jupiq","result":"hold: budget","outcome":"error","run_id":"2026-09-09-154119-jupiq-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:41:19+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-09T15:47:00+09:00","date":"2026-09-09","project":"igame","result":"review held, PR open https://github.com/hkjang/igame/pull/11","outcome":"review-pending","run_id":"2026-09-09-154109-igame-improve","base_sha":"e5e27eba362021f5397928a8845e5a5636323e3c","head_sha":"97e0cc2fc22a679953a6895ddd4533bad8401059","pr":"https://github.com/hkjang/igame/pull/11","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:41:09+09:00"},"base":{"state":"pinned","reason":"main@e5e27eb","at":"2026-09-09T15:41:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:41:12+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-09T15:46:52+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/11","at":"2026-09-09T15:46:58+09:00"},"review":{"state":"hold","reason":"예산 부족으로 리뷰를 돌리지 못함","at":"2026-09-09T15:46:59+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":209,"deletions":14,"tests":1,"title":"fix: stop an unreadable play policy from lifting itself"}
{"ts":"2026-09-09T15:47:11+09:00","date":"2026-09-09","project":"jikim","result":"review held, PR open https://github.com/hkjang/jikim/pull/22","outcome":"review-pending","run_id":"2026-09-09-154114-jikim-improve","base_sha":"8d7796a3a5b5222562ff206404487325a3af482d","head_sha":"c143d70586141bb28b42cc5f2a912a571722e258","pr":"https://github.com/hkjang/jikim/pull/22","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:41:14+09:00"},"base":{"state":"pinned","reason":"main@8d7796a","at":"2026-09-09T15:41:16+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:41:16+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T15:47:05+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/22","at":"2026-09-09T15:47:10+09:00"},"review":{"state":"hold","reason":"예산 부족으로 리뷰를 돌리지 못함","at":"2026-09-09T15:47:10+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":225,"deletions":26,"tests":1,"title":"fix: report failed capability checks as server faults, not denials"}
{"ts":"2026-09-09T15:49:02+09:00","date":"2026-09-09","project":"jupiq","result":"review held, PR open https://github.com/hkjang/jupiq/pull/9","outcome":"review-pending","run_id":"2026-09-09-154119-jupiq-improve","base_sha":"6aa5a437b57f93836f9d3295506e01615cdeb516","head_sha":"b5b6072b183a6caccfe844f79b7932aec6fb949d","pr":"https://github.com/hkjang/jupiq/pull/9","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-09T15:41:19+09:00"},"base":{"state":"pinned","reason":"main@6aa5a43","at":"2026-09-09T15:41:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-09T15:41:22+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-09T15:48:55+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/9","at":"2026-09-09T15:49:01+09:00"},"review":{"state":"hold","reason":"예산 부족으로 리뷰를 돌리지 못함","at":"2026-09-09T15:49:01+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":194,"deletions":44,"tests":4,"title":"refactor: 프로메테우스 수집 주기가 GPU 기능을 한 번만 읽게 한다"}
{"ts":"2026-09-09T15:50:05+09:00","date":"2026-09-09","project":"(runner)","result":"daily cap reached: 비용 $300.23371025 ≥ $300","outcome":"error","run_id":"","base_sha":"","head_sha":"","pr":"","stages":{},"campaign":"","autonomy":""}
{"ts":"2026-09-10T00:13:35+09:00","date":"2026-09-10","project":"moyro","result":"guarded files, PR open https://github.com/hkjang/moyro/pull/9","outcome":"review-pending","run_id":"2026-09-10-000128-moyro-improve","base_sha":"b8cf8f3e74dd80d0cea731223f2a1b4719478ed6","head_sha":"c32f0661b9fdee57a21f9b1c68858dca5337a8e9","pr":"https://github.com/hkjang/moyro/pull/9","stages":{"base":{"state":"pinned","reason":"main@b8cf8f3","at":"2026-09-10T00:01:33+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T00:01:33+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-10T00:13:25+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moyro/pull/9","at":"2026-09-10T00:13:33+09:00"},"guard":{"state":"held","reason":"server/internal/auth/auth.go server/internal/auth/search_wildcards_postgres_test.go ","at":"2026-09-10T00:13:33+09:00"}},"campaign":"","autonomy":"release","files":10,"additions":323,"deletions":20,"tests":3,"title":"fix: stop search terms from being read as LIKE patterns"}
{"ts":"2026-09-10T00:15:24+09:00","date":"2026-09-10","project":"moina","result":"CI failed, PR open https://github.com/hkjang/moina/pull/13","outcome":"verify-failed","run_id":"2026-09-10-000123-moina-improve","base_sha":"6c5b52301eb422ccef0ccfe0c53d79e64f51ac4e","head_sha":"b4a01c14b58bff3478b16f7776b198d59a85c604","pr":"https://github.com/hkjang/moina/pull/13","stages":{"base":{"state":"pinned","reason":"main@6c5b523","at":"2026-09-10T00:01:29+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T00:01:29+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T00:08:32+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/13","at":"2026-09-10T00:08:39+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T00:10:56+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: Image and browser smoke=failure","at":"2026-09-10T00:15:23+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":135,"deletions":3,"tests":1,"title":"fix: report the real pixel size of an uploaded WebP image"}
{"ts":"2026-09-10T00:27:53+09:00","date":"2026-09-10","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/14, released v0.241.0","outcome":"release-ready","run_id":"2026-09-10-000118-kanpic-improve","base_sha":"661043e62337fe6eb74b9a119e7a42c7c45deb60","head_sha":"b4eaa518394fa1903482621fd3f0791f1f1d816d","pr":"https://github.com/hkjang/kanpic/pull/14","stages":{"base":{"state":"pinned","reason":"main@661043e","at":"2026-09-10T00:01:31+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T00:01:31+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T00:05:35+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/14","at":"2026-09-10T00:05:45+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T00:07:32+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T00:14:00+09:00"},"merge":{"state":"done","reason":"b4eaa518394fa1903482621fd3f0791f1f1d816d","at":"2026-09-10T00:14:04+09:00"},"release":{"state":"published","reason":"v0.241.0","at":"2026-09-10T00:26:11+09:00"},"assets":{"state":"verified","reason":"v0.241.0 자산 2개 (이전 v0.240.0: 2)","at":"2026-09-10T00:27:52+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":51,"deletions":2,"tests":1,"title":"fix: 내보낸 CSV·TSV 가 스스로 UTF-8 이라고 밝힌다"}
{"ts":"2026-09-10T00:39:48+09:00","date":"2026-09-10","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/16, released v1.0.19","outcome":"release-ready","run_id":"2026-09-10-003120-pii-masker-improve","base_sha":"009adbd3c4ff6d893c90a74d25669f26107f4034","head_sha":"593490395ef42c4cb75e3890e6f03c0241fdfc6e","pr":"https://github.com/hkjang/pii-masker/pull/16","stages":{"base":{"state":"pinned","reason":"main@009adbd","at":"2026-09-10T00:31:28+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T00:31:28+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-10T00:35:21+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/16","at":"2026-09-10T00:35:31+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T00:37:29+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T00:38:00+09:00"},"merge":{"state":"done","reason":"593490395ef42c4cb75e3890e6f03c0241fdfc6e","at":"2026-09-10T00:38:04+09:00"},"release":{"state":"published","reason":"v1.0.19","at":"2026-09-10T00:39:36+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.19","at":"2026-09-10T00:39:39+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-10T00:39:40+09:00"},"assets":{"state":"verified","reason":"v1.0.19 자산 1개 (이전 v1.0.18: 1)","at":"2026-09-10T00:39:47+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":95,"deletions":3,"tests":1,"title":"Stop restarts from extending job file retention"}
{"ts":"2026-09-10T00:43:35+09:00","date":"2026-09-10","project":"muni","result":"guarded files, PR open https://github.com/hkjang/muni/pull/10","outcome":"review-pending","run_id":"2026-09-10-003117-muni-improve","base_sha":"549baa8672a27e68cb1cd4d004c2be5ea9635b8a","head_sha":"7f6ac57b3ff64dfc9f6fc283492f00cfe4593206","pr":"https://github.com/hkjang/muni/pull/10","stages":{"base":{"state":"pinned","reason":"main@549baa8","at":"2026-09-10T00:31:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T00:31:21+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T00:43:25+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/muni/pull/10","at":"2026-09-10T00:43:32+09:00"},"guard":{"state":"held","reason":".github/workflows/ci.yml ","at":"2026-09-10T00:43:32+09:00"}},"campaign":"","autonomy":"release","files":10,"additions":275,"deletions":11,"tests":2,"title":"ci: gofmt 과 go vet 을 손이 아니라 CI 가 돌립니다"}
{"ts":"2026-09-10T00:51:14+09:00","date":"2026-09-10","project":"ptium","result":"merged https://github.com/hkjang/ptium/pull/16, released v1.69.32","outcome":"release-ready","run_id":"2026-09-10-003125-ptium-improve","base_sha":"4c8ac8cf4f143e1136c8f7da29715876fe3730c9","head_sha":"bb8efaf64579e15ee101d822f2a32fdb2985d125","pr":"https://github.com/hkjang/ptium/pull/16","stages":{"base":{"state":"pinned","reason":"main@4c8ac8c","at":"2026-09-10T00:31:34+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T00:31:35+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-10T00:38:14+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/16","at":"2026-09-10T00:38:25+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T00:40:21+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T00:42:51+09:00"},"merge":{"state":"done","reason":"bb8efaf64579e15ee101d822f2a32fdb2985d125","at":"2026-09-10T00:42:56+09:00"},"release":{"state":"published","reason":"v1.69.32","at":"2026-09-10T00:50:51+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.69.32","at":"2026-09-10T00:50:57+09:00"},"manifest":{"state":"ok","reason":"ptium-1.69.32.tar.gz ptium-1.69.32.tar.gz.sha256 docker-compose.ptium-1.69.32.yml ptium-1.69.32.env.example load-ptium-1.69.32.ps1 load-ptium-1.69.32.sh ptium-1.69.32.kubernetes.yaml ","at":"2026-09-10T00:50:58+09:00"},"assets":{"state":"verified","reason":"v1.69.32 자산 7개 (이전 v1.69.31: 7)","at":"2026-09-10T00:51:13+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":237,"deletions":6,"tests":1,"title":"Name the sheets a full deck left out of a workbook"}
{"ts":"2026-09-10T01:10:41+09:00","date":"2026-09-10","project":"relio","result":"merged https://github.com/hkjang/relio/pull/16","outcome":"merged","run_id":"2026-09-10-010121-relio-improve","base_sha":"b42287d18ba6cc5e748327adc4e1c554f0f1f4ca","head_sha":"574c08173479ee822a105c2d0b893a30e758376a","pr":"https://github.com/hkjang/relio/pull/16","stages":{"base":{"state":"pinned","reason":"main@b42287d","at":"2026-09-10T01:01:26+09:00"},"autonomy":{"state":"low-risk","reason":"롤백 PR ","at":"2026-09-10T01:01:26+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T01:06:52+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/16","at":"2026-09-10T01:06:58+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T01:09:35+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T01:10:34+09:00"},"merge":{"state":"done","reason":"574c08173479ee822a105c2d0b893a30e758376a","at":"2026-09-10T01:10:38+09:00"},"release":{"state":"skipped","reason":"자율화 단계 low-risk — 릴리즈는 사람이","at":"2026-09-10T01:10:41+09:00"}},"campaign":"","autonomy":"low-risk","files":2,"additions":414,"deletions":81,"tests":1,"title":"fix(intelligence): bound the amount and probability drop rules by their window"}
{"ts":"2026-09-10T01:17:36+09:00","date":"2026-09-10","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/15, released v0.5.14","outcome":"release-ready","run_id":"2026-09-10-010116-releasedock-improve","base_sha":"504c3c214fe8aa29ac6031cf27aebdb66afcff8b","head_sha":"aeea0cee38a4a4bc29e4ff2a6ff6585b6947a3e4","pr":"https://github.com/hkjang/releasedock/pull/15","stages":{"base":{"state":"pinned","reason":"main@504c3c2","at":"2026-09-10T01:01:20+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T01:01:20+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T01:06:53+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/15","at":"2026-09-10T01:06:59+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T01:09:36+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T01:10:08+09:00"},"merge":{"state":"done","reason":"aeea0cee38a4a4bc29e4ff2a6ff6585b6947a3e4","at":"2026-09-10T01:10:13+09:00"},"release":{"state":"published","reason":"v0.5.14","at":"2026-09-10T01:14:56+09:00"},"assets":{"state":"verified","reason":"v0.5.14 자산 2개 (이전 v0.5.13: 2)","at":"2026-09-10T01:17:34+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":180,"deletions":2,"tests":1,"title":"fix: stop reporting every failed run insert as a busy target"}
{"ts":"2026-09-10T08:59:56+09:00","date":"2026-09-10","project":"weekly","result":"verify failed: build artifacts committed","outcome":"verify-failed","run_id":"2026-09-10-085107-weekly-improve","base_sha":"149adb962c439cc4fef51eb575d0fd7d29b185dc","head_sha":"817df73883609e00bdb75fc3750f0ba23dc98b15","pr":"","stages":{"base":{"state":"pinned","reason":"main@149adb9","at":"2026-09-10T08:51:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T08:51:12+09:00"},"verify":{"state":"failed","reason":"빌드 산출물이 커밋됨: docs/USER_GUIDE.pdf(1MB) ","at":"2026-09-10T08:59:55+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":126,"deletions":27,"tests":1,"title":"fix: 완료 숨기기가 담당자별 완료율을 0%로, 다 끝낸 기간을 '일정 없음'으로 그리지 않습니다"}
{"ts":"2026-09-10T09:11:22+09:00","date":"2026-09-10","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/19, released v0.9.280","outcome":"release-ready","run_id":"2026-09-10-085117-Clustara-improve","base_sha":"53db55b08f4ad12dee1570a375cbc8860bf259d3","head_sha":"a93941a71c8809e028d45aad31fc398a4e335aed","pr":"https://github.com/hkjang/clustara/pull/19","stages":{"base":{"state":"pinned","reason":"main@53db55b","at":"2026-09-10T08:51:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T08:51:23+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-10T08:59:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/19","at":"2026-09-10T09:00:07+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T09:05:01+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T09:05:32+09:00"},"merge":{"state":"done","reason":"a93941a71c8809e028d45aad31fc398a4e335aed","at":"2026-09-10T09:05:37+09:00"},"release":{"state":"published","reason":"v0.9.280","at":"2026-09-10T09:11:06+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.280","at":"2026-09-10T09:11:11+09:00"},"manifest":{"state":"ok","reason":"clustara-v0.9.280.tar.gz clustara-v0.9.280.tar.gz.sha256 README-offline-v0.9.280.md ","at":"2026-09-10T09:11:12+09:00"},"assets":{"state":"verified","reason":"v0.9.280 자산 3개 (이전 v0.9.279: 3)","at":"2026-09-10T09:11:21+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":270,"deletions":21,"tests":2,"title":"fix(security): a pod that sets `runAsUser: 0` at the pod level was not reported as root"}
{"ts":"2026-09-10T09:36:34+09:00","date":"2026-09-10","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/20, released v0.241.0","outcome":"release-ready","run_id":"2026-09-10-085112-AgentHub-improve","base_sha":"a7fbd2762f806c030f7f9245d57921c33e341183","head_sha":"9f84183031e09761cf3900da4b6589cbf7f68a1d","pr":"https://github.com/hkjang/AgentHub/pull/20","stages":{"base":{"state":"pinned","reason":"main@a7fbd27","at":"2026-09-10T08:51:15+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T08:51:15+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-10T09:04:09+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/20","at":"2026-09-10T09:04:15+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-10T09:10:36+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T09:11:06+09:00"},"merge":{"state":"done","reason":"9f84183031e09761cf3900da4b6589cbf7f68a1d","at":"2026-09-10T09:11:10+09:00"},"release":{"state":"published","reason":"v0.241.0","at":"2026-09-10T09:15:25+09:00"},"assets":{"state":"verified","reason":"v0.241.0 자산 9개 (이전 v0.240.0: 8)","at":"2026-09-10T09:36:33+09:00"}},"campaign":"","autonomy":"release","files":17,"additions":413,"deletions":19,"tests":4,"title":"fix: a payload the scan limit cut short left no trace of having been cut short"}
{"ts":"2026-09-10T10:01:12+09:00","date":"2026-09-10","project":"Vendra","result":"review held, PR open https://github.com/hkjang/Vendra/pull/117","outcome":"review-pending","run_id":"2026-09-10-094115-Vendra-improve","base_sha":"8f149e1814f11c26992ab78fe46ba7e5f465b38f","head_sha":"2e1abb1f6a52aebe92c1bc396a3517aadb04ee90","pr":"https://github.com/hkjang/Vendra/pull/117","stages":{"base":{"state":"pinned","reason":"main@8f149e1","at":"2026-09-10T09:41:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T09:41:23+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T09:54:57+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/117","at":"2026-09-10T09:55:06+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/httpapi/sourcing.go:311 `in.Currency = tenderCurrency` overwrites the stored currency of an existing bid unconditionally, and the ON CONFLICT branch writes `currency=excluded.currency`, so the unit of an already-stored amount is rewritten while the number is left alone. The legacy row this hits is the exact one the commit message exists because of: the old form offered KRW/USD/EUR/JPY and every tender created through the UI is KRW (web/src/pages/Objects.tsx:699 hardcodes it), so a bid stored as USD 50,000 against a KRW tender is the normal pre-change state. On the next save that row silently becomes KRW 50,000. Nothing warns the bidder or the buyer, there is no backfill, and the mismatch guard at sourcing.go:308 cannot catch it because the client now sends the tender's own code. / web/src/pages/Portal.tsx:779 `const currency = item.currency || \"KRW\"` takes the tender's code and ignores `response.currency`, so for that same legacy bid the form renders `총 견적금액 (KRW)` (Portal.tsx:820) directly above `defaultValue={response?.totalAmount}` = 50000, a number that was dollars. Before this change the box showed the bid's own currency (`defaultValue={response?.currency || \"KRW\"}`). This is a new, user-visible mislabeling of an existing amount, and it is what feeds the silent rewrite above. / internal/httpapi/currency_integration_test.go:23 the new integration test only covers a tender in USD with no prior bid; it never seeds a response whose currency differs from the tender's, which is the only case where the overwrite at sourcing.go:311 does anything. The behaviour that regressed is not exercised by any test in this branch.","at":"2026-09-10T10:01:11+09:00"}},"campaign":"","autonomy":"release","files":12,"additions":687,"deletions":25,"tests":4,"title":"fix: price a bid in the currency the tender was put out in, and say which one every amount is in"}
{"ts":"2026-09-10T10:07:02+09:00","date":"2026-09-10","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/15, released v0.2.30","outcome":"release-ready","run_id":"2026-09-10-094107-Invenqor-improve","base_sha":"7d82ba36830845fd19771eacf6fe0eb2803dc893","head_sha":"478b4ce9cb8af1663a773a286ad25d0b623004b2","pr":"https://github.com/hkjang/invenqor/pull/15","stages":{"base":{"state":"pinned","reason":"main@7d82ba3","at":"2026-09-10T09:41:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T09:41:11+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-10T09:47:10+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/15","at":"2026-09-10T09:47:14+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T09:50:42+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-10T09:52:10+09:00"},"merge":{"state":"done","reason":"478b4ce9cb8af1663a773a286ad25d0b623004b2","at":"2026-09-10T09:52:15+09:00"},"release":{"state":"published","reason":"v0.2.30","at":"2026-09-10T10:05:45+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.30","at":"2026-09-10T10:05:50+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf compose.offline.yaml EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf invenqor-0.2.30.tar.gz invenqor-0.2.30.tar.gz.sha256 invenqor-0.2.30.tgz invenqor-0.2.30.tgz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.30.tar.gz invenqor-agents-0.2.30.tar.gz.sha256 openapi.yaml RELEASE_NOTES_v0.2.30.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf ","at":"2026-09-10T10:05:52+09:00"},"assets":{"state":"verified","reason":"v0.2.30 자산 25개 (이전 v0.2.29: 25)","at":"2026-09-10T10:06:50+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":247,"deletions":9,"tests":2,"title":"fix: one asset's relationships could fill the whole MCP reply"}
{"ts":"2026-09-10T10:16:07+09:00","date":"2026-09-10","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/16, released v0.9.76","outcome":"release-ready","run_id":"2026-09-10-094110-ReSSO-improve","base_sha":"23df1af745f3b5ab9ef034c133f8cba0485f48f3","head_sha":"952974664cd34f14874d481091582cc6b58520dd","pr":"https://github.com/hkjang/ReSSO/pull/16","stages":{"base":{"state":"pinned","reason":"main@23df1af","at":"2026-09-10T09:41:16+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T09:41:16+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T09:52:20+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/16","at":"2026-09-10T09:52:26+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T09:56:08+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T09:59:33+09:00"},"merge":{"state":"done","reason":"952974664cd34f14874d481091582cc6b58520dd","at":"2026-09-10T09:59:39+09:00"},"release":{"state":"published","reason":"v0.9.76","at":"2026-09-10T10:11:56+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.76","at":"2026-09-10T10:12:01+09:00"},"assets":{"state":"verified","reason":"v0.9.76 자산 2개 (이전 v0.9.75: 2)","at":"2026-09-10T10:16:02+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":99,"deletions":3,"tests":1,"title":"fix: stop the login screen reporting a fault here as an expired request"}
{"ts":"2026-09-10T11:18:15+09:00","date":"2026-09-10","project":"aiportal-front-admin","result":"guarded files, PR open https://github.com/hkjang/aiportal-front-admin/pull/15","outcome":"review-pending","run_id":"2026-09-10-111305-aiportal-front-admin-improve","base_sha":"ff0f4035326b59701a0db4231f4b99e740bf981f","head_sha":"c1a4d7b8ac5ef2c3c92743391c22afe55084899a","pr":"https://github.com/hkjang/aiportal-front-admin/pull/15","stages":{"base":{"state":"pinned","reason":"main@ff0f403","at":"2026-09-10T11:13:09+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T11:13:09+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-10T11:18:06+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/15","at":"2026-09-10T11:18:13+09:00"},"guard":{"state":"held","reason":"upgrade/admin-v2/src/auth/guard.test.ts upgrade/admin-v2/src/auth/guard.ts upgrade/admin-v2/src/auth/session.test.ts upgrade/admin-v2/src/auth/session.ts ","at":"2026-09-10T11:18:13+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":339,"deletions":12,"tests":3,"title":"fix(admin-v2): 세션이 만료되면 라우트 이동을 기다리지 않고 복구한다"}
{"ts":"2026-09-10T11:23:17+09:00","date":"2026-09-10","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/13, release skipped","outcome":"merged","run_id":"2026-09-10-111310-aiportal-front-improve","base_sha":"30327386c4397aecfe6df1b85e4e7744ba031190","head_sha":"2f890edd0c19676b92dc67a89ac17918557e1f95","pr":"https://github.com/hkjang/aiportal-front/pull/13","stages":{"base":{"state":"pinned","reason":"main@3032738","at":"2026-09-10T11:13:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T11:13:13+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-10T11:18:00+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/13","at":"2026-09-10T11:18:07+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T11:21:33+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T11:22:02+09:00"},"merge":{"state":"done","reason":"2f890edd0c19676b92dc67a89ac17918557e1f95","at":"2026-09-10T11:22:07+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 이 저장소에는 릴리즈 관례가 전혀 없음. `git tag` 0건(태그 이력 없음), GitHub Release 0건, CHANGELOG.md·docs/RELEASE*.md 등 릴리즈 노트 파일 없음, scripts/ 디렉터리·Makefile·릴리즈 빌드 스크립트 없음, .github/workflows 없음. 버전 파일도 사실상 없음: package.json 은 `\"private\": true` 이며 version 이 첫 커밋(ab700ba) 때 Vite 스캐폴드 기본값 \"0.0.0\" 으로 들어간 뒤 전체 27개 커밋 동안 한 번도 변경되지 않았고(`git log -p -- package.json` 에 version 변경 이력 1건=최초 추가뿐), src/public/index.html/vite.config.js/.env.sample 어디에도 버전 문자열 참조가 없다. README.md 의 '버전 기록' 표도 첫 커밋부터 `0.0.1 | 2025-01-01 | 초기 릴리스` 한 줄 그대로인 문서 보일러플레이트로, 실제 릴리즈와 연동된 흔적이 없다. 유일한 CI 는 .gitlab-ci.yml 이고 태그가 아닌 브랜치 푸시(main/develop)에 반응해 `npm run build:*` 후 dist 를 PVC 경로로 복사하는 배포만 하므로, 버전·태그 기반 릴리즈 절차 자체가 존재하지 않는다. 따라서 지침 5에 따라 새 관례(버전 체계·태그 형식·노트 위치)를 임의로 만들지 않고 건너뜀. 머지된 변경(2f890ed)은 main 에 이미 반영되어 있어 기존 GitLab CI 배포 경로로 나간다.","at":"2026-09-10T11:23:17+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":83,"deletions":49,"tests":1,"title":"fix: 대화저장 상세의 기본앱 비동기 처리 오류 및 봇 식별자 파싱 공용화"}
{"ts":"2026-09-10T11:34:23+09:00","date":"2026-09-10","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/18, released v1.2.17","outcome":"release-ready","run_id":"2026-09-10-111300-ai-admin-improve","base_sha":"5a6a5dd1b9c1d931adf869ec27cb60a6e479ebd0","head_sha":"63e0e0804087bdf19b440a57a90caeee8ae148a1","pr":"https://github.com/hkjang/ai-admin/pull/18","stages":{"base":{"state":"pinned","reason":"main@5a6a5dd","at":"2026-09-10T11:13:04+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T11:13:04+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T11:17:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/18","at":"2026-09-10T11:18:01+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T11:21:10+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T11:24:31+09:00"},"merge":{"state":"done","reason":"63e0e0804087bdf19b440a57a90caeee8ae148a1","at":"2026-09-10T11:24:35+09:00"},"release":{"state":"published","reason":"v1.2.17","at":"2026-09-10T11:32:46+09:00"},"assets":{"state":"verified","reason":"v1.2.17 자산 2개 (이전 v1.2.16: 2)","at":"2026-09-10T11:34:21+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":107,"deletions":18,"tests":2,"title":"fix: fail the dashboard instead of reporting a query failure as zero"}
{"ts":"2026-09-10T11:54:47+09:00","date":"2026-09-10","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/16, release skipped","outcome":"merged","run_id":"2026-09-10-114110-aiportal-py-improve","base_sha":"7591e31e579e6c8851763d8ebcf0b73c79f5a850","head_sha":"277d90e3ded67bb76e537e609cc4c4b1ab5dd269","pr":"https://github.com/hkjang/aiportal-py/pull/16","stages":{"base":{"state":"pinned","reason":"main@7591e31","at":"2026-09-10T11:41:14+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T11:41:14+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-10T11:49:45+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/16","at":"2026-09-10T11:49:51+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T11:52:46+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T11:53:15+09:00"},"merge":{"state":"done","reason":"277d90e3ded67bb76e537e609cc4c4b1ab5dd269","at":"2026-09-10T11:53:19+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없어 따라할 기존 방식이 없습니다. (1) git tag 0개 - refs/tags 자체가 없고 packed-refs 도 비어 있으며 git describe --tags 가 SHA 로 폴백합니다. (2) 버전 파일 없음 - pyproject.toml/setup.py/VERSION/package.json/Chart.yaml/Makefile/Dockerfile 모두 부재. 유일한 버전 문자열인 api.py:147 의 FastAPI app metadata version=\"1.0.0\" 은 최초 커밋(2075c62) 이후 한 번도 바뀐 적이 없어(git log -L 147,147:api.py 결과가 최초 추가 1건) 릴리즈용으로 관리되는 값이 아니며, docs/API_REFERENCE.md 는 이를 '앱 metadata version' 으로만 설명합니다. (3) 릴리즈 노트 없음 - CHANGELOG.md/docs/RELEASE*.md 부재이고 git log --all --diff-filter=A 로 어느 브랜치에서도 해당 파일이 추가된 적이 없습니다. docs/ROADMAP.md 의 'Release R0~R5' 는 향후 계획 단계 표기일 뿐 출시 이력이 아닙니다. (4) GitHub Release 없음 - 러너가 미리 가져온 릴리즈 목록이 비어 있습니다. (5) 릴리즈 워크플로/자산 없음 - .github 디렉터리가 없고, CI 는 GitLab(.gitlab-ci.yml) 의 deploy stage 6개 job 뿐인데 전부 브랜치 기반(git fetch origin $CI_COMMIT_BRANCH -> git reset --hard -> k8s rollout restart 또는 podman restart)이라 태그·버전을 전혀 참조하지 않습니다. docs/DEPLOYMENT.md 도 이미지 빌드·패키징 단계가 CI 에 없다고 명시합니다. scripts/ 디렉터리와 Makefile release 타깃도 없어 재현할 자산 빌드 방법이 없습니다. 이 프로젝트는 main 에 머지하면 배포 호스트가 브랜치 head 로 동기화되는 방식이라 버전 태깅 관례를 새로 정하는 것은 사람의 판단 영역이므로 커밋·태그·파일 변경을 하지 않았습니다. A-112 변경(277d90e)은 이미 main 에 머지되어 기존 배포 경로로 반영됩니다.","at":"2026-09-10T11:54:47+09:00"}},"campaign":"","autonomy":"release","files":10,"additions":506,"deletions":37,"tests":1,"title":"fix: 백그라운드 루프의 마지막 성공 시각을 /health 로 노출 (감사 A-112)"}
{"ts":"2026-09-10T11:56:43+09:00","date":"2026-09-10","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/15, released v0.9.50","outcome":"release-ready","run_id":"2026-09-10-114120-dataworks-improve","base_sha":"88c674ae17ed9c824f2ec4516b4f048245585761","head_sha":"fa93959f46eb37e53bcb96801cce3dccdc85c0e5","pr":"https://github.com/hkjang/dataworks/pull/15","stages":{"base":{"state":"pinned","reason":"main@88c674a","at":"2026-09-10T11:41:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T11:41:24+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T11:45:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/15","at":"2026-09-10T11:45:48+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T11:48:07+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T11:48:35+09:00"},"merge":{"state":"done","reason":"fa93959f46eb37e53bcb96801cce3dccdc85c0e5","at":"2026-09-10T11:48:40+09:00"},"release":{"state":"published","reason":"v0.9.50","at":"2026-09-10T11:56:29+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.50","at":"2026-09-10T11:56:35+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.50.tar.gz ","at":"2026-09-10T11:56:36+09:00"},"assets":{"state":"verified","reason":"v0.9.50 자산 1개 (이전 v0.9.49: 1)","at":"2026-09-10T11:56:41+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":151,"deletions":0,"tests":1,"title":"fix: reject entitlement statuses the runtime never serves"}
{"ts":"2026-09-10T12:07:02+09:00","date":"2026-09-10","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/12, released v2.5.6","outcome":"release-ready","run_id":"2026-09-10-114115-appstore-improve","base_sha":"247b89756f9b2d5ac20ea9c8f8f75596ff3801a7","head_sha":"698b5e173b84a7e4382dbfd58675ba26c059040e","pr":"https://github.com/hkjang/appstore/pull/12","stages":{"base":{"state":"pinned","reason":"main@247b897","at":"2026-09-10T11:41:20+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T11:41:20+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T11:50:09+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/12","at":"2026-09-10T11:50:15+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T11:53:14+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T11:54:41+09:00"},"merge":{"state":"done","reason":"698b5e173b84a7e4382dbfd58675ba26c059040e","at":"2026-09-10T11:54:45+09:00"},"release":{"state":"published","reason":"v2.5.6","at":"2026-09-10T12:04:26+09:00"},"assets":{"state":"verified","reason":"v2.5.6 자산 1개 (이전 v2.5.5: 1)","at":"2026-09-10T12:07:00+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":82,"deletions":4,"tests":2,"title":"fix: let an owner take a rejected app back into review"}
{"ts":"2026-09-10T12:22:21+09:00","date":"2026-09-10","project":"git-ctx","result":"review held, PR open https://github.com/hkjang/git-ctx/pull/27","outcome":"review-pending","run_id":"2026-09-10-121115-git-ctx-improve","base_sha":"bc2a0bb16e22042eedd3fe3d012ea8220c1909d2","head_sha":"470ee9fd8d6c4125bd36f5a6beece2659a0eb993","pr":"https://github.com/hkjang/git-ctx/pull/27","stages":{"base":{"state":"pinned","reason":"main@bc2a0bb","at":"2026-09-10T12:11:19+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T12:11:19+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-10T12:18:58+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/27","at":"2026-09-10T12:19:04+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/manifest/lockfile.go:256-270 parsePipfileLock appends every entry of `default` and then of `develop` with no de-duplication, so a package resolved into both sections at the same version is emitted twice as a byte-identical Package. Verified by running ParseLock(\"Pipfile.lock\", {\"default\":{\"six\":{\"version\":\"==1.16.0\"},...},\"develop\":{\"six\":{\"version\":\"==1.16.0\"},...}}) -> 4 packages with `six@1.16.0` appearing twice. This is the shape pipenv actually writes: it resolves the two sections independently and each carries its full transitive closure, so shared transitives (six, packaging, typing-extensions, urllib3, idna, attrs) land in both. Every other parser in this same file guards against exactly this with a `seen` map — parseGoSum:97-101, parsePackageLock:119-127, parseYarnLock:167,185-188, parsePnpmLock:215,224-228 — and the new one is the only parser that does not. / internal/indexer/indexer.go:633-637 is where that duplicate becomes a hard failure. The batch statement is `INSERT INTO repository_packages_staging(...) VALUES (...),(...) ON CONFLICT(generation_id,repository_id,ref_name,ecosystem,name,version,manifest_path) DO UPDATE SET scope=excluded.scope`, and the two duplicated rows are identical in all seven conflict-target columns (same manifest_path \"Pipfile.lock\", same ecosystem \"pypi\", same version) and land in the same 200-row batch (packageInsertBatch=200, indexer.go:1004). PostgreSQL — a first-class backend here (internal/store/store.go:12,47 pgx; internal/{app,backup,notification}/postgres_integration_test.go) — rejects a multi-row ON CONFLICT DO UPDATE that touches the same row twice with `ERROR: ON CONFLICT DO UPDATE command cannot affect row a second time`, and indexer.go:636-638 turns that into `return fail(err)`, aborting the entire index generation for the ref. Before this PR Pipfile.lock was ignored, so this is a new failure mode: on Postgres, indexing a repository that contains an ordinary Pipfile.lock now fails outright rather than gaining an inventory. SQLite applies the rows sequentially and silently collapses them, which is why `go test ./internal/indexer/ ./internal/manifest/` is green and hides this. / internal/manifest/lockfile_test.go:98-210 no case covers a package present in both `default` and `develop`, i.e. the single most common Pipfile.lock property, so the defect above is not exercised by any assertion. TestPipfileLockStatesTheVersionAlone (lockfile_test.go:203-209) uses a one-package `default` only and also cannot reach it.","at":"2026-09-10T12:22:19+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":165,"deletions":4,"tests":1,"title":"fix(manifest): read the python lock files a project actually has"}
{"ts":"2026-09-10T12:31:36+09:00","date":"2026-09-10","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/23, released v0.2.8","outcome":"release-ready","run_id":"2026-09-10-121123-jikim-improve","base_sha":"7e64f103d599733fb13aa2b9bba860f85cb6f71b","head_sha":"d79383b8d90aa92b10f1ddb44285a9a5a70efb6f","pr":"https://github.com/hkjang/jikim/pull/23","stages":{"base":{"state":"pinned","reason":"main@7e64f10","at":"2026-09-10T12:11:26+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T12:11:26+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T12:18:07+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/23","at":"2026-09-10T12:18:12+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T12:21:53+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T12:22:24+09:00"},"merge":{"state":"done","reason":"d79383b8d90aa92b10f1ddb44285a9a5a70efb6f","at":"2026-09-10T12:22:28+09:00"},"release":{"state":"published","reason":"v0.2.8","at":"2026-09-10T12:28:04+09:00"},"assets":{"state":"verified","reason":"v0.2.8 자산 2개 (이전 v0.2.7: 2)","at":"2026-09-10T12:31:35+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":263,"deletions":11,"tests":2,"title":"fix: separate database outages from rejected credentials and sessions"}
{"ts":"2026-09-10T12:50:08+09:00","date":"2026-09-10","project":"igame","result":"merged https://github.com/hkjang/igame/pull/12, released v0.7.9, ASSETS MISSING (release workflow FAILED), queued for fix","outcome":"releasing","run_id":"2026-09-10-121120-igame-improve","base_sha":"ebec29369bcba8d9c0eabcc0057a587ac72dfa93","head_sha":"8ffdc6503204158e9220ef75443a6efe1aa889ae","pr":"https://github.com/hkjang/igame/pull/12","stages":{"base":{"state":"pinned","reason":"main@ebec293","at":"2026-09-10T12:11:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T12:11:24+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-10T12:19:18+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/12","at":"2026-09-10T12:19:25+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-10T12:25:01+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T12:25:32+09:00"},"merge":{"state":"done","reason":"8ffdc6503204158e9220ef75443a6efe1aa889ae","at":"2026-09-10T12:25:37+09:00"},"release":{"state":"published","reason":"v0.7.9","at":"2026-09-10T12:34:05+09:00"},"assets":{"state":"missing","reason":"이전 v0.7.8 엔 1개, v0.7.9 엔 0개 — 워크플로: Release offline image: completed/failure","at":"2026-09-10T12:48:32+09:00"},"workflow":{"state":"failed-twice","reason":"Audit locked Node dependencies","at":"2026-09-10T12:50:05+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":272,"deletions":17,"tests":2,"title":"fix: close the target's sessions when an admin resets a password"}
{"ts":"2026-09-10T13:41:59+09:00","date":"2026-09-10","project":"igame","result":"fix-round: merged https://github.com/hkjang/igame/pull/13, released v0.7.10","outcome":"release-ready","run_id":"2026-09-10-130107-igame-improve","base_sha":"72b877adfe702736539728ae145064ff8b5f2245","head_sha":"8e289636731cc169a71c0470bd53cfa22742a51f","pr":"https://github.com/hkjang/igame/pull/13","stages":{"base":{"state":"pinned","reason":"main@72b877a","at":"2026-09-10T13:01:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T13:01:11+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-10T13:10:33+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/13","at":"2026-09-10T13:10:39+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T13:14:51+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T13:16:17+09:00"},"merge":{"state":"done","reason":"8e289636731cc169a71c0470bd53cfa22742a51f","at":"2026-09-10T13:16:24+09:00"},"release":{"state":"published","reason":"v0.7.10","at":"2026-09-10T13:25:33+09:00"},"assets":{"state":"verified","reason":"v0.7.10 자산 1개 (이전 v0.7.8: 1)","at":"2026-09-10T13:41:56+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":512,"deletions":626,"tests":0,"title":"fix: clear the advisories that fail the release audit"}
{"ts":"2026-09-10T14:09:48+09:00","date":"2026-09-10","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/10, released v1.4.12","outcome":"release-ready","run_id":"2026-09-10-135106-jupiq-improve","base_sha":"dffcabb5aa9e0c247c2e90d1d01a6a69b7fdc49b","head_sha":"818339f1f94bbce651533bd58cf0d0c6a3884144","pr":"https://github.com/hkjang/jupiq/pull/10","stages":{"base":{"state":"pinned","reason":"main@dffcabb","at":"2026-09-10T13:51:09+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T13:51:09+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T13:57:23+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/10","at":"2026-09-10T13:57:29+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T13:59:40+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-10T14:01:08+09:00"},"merge":{"state":"done","reason":"818339f1f94bbce651533bd58cf0d0c6a3884144","at":"2026-09-10T14:01:10+09:00"},"release":{"state":"published","reason":"v1.4.12","at":"2026-09-10T14:06:44+09:00"},"assets":{"state":"verified","reason":"v1.4.12 자산 1개 (이전 v1.4.11: 1)","at":"2026-09-10T14:09:47+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":120,"deletions":8,"tests":2,"title":"fix: 오류 메시지 자르기가 한글 문자를 쪼개지 않게 한다"}
{"ts":"2026-09-10T14:19:23+09:00","date":"2026-09-10","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/15, released v0.242.0","outcome":"release-ready","run_id":"2026-09-10-135111-kanpic-improve","base_sha":"87d9689fcc770d004b9642e22f67957050ea26a3","head_sha":"ab565350c076ac34ecd1d10501b833170e6f6f26","pr":"https://github.com/hkjang/kanpic/pull/15","stages":{"base":{"state":"pinned","reason":"main@87d9689","at":"2026-09-10T13:51:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T13:51:24+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T13:59:15+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/15","at":"2026-09-10T13:59:21+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T14:03:01+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T14:07:21+09:00"},"merge":{"state":"done","reason":"ab565350c076ac34ecd1d10501b833170e6f6f26","at":"2026-09-10T14:07:25+09:00"},"release":{"state":"published","reason":"v0.242.0","at":"2026-09-10T14:17:48+09:00"},"assets":{"state":"verified","reason":"v0.242.0 자산 2개 (이전 v0.241.0: 2)","at":"2026-09-10T14:19:25+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":208,"deletions":10,"tests":3,"title":"fix: 무엇으로 적혔는지 밝히고 오는 CSV 를 밝힌 대로 읽는다"}
{"ts":"2026-09-10T14:22:31+09:00","date":"2026-09-10","project":"moina","result":"merged https://github.com/hkjang/moina/pull/16, released v0.1.27","outcome":"release-ready","run_id":"2026-09-10-135116-moina-improve","base_sha":"222f7b523ec47554ad661c53b1e7fc45b8483feb","head_sha":"128c803ed9fb55918ec4b324f6754622533e20ef","pr":"https://github.com/hkjang/moina/pull/16","stages":{"base":{"state":"pinned","reason":"main@222f7b5","at":"2026-09-10T13:51:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T13:51:23+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T13:56:58+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/16","at":"2026-09-10T13:57:05+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T14:01:17+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T14:05:06+09:00"},"merge":{"state":"done","reason":"128c803ed9fb55918ec4b324f6754622533e20ef","at":"2026-09-10T14:05:11+09:00"},"release":{"state":"published","reason":"v0.1.27","at":"2026-09-10T14:16:29+09:00"},"assets":{"state":"verified","reason":"v0.1.27 자산 1개 (이전 v0.1.26: 1)","at":"2026-09-10T14:22:29+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":49,"deletions":0,"tests":2,"title":"fix: 첨부 이미지의 픽셀 크기를 미리 알려 Flow 레이아웃 밀림을 막습니다"}
{"ts":"2026-09-10T14:39:31+09:00","date":"2026-09-10","project":"pii-masker","result":"merged https://github.com/hkjang/pii-masker/pull/17, released v1.0.20","outcome":"release-ready","run_id":"2026-09-10-143115-pii-masker-improve","base_sha":"772ed63567004013115bbef57864c5b5e6df5a7f","head_sha":"d22e4571189c61a86afeca3dc1635828912b8936","pr":"https://github.com/hkjang/pii-masker/pull/17","stages":{"base":{"state":"pinned","reason":"main@772ed63","at":"2026-09-10T14:31:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T14:31:23+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-10T14:34:46+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/pii-masker/pull/17","at":"2026-09-10T14:34:51+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T14:36:50+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T14:37:22+09:00"},"merge":{"state":"done","reason":"d22e4571189c61a86afeca3dc1635828912b8936","at":"2026-09-10T14:37:23+09:00"},"release":{"state":"published","reason":"v1.0.20","at":"2026-09-10T14:39:21+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v1.0.20","at":"2026-09-10T14:39:24+09:00"},"manifest":{"state":"ok","reason":"pii-masker-image.tar.gz ","at":"2026-09-10T14:39:25+09:00"},"assets":{"state":"verified","reason":"v1.0.20 자산 1개 (이전 v1.0.19: 1)","at":"2026-09-10T14:39:30+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":104,"deletions":1,"tests":1,"title":"Report oversized upstream responses as their own error"}
{"ts":"2026-09-10T15:01:09+09:00","date":"2026-09-10","project":"muni","result":"merged https://github.com/hkjang/muni/pull/11, released v0.36.0","outcome":"release-ready","run_id":"2026-09-10-143110-muni-improve","base_sha":"1442df0ac2a893bf59c022137c973b391ea1f938","head_sha":"17c16d9442a849c77aae95876f710cea4902199c","pr":"https://github.com/hkjang/muni/pull/11","stages":{"base":{"state":"pinned","reason":"main@1442df0","at":"2026-09-10T14:31:18+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T14:31:18+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T14:43:28+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/muni/pull/11","at":"2026-09-10T14:43:35+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T14:49:42+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T14:50:12+09:00"},"merge":{"state":"done","reason":"17c16d9442a849c77aae95876f710cea4902199c","at":"2026-09-10T14:50:18+09:00"},"release":{"state":"published","reason":"v0.36.0","at":"2026-09-10T14:57:09+09:00"},"assets":{"state":"verified","reason":"v0.36.0 자산 1개 (이전 v0.35.0: 1)","at":"2026-09-10T15:01:10+09:00"}},"campaign":"","autonomy":"release","files":15,"additions":342,"deletions":57,"tests":4,"title":"feat: 한글 문서의 구분선을 문단 아래 선으로 긋고 다시 읽습니다"}
{"ts":"2026-09-10T15:22:25+09:00","date":"2026-09-10","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/10, released v0.2.27","outcome":"release-ready","run_id":"2026-09-10-143108-moyro-improve","base_sha":"43660ee42241ab64ad11749ebe647e151ff95e99","head_sha":"d32423a9bd0f9ce5e05ca197178aa1b1ab636d03","pr":"https://github.com/hkjang/moyro/pull/10","stages":{"base":{"state":"pinned","reason":"main@43660ee","at":"2026-09-10T14:31:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T14:31:12+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-10T14:36:31+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moyro/pull/10","at":"2026-09-10T14:36:38+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T14:41:32+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-10T14:49:35+09:00"},"merge":{"state":"done","reason":"d32423a9bd0f9ce5e05ca197178aa1b1ab636d03","at":"2026-09-10T14:49:38+09:00"},"release":{"state":"published","reason":"v0.2.27","at":"2026-09-10T15:05:07+09:00"},"assets":{"state":"verified","reason":"v0.2.27 자산 1개 (이전 v0.2.26: 1)","at":"2026-09-10T15:22:22+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":71,"deletions":31,"tests":1,"title":"test: typecheck the e2e specs and the build configs"}
{"ts":"2026-09-10T15:41:59+09:00","date":"2026-09-10","project":"ptium","result":"review held, PR open https://github.com/hkjang/ptium/pull/17","outcome":"review-pending","run_id":"2026-09-10-153108-ptium-improve","base_sha":"1a3a67ff362f48f3f9602b1b9b1012e22c36592a","head_sha":"6b22609789bd690f75ecaf9a50e2aa50a6d0a8df","pr":"https://github.com/hkjang/ptium/pull/17","stages":{"base":{"state":"pinned","reason":"main@1a3a67f","at":"2026-09-10T15:31:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T15:31:22+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-10T15:38:01+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/17","at":"2026-09-10T15:38:11+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: server/internal/docs/tables.go:336-339 (amountSigns) — adding the European currency signs (€, £, and also $/¥) to the stripper newly admits comma-decimal locales, which this reader cannot read. Verified by running the branch: the CSV \"Region,Umsatz\\nBerlin,\\\"€1.234,56\\\"\\nHamburg,\\\"€980,00\\\"\" is emitted as ::columns with item numbers Berlin=1.23456 and Hamburg=98000 — the smaller amount is drawn ~79,000x taller than the larger one, with the value labels on the same slide still reading €1.234,56 and €980,00. On main the same sheet stays ::table (ParseFloat rejected the € sign), so this is a regression introduced by this branch, and it is exactly the failure the change says it exists to prevent ('a chart of heights nobody wrote'). / server/internal/docs/tables.go:271-285 (amountOf doc comment) — the stated contract is 'where the two readings disagree, this one gives way', and the space-thousands form (\"1 200\") is excluded on that ground. But the € case above is a disagreement of a different kind that the guard does not cover: docs.amountOf and deck.parseNumber agree perfectly (both say 1.23456) and both disagree with the sheet. The comment and the tests therefore describe a safety property the code does not have; the far more common European format (dot thousands, comma decimal) is admitted while the rarer space-thousands one is refused. / server/internal/docs/sheetamounts_test.go:209-261 (TestTheChartReadsTheFiguresTheSheetWasSentOnFor) — the test that is supposed to guarantee 'the sheet this one sends on as a chart is one the other draws at the figures the sheet shows' only checks parser-vs-parser agreement against hand-written expectations, and every case uses dot-decimal (₩1,200 / 1,200원 / $1,200.50). It cannot fail for the defect above. Adding €/£ without a single comma-decimal case is the coverage gap that let it through.","at":"2026-09-10T15:41:58+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":109,"deletions":18,"tests":1,"title":"Leave a sheet that spaces its thousands the table it was"}
{"ts":"2026-09-10T15:43:11+09:00","date":"2026-09-10","project":"relio","result":"needs approval (risk=medium, files=3), PR open https://github.com/hkjang/relio/pull/17","outcome":"review-pending","run_id":"2026-09-10-153118-relio-improve","base_sha":"13ff4609b7a3a649621247432df7bd0cdafc236c","head_sha":"6e90880f1a01b63ead84186bf95dbfd95070e052","pr":"https://github.com/hkjang/relio/pull/17","stages":{"base":{"state":"pinned","reason":"main@13ff460","at":"2026-09-10T15:31:24+09:00"},"autonomy":{"state":"held","reason":"low-risk 단계 — 위험도 medium, 파일 3: 사람 승인 필요","at":"2026-09-10T15:43:11+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T15:38:48+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/17","at":"2026-09-10T15:38:54+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-10T15:43:11+09:00"}},"campaign":"","autonomy":"low-risk","files":3,"additions":341,"deletions":42,"tests":1,"title":"perf(intelligence): read the deal health facts once for the whole set"}
{"ts":"2026-09-10T15:54:36+09:00","date":"2026-09-10","project":"releasedock","result":"merged https://github.com/hkjang/releasedock/pull/16, released v0.5.15","outcome":"release-ready","run_id":"2026-09-10-153113-releasedock-improve","base_sha":"42b7715de455ef21f18be52fe4a1fd9130162dd1","head_sha":"19e3cc9d1cee177a08b17007803b9fff11642ee5","pr":"https://github.com/hkjang/releasedock/pull/16","stages":{"base":{"state":"pinned","reason":"main@42b7715","at":"2026-09-10T15:31:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T15:31:17+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T15:39:48+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/releasedock/pull/16","at":"2026-09-10T15:39:55+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T15:43:22+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T15:43:52+09:00"},"merge":{"state":"done","reason":"19e3cc9d1cee177a08b17007803b9fff11642ee5","at":"2026-09-10T15:43:57+09:00"},"release":{"state":"published","reason":"v0.5.15","at":"2026-09-10T15:52:03+09:00"},"assets":{"state":"verified","reason":"v0.5.15 자산 2개 (이전 v0.5.14: 2)","at":"2026-09-10T15:54:35+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":229,"deletions":47,"tests":2,"title":"fix: keep the blank lines a deployment script printed in the run log"}
{"ts":"2026-09-10T16:01:19+09:00","date":"2026-09-10","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-10-160117-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-10T16:01:19+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-10T16:01:20+09:00","date":"2026-09-10","project":"vibe-coders","result":"error: agent produced no result (/tmp/aidev-run.b47dYb.sh: line 97: cd: /home/hkjang/.cache/auto-improve-wt/vibe-coders: No such file or directory )","outcome":"error","run_id":"2026-09-10-160117-vibe-coders-improve","base_sha":"origin/main","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"error: agent produced no result (/tmp/aidev-run.b47dYb.sh: line 97: cd: /home/hkjang/.cache/auto-improve-wt/vibe-coders: No such file or directory )","at":"2026-09-10T16:01:20+09:00"},"base":{"state":"pinned","reason":"main@origin/","at":"2026-09-10T16:01:19+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T16:01:19+09:00"}},"campaign":"","autonomy":"release"}
{"ts":"2026-09-10T16:13:01+09:00","date":"2026-09-10","project":"umm","result":"review held, PR open https://github.com/hkjang/umm/pull/149","outcome":"review-pending","run_id":"2026-09-10-160114-umm-improve","base_sha":"9524c381448277aa4c95eb1c9fbbd7a5de3c2496","head_sha":"a370713c98561a20e8e5959909a65b04411cdb58","pr":"https://github.com/hkjang/umm/pull/149","stages":{"base":{"state":"pinned","reason":"main@9524c38","at":"2026-09-10T16:01:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T16:01:23+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-10T16:08:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/umm/pull/149","at":"2026-09-10T16:09:01+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: web/src/lib/markdown-import.ts:299-306 (with :250 and :254) Once a banner is seen, EVERY line from that point to EOF is cut by the exporter's rules, including a plain (non-umm) Markdown file that the import screen appended after the export. ImportThoughtsModal.tsx:65 joins `[current text, ...picked file contents]` with `\\n\\n---\\n\\n`, so picking an export and an ordinary notes file in one go puts the plain file after the export about half the time. Reproduced against this branch: export (`# 공간` / banner / `## 첫 생각` / `본문` / `- id: \\`aaaa\\`` / `- canvas: \\`10, 20\\``) + `\\n\\n---\\n\\n` + a plain file of `# 노트 A|B|C` yields ONE thought whose content is \"본문\\n\\n- id: `aaaa`\\n- canvas: `10, 20`\\n\\n\\n---\\n\\n# 노트 A\\n\\n가\\n\\n# 노트 B\\n\\n나\\n\\n# 노트 C\\n\\n다\" with sourceId/x/y all lost. On main the same input yields 4 correct thoughts and the export thought keeps id `aaaa` and canvas 10,20. This is a data-losing regression that resurrects the exact defect the file's own header comment (markdown-import.ts:72-76) says the feature exists to prevent: metadata carried into the body, ids dropped, three notes collapsed into one wall of text. / web/src/lib/markdown-import.test.ts:412-441 The new tests do not cover this case. 'still tells two exports apart' only exercises export+export (both halves carry a banner, so the second `# ` is found). No test joins an export with non-export Markdown, which is the case the change breaks — so the suite passes while the regression is live.","at":"2026-09-10T16:12:59+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":198,"deletions":33,"tests":1,"title":"Cut an export where the export cuts it"}
{"ts":"2026-09-10T17:24:24+09:00","date":"2026-09-10","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/12, released v0.295.0","outcome":"release-ready","run_id":"2026-09-10-160122-weekly-improve","base_sha":"2a73d43af3bdf1071f01b95c1b0e0d341d1e7c91","head_sha":"350160b1f0a17c8d470a3b9461219bff15add2ac","pr":"https://github.com/hkjang/weekly/pull/12","stages":{"base":{"state":"pinned","reason":"main@2a73d43","at":"2026-09-10T16:01:27+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T16:01:27+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T16:42:10+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/weekly/pull/12","at":"2026-09-10T16:42:17+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T16:47:42+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T17:05:36+09:00"},"merge":{"state":"done","reason":"350160b1f0a17c8d470a3b9461219bff15add2ac","at":"2026-09-10T17:05:40+09:00"},"release":{"state":"published","reason":"v0.295.0","at":"2026-09-10T17:22:22+09:00"},"assets":{"state":"verified","reason":"v0.295.0 자산 1개 (이전 v0.294.0: 1)","at":"2026-09-10T17:24:23+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":324,"deletions":34,"tests":2,"title":"fix: 상황판 편집이 업무 링크를 조용히 끊지 않습니다"}
{"ts":"2026-09-10T17:50:09+09:00","date":"2026-09-10","project":"Clustara","result":"merged https://github.com/hkjang/clustara/pull/20, released v0.9.281","outcome":"release-ready","run_id":"2026-09-10-173116-Clustara-improve","base_sha":"32d3ef06a47ff99312c6cce9c3888dddc41d34bd","head_sha":"af92192d2e08029d72239d4c46b986e0e5caa3e9","pr":"https://github.com/hkjang/clustara/pull/20","stages":{"base":{"state":"pinned","reason":"main@32d3ef0","at":"2026-09-10T17:31:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T17:31:22+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (policy)","at":"2026-09-10T17:41:04+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/clustara/pull/20","at":"2026-09-10T17:41:09+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T17:43:17+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T17:43:48+09:00"},"merge":{"state":"done","reason":"af92192d2e08029d72239d4c46b986e0e5caa3e9","at":"2026-09-10T17:43:52+09:00"},"release":{"state":"published","reason":"v0.9.281","at":"2026-09-10T17:49:53+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.281","at":"2026-09-10T17:49:58+09:00"},"manifest":{"state":"ok","reason":"clustara-v0.9.281.tar.gz clustara-v0.9.281.tar.gz.sha256 README-offline-v0.9.281.md ","at":"2026-09-10T17:49:59+09:00"},"assets":{"state":"verified","reason":"v0.9.281 자산 3개 (이전 v0.9.280: 3)","at":"2026-09-10T17:50:08+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":252,"deletions":31,"tests":1,"title":"fix(capacity): another cluster's nodes and Pods were counted into this cluster's capacity"}
{"ts":"2026-09-10T17:58:29+09:00","date":"2026-09-10","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/16, released v0.2.31","outcome":"release-ready","run_id":"2026-09-10-173121-Invenqor-improve","base_sha":"be6bfb26d443d685f66ef4757282e97a5c318e79","head_sha":"ff8095175f80e71f50b3eb8b729d4fbaff15c8cd","pr":"https://github.com/hkjang/invenqor/pull/16","stages":{"base":{"state":"pinned","reason":"main@be6bfb2","at":"2026-09-10T17:31:28+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T17:31:28+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-10T17:38:18+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/16","at":"2026-09-10T17:38:24+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T17:42:50+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-10T17:43:20+09:00"},"merge":{"state":"done","reason":"ff8095175f80e71f50b3eb8b729d4fbaff15c8cd","at":"2026-09-10T17:43:25+09:00"},"release":{"state":"published","reason":"v0.2.31","at":"2026-09-10T17:57:09+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.31","at":"2026-09-10T17:57:11+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf RELEASE_NOTES_v0.2.31.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf compose.offline.yaml openapi.yaml invenqor-0.2.31.tar.gz invenqor-0.2.31.tar.gz.sha256 invenqor-0.2.31.tgz invenqor-0.2.31.tgz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.31.tar.gz invenqor-agents-0.2.31.tar.gz.sha256 ","at":"2026-09-10T17:57:14+09:00"},"assets":{"state":"verified","reason":"v0.2.31 자산 25개 (이전 v0.2.30: 25)","at":"2026-09-10T17:58:14+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":225,"deletions":30,"tests":2,"title":"fix: a Query DSL result larger than the cap could not be read at all"}
{"ts":"2026-09-10T18:10:10+09:00","date":"2026-09-10","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/21, released v0.242.0","outcome":"release-ready","run_id":"2026-09-10-173111-AgentHub-improve","base_sha":"c322ebb4694b3f6713fda37c6ea35c923235652a","head_sha":"abd554bd7874cd1214b96f8c20f7e37741b1d4ea","pr":"https://github.com/hkjang/AgentHub/pull/21","stages":{"base":{"state":"pinned","reason":"main@c322ebb","at":"2026-09-10T17:31:14+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T17:31:14+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-10T17:39:34+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/21","at":"2026-09-10T17:39:41+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-10T17:45:01+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T17:45:30+09:00"},"merge":{"state":"done","reason":"abd554bd7874cd1214b96f8c20f7e37741b1d4ea","at":"2026-09-10T17:45:35+09:00"},"release":{"state":"published","reason":"v0.242.0","at":"2026-09-10T17:50:28+09:00"},"assets":{"state":"verified","reason":"v0.242.0 자산 9개 (이전 v0.241.0: 10)","at":"2026-09-10T18:10:08+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":186,"deletions":30,"tests":1,"title":"fix: a gated tool call handed the reviewer the value the scanner was about to block"}
{"ts":"2026-09-10T18:35:33+09:00","date":"2026-09-10","project":"Vendra","result":"guarded files, PR open https://github.com/hkjang/Vendra/pull/118","outcome":"review-pending","run_id":"2026-09-10-182116-Vendra-improve","base_sha":"8f149e1814f11c26992ab78fe46ba7e5f465b38f","head_sha":"8a9c4a28ddb34081e68ef2c305c103993430c79f","pr":"https://github.com/hkjang/Vendra/pull/118","stages":{"base":{"state":"pinned","reason":"main@8f149e1","at":"2026-09-10T18:21:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T18:21:24+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T18:35:22+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/118","at":"2026-09-10T18:35:31+09:00"},"guard":{"state":"held","reason":"internal/db/migrations/017_role_permissions.sql ","at":"2026-09-10T18:35:31+09:00"}},"campaign":"","autonomy":"release","files":8,"additions":849,"deletions":10,"tests":2,"title":"fix: hold a role's permissions to the ones a door actually asks for"}
{"ts":"2026-09-10T18:42:47+09:00","date":"2026-09-10","project":"ai-admin","result":"merged https://github.com/hkjang/ai-admin/pull/19, released v1.2.18","outcome":"release-ready","run_id":"2026-09-10-182121-ai-admin-improve","base_sha":"9d2065d8908bd72170f3f613e99608b3b4e815ba","head_sha":"38c8ef34bc93e465200193261ad37bc4ae6099ea","pr":"https://github.com/hkjang/ai-admin/pull/19","stages":{"base":{"state":"pinned","reason":"main@9d2065d","at":"2026-09-10T18:21:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T18:21:22+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T18:27:53+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/19","at":"2026-09-10T18:28:00+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T18:30:05+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T18:33:24+09:00"},"merge":{"state":"done","reason":"38c8ef34bc93e465200193261ad37bc4ae6099ea","at":"2026-09-10T18:33:29+09:00"},"release":{"state":"published","reason":"v1.2.18","at":"2026-09-10T18:41:14+09:00"},"assets":{"state":"verified","reason":"v1.2.18 자산 2개 (이전 v1.2.17: 2)","at":"2026-09-10T18:42:45+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":121,"deletions":5,"tests":2,"title":"fix: reject unstorable locale/timezone instead of losing the whole save"}
{"ts":"2026-09-10T18:58:54+09:00","date":"2026-09-10","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/17, released v0.9.77","outcome":"release-ready","run_id":"2026-09-10-182111-ReSSO-improve","base_sha":"1868ab3d0b60d9db7ebe86ada291b396718b3b56","head_sha":"f286d21723236131f527f7d53177443ea448c9e8","pr":"https://github.com/hkjang/ReSSO/pull/17","stages":{"base":{"state":"pinned","reason":"main@1868ab3","at":"2026-09-10T18:21:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T18:21:17+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T18:34:37+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/17","at":"2026-09-10T18:34:45+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T18:37:34+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T18:41:23+09:00"},"merge":{"state":"done","reason":"f286d21723236131f527f7d53177443ea448c9e8","at":"2026-09-10T18:41:28+09:00"},"release":{"state":"published","reason":"v0.9.77","at":"2026-09-10T18:54:49+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.77","at":"2026-09-10T18:54:54+09:00"},"assets":{"state":"verified","reason":"v0.9.77 자산 2개 (이전 v0.9.76: 2)","at":"2026-09-10T18:58:49+09:00"}},"campaign":"","autonomy":"release","files":4,"additions":113,"deletions":4,"tests":1,"title":"fix: stop the login screen warning about a lockout that cannot happen"}
{"ts":"2026-09-10T19:12:59+09:00","date":"2026-09-10","project":"aiportal-front-admin","result":"merged https://github.com/hkjang/aiportal-front-admin/pull/16, release skipped","outcome":"merged","run_id":"2026-09-10-190109-aiportal-front-admin-improve","base_sha":"ff0f4035326b59701a0db4231f4b99e740bf981f","head_sha":"1709f01cfad2c3d9cb2595596b53ef52e0d024d2","pr":"https://github.com/hkjang/aiportal-front-admin/pull/16","stages":{"base":{"state":"pinned","reason":"main@ff0f403","at":"2026-09-10T19:01:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:01:13+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-10T19:08:50+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front-admin/pull/16","at":"2026-09-10T19:08:56+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T19:11:14+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T19:11:44+09:00"},"merge":{"state":"done","reason":"1709f01cfad2c3d9cb2595596b53ef52e0d024d2","at":"2026-09-10T19:11:48+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 저장소에 릴리즈 이력이 전혀 없습니다: git 태그 0개(refs/tags 자체가 없음), GitHub Release 0개, CHANGELOG/릴리즈 노트 없음, .github/workflows 없음. 유일한 CI인 .gitlab-ci.yml은 main/develop 브랜치 푸시에 반응해 빌드 후 PVC 디렉터리로 복사할 뿐 버전·태그·산출물 발행을 하지 않습니다. 버전 필드는 package.json(0.0.0)과 upgrade/admin-v2/package.json(0.1.0)에 있으나 둘 다 private이며 git log -p 확인 결과 최초 커밋에 기록된 뒤 이후 15개 fix PR을 포함한 30여 커밋 동안 한 번도 증가한 적이 없어 릴리즈 관례로 볼 수 없습니다(docs/INDEX.md:168도 '실제 release 근거가 있을 때만 기록한다'고 명시). upgrade/admin-v2/deploy의 두 스크립트는 배포·오프라인 npm 캐시용이며 버전명 산출물을 만들지 않습니다. 따라서 첫 버전 번호와 태그 형식, 노트 위치를 새로 정하는 것은 사람의 몫이라 판단해 아무 커밋·태그도 만들지 않았고 작업 트리는 그대로 두었습니다.","at":"2026-09-10T19:12:58+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":417,"deletions":9,"tests":3,"title":"fix(admin-v2): 재조회 중에도 정책·Overview 화면을 비우지 않는다"}
{"ts":"2026-09-10T19:13:25+09:00","date":"2026-09-10","project":"aiportal-py","result":"merged https://github.com/hkjang/aiportal-py/pull/17, release skipped","outcome":"merged","run_id":"2026-09-10-190119-aiportal-py-improve","base_sha":"1f6c9cda8cccf6f44864eac557eb4003c01d2360","head_sha":"acfc43258993cb844e034e9299ee877f76ee558b","pr":"https://github.com/hkjang/aiportal-py/pull/17","stages":{"base":{"state":"pinned","reason":"main@1f6c9cd","at":"2026-09-10T19:01:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:01:22+09:00"},"verify":{"state":"passed","reason":"검증 1개 통과 (auto)","at":"2026-09-10T19:08:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-py/pull/17","at":"2026-09-10T19:08:59+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T19:11:23+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T19:11:53+09:00"},"merge":{"state":"done","reason":"acfc43258993cb844e034e9299ee877f76ee558b","at":"2026-09-10T19:11:58+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 이 저장소에는 릴리즈 이력이 전혀 없습니다. git 태그 0개(`git tag | wc -l` = 0, `git for-each-ref refs/tags` = 0), 릴리즈 커밋 0개(`git log --all --oneline` 33개 커밋 전부 first commit / docs / fix: ... (감사 A-xxx) / Merge pull request 형식이며 release·버전·semver 패턴 매치 없음), CHANGELOG.md·docs/RELEASE*.md 없음, GitHub Release 목록 비어 있음, .github/workflows 없음(러너 제공 정보와 일치), 릴리즈/패키징 스크립트 없음(추적되는 .sh·Makefile·pyproject.toml·setup.py·package.json·Chart.yaml·Dockerfile·compose 파일 0개). 배포는 버전이 아니라 브랜치 기준입니다 — .gitlab-ci.yml 이 main/develop push 에 반응해 배포 디렉터리에서 `git reset --hard origin/$CI_COMMIT_BRANCH` 후 k8s rollout restart/podman restart 를 하며 태그·버전을 전혀 참조하지 않습니다. 버전 문자열은 api.py:147 의 FastAPI(version=\"1.0.0\") 하나뿐인데 이는 OpenAPI 문서용 하드코딩 값이고 `git log -S` 결과 first commit(2075c62) 이후 17개 PR 동안 한 번도 변경된 적이 없어 릴리즈 시 갱신하는 버전 파일로 볼 수 없습니다(docs/IMPROVEMENTS.md 의 version=\"2.0.0\" 은 제안 코드 스니펫, docs/ROADMAP.md 의 R0~R5 \"Release\" 는 소프트웨어 버전이 아니라 로드맵 단계입니다). 따라서 절차 5에 따라 아무것도 만들지 않았습니다 — 버전 체계·태그 형식·릴리즈 노트 위치를 새로 정하는 것은 사람의 결정입니다. 커밋·태그·파일 변경 없음, worktree 는 clean 상태로 둡니다. 참고로 이번 머지분(acfc432, 감사 A-113 Milvus 적재 실패 보고 수정)은 main 에 이미 반영되어 있어 기존 브랜치 기반 GitLab CI 배포로 그대로 나갑니다.","at":"2026-09-10T19:13:25+09:00"}},"campaign":"","autonomy":"release","files":11,"additions":409,"deletions":32,"tests":2,"title":"fix: Milvus 적재 실패를 성공으로 보고하지 않도록 수정 (감사 A-113)"}
{"ts":"2026-09-10T19:15:08+09:00","date":"2026-09-10","project":"aiportal-front","result":"merged https://github.com/hkjang/aiportal-front/pull/14, release skipped","outcome":"merged","run_id":"2026-09-10-190114-aiportal-front-improve","base_sha":"50e567860365e5dbd53b83641b2c82ed9c7ac2b7","head_sha":"74abf82d360f953744b4b7f89f1ffb8b84c5d53c","pr":"https://github.com/hkjang/aiportal-front/pull/14","stages":{"base":{"state":"pinned","reason":"main@50e5678","at":"2026-09-10T19:01:18+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:01:18+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-10T19:08:29+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/aiportal-front/pull/14","at":"2026-09-10T19:08:36+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T19:13:19+09:00"},"ci":{"state":"passed","reason":"검사 없음 — 정책으로 허용","at":"2026-09-10T19:13:49+09:00"},"merge":{"state":"done","reason":"74abf82d360f953744b4b7f89f1ffb8b84c5d53c","at":"2026-09-10T19:13:54+09:00"},"release":{"state":"skipped","reason":"릴리즈 안 함: 릴리즈 이력이 전혀 없는 저장소입니다. 태그 0개(git tag / git for-each-ref 로 확인, refs/tags 자체가 없음), GitHub Release 없음, .github/workflows 없음, CHANGELOG.md·docs/RELEASE*.md 등 릴리즈 노트 없음, 릴리즈/패키징 스크립트(scripts/, Makefile, *.sh) 없음. package.json 의 version 은 Vite 스캐폴드 기본값 \"0.0.0\" 이고 first commit(ab700ba, 2026-09-03) 이후 14개 PR 동안 한 번도 변경된 적이 없으며 private:true 라 레지스트리 배포 대상도 아닙니다. README.md 의 '버전 기록' 표에 있는 유일한 행(0.0.1 / 2025-01-01 / 초기 릴리스)은 저장소 first commit 보다 앞선 날짜의 문서 보일러플레이트로, 실제 릴리즈와 대응하지 않고 갱신된 적도 없습니다. 배포는 .gitlab-ci.yml 이 main 브랜치 push 에 반응해 빌드 후 PVC 로 복사하는 연속 배포 방식이며 태그(CI_COMMIT_TAG)에 반응하는 잡이 전혀 없습니다(docs/08-GitLab-CICD-가이드.md 의 태그 rules 는 문법 예시일 뿐 실제 파이프라인에 없음). 따라서 버전 체계·태그 형식·릴리즈 노트 양식을 새로 정하는 것은 사람의 판단이 필요하므로 아무것도 만들지 않고 건너뜁니다.","at":"2026-09-10T19:15:08+09:00"}},"campaign":"","autonomy":"release","files":7,"additions":340,"deletions":22,"tests":3,"title":"fix: 열린 앱 저장 레코드 표기 불일치 및 임베딩 파일명 복원 공용화"}
{"ts":"2026-09-10T19:34:33+09:00","date":"2026-09-10","project":"git-ctx","result":"guarded files, PR open https://github.com/hkjang/git-ctx/pull/28","outcome":"review-pending","run_id":"2026-09-10-192120-git-ctx-improve","base_sha":"bc2a0bb16e22042eedd3fe3d012ea8220c1909d2","head_sha":"9b9ea387fae6c005dfb61cc0ed8b4213e79207e5","pr":"https://github.com/hkjang/git-ctx/pull/28","stages":{"base":{"state":"pinned","reason":"main@bc2a0bb","at":"2026-09-10T19:21:25+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:21:25+09:00"},"verify":{"state":"passed","reason":"검증 3개 통과 (auto)","at":"2026-09-10T19:34:24+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/git-ctx/pull/28","at":"2026-09-10T19:34:31+09:00"},"guard":{"state":"held","reason":"internal/contentsecurity/credential_shapes_test.go ","at":"2026-09-10T19:34:31+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":157,"deletions":4,"tests":1,"title":"fix(contentsecurity): mask the value a block scalar states below its key"}
{"ts":"2026-09-10T19:36:57+09:00","date":"2026-09-10","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/16, released v0.9.51","outcome":"release-ready","run_id":"2026-09-10-192115-dataworks-improve","base_sha":"fc8728a05561e57fe86a7d032216d29bf152f2c1","head_sha":"2fb98d816532e7415913315d3ddd72c61fc4dc77","pr":"https://github.com/hkjang/dataworks/pull/16","stages":{"base":{"state":"pinned","reason":"main@fc8728a","at":"2026-09-10T19:21:19+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:21:19+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T19:26:14+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/16","at":"2026-09-10T19:26:22+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T19:29:18+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T19:29:48+09:00"},"merge":{"state":"done","reason":"2fb98d816532e7415913315d3ddd72c61fc4dc77","at":"2026-09-10T19:29:52+09:00"},"release":{"state":"published","reason":"v0.9.51","at":"2026-09-10T19:36:43+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.51","at":"2026-09-10T19:36:48+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.51.tar.gz ","at":"2026-09-10T19:36:49+09:00"},"assets":{"state":"verified","reason":"v0.9.51 자산 1개 (이전 v0.9.50: 1)","at":"2026-09-10T19:36:56+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":62,"deletions":11,"tests":1,"title":"fix: judge action center entitlements by the runtime access rule"}
{"ts":"2026-09-10T19:46:49+09:00","date":"2026-09-10","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/13, released v2.5.7","outcome":"release-ready","run_id":"2026-09-10-192110-appstore-improve","base_sha":"d816871f81a1ed5fc442bed0c713fece415ec8f4","head_sha":"80c4fac0abb3207ebb74b96ffafd67a44c2d929f","pr":"https://github.com/hkjang/appstore/pull/13","stages":{"base":{"state":"pinned","reason":"main@d816871","at":"2026-09-10T19:21:15+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:21:15+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T19:29:40+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/13","at":"2026-09-10T19:29:44+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T19:34:55+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T19:35:25+09:00"},"merge":{"state":"done","reason":"80c4fac0abb3207ebb74b96ffafd67a44c2d929f","at":"2026-09-10T19:35:30+09:00"},"release":{"state":"published","reason":"v2.5.7","at":"2026-09-10T19:44:16+09:00"},"assets":{"state":"verified","reason":"v2.5.7 자산 1개 (이전 v2.5.6: 1)","at":"2026-09-10T19:46:48+09:00"}},"campaign":"","autonomy":"release","files":10,"additions":220,"deletions":5,"tests":2,"title":"feat: show an owner why their app was rejected"}
{"ts":"2026-09-10T20:08:35+09:00","date":"2026-09-10","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/11, released v1.4.13","outcome":"release-ready","run_id":"2026-09-10-195118-jupiq-improve","base_sha":"a60a3fc730aa3db39723ef34ff6b677e346c426b","head_sha":"199b6f605b034be1ffc11c9a9c4fe482e47209f3","pr":"https://github.com/hkjang/jupiq/pull/11","stages":{"base":{"state":"pinned","reason":"main@a60a3fc","at":"2026-09-10T19:51:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:51:22+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T19:57:08+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/11","at":"2026-09-10T19:57:14+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T19:59:30+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-10T20:00:26+09:00"},"merge":{"state":"done","reason":"199b6f605b034be1ffc11c9a9c4fe482e47209f3","at":"2026-09-10T20:00:31+09:00"},"release":{"state":"published","reason":"v1.4.13","at":"2026-09-10T20:06:02+09:00"},"assets":{"state":"verified","reason":"v1.4.13 자산 1개 (이전 v1.4.12: 1)","at":"2026-09-10T20:08:33+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":90,"deletions":3,"tests":1,"title":"fix: 연동 요청 경로를 두 번 인코딩하지 않게 한다"}
{"ts":"2026-09-10T20:10:56+09:00","date":"2026-09-10","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/24, released v0.2.9","outcome":"release-ready","run_id":"2026-09-10-195116-jikim-improve","base_sha":"b18dd61f7f35a7ab0986a6d0095a1909db7b6d7f","head_sha":"311c4d339f0d98f1aabc50520b9c32d3ab18f570","pr":"https://github.com/hkjang/jikim/pull/24","stages":{"base":{"state":"pinned","reason":"main@b18dd61","at":"2026-09-10T19:51:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:51:17+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T19:58:10+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/24","at":"2026-09-10T19:58:16+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T20:01:30+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T20:01:59+09:00"},"merge":{"state":"done","reason":"311c4d339f0d98f1aabc50520b9c32d3ab18f570","at":"2026-09-10T20:02:04+09:00"},"release":{"state":"published","reason":"v0.2.9","at":"2026-09-10T20:07:53+09:00"},"assets":{"state":"verified","reason":"v0.2.9 자산 2개 (이전 v0.2.8: 2)","at":"2026-09-10T20:10:54+09:00"}},"campaign":"","autonomy":"release","files":6,"additions":190,"deletions":11,"tests":1,"title":"fix: report an unreachable PostgreSQL as sealed on /v1/sys/health"}
{"ts":"2026-09-10T20:33:18+09:00","date":"2026-09-10","project":"igame","result":"merged https://github.com/hkjang/igame/pull/14, released v0.7.11","outcome":"release-ready","run_id":"2026-09-10-195111-igame-improve","base_sha":"1ead006d141379d77fdcf7f335a9a7cf1c3f8fd4","head_sha":"b2aa6ed80273098901ee9d64eeceda43fbcf8200","pr":"https://github.com/hkjang/igame/pull/14","stages":{"base":{"state":"pinned","reason":"main@1ead006","at":"2026-09-10T19:51:15+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T19:51:15+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-10T19:58:33+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/14","at":"2026-09-10T19:58:37+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T20:01:43+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-10T20:04:06+09:00"},"merge":{"state":"done","reason":"b2aa6ed80273098901ee9d64eeceda43fbcf8200","at":"2026-09-10T20:04:09+09:00"},"release":{"state":"published","reason":"v0.7.11","at":"2026-09-10T20:16:00+09:00"},"assets":{"state":"verified","reason":"v0.7.11 자산 1개 (이전 v0.7.10: 1)","at":"2026-09-10T20:33:15+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":166,"deletions":2,"tests":1,"title":"fix: count the session still open against the daily play limit"}
{"ts":"2026-09-10T20:41:19+09:00","date":"2026-09-10","project":"kanpic","result":"hold: budget","outcome":"error","run_id":"2026-09-10-204118-kanpic-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-10T20:41:19+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-10T20:41:24+09:00","date":"2026-09-10","project":"moina","result":"hold: budget","outcome":"error","run_id":"2026-09-10-204123-moina-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-10T20:41:24+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-10T20:41:29+09:00","date":"2026-09-10","project":"moyro","result":"hold: budget","outcome":"error","run_id":"2026-09-10-204128-moyro-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-10T20:41:29+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-10T20:48:01+09:00","date":"2026-09-10","project":"moina","result":"review held, PR open https://github.com/hkjang/moina/pull/17","outcome":"review-pending","run_id":"2026-09-10-204123-moina-improve","base_sha":"0ceb6bf18c7963bf9e0860535cd6150b58d1263b","head_sha":"89176b8a06fb68111c1e93818b5836f5a52f0fba","pr":"https://github.com/hkjang/moina/pull/17","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-10T20:41:24+09:00"},"base":{"state":"pinned","reason":"main@0ceb6bf","at":"2026-09-10T20:41:28+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T20:41:28+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T20:45:40+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/17","at":"2026-09-10T20:45:48+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: backend/internal/httpapi/social.go:836 APP1 segment 전체가 sniff 버퍼 안에 들어와야만 orientation을 읽습니다(`offset+2+length > len(data)` → return 0,false). 그런데 sniff는 social.go:627에서 최대 4096바이트로 잘리고, 실제 휴대전화 JPEG의 APP1 Exif는 썸네일이 들어 있어 보통 10~60KB입니다. 따라서 이 커밋이 고치겠다고 말한 바로 그 입력(세로로 든 휴대전화 사진)에서는 orientation을 못 읽고 저장 픽셀 크기를 그대로 보고합니다. 직접 확인: 같은 orientation=6 JPEG에 Exif 패딩만 3000바이트→24x40(정상), 5000바이트→40x24(수정 전과 동일)로 fallback했습니다. 필요한 건 segment 앞 ~100바이트(Exif 헤더+TIFF 헤더+IFD0 첫 항목)뿐이므로, 있는 만큼으로 segment를 clamp하면 되는데 그러지 않았습니다. / backend/internal/httpapi/social.go:811 주석이 \"IFD0은 TIFF 헤더 바로 뒤에 오므로 sniff한 앞부분만으로 충분\"이라고 하지만, 코드는 앞부분이 아니라 segment 전체가 있어야 읽습니다. 커밋 메시지의 \"IFD0은 TIFF 헤더 바로 뒤라 sniff 범위로 충분하고\"도 같은 이유로 사실과 다릅니다(설명과 동작 불일치). / backend/internal/httpapi/httpapi_test.go:735 새 테스트가 handler의 실제 동작을 재현하지 않습니다. `imageDimensionsFrom(memoryUpload{...}, data)`처럼 파일 전체를 sniff로 넘기는데, social.go:643의 호출자는 절대 그러지 않고 4096바이트로 자른 prefix를 넘깁니다. 그래서 위 결함이 테스트에 전혀 걸리지 않고, Exif가 sniff보다 큰 경우를 다루는 케이스가 하나도 없습니다. httpapi_test.go:759 \"APP1 길이가 잘림\"은 12바이트짜리 극단 케이스라 4096 경계를 대신하지 못합니다.","at":"2026-09-10T20:48:00+09:00"}},"campaign":"","autonomy":"release","files":3,"additions":183,"deletions":7,"tests":1,"title":"fix: EXIF로 돌려 찍은 사진의 표시 크기를 알려 줍니다"}
{"ts":"2026-09-10T21:02:41+09:00","date":"2026-09-10","project":"kanpic","result":"review held, PR open https://github.com/hkjang/kanpic/pull/16","outcome":"review-pending","run_id":"2026-09-10-204118-kanpic-improve","base_sha":"fea021e07f91e7271cc74a8d7ae91e2b263af1a4","head_sha":"fd9c4220e1236ad86843fbdfc7de1594f8b9de7b","pr":"https://github.com/hkjang/kanpic/pull/16","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-10T20:41:19+09:00"},"base":{"state":"pinned","reason":"main@fea021e","at":"2026-09-10T20:41:27+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T20:41:27+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T20:47:11+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/16","at":"2026-09-10T20:47:21+09:00"},"review":{"state":"missing","reason":"리뷰 결과 없음/손상: missing — 보류","at":"2026-09-10T21:02:44+09:00"}},"campaign":"","autonomy":"release","files":5,"additions":117,"deletions":1,"tests":2,"title":"fix: 사용자 명단도 무엇으로 적혔는지 밝히면 밝힌 대로 읽는다"}
{"ts":"2026-09-10T21:21:55+09:00","date":"2026-09-10","project":"moyro","result":"merged https://github.com/hkjang/moyro/pull/11, release hold (budget)","outcome":"merged","run_id":"2026-09-10-204128-moyro-improve","base_sha":"0164e1cb3dfd7b022269a1e67b073aa6340bbbf7","head_sha":"95cae9044ab72c7446dcabfb0adb94950e99c85a","pr":"https://github.com/hkjang/moyro/pull/11","stages":{"improve":{"state":"hold","reason":"회차 예산($22)이 오늘 남은 상한을 넘음","at":"2026-09-10T20:41:29+09:00"},"base":{"state":"pinned","reason":"main@0164e1c","at":"2026-09-10T20:41:31+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T20:41:31+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-10T21:09:04+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moyro/pull/11","at":"2026-09-10T21:09:09+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T21:12:52+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-10T21:21:49+09:00"},"merge":{"state":"done","reason":"95cae9044ab72c7446dcabfb0adb94950e99c85a","at":"2026-09-10T21:21:54+09:00"},"release":{"state":"hold","reason":"예산 부족","at":"2026-09-10T21:21:55+09:00"}},"campaign":"","autonomy":"release","files":11,"additions":352,"deletions":89,"tests":1,"title":"fix: cap the request bodies that carry client-supplied collections"}
{"ts":"2026-09-10T21:54:33+09:00","date":"2026-09-10","project":"AgentHub","result":"review held, PR open https://github.com/hkjang/AgentHub/pull/22","outcome":"review-pending","run_id":"2026-09-10-213109-AgentHub-improve","base_sha":"b58d6d893512924672b25de95d6c83f0ee279584","head_sha":"b273c0dbcf30c0e649dcc190c567b3515df9709a","pr":"https://github.com/hkjang/AgentHub/pull/22","stages":{"base":{"state":"pinned","reason":"main@b58d6d8","at":"2026-09-10T21:31:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T21:31:12+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-10T21:49:19+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/22","at":"2026-09-10T21:49:29+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/ADMIN_GUIDE.md:197 운영 점검표가 준비 상태 확인을 `GET /api/v1/admin/readiness` 로 안내하지만, 라우트 카탈로그에는 POST 만 등록돼 있습니다(internal/api/catalog.go:279). 카탈로그에 없는 조합은 서빙되지 않으므로(catalog.go:20-23 주석, 라우터 전수 테스트) 이 문서를 그대로 따르면 405 를 받습니다. 커밋 메시지가 '표의 문구는 소스에 실제로 있는 문자열'이라고 못박은 문서라 더 문제입니다. / docs/ADMIN_GUIDE.md:198 같은 행의 `…/check` 도 GET 으로 묶여 있으나 `/admin/kubernetes/check` 는 POST 전용입니다(internal/api/catalog.go:281). / README.md:17,103,186 · docs/index.html:901,1054 · docs/sitemap.xml:10 이 여전히 옛 docs/user-guide.md 와 docs/AgentHub_User_Guide.pdf 만 가리킵니다. 커밋 메시지는 '사용자와 관리자가 한 문서에 섞여 있던' 가이드를 네 산출물로 나눴다고 하지만, 옛 통합 가이드(180KB, '사용자 & 관리자 매뉴얼')는 삭제도 되돌리기도 링크 변경도 없이 그대로 남아 정본 자리를 지킵니다. 결과는 분리가 아니라 서로 다른 두 벌의 사용자 가이드 병존이고, README 를 따라온 독자는 새 문서 4개(약 21MB)를 영영 보지 못합니다. 진입점 갱신 또는 옛 문서 정리 중 하나가 같은 커밋에 있어야 합니다.","at":"2026-09-10T21:54:31+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":38,"additions":934,"deletions":0,"tests":0,"title":"docs: 실제로 띄운 화면으로 사용자·관리자 가이드를 다시 쓰다"}
{"ts":"2026-09-10T22:37:19+09:00","date":"2026-09-10","project":"Invenqor","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-10-220045-Invenqor-improve","base_sha":"97b2d49ed8f5c1101a87433d5c978f438c106437","head_sha":"db7261f0c0a5dcdc9cbae41e8b9bbced2baca27f","pr":"","stages":{"base":{"state":"pinned","reason":"main@97b2d49","at":"2026-09-10T22:00:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T22:00:52+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-10T22:37:18+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":31,"additions":996,"deletions":48,"tests":0,"title":"docs: 사용자·관리자 가이드에 실제로 촬영한 화면 캡처를 싣는다"}
{"ts":"2026-09-10T22:58:55+09:00","date":"2026-09-10","project":"AgentHub","result":"fix-round: error: pr create","outcome":"error","run_id":"2026-09-10-224044-AgentHub-improve","base_sha":"b58d6d893512924672b25de95d6c83f0ee279584","head_sha":"88b400e7f8d763f72fcd93dc45ffd5dd81840e18","pr":"","stages":{"base":{"state":"pinned","reason":"main@b58d6d8","at":"2026-09-10T22:40:47+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T22:40:47+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-10T22:58:51+09:00"},"pr":{"state":"create-failed","reason":"gh pr create 실패","at":"2026-09-10T22:58:54+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":46,"additions":1202,"deletions":981,"tests":1,"title":"docs: 가이드의 정본을 하나로 두고, API 메서드와 캡처 도구의 안전장치를 고치다"}
{"ts":"2026-09-11T00:02:18+09:00","date":"2026-09-10","project":"ReSSO","result":"merged https://github.com/hkjang/ReSSO/pull/18, released v0.9.78","outcome":"release-ready","run_id":"2026-09-10-230045-ReSSO-improve","base_sha":"b142763b43216381aa4fa5f18433f1a8fc2bba5a","head_sha":"44e263c7d016cb77e60a8a5207e4901ac3e8a1ae","pr":"https://github.com/hkjang/ReSSO/pull/18","stages":{"base":{"state":"pinned","reason":"main@b142763","at":"2026-09-10T23:00:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-10T23:00:52+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-10T23:32:23+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/18","at":"2026-09-10T23:32:33+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-10T23:37:39+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-10T23:40:02+09:00"},"merge":{"state":"done","reason":"44e263c7d016cb77e60a8a5207e4901ac3e8a1ae","at":"2026-09-10T23:40:08+09:00"},"release":{"state":"published","reason":"v0.9.78","at":"2026-09-10T23:57:46+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.78","at":"2026-09-10T23:57:50+09:00"},"assets":{"state":"verified","reason":"v0.9.78 자산 2개 (이전 v0.9.77: 2)","at":"2026-09-11T00:02:14+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":25,"additions":1256,"deletions":0,"tests":0,"title":"docs: give ReSSO a user guide and an admin guide, with real screenshots"}
{"ts":"2026-09-11T00:35:44+09:00","date":"2026-09-11","project":"Vendra","result":"verify failed: secrets in diff","outcome":"verify-failed","run_id":"2026-09-11-001109-Vendra-improve","base_sha":"8f149e1814f11c26992ab78fe46ba7e5f465b38f","head_sha":"80c085f9f80cb0ca80da67e64717b39e845df39b","pr":"","stages":{"base":{"state":"pinned","reason":"main@8f149e1","at":"2026-09-11T00:11:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T00:11:13+09:00"},"verify":{"state":"failed","reason":"변경에 비밀정보 의심 문자열","at":"2026-09-11T00:35:44+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":39,"additions":1475,"deletions":221,"tests":0,"title":"docs: 사용자·관리자 가이드를 실제로 찍은 화면과 함께 완성본으로"}
{"ts":"2026-09-11T01:05:15+09:00","date":"2026-09-11","project":"ai-admin","result":"review held, PR open https://github.com/hkjang/ai-admin/pull/20","outcome":"review-pending","run_id":"2026-09-11-004109-ai-admin-improve","base_sha":"7030c66eb73f152a3718c389d71ac51cb0890d17","head_sha":"c1b1fc0871353e946c58231c513ce160cde305cc","pr":"https://github.com/hkjang/ai-admin/pull/20","stages":{"base":{"state":"pinned","reason":"main@7030c66","at":"2026-09-11T00:41:10+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T00:41:10+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T01:00:00+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/20","at":"2026-09-11T01:00:10+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/screenshots/README.md:81 이 PR이 새로 추가한 문장이 PDF 재생성 절차를 `tools/guide/md2pdf.mjs`라는 \"공용 변환기\"로 명시하지만 저장소에 `tools/` 디렉터리 자체가 없습니다(`git ls-tree HEAD` 결과에 없음, `.gitignore`에도 없음). 즉 문서가 지시하는 재생성 경로가 존재하지 않으며, 같은 문장이 요구하는 \"캡처를 다시 만든 뒤에는 PDF도 함께 다시 생성하세요\"를 아무도 수행할 수 없습니다. docs/ADMIN_GUIDE.md:538 도 캡처 재생성을 이 README로 위임하므로 같은 허위 절차를 가리킵니다. / docs/ADMIN_GUIDE.pdf, docs/USER_GUIDE.pdf 위 결함의 직접적 결과로, 새로 커밋된 6.2MB 바이너리 PDF 2개(총 45페이지·135개 이미지 임베드)가 저장소 안의 어떤 스크립트로도 재생성되지 않습니다. 이번 PR에서 44개 스크린샷이 전부 교체되었는데, 앞으로 캡처나 본문이 바뀔 때 PDF만 조용히 낡은 상태로 남는 구조입니다. 재생성 도구를 함께 넣거나, 도구가 없다면 README:81의 절차 문장을 실제 수행 방법으로 고쳐야 합니다.","at":"2026-09-11T01:05:13+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":55,"additions":866,"deletions":328,"tests":0,"title":"docs: 화면 캡처를 실은 사용자·관리자 가이드 정본으로 재구성"}
{"ts":"2026-09-11T01:32:19+09:00","date":"2026-09-11","project":"appstore","result":"review held, PR open https://github.com/hkjang/appstore/pull/14","outcome":"review-pending","run_id":"2026-09-11-011110-appstore-improve","base_sha":"1c0a14b2c299bd4b94c1b6d4dc67e5ade3d32baf","head_sha":"4b21a1b35c5af2edaad205a814aa455e66d85419","pr":"https://github.com/hkjang/appstore/pull/14","stages":{"base":{"state":"pinned","reason":"main@1c0a14b","at":"2026-09-11T01:11:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T01:11:12+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T01:28:13+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/14","at":"2026-09-11T01:28:23+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/index.html:244,246 — GitHub Pages 사이트의 가이드 CTA를 렌더링되는 `./guides/user/`·`./guides/admin/`에서 `./USER_GUIDE.md`·`./ADMIN_GUIDE.md`로 바꿨습니다. docs/.nojekyll 이 있어 Pages 는 이 파일을 Jekyll 로 HTML 변환하지 않고 원본 그대로(text/markdown) 내려주므로, 브라우저는 가이드를 보여 주지 않고 .md 파일을 내려받거나 마크다운 소스를 그대로 노출합니다. 문서 안의 상대 경로 이미지 18장도 그 상태에서는 표시되지 않습니다. 공개 사이트에서 동작하던 링크가 동작하지 않는 링크로 바뀐 회귀입니다. / docs/index.html:242 — 같은 커밋이 그 버튼 위 문구를 '두 가이드 모두 실제 화면 캡처를 실은 Markdown 정본과 인쇄용 PDF로 제공합니다'로 바꿨는데, 버튼이 가리키는 Pages URL 에서는 캡처가 렌더링되지 않습니다(설명과 실제 동작 불일치). docs/llms.txt:25-26 의 'canonical, with screenshots' 라벨도 같은 문제입니다. / docs/guides/user/index.html:42, docs/guides/admin/index.html:30 — 기존 가이드 페이지에 넣은 '대체되었습니다' 안내가 `../../USER_GUIDE.md`·`../../ADMIN_GUIDE.md`를 정본으로 가리킵니다. Pages 방문자를 위 항목과 같은 렌더링되지 않는 URL 로 보냅니다. 사이트에서는 GitHub blob URL(https://github.com/hkjang/appstore/blob/main/docs/USER_GUIDE.md)이나 PDF·HTML 로 링크해야 합니다.","at":"2026-09-11T01:32:17+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":9,"additions":813,"deletions":7,"tests":0,"title":"docs: 화면 캡처를 실은 사용자·관리자 가이드 정본을 추가"}
{"ts":"2026-09-11T02:07:22+09:00","date":"2026-09-11","project":"dataworks","result":"review held, PR open https://github.com/hkjang/dataworks/pull/17","outcome":"review-pending","run_id":"2026-09-11-014109-dataworks-improve","base_sha":"e63bf0ff81549f3e4bdfc2f75ec989f5f8cb06c8","head_sha":"62c97ed569b6d26bb6a6269228fe259df1b448ce","pr":"https://github.com/hkjang/dataworks/pull/17","stages":{"base":{"state":"pinned","reason":"main@e63bf0f","at":"2026-09-11T01:41:12+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T01:41:12+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T02:00:48+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/17","at":"2026-09-11T02:00:59+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/ADMIN_GUIDE.md:69 새로 추가한 안내 문장이 존재하지 않는 앵커를 가리킵니다. 링크는 `[3.3 환경 변수 전수 표](#33-환경-변수-전수-표)`인데 실제 섹션은 `### 4.5 환경 변수 전수 표`(docs/ADMIN_GUIDE.md:268, 앵커 `#45-환경-변수-전수-표`)입니다. 문서 전체 앵커를 검사했을 때 유일하게 깨진 링크이며, 이번 diff에서 4장 재번호(5→4.x)를 하면서 남은 잔여입니다. 표시 텍스트의 절 번호(3.3)도 독자에게 틀린 위치를 알려 줍니다. / docs/ADMIN_GUIDE.md:468 `TEXT2SQL_DAILY_RISK_WARN`의 설명 `0`은 비활성이 구현과 반대입니다. internal/config/config.go:471 은 기본값 0을 그대로 넣고, internal/proxy/text2sql_handler.go:273-276 은 `warn <= 0 || warn >= DailyRiskLimit` 이면 `warn = DailyRiskLimit / 2` 로 대체합니다(주석도 `0 → limit/2`). 즉 0은 경고 비활성이 아니라 한도의 절반에서 경고가 켜지는 기본값이며, 운영자가 표를 믿고 0을 두면 예상과 다른 경고가 사용자 응답에 붙습니다. / docs/ADMIN_GUIDE.md:270 아래는 서비스 바이너리(`cmd/dataworks`)가 읽는 환경 변수 전부입니다 라는 전수 주장이 사실이 아닙니다. 같은 바이너리가 링크하는 internal/proxy 안에서 `PROMETHEUS_URL`·`PROMETHEUS_TOKEN`(internal/proxy/admin_k8s_latency.go), `KUBE_API_SERVER`·`KUBE_CA_FILE`·`KUBE_TOKEN_FILE`·`KUBERNETES_SERVICE_HOST`·`KUBERNETES_SERVICE_PORT`·`WATCH_KINDS`(internal/proxy/admin_ui.go)를 읽는데 표에 없습니다. 전부라고 못 박은 표라서 K8s 기능을 켠 배포에서는 오해를 만듭니다(범위를 DataWorks 한정으로 명시하면 해소됩니다).","at":"2026-09-11T02:07:20+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":76,"additions":661,"deletions":143,"tests":1,"title":"docs: 사용자·관리자 가이드를 캡처 포함 완성본으로 보강하고 PDF 추가"}
{"ts":"2026-09-11T02:41:11+09:00","date":"2026-09-11","project":"igame","result":"review held, PR open https://github.com/hkjang/igame/pull/15","outcome":"review-pending","run_id":"2026-09-11-021110-igame-improve","base_sha":"e0e82bb75da6a692389505a1a8f964339f73b648","head_sha":"a47f7c9037f39d51df348507bc7cc6a6376b46f0","pr":"https://github.com/hkjang/igame/pull/15","stages":{"base":{"state":"pinned","reason":"main@e0e82bb","at":"2026-09-11T02:11:11+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T02:11:11+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-11T02:35:07+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/15","at":"2026-09-11T02:35:17+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: scripts/build-docs-pdf.sh:4-6 주석은 새 두 PDF가 \"the shared guide tool\"로 만들어진다며 docs/USER_GUIDE.md와 scripts/capture-guide-screenshots.sh를 가리키지만, 전자는 마크다운 문서이고 후자는 PNG만 생성합니다. 저장소 어디에도 docs/USER_GUIDE.pdf(2.5MB)·docs/ADMIN_GUIDE.pdf(1.4MB)를 만드는 도구가 없습니다(Makefile 타깃은 docs-pdf·guide-shots 둘뿐이고, docs-pdf의 MANUALS 목록에서 guide.md가 제거됨). 즉 이 커밋은 재생성 불가능한 바이너리 3.9MB를 새로 커밋하면서, 바로 아래 7-12행이 \"이전 PDF는 커밋되지 않은 파이프라인에서 나와 제품이 바뀌어도 다시 만들 수 없었다 — 이 스크립트가 그 파이프라인이다\"라고 선언한 저장소 자체의 원칙을 되돌립니다. 근본 원인도 확인됨: scripts/docs-pdf/render.mjs:26-29 inline()은 링크만 처리하고 `![]()` 이미지 문법을 지원하지 않아, 캡처를 싣는 가이드를 기존 파이프라인에 넣으려면 렌더러 확장이 필요한데 그 대신 산출물만 커밋했습니다. / docs/release.md:32 \"사용자 가이드와 관리자 가이드는 … 공용 가이드 도구로 만듭니다 — 사용자 가이드 참조\"는 릴리스 담당자가 실제로 따라갈 수 없는 절차입니다. 지목된 docs/USER_GUIDE.md에는 PDF 생성 방법이 한 줄도 없고(파일 전체 확인), 해당 도구도 저장소에 없습니다. 결과적으로 마크다운을 고쳐도 게시되는 PDF는 조용히 낡습니다.","at":"2026-09-11T02:41:08+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":38,"additions":1071,"deletions":83,"tests":0,"title":"docs: publish the user and administrator guides with real screen captures"}
{"ts":"2026-09-11T03:12:31+09:00","date":"2026-09-11","project":"jikim","result":"guarded files, PR open https://github.com/hkjang/jikim/pull/25","outcome":"review-pending","run_id":"2026-09-11-025110-jikim-improve","base_sha":"4dcfb2158f5b9d9a37a5fa9bb3cd428a052bb067","head_sha":"c950b7c6d5b56bd1fa897d0c1c769b34448e76e0","pr":"https://github.com/hkjang/jikim/pull/25","stages":{"base":{"state":"pinned","reason":"main@4dcfb21","at":"2026-09-11T02:51:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T02:51:13+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T03:12:19+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/25","at":"2026-09-11T03:12:29+09:00"},"guard":{"state":"held","reason":"docs/screenshots/dynamic-secrets.png docs/screenshots/secret-detail.png docs/screenshots/secret-new.png docs/screenshots/secrets-mobile.png docs/screenshots/secrets.png ","at":"2026-09-11T03:12:29+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":60,"additions":946,"deletions":269,"tests":1,"title":"docs: add the user and admin guides with real screenshots"}
{"ts":"2026-09-11T04:56:59+09:00","date":"2026-09-11","project":"jupiq","result":"review held, PR open https://github.com/hkjang/jupiq/pull/12","outcome":"review-pending","run_id":"2026-09-11-043357-jupiq-improve","base_sha":"3df15c2b12e3a0469b78c9918be4820c8ccaa7a6","head_sha":"62115440f5a8d3a077b3e81886856eb0d1dbd57f","pr":"https://github.com/hkjang/jupiq/pull/12","stages":{"base":{"state":"pinned","reason":"main@3df15c2","at":"2026-09-11T04:33:57+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T04:33:58+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T04:50:53+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/12","at":"2026-09-11T04:51:02+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/USER_GUIDE.md:345 '**GPU·AI·승인 메뉴가 없습니다.** 이 세 기능은 기본이 OFF이고, 관리자가 켠 환경에서만 나타납니다.' 는 AI 에 대해 사실이 아닙니다. web/src/utils/navigation.ts:62-66 의 isFeatureMenuVisible 은 '/gpus'(gpuMonitoring) 와 '/approvals'(approvalWorkflow) 만 기능 스위치로 가립니다. '/ai-ops' 는 navigation.ts:43-46 대로 전역 ai:chat 권한만 있으면 어떤 스위치와도 무관하게 노출되고, ai.enabled(internal/store/store.go:169) 를 꺼도 메뉴는 사라지지 않습니다. 이 PR 이 함께 넣은 캡처가 그대로 반증합니다 — docs/assets/screenshots/hub-management.webp 와 admin-roles.webp 는 GPU·승인 기능이 기본 OFF 라 GPU/검토·승인 메뉴가 없는 상태인데도 좌측에 'AI·LLM 운영' 메뉴가 그대로 보입니다. 결과적으로 AI 메뉴가 안 보이는 사용자는 '관리자 설정에 AI 를 켜는 스위치가 있다'고 잘못 안내받고, 관리자도 존재하지 않는 스위치를 찾게 됩니다(실제 원인은 ai:chat 권한 미부여). README 가 이 문서를 '정본'으로 선언하고 docs/USER_GUIDE.pdf 로도 배포되므로 오안내가 그대로 굳습니다. 같은 문서 3.12 절(docs/USER_GUIDE.md:225-234)이 AI 메뉴를 기능 스위치로 설명하지 않는 점과도 문서 내부에서 모순됩니다.","at":"2026-09-11T04:56:57+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":41,"additions":880,"deletions":10,"tests":0,"title":"docs: 화면 캡처가 들어간 사용자·관리자 가이드 정본을 추가한다"}
{"ts":"2026-09-11T05:42:10+09:00","date":"2026-09-11","project":"kanpic","result":"merged https://github.com/hkjang/kanpic/pull/17, released v0.243.0","outcome":"release-ready","run_id":"2026-09-11-050112-kanpic-improve","base_sha":"fea021e07f91e7271cc74a8d7ae91e2b263af1a4","head_sha":"56be589e4fac719c3c34da020ed5dc38510d5f6f","pr":"https://github.com/hkjang/kanpic/pull/17","stages":{"base":{"state":"pinned","reason":"main@fea021e","at":"2026-09-11T05:01:20+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T05:01:20+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T05:21:17+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/kanpic/pull/17","at":"2026-09-11T05:21:29+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T05:26:22+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-11T05:29:14+09:00"},"merge":{"state":"done","reason":"56be589e4fac719c3c34da020ed5dc38510d5f6f","at":"2026-09-11T05:29:18+09:00"},"release":{"state":"published","reason":"v0.243.0","at":"2026-09-11T05:40:34+09:00"},"assets":{"state":"verified","reason":"v0.243.0 자산 2개 (이전 v0.242.0: 2)","at":"2026-09-11T05:42:09+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":30,"additions":722,"deletions":731,"tests":0,"title":"docs: 사용자·관리자 가이드를 지금 화면과 지금 버전에 맞춘다"}
{"ts":"2026-09-11T06:14:21+09:00","date":"2026-09-11","project":"moina","result":"review held, PR open https://github.com/hkjang/moina/pull/18","outcome":"review-pending","run_id":"2026-09-11-055111-moina-improve","base_sha":"0ceb6bf18c7963bf9e0860535cd6150b58d1263b","head_sha":"a379da535d83f2d563617beccc077fc0534e2266","pr":"https://github.com/hkjang/moina/pull/18","stages":{"base":{"state":"pinned","reason":"main@0ceb6bf","at":"2026-09-11T05:51:16+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T05:51:16+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T06:09:41+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/18","at":"2026-09-11T06:09:51+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/USER_GUIDE.md:140 새로 추가한 '정본' 사용자 가이드 안의 상호 참조가 깨져 있습니다. 본문은 `[3.8 개인 설정](#38-개인-설정)`으로 링크하지만 실제 절은 `### 3.9 개인 설정`(178줄)이고 3.8은 `AI 어시스턴트`(167줄)입니다. GitHub slug 기준 존재하는 anchor는 `#39-개인-설정`·`#38-ai-어시스턴트`뿐이라 `#38-개인-설정`은 어디에도 없어 클릭해도 이동하지 않고, 절 번호 표기도 틀립니다(문서 내 다른 참조 `아래 3.10을 보세요`(217줄)는 정상이라 이 한 곳만 어긋납니다). 이 오류는 함께 커밋된 docs/USER_GUIDE.pdf(25쪽, Chrome Skia/PDF 인쇄본)에도 그대로 굳어 있는데, 저장소에 PDF 재생성 스크립트가 없어(`grep`상 USER_GUIDE/ADMIN_GUIDE를 참조하는 스크립트·CI 없음) 수정하려면 사람이 수동으로 다시 인쇄해 6.2 MB 바이너리를 또 커밋해야 합니다.","at":"2026-09-11T06:14:20+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":41,"additions":935,"deletions":90,"tests":0,"title":"docs: 화면 캡처가 실린 사용자·관리자 가이드 정본을 추가합니다"}
{"ts":"2026-09-11T06:44:58+09:00","date":"2026-09-11","project":"moyro","result":"review held, PR open https://github.com/hkjang/moyro/pull/12","outcome":"review-pending","run_id":"2026-09-11-062110-moyro-improve","base_sha":"f635ea6ee8a0ab72036b0719b7aa0e7896fca9ce","head_sha":"3f788e05d30b75d1cabcf171ef0a6a4f10857ab9","pr":"https://github.com/hkjang/moyro/pull/12","stages":{"base":{"state":"pinned","reason":"main@f635ea6","at":"2026-09-11T06:21:15+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T06:21:15+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-11T06:38:32+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moyro/pull/12","at":"2026-09-11T06:38:39+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/screens.html:6,73,167 — 7b783ae replaced 42 of the gallery's 46 JPGs with v0.2.27 captures, but the gallery page still titles and describes them as \"moyro v0.2.1 제품 화면 46개\" / \"이 46개 실제 캡처는 ... v0.2.1 인스턴스의\", and docs/sitemap.xml:4 still dates the gallery 2026-08-30. The very same files are declared v0.2.27 captures in docs/USER_GUIDE.md:8 and docs/ADMIN_GUIDE.md:9, so the branch leaves the repo asserting two different product versions for identical image files. / README.md:271 and docs/index.md:11 — both bullets were edited by 3f788e0 yet still advertise \"46 browser-captured v0.2.1 views\" / \"the 46-view v0.2.1 release gallery\". After 7b783ae the gallery is a mix of 42 v0.2.27 captures and 4 v0.2.1 plugin-compatibility captures (the commit message itself states the four were left untouched), so neither the version nor the single-instance framing is true any more. / docs/ADMIN_GUIDE.pdf, docs/USER_GUIDE.pdf — commit 3f788e0 states \"PDFs are produced by the shared tools/guide/md2pdf.mjs converter\", but no tools/ directory exists anywhere on this branch. 4.3 MB of binaries are added with no in-repo generator, and scripts/verify-pages.mjs never references USER_GUIDE/ADMIN_GUIDE, so the PDFs that README.md:267-270 promotes alongside the canonical Markdown cannot be regenerated or checked against it and will drift silently.","at":"2026-09-11T06:44:55+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":50,"additions":960,"deletions":7,"tests":0,"title":"docs: add the canonical user and administrator guides with PDFs"}
{"ts":"2026-09-11T07:30:07+09:00","date":"2026-09-11","project":"muni","result":"merged https://github.com/hkjang/muni/pull/12, released v0.37.0","outcome":"release-ready","run_id":"2026-09-11-065112-muni-improve","base_sha":"5f709bcb1907372ecf07284947780c196ffc98de","head_sha":"270acca0a21d29394e988ee7c7a36af7956958f2","pr":"https://github.com/hkjang/muni/pull/12","stages":{"base":{"state":"pinned","reason":"main@5f709bc","at":"2026-09-11T06:51:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T06:51:17+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T07:13:55+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/muni/pull/12","at":"2026-09-11T07:14:01+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T07:16:25+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-11T07:18:47+09:00"},"merge":{"state":"done","reason":"270acca0a21d29394e988ee7c7a36af7956958f2","at":"2026-09-11T07:18:53+09:00"},"release":{"state":"published","reason":"v0.37.0","at":"2026-09-11T07:26:09+09:00"},"assets":{"state":"verified","reason":"v0.37.0 자산 1개 (이전 v0.36.0: 1)","at":"2026-09-11T07:30:05+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":28,"additions":982,"deletions":1,"tests":0,"title":"docs: 실제 화면을 찍어 사용자 가이드와 관리자 가이드를 만듭니다"}
{"ts":"2026-09-11T08:02:06+09:00","date":"2026-09-11","project":"ptium","result":"verify failed: 실패한 검증: cd server && go test ./... (exit 1)","outcome":"verify-failed","run_id":"2026-09-11-074109-ptium-improve","base_sha":"1a3a67ff362f48f3f9602b1b9b1012e22c36592a","head_sha":"fb37cf1d833e9fa754f8111075a0388763579cec","pr":"","stages":{"base":{"state":"pinned","reason":"main@1a3a67f","at":"2026-09-11T07:41:16+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T07:41:16+09:00"},"verify":{"state":"failed","reason":"실패한 검증: cd server && go test ./... (exit 1)","at":"2026-09-11T08:02:05+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":36,"additions":1071,"deletions":342,"tests":0,"title":"Give the guides the screens they describe"}
{"ts":"2026-09-11T08:32:17+09:00","date":"2026-09-11","project":"relio","result":"verify failed: 실패한 검증: go build ./... (exit 1)","outcome":"verify-failed","run_id":"2026-09-11-081112-relio-improve","base_sha":"13ff4609b7a3a649621247432df7bd0cdafc236c","head_sha":"880adef4b4cdc3a1331148690d9341e67fc36a5e","pr":"","stages":{"base":{"state":"pinned","reason":"main@13ff460","at":"2026-09-11T08:11:16+09:00"},"autonomy":{"state":"low-risk","reason":"롤백 PR ","at":"2026-09-11T08:11:16+09:00"},"verify":{"state":"failed","reason":"실패한 검증: go build ./... (exit 1)","at":"2026-09-11T08:32:17+09:00"}},"campaign":"guides-2026-09","autonomy":"low-risk","files":47,"additions":1858,"deletions":1024,"tests":0,"title":"docs: rebuild the user and admin guides around real screen captures"}
{"ts":"2026-09-11T08:58:29+09:00","date":"2026-09-11","project":"umm","result":"review held, PR open https://github.com/hkjang/umm/pull/151","outcome":"review-pending","run_id":"2026-09-11-084112-umm-improve","base_sha":"9524c381448277aa4c95eb1c9fbbd7a5de3c2496","head_sha":"d157dc84783972a2bee43b169f8ab3ac397d5970","pr":"https://github.com/hkjang/umm/pull/151","stages":{"base":{"state":"pinned","reason":"main@9524c38","at":"2026-09-11T08:41:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T08:41:17+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-11T08:56:11+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/umm/pull/151","at":"2026-09-11T08:56:19+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/features.md:10-196 still embeds the 21 screenshots this commit deletes (01_login.png … 25_admin_audit.png); every image in that file is now broken. features.md is linked from README.md:198 and docs/README.md:19, and scripts/generate_pdf.js:252 builds it into umm_features_guide.pdf and umm_complete_manual.pdf — resolveImages (generate_pdf.js:241-246) silently leaves missing files as dead <img> tags, so the next PDF regeneration ships two guides with no pictures. / web/src/pages/AdminPage.tsx:1842 and web/src/i18n/en.ts:1171-1172 (the in-product AI Gateway embedding-quality hint) tell the admin 'candidate models are compared in docs/admin-guide.md' — that file is renamed to docs/ADMIN_GUIDE.md in this commit, so the running product now points at a path that does not exist. Same stale pointer in docs/ARCHITECTURE.md:203 and internal/intelligence/quality.go:203. The commit message claims 'README, the docs hub, the showcase page and compose.yaml point at the new files', which is true for those four but not for the product UI or ARCHITECTURE.md.","at":"2026-09-11T08:58:27+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":65,"additions":762,"deletions":660,"tests":0,"title":"Rewrite the user and admin guides around real screens of v0.71.6"}
{"ts":"2026-09-11T09:01:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-090113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T09:01:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T10:23:34+09:00","date":"2026-09-11","project":"weekly","result":"merged https://github.com/hkjang/weekly/pull/13, released v0.296.0","outcome":"release-ready","run_id":"2026-09-11-091112-weekly-improve","base_sha":"0c995674fba1264b0ab5fc2e5869ba8fb4627c65","head_sha":"8dd58e5b4f1625e37e90f7d8de1c729d1fff12c5","pr":"https://github.com/hkjang/weekly/pull/13","stages":{"base":{"state":"pinned","reason":"main@0c99567","at":"2026-09-11T09:11:15+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T09:11:15+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T09:35:58+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/weekly/pull/13","at":"2026-09-11T09:36:09+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T09:39:13+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-11T09:48:34+09:00"},"merge":{"state":"done","reason":"8dd58e5b4f1625e37e90f7d8de1c729d1fff12c5","at":"2026-09-11T09:48:37+09:00"},"release":{"state":"published","reason":"v0.296.0","at":"2026-09-11T10:21:59+09:00"},"assets":{"state":"verified","reason":"v0.296.0 자산 1개 (이전 v0.295.0: 1)","at":"2026-09-11T10:23:33+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":39,"additions":1101,"deletions":489,"tests":0,"title":"docs: 사용자·관리자 가이드를 실제 화면 캡처가 든 완성본으로 다시 씁니다"}
{"ts":"2026-09-11T11:09:58+09:00","date":"2026-09-11","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/17, released v0.2.32","outcome":"release-ready","run_id":"2026-09-11-103112-Invenqor-improve","base_sha":"97b2d49ed8f5c1101a87433d5c978f438c106437","head_sha":"7aa2c5fbb89f44b239e84b6ed8588659223bf858","pr":"https://github.com/hkjang/invenqor/pull/17","stages":{"base":{"state":"pinned","reason":"main@97b2d49","at":"2026-09-11T10:31:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T10:31:17+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-11T10:39:00+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/17","at":"2026-09-11T10:39:08+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T10:41:46+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-11T10:43:38+09:00"},"merge":{"state":"done","reason":"7aa2c5fbb89f44b239e84b6ed8588659223bf858","at":"2026-09-11T10:43:42+09:00"},"release":{"state":"published","reason":"v0.2.32","at":"2026-09-11T11:08:39+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.32","at":"2026-09-11T11:08:44+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf RELEASE_NOTES_v0.2.32.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf compose.offline.yaml invenqor-0.2.32.tar.gz invenqor-0.2.32.tar.gz.sha256 invenqor-0.2.32.tgz invenqor-0.2.32.tgz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.32.tar.gz invenqor-agents-0.2.32.tar.gz.sha256 openapi.yaml ","at":"2026-09-11T11:08:46+09:00"},"assets":{"state":"verified","reason":"v0.2.32 자산 25개 (이전 v0.2.31: 25)","at":"2026-09-11T11:09:46+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":32,"additions":1150,"deletions":48,"tests":1,"title":"docs: 사용자·관리자 가이드에 실제로 촬영한 화면 캡처를 싣는다"}
{"ts":"2026-09-11T11:57:48+09:00","date":"2026-09-11","project":"AgentHub","result":"merged https://github.com/hkjang/AgentHub/pull/23, released v0.244.0","outcome":"release-ready","run_id":"2026-09-11-112110-AgentHub-improve","base_sha":"398ca49ee209e0b9f170ae542cbdf42cbb37d15a","head_sha":"541bbbed0ec13ede9af63738595ce4f4bcd2cd84","pr":"https://github.com/hkjang/AgentHub/pull/23","stages":{"base":{"state":"pinned","reason":"main@398ca49","at":"2026-09-11T11:21:13+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T11:21:13+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-11T11:43:07+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/23","at":"2026-09-11T11:43:19+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T11:45:32+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-11T11:46:02+09:00"},"merge":{"state":"done","reason":"541bbbed0ec13ede9af63738595ce4f4bcd2cd84","at":"2026-09-11T11:46:06+09:00"},"release":{"state":"published","reason":"v0.244.0","at":"2026-09-11T11:51:24+09:00"},"assets":{"state":"verified","reason":"v0.244.0 자산 8개 (이전 v0.243.0: 8)","at":"2026-09-11T11:57:47+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":43,"additions":300,"deletions":36,"tests":1,"title":"docs: 실제 워커가 만든 실행 기록·작업·런타임으로 가이드 화면을 다시 찍다"}
{"ts":"2026-09-11T12:13:01+09:00","date":"2026-09-11","project":"Vendra","result":"review held, PR open https://github.com/hkjang/Vendra/pull/119","outcome":"review-pending","run_id":"2026-09-11-120115-Vendra-improve","base_sha":"8f149e1814f11c26992ab78fe46ba7e5f465b38f","head_sha":"bb833b5b1d51bcf414e8a96a3576d10178e21f41","pr":"https://github.com/hkjang/Vendra/pull/119","stages":{"base":{"state":"pinned","reason":"main@8f149e1","at":"2026-09-11T12:01:19+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T12:01:19+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T12:09:18+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/119","at":"2026-09-11T12:09:28+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/USER_GUIDE.md:370 용어표가 Data Scope 값을 `company` · `organization` · `own` 으로 적었는데 코드에는 `organization` 이라는 범위가 없다 (internal/httpapi/objects.go:284-294, web/src/pages/Admin.tsx:1093-1098 은 own/department/division/company). 같은 PR 의 docs/ADMIN_GUIDE.md:256-261 은 네 값을 맞게 적어 두 문서가 서로 어긋난다. 커밋 메시지는 역할·범위 표를 코드에서 읽어 썼다고 하지만 이 줄은 그렇지 않다 — 이 줄은 이번 커밋에서 새로 들어온 것이다. / scripts/guide-screenshots.mjs:426-428 Chrome 바이너리 탐색이 동작하지 않는다. `spawn(c, ['--version'])` 은 없는 실행 파일에 대해 동기 예외를 던지지 않고 비동기 'error' 이벤트를 내므로 try/catch 가 잡지 못하고, `.find` 는 항상 첫 후보 `google-chrome` 을 돌려준다. `google-chrome` 이 없고 `chromium` 만 있는 호스트에서는 처리되지 않은 'error' 이벤트로 프로세스가 죽는다(node 로 재현: \"Unhandled 'error' event\"). 후보 목록 네 개 중 세 개는 도달 불가능한 죽은 코드다.","at":"2026-09-11T12:13:00+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":40,"additions":1493,"deletions":221,"tests":0,"title":"docs: 사용자·관리자 가이드를 실제로 찍은 화면과 함께 완성본으로"}
{"ts":"2026-09-11T12:36:15+09:00","date":"2026-09-11","project":"ptium","result":"review held, PR open https://github.com/hkjang/ptium/pull/19","outcome":"review-pending","run_id":"2026-09-11-122112-ptium-improve","base_sha":"1a3a67ff362f48f3f9602b1b9b1012e22c36592a","head_sha":"6ceaf1b29505a835e45902e99e5b0aa58f0cb084","pr":"https://github.com/hkjang/ptium/pull/19","stages":{"base":{"state":"pinned","reason":"main@1a3a67f","at":"2026-09-11T12:21:19+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T12:21:19+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-11T12:33:17+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ptium/pull/19","at":"2026-09-11T12:33:29+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: commit 7cb0ef4 (Point the format check at the guide that is now canonical) carries a `Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>` trailer and a `Claude-Session:` line; the repository owner's standing rule is that commits, PRs and releases carry no tool attribution, and once merged into main the trailer cannot be reverted. Reword the commit (drop the two trailer lines) before merging — the other two commits in the branch are clean.","at":"2026-09-11T12:36:13+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":41,"additions":1195,"deletions":343,"tests":1,"title":"Show the guides a deck that failed"}
{"ts":"2026-09-11T12:49:57+09:00","date":"2026-09-11","project":"relio","result":"needs approval (risk=low, files=48), PR open https://github.com/hkjang/relio/pull/18","outcome":"review-pending","run_id":"2026-09-11-124111-relio-improve","base_sha":"13ff4609b7a3a649621247432df7bd0cdafc236c","head_sha":"9318481d0bc8d80c20eb25358312f1f05bb33ec0","pr":"https://github.com/hkjang/relio/pull/18","stages":{"base":{"state":"pinned","reason":"main@13ff460","at":"2026-09-11T12:41:15+09:00"},"autonomy":{"state":"held","reason":"low-risk 단계 — 위험도 low, 파일 48: 사람 승인 필요","at":"2026-09-11T12:49:57+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T12:47:24+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/18","at":"2026-09-11T12:47:32+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T12:49:57+09:00"}},"campaign":"guides-2026-09","autonomy":"low-risk","files":48,"additions":1865,"deletions":1024,"tests":0,"title":"docs(guide): capture the strategic account plan with data in it"}
{"ts":"2026-09-11T13:01:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-130112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T13:01:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T13:11:13+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-131111-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T13:11:13+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T13:21:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-132113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T13:21:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T13:31:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-133113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T13:31:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T13:41:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-134112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T13:41:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T13:51:13+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-135112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T13:51:13+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T14:01:15+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-140114-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T14:01:15+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T14:11:15+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-141113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T14:11:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T14:21:13+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-142112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T14:21:13+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T14:31:13+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-143112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T14:31:13+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T14:41:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-144112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T14:41:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T14:51:13+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-145112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T14:51:13+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T15:01:15+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-150113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T15:01:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T15:11:13+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-151112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T15:11:13+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T15:21:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-152112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T15:21:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T15:31:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-153113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T15:31:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T15:41:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-154113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T15:41:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T15:51:16+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-155114-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T15:51:16+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T16:01:16+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-160115-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T16:01:16+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T16:11:15+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-161113-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T16:11:15+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T16:21:14+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-162112-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T16:21:14+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T16:31:17+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-163116-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T16:31:17+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T18:11:32+09:00","date":"2026-09-11","project":"relio","result":"fix-round: merged https://github.com/hkjang/relio/pull/19","outcome":"merged","run_id":"2026-09-11-175949-relio-improve","base_sha":"13ff4609b7a3a649621247432df7bd0cdafc236c","head_sha":"c8e530b97797a2661b39ced6f6d3677db342dcba","pr":"https://github.com/hkjang/relio/pull/19","stages":{"base":{"state":"pinned","reason":"main@13ff460","at":"2026-09-11T17:59:52+09:00"},"autonomy":{"state":"low-risk","reason":"롤백 PR ","at":"2026-09-11T17:59:52+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T18:07:39+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/relio/pull/19","at":"2026-09-11T18:07:44+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T18:08:51+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-11T18:11:25+09:00"},"merge":{"state":"done","reason":"c8e530b97797a2661b39ced6f6d3677db342dcba","at":"2026-09-11T18:11:29+09:00"},"release":{"state":"skipped","reason":"자율화 단계 low-risk — 릴리즈는 사람이","at":"2026-09-11T18:11:32+09:00"}},"campaign":"","autonomy":"low-risk","files":8,"additions":131,"deletions":3,"tests":2,"title":"build: let a fresh checkout compile before the frontend has been built"}
{"ts":"2026-09-11T18:50:24+09:00","date":"2026-09-11","project":"Kkiit","result":"CI no-ci, PR open https://github.com/hkjang/Kkiit/pull/1","outcome":"review-pending","run_id":"2026-09-11-182116-Kkiit-improve","base_sha":"7e96575b598a276f34623aa7295e8d3ee9c5b6ee","head_sha":"ff19bc7c7cd1cd571e78d6c9feddc5fdede7e3c8","pr":"https://github.com/hkjang/Kkiit/pull/1","stages":{"base":{"state":"pinned","reason":"main@7e96575","at":"2026-09-11T18:21:18+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T18:21:18+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-11T18:43:06+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Kkiit/pull/1","at":"2026-09-11T18:43:13+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T18:45:47+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-11T18:50:23+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":45,"additions":1272,"deletions":2,"tests":0,"title":"docs: 사용자·관리자 가이드에 실제 화면 캡처를 싣다"}
{"ts":"2026-09-11T19:35:50+09:00","date":"2026-09-11","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/1","outcome":"verify-failed","run_id":"2026-09-11-190116-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"e73d3575ee99181ca28bc0e96da30e64bfc8e117","pr":"https://github.com/hkjang/Momento/pull/1","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-11T19:01:20+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T19:01:20+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T19:30:45+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/1","at":"2026-09-11T19:30:55+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T19:34:15+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-11T19:35:49+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":64,"additions":2321,"deletions":692,"tests":0,"title":"docs: 사용자·관리자 가이드를 실제 화면 캡처가 실린 완성본으로 다시 쓴다"}
{"ts":"2026-09-11T20:03:20+09:00","date":"2026-09-11","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-11-194042-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"14412d67fdc941613199c282d1b20b271dcd2a96","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-11T19:40:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T19:40:49+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-11T20:03:20+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":75,"additions":1048,"deletions":369,"tests":0,"title":"Put the real screens into the guides people are handed"}
{"ts":"2026-09-11T20:31:31+09:00","date":"2026-09-11","project":"cutover","result":"CI no-ci, PR open https://github.com/hkjang/cutover/pull/1","outcome":"review-pending","run_id":"2026-09-11-201042-cutover-improve","base_sha":"aa8f7d40377fad2388ffd1a026cb5ba1cdbcbec7","head_sha":"18cfb207699233ac64ab6283cc5af3f39ec5404a","pr":"https://github.com/hkjang/cutover/pull/1","stages":{"base":{"state":"pinned","reason":"main@aa8f7d4","at":"2026-09-11T20:10:45+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T20:10:45+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-11T20:25:17+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/cutover/pull/1","at":"2026-09-11T20:25:23+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T20:26:54+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-11T20:31:30+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":24,"additions":677,"deletions":192,"tests":1,"title":"docs: 사용자·관리자 가이드를 실제 화면 캡처가 들어간 표준 형식으로 재작성하고 PDF 추가"}
{"ts":"2026-09-11T21:02:40+09:00","date":"2026-09-11","project":"seaton","result":"review held, PR open https://github.com/hkjang/seaton/pull/25","outcome":"review-pending","run_id":"2026-09-11-204043-seaton-improve","base_sha":"a9820e386ddac8045477b47965fefd47220800f4","head_sha":"1487c1d82261445ae968e2e7df37fc13a455cde3","pr":"https://github.com/hkjang/seaton/pull/25","stages":{"base":{"state":"pinned","reason":"main@a9820e3","at":"2026-09-11T20:40:45+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T20:40:45+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T20:59:20+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/seaton/pull/25","at":"2026-09-11T20:59:27+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: scripts/build-docs.py:104,180-181 번호 목록 이어붙이기 로직 결함 — flush() 가 순서 없는(불릿) 목록에서도 start 를 누적하고, 새 목록 직전 블록이 image 이면 그 사이에 제목·문단이 있었더라도 start 를 1로 되돌리지 않는다. 그 결과 커밋된 docs/USER_GUIDE.html:201 에서 3.6 '내 API 키' 절의 1~5단계가 <ol start=\"14\"> 로 렌더링되어 14~18번으로 표시된다(마크다운 원본 docs/USER_GUIDE.md:178-182 는 1~5). 산출물에 실제로 잘못 찍힌 상태로 머지되는 문서 결함.","at":"2026-09-11T21:02:37+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":31,"additions":1214,"deletions":402,"tests":0,"title":"docs: 사용자·관리자 가이드를 실제 화면 캡처와 함께 표준 구성으로 정비"}
{"ts":"2026-09-11T21:44:04+09:00","date":"2026-09-11","project":"visitflow","result":"CI failed, PR open https://github.com/hkjang/visitflow/pull/11","outcome":"verify-failed","run_id":"2026-09-11-211043-visitflow-improve","base_sha":"1de7c53646519c30836fd495b3707062df0873b6","head_sha":"b184d2a3b5be2e55e4cbbb8181ff28878300ca38","pr":"https://github.com/hkjang/visitflow/pull/11","stages":{"base":{"state":"pinned","reason":"main@1de7c53","at":"2026-09-11T21:10:46+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T21:10:46+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-11T21:33:07+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/visitflow/pull/11","at":"2026-09-11T21:33:15+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T21:35:23+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-11T21:44:03+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":37,"additions":721,"deletions":107,"tests":1,"title":"docs(guides): rewrite the user and admin guides around real screen captures"}
{"ts":"2026-09-11T21:50:45+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-215043-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T21:50:45+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T22:09:24+09:00","date":"2026-09-11","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/2","outcome":"verify-failed","run_id":"2026-09-11-220044-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"bc6cb92f2c305410c8012e1cc13d9eb2f6e1b472","pr":"https://github.com/hkjang/Momento/pull/2","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-11T22:00:48+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T22:00:48+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T22:04:35+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/2","at":"2026-09-11T22:04:42+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T22:05:47+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-11T22:09:23+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":8,"additions":63,"deletions":14,"tests":1,"title":"fix(console): ask for the period the site's policy allows, not a fixed one"}
{"ts":"2026-09-11T22:33:13+09:00","date":"2026-09-11","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-11-222043-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"95bbaa7e50ec152c006e8861735bb5b916742a07","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-11T22:20:49+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T22:20:49+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-11T22:33:12+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":80,"additions":1128,"deletions":368,"tests":0,"title":"Picture the approver's desk in the user guide"}
{"ts":"2026-09-11T23:16:38+09:00","date":"2026-09-11","project":"visitflow","result":"no change","outcome":"no-change","run_id":"2026-09-11-224047-visitflow-improve","base_sha":"1de7c53646519c30836fd495b3707062df0873b6","head_sha":"","pr":"","stages":{"base":{"state":"pinned","reason":"main@1de7c53","at":"2026-09-11T22:40:51+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T22:40:51+09:00"},"improve":{"state":"no-change","reason":"커밋 없음","at":"2026-09-11T23:16:38+09:00"}},"campaign":"guides-2026-09","autonomy":"release"}
{"ts":"2026-09-11T23:20:45+09:00","date":"2026-09-11","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-11-232043-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-11T23:20:45+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-11T23:45:51+09:00","date":"2026-09-11","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/3","outcome":"verify-failed","run_id":"2026-09-11-233044-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"67add934d4e83a960579541df5a55e23e1c0a3f9","pr":"https://github.com/hkjang/Momento/pull/3","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-11T23:30:50+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T23:30:50+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-11T23:41:11+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/3","at":"2026-09-11T23:41:17+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-11T23:42:48+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-11T23:45:49+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":2,"additions":300,"deletions":4,"tests":1,"title":"fix(maintenance): a rebuild that lost a deadlock to the event worker is tried again, not failed"}
{"ts":"2026-09-11T23:56:45+09:00","date":"2026-09-11","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-11-235044-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"47130468dba9664fea07a7c8104f316398470ba9","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-11T23:50:52+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-11T23:50:52+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-11T23:56:45+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":92,"additions":1217,"deletions":718,"tests":0,"title":"Notice a guide picture that is missing or forgotten before pushing"}
{"ts":"2026-09-12T00:01:22+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-000120-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T00:01:22+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T00:20:50+09:00","date":"2026-09-12","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/4","outcome":"verify-failed","run_id":"2026-09-12-001117-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"292285fb1c2dd82d094d8f7c0ed241b26cdd21e8","pr":"https://github.com/hkjang/Momento/pull/4","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-12T00:11:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T00:11:21+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T00:15:47+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/4","at":"2026-09-12T00:15:54+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-12T00:16:49+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-12T00:20:49+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":3,"additions":70,"deletions":13,"tests":1,"title":"fix(console): a requeued aggregate job says it is waiting to retry, not merely pending"}
{"ts":"2026-09-12T00:40:09+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-003123-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"dea3205e3dc4dbfc1670fd438bab62e5f5863da0","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T00:31:30+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T00:31:30+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T00:40:09+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":92,"additions":1271,"deletions":718,"tests":0,"title":"Notice a guide whose PDF was not re-baked before pushing"}
{"ts":"2026-09-12T00:51:18+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-005117-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T00:51:18+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T01:21:40+09:00","date":"2026-09-12","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/5","outcome":"verify-failed","run_id":"2026-09-12-010120-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"c17db1bd3c19097ef5677e8880c02d3d1aa14625","pr":"https://github.com/hkjang/Momento/pull/5","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-12T01:01:25+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T01:01:25+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T01:13:04+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/5","at":"2026-09-12T01:13:10+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-12T01:21:37+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-12T01:21:39+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":5,"additions":200,"deletions":2,"tests":2,"title":"docs(compose): say that a loaded release image is started with --no-build"}
{"ts":"2026-09-12T01:37:56+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-013118-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"774d35b7211a10eccfd7ab83084d3e79b0e2bbda","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T01:31:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T01:31:24+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T01:37:56+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":93,"additions":1348,"deletions":722,"tests":1,"title":"Notice a guide picture that was not shot at the standard width"}
{"ts":"2026-09-12T01:41:19+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-014117-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T01:41:19+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T02:10:49+09:00","date":"2026-09-12","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/6","outcome":"verify-failed","run_id":"2026-09-12-015118-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"82642cd94b0ba7a9c02f8033d533d41f2716771a","pr":"https://github.com/hkjang/Momento/pull/6","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-12T01:51:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T01:51:21+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T02:02:01+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/6","at":"2026-09-12T02:02:09+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-12T02:10:46+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-12T02:10:48+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":2,"additions":77,"deletions":2,"tests":1,"title":"fix(catalog): a metric uses the event its definition names, not one its text resembles"}
{"ts":"2026-09-12T02:27:54+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-022116-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"eb90797b12bdd8841aef57dc837d0da0bc16e773","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T02:21:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T02:21:22+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T02:27:54+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":93,"additions":1595,"deletions":722,"tests":1,"title":"Notice a settings key or variable the admin guide has wrong"}
{"ts":"2026-09-12T02:31:20+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-023118-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T02:31:20+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T03:01:43+09:00","date":"2026-09-12","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/7","outcome":"verify-failed","run_id":"2026-09-12-024117-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"c190e285b04856c1f84c3764b8f34c8e07d252e3","pr":"https://github.com/hkjang/Momento/pull/7","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-12T02:41:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T02:41:21+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T02:54:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/7","at":"2026-09-12T02:55:06+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-12T03:01:39+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-12T03:01:41+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":2,"additions":116,"deletions":21,"tests":1,"title":"fix(lineage): a ratio's sources are the events and metrics inside its sides, not only what it names at the top"}
{"ts":"2026-09-12T03:17:58+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-031116-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"e01403557095f37109d4963604c5decf6facde68","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T03:11:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T03:11:22+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T03:17:58+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":94,"additions":1787,"deletions":722,"tests":1,"title":"Let the scripts the docs name be run the way the docs show"}
{"ts":"2026-09-12T03:21:19+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-032117-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T03:21:19+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T03:48:56+09:00","date":"2026-09-12","project":"Momento","result":"CI failed, PR open https://github.com/hkjang/Momento/pull/8","outcome":"verify-failed","run_id":"2026-09-12-033116-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"5c4a19612a143bfd70c61c0cc160721eaa1dafe6","pr":"https://github.com/hkjang/Momento/pull/8","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-12T03:31:20+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T03:31:20+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T03:44:09+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/8","at":"2026-09-12T03:44:17+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-12T03:45:56+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: test=failure","at":"2026-09-12T03:48:55+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":5,"additions":246,"deletions":27,"tests":2,"title":"fix(export): a cell the visitor wrote is text, not a formula, in the spreadsheet that opens it"}
{"ts":"2026-09-12T04:08:06+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-040120-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"b0723c01eacbb3201d685092cebaea90f255ff0f","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T04:01:29+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T04:01:29+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T04:08:06+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":94,"additions":1923,"deletions":722,"tests":1,"title":"Notice a status endpoint or job type the admin guide has wrong"}
{"ts":"2026-09-12T04:11:17+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-041115-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T04:11:17+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T04:32:09+09:00","date":"2026-09-12","project":"Momento","result":"guarded files, PR open https://github.com/hkjang/Momento/pull/9","outcome":"review-pending","run_id":"2026-09-12-042117-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"f48c9cc46d50f94965d0c030376ba2cb1714212b","pr":"https://github.com/hkjang/Momento/pull/9","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-12T04:21:23+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T04:21:23+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T04:31:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/9","at":"2026-09-12T04:32:07+09:00"},"guard":{"state":"held","reason":"internal/auth/auth.go internal/auth/auth_test.go ","at":"2026-09-12T04:32:07+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":4,"additions":186,"deletions":10,"tests":2,"title":"fix(auth): refuse a password bcrypt cannot hash instead of storing an empty one"}
{"ts":"2026-09-12T04:54:17+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-044116-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"51608cb6bbe85465652c4ff5b3653e99cd70beb1","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T04:41:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T04:41:22+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T04:54:17+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":97,"additions":2017,"deletions":722,"tests":1,"title":"Name the handover button the way the screen does"}
{"ts":"2026-09-12T05:01:17+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-050115-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T05:01:17+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T05:19:35+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-051116-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"595f543a7773da10d68432c4ad8c2606dcf1ee0f","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T05:11:22+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T05:11:22+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T05:19:35+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":97,"additions":2234,"deletions":722,"tests":1,"title":"List every step of the hourly check under the name the sweep logs it by"}
{"ts":"2026-09-12T05:31:17+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-053116-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T05:31:17+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T05:49:31+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-054118-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"0e023e72cdb93fa3c63231b37bd64a6ae98d8bbc","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T05:41:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T05:41:24+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T05:49:31+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":99,"additions":2359,"deletions":723,"tests":2,"title":"Notice a review-list filter or sort order the user guide does not list"}
{"ts":"2026-09-12T06:01:20+09:00","date":"2026-09-12","project":"vibe-coders","result":"error: fetch","outcome":"error","run_id":"2026-09-12-060118-vibe-coders-improve","base_sha":"","head_sha":"","pr":"","stages":{"improve":{"state":"error","reason":"fetch 실패","at":"2026-09-12T06:01:20+09:00"}},"campaign":"guides-2026-09","autonomy":""}
{"ts":"2026-09-12T06:18:53+09:00","date":"2026-09-12","project":"SecCheck","result":"verify failed: 실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","outcome":"verify-failed","run_id":"2026-09-12-061115-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"59635176cc39ff37eae82a3685c2812a788d436a","pr":"","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T06:11:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T06:11:21+09:00"},"verify":{"state":"failed","reason":"실패한 검증: [ -d node_modules ] || npm ci --no-audit --no-fund (exit 1)","at":"2026-09-12T06:18:53+09:00"}},"campaign":"guides-2026-09","autonomy":"release","files":99,"additions":2646,"deletions":723,"tests":2,"title":"Say which bell title belongs to which notification type, and where each one opens"}
{"ts":"2026-09-12T06:40:05+09:00","date":"2026-09-12","project":"SecCheck","result":"fix-round: guarded files, PR open https://github.com/hkjang/SecCheck/pull/1","outcome":"review-pending","run_id":"2026-09-12-063115-SecCheck-improve","base_sha":"c32eec770c581e9676a83b6d7bc79949d2cc3bc4","head_sha":"9c320695126bbc0d34d371949c6dcff215dea93e","pr":"https://github.com/hkjang/SecCheck/pull/1","stages":{"base":{"state":"pinned","reason":"main@c32eec7","at":"2026-09-12T06:31:21+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T06:31:21+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T06:39:45+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/SecCheck/pull/1","at":"2026-09-12T06:40:04+09:00"},"guard":{"state":"held","reason":".github/workflows/ci.yml ","at":"2026-09-12T06:40:04+09:00"}},"campaign":"","autonomy":"release","files":101,"additions":2834,"deletions":724,"tests":3,"title":"Hold the bodies the screens send against the fields the server reads"}
{"ts":"2026-09-12T07:12:43+09:00","date":"2026-09-12","project":"vibe-coders","result":"fix-round: review held, PR open https://github.com/hkjang/vibe-coders/pull/15","outcome":"review-pending","run_id":"2026-09-12-065126-vibe-coders-improve","base_sha":"f940400eb2e8a5824394c4def0f95000d8a404f7","head_sha":"6a96d233692b0b904300c39bcaf6038d3c27627e","pr":"https://github.com/hkjang/vibe-coders/pull/15","stages":{"base":{"state":"pinned","reason":"master@f940400","at":"2026-09-12T06:51:41+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T06:51:41+09:00"},"verify":{"state":"passed","reason":"검증 9개 통과 (auto)","at":"2026-09-12T07:09:42+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/vibe-coders/pull/15","at":"2026-09-12T07:09:53+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: docs/USER_GUIDE.md:81 세션 비행기록이 `X-Vibe-Session` 헤더로 묶인다고 설명하지만 게이트웨이가 인식하는 헤더는 `X-Vibe-Session-ID` 입니다(internal/proxy/llm_observability.go:24-31 sessionHeaderNames). 같은 문서 215·219·231 줄은 올바르게 `X-Vibe-Session-ID` 라고 쓰고 있어 문서가 자기모순이며, 용어표를 따라 `X-Vibe-Session` 을 보내는 사용자는 세션 고정이 되지 않습니다. / docs/USER_GUIDE.md:419 용어표의 세션 항목도 존재하지 않는 `X-Vibe-Session` 을 정식 헤더처럼 안내합니다(위와 동일한 오류; master 의 기존 가이드는 `X-Vibe-Session-ID` 로 맞게 쓰여 있었으므로 이번 변경이 도입한 퇴행). / scripts/guide-screenshots.sh:104 트래픽 생성 함수가 `X-Vibe-Session`·`X-Vibe-Tool` 헤더를 보내지만 둘 다 게이트웨이가 읽지 않는 헤더라 아무 효과가 없습니다. 주석(‘세션·도구 호출을 섞는다’)과 달리 캡처된 세션은 스크립트가 지정한 `sess-<round>-<key>` 가 아니라 추론된 `sess_…` 3개(observability-sessions.png 확인)이며, 117줄 주석이 말하는 ‘관리자 계정으로 Chat 테스트도 한 번 흘린다’ 는 동작은 실제로 존재하지 않고 `sleep 2` 만 있습니다.","at":"2026-09-12T07:12:41+09:00"}},"campaign":"","autonomy":"release","files":31,"additions":634,"deletions":69,"tests":0,"title":"docs(guide): rebuild the user and admin guides around real console captures"}
{"ts":"2026-09-12T07:43:49+09:00","date":"2026-09-12","project":"AgentHub","result":"review held, PR open https://github.com/hkjang/AgentHub/pull/24","outcome":"review-pending","run_id":"2026-09-12-072116-AgentHub-improve","base_sha":"c289d39140a12153a50f9eca1bb45bf8932468f8","head_sha":"81a70dbb591a70fa1e7454f7678f2399fa87196a","pr":"https://github.com/hkjang/AgentHub/pull/24","stages":{"base":{"state":"pinned","reason":"main@c289d39","at":"2026-09-12T07:21:20+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T07:21:20+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-12T07:40:41+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/AgentHub/pull/24","at":"2026-09-12T07:40:51+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: web/src/pages/AdminSettings.tsx:138 화면은 provider 가 비어 있을 때 'momento' 를 선택된 것으로 보여 주지만(TRACKING_PROVIDERS 에 'none' 은 없음) 서버 기본값은 tracking.Defaults() 의 'none' 이다. 새로 설치한 곳에서는 GET /admin/settings 에 tracking 키가 없어 value={} 이므로, 관리자가 '방문 추적 사용' 을 켜고 Momento 주소·사이트 id 만 채워 저장하면 select 의 onChange 가 한 번도 안 불려 provider 없이 {enabled:true,momentoUrl,momentoSiteId} 가 전송된다 → decodeTrackingSettings 가 provider='none' 으로 채우고 Validate 는 ProviderNone 을 통과시켜(internal/tracking/tracking.go:136) 저장 성공 메시지를 내지만 Active() 는 false(tracking.go:167) 라 어떤 페이지에도 스니펫이 붙지 않는다. 화면을 다시 열어도 여전히 'Momento' 가 선택된 것처럼 보여 원인을 알 수 없다 — 커밋 메시지가 막겠다고 한 '조용히 비는 대시보드' 를 첫 설정 흐름에서 그대로 재현한다. 수정: 폼이 provider 를 항상 전송하거나(초기값을 value 에 채우기), Validate 가 Enabled && ProviderNone 을 거절해야 한다. guide-shots.mjs 는 provider 를 명시해 보내므로 실물 확인이 이 경로를 지나지 않았다.","at":"2026-09-12T07:43:48+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":16,"additions":1591,"deletions":12,"tests":3,"title":"feat: 관리자가 화면에서 방문 추적 스크립트를 붙일 수 있게 하다"}
{"ts":"2026-09-12T08:28:02+09:00","date":"2026-09-12","project":"Invenqor","result":"merged https://github.com/hkjang/invenqor/pull/18, released v0.2.33","outcome":"release-ready","run_id":"2026-09-12-075116-Invenqor-improve","base_sha":"c17ebac3d8b7aa0ce8529384a73e74bb39be5a5a","head_sha":"8086aad9229d4f99349af48453938fb9548ab197","pr":"https://github.com/hkjang/invenqor/pull/18","stages":{"base":{"state":"pinned","reason":"main@c17ebac","at":"2026-09-12T07:51:24+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T07:51:24+09:00"},"verify":{"state":"passed","reason":"검증 8개 통과 (auto)","at":"2026-09-12T08:10:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/invenqor/pull/18","at":"2026-09-12T08:11:02+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T08:14:57+09:00"},"ci":{"state":"passed","reason":"검사 11개 모두 success","at":"2026-09-12T08:15:26+09:00"},"merge":{"state":"done","reason":"8086aad9229d4f99349af48453938fb9548ab197","at":"2026-09-12T08:15:31+09:00"},"release":{"state":"published","reason":"v0.2.33","at":"2026-09-12T08:26:52+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.2.33","at":"2026-09-12T08:26:57+09:00"},"manifest":{"state":"ok","reason":"ADMIN_GUIDE.md ADMIN_GUIDE.pdf API_MCP_GUIDE.md API_MCP_GUIDE.pdf EXECUTIVE_REPORT.md EXECUTIVE_REPORT.pdf RELEASE_NOTES_v0.2.33.md SERVER_INSTALLATION.md SERVER_INSTALLATION.pdf USER_GUIDE.md USER_GUIDE.pdf compose.offline.yaml invenqor-0.2.33.tar.gz invenqor-0.2.33.tar.gz.sha256 invenqor-0.2.33.tgz invenqor-0.2.33.tgz.sha256 invenqor-agent-linux-aarch64.tar.gz invenqor-agent-linux-aarch64.tar.gz.sha256 invenqor-agent-linux-x86_64.tar.gz invenqor-agent-linux-x86_64.tar.gz.sha256 invenqor-agent-windows-x86_64.zip invenqor-agent-windows-x86_64.zip.sha256 invenqor-agents-0.2.33.tar.gz invenqor-agents-0.2.33.tar.gz.sha256 openapi.yaml ","at":"2026-09-12T08:26:59+09:00"},"assets":{"state":"verified","reason":"v0.2.33 자산 25개 (이전 v0.2.32: 25)","at":"2026-09-12T08:28:01+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":19,"additions":2464,"deletions":45,"tests":4,"title":"feat: an administrator can attach a visitor tracking snippet without loosening the CSP"}
{"ts":"2026-09-12T08:51:33+09:00","date":"2026-09-12","project":"relio","result":"merged https://github.com/hkjang/relio/pull/18 (approved)","outcome":"merged","run_id":"2026-09-12-085054-relio-approve","base_sha":"","head_sha":"9318481d0bc8d80c20eb25358312f1f05bb33ec0","pr":"https://github.com/hkjang/relio/pull/18","stages":{"merge":{"state":"done","reason":"9318481d0bc8d80c20eb25358312f1f05bb33ec0 (사람 승인)","at":"2026-09-12T08:51:29+09:00"}},"campaign":"","autonomy":""}
{"ts":"2026-09-12T10:03:47+09:00","date":"2026-09-12","project":"Momento","result":"fix-round: CI no-ci, PR open https://github.com/hkjang/Momento/pull/11","outcome":"review-pending","run_id":"2026-09-12-094228-Momento-improve","base_sha":"9f857c4b750e068e6e88298479d8c4c052e5e6cc","head_sha":"9d3e06c46a38658ed607243e669177dfca3482ee","pr":"https://github.com/hkjang/Momento/pull/11","stages":{"base":{"state":"pinned","reason":"main@9f857c4","at":"2026-09-12T09:42:33+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T09:42:33+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T09:55:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Momento/pull/11","at":"2026-09-12T09:56:01+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-12T09:59:25+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-12T10:03:46+09:00"}},"campaign":"","autonomy":"release","files":1,"additions":32,"deletions":3,"tests":1,"title":"test: seed the fixture in one batch instead of two thousand round trips"}
{"ts":"2026-09-12T10:47:26+09:00","date":"2026-09-12","project":"visitflow","result":"fix-round: merged https://github.com/hkjang/visitflow/pull/12, released v2.7.4","outcome":"release-ready","run_id":"2026-09-12-101956-visitflow-improve","base_sha":"1de7c53646519c30836fd495b3707062df0873b6","head_sha":"13ab2b777835edef855af208fbdb89054d3e645a","pr":"https://github.com/hkjang/visitflow/pull/12","stages":{"base":{"state":"pinned","reason":"main@1de7c53","at":"2026-09-12T10:20:00+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T10:20:00+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-12T10:35:03+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/visitflow/pull/12","at":"2026-09-12T10:35:08+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=low)","at":"2026-09-12T10:36:38+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-12T10:39:04+09:00"},"merge":{"state":"done","reason":"13ab2b777835edef855af208fbdb89054d3e645a","at":"2026-09-12T10:39:09+09:00"},"release":{"state":"published","reason":"v2.7.4","at":"2026-09-12T10:45:51+09:00"},"assets":{"state":"verified","reason":"v2.7.4 자산 1개 (이전 v2.7.3: 1)","at":"2026-09-12T10:47:24+09:00"}},"campaign":"","autonomy":"release","files":2,"additions":26,"deletions":6,"tests":2,"title":"fix(tests): stop the OpenAPI route probe hanging on the lobby SSE stream"}
{"ts":"2026-09-12T11:20:45+09:00","date":"2026-09-12","project":"Kkiit","result":"guarded files, PR open https://github.com/hkjang/Kkiit/pull/2","outcome":"review-pending","run_id":"2026-09-12-110003-Kkiit-improve","base_sha":"7e96575b598a276f34623aa7295e8d3ee9c5b6ee","head_sha":"e9a699f92baf71d8c12cfc3aa7ed0eb907472d3d","pr":"https://github.com/hkjang/Kkiit/pull/2","stages":{"base":{"state":"pinned","reason":"main@7e96575","at":"2026-09-12T11:00:07+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T11:00:07+09:00"},"verify":{"state":"passed","reason":"검증 5개 통과 (auto)","at":"2026-09-12T11:20:37+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Kkiit/pull/2","at":"2026-09-12T11:20:43+09:00"},"guard":{"state":"held","reason":"internal/database/migrations/040_visitor_tracking.sql ","at":"2026-09-12T11:20:43+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":28,"additions":1619,"deletions":23,"tests":2,"title":"feat: 관리자가 화면에서 방문 추적 스크립트를 붙일 수 있게 하다"}
{"ts":"2026-09-12T12:04:29+09:00","date":"2026-09-12","project":"ReSSO","result":"guarded files, PR open https://github.com/hkjang/ReSSO/pull/19","outcome":"review-pending","run_id":"2026-09-12-114001-ReSSO-improve","base_sha":"159e58db48de420d7ec1985d9db0f2d66980acc5","head_sha":"1d9b41d775d7e737e0651dd8c7613f206ea17f72","pr":"https://github.com/hkjang/ReSSO/pull/19","stages":{"base":{"state":"pinned","reason":"main@159e58d","at":"2026-09-12T11:40:07+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T11:40:07+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T12:04:16+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ReSSO/pull/19","at":"2026-09-12T12:04:25+09:00"},"guard":{"state":"held","reason":"internal/store/migrations/016_platform_settings.sql ","at":"2026-09-12T12:04:26+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":20,"additions":1995,"deletions":7,"tests":4,"title":"feat: let a service administrator attach a visitor tracking snippet under the strict content security policy"}
{"ts":"2026-09-12T12:37:31+09:00","date":"2026-09-12","project":"SecCheck","result":"guarded files, PR open https://github.com/hkjang/SecCheck/pull/2","outcome":"review-pending","run_id":"2026-09-12-121955-SecCheck-improve","base_sha":"a0dbd0fb199d49c124c96587b7dbbb36c3c4c148","head_sha":"523cd0f0d95b99f76c0bca50e6e242b52672de99","pr":"https://github.com/hkjang/SecCheck/pull/2","stages":{"base":{"state":"pinned","reason":"main@a0dbd0f","at":"2026-09-12T12:20:01+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T12:20:02+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T12:37:18+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/SecCheck/pull/2","at":"2026-09-12T12:37:29+09:00"},"guard":{"state":"held","reason":"internal/store/migrations/034_visitor_tracking.sql ","at":"2026-09-12T12:37:30+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":19,"additions":1348,"deletions":15,"tests":4,"title":"Let an administrator attach a visitor tracking snippet without loosening the page policy"}
{"ts":"2026-09-12T13:09:03+09:00","date":"2026-09-12","project":"Vendra","result":"guarded files, PR open https://github.com/hkjang/Vendra/pull/120","outcome":"review-pending","run_id":"2026-09-12-125004-Vendra-improve","base_sha":"98299d9501b5a22dd9a58e4d4bc457e42e3dfade","head_sha":"b6d1883b4362956625726c80dc228ca8ab843677","pr":"https://github.com/hkjang/Vendra/pull/120","stages":{"base":{"state":"pinned","reason":"main@98299d9","at":"2026-09-12T12:50:14+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T12:50:14+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T13:08:52+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/Vendra/pull/120","at":"2026-09-12T13:09:01+09:00"},"guard":{"state":"held","reason":"internal/db/migrations/017_tracking.sql ","at":"2026-09-12T13:09:01+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":18,"additions":2121,"deletions":13,"tests":4,"title":"feat: let an administrator attach a visit-tracking script from the screen, under the policy that stays locked"}
{"ts":"2026-09-12T13:52:20+09:00","date":"2026-09-12","project":"ai-admin","result":"review held, PR open https://github.com/hkjang/ai-admin/pull/21","outcome":"review-pending","run_id":"2026-09-12-132956-ai-admin-improve","base_sha":"76f434e9d3d7ef1fbcd92201579cf145493999a6","head_sha":"67715bb470ffba3cbed563d5f309865d3725102c","pr":"https://github.com/hkjang/ai-admin/pull/21","stages":{"base":{"state":"pinned","reason":"main@76f434e","at":"2026-09-12T13:30:02+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T13:30:02+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T13:48:15+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/ai-admin/pull/21","at":"2026-09-12T13:48:22+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: internal/tracking/tracking.go:270-282 SnippetOrigins는 strings.ToLower(snippet)에서 찾은 바이트 오프셋으로 원본 snippet을 인덱싱한다. 소문자화 시 UTF-8 길이가 줄어드는 문자(İ U+0130→i, 켈빈 기호 K U+212A→k)가 스니펫에 있으면 오프셋이 어긋나고, lowered에서 'http'가 잡힌 위치가 원본에서 경계 문자(공백 등)이면 end==start==index 로 진행이 없어 무한 루프에 빠진다. 재현: SnippetOrigins(\"<!-- İ -->  <script src=\\\"https://cdn.example.com/x.js\\\"></script>\") 이 2초 내 반환하지 않음(직접 확인). 이 값은 카탈로그 검증(8KB, 문자열)을 통과해 저장되고, PolicySources()가 /login·/ 등 스니펫이 붙는 모든 SPA 셸 요청과 GET /api/v1/tracking/status, Recorder.List 에서 호출되므로 저장 즉시 로그인 화면 요청마다 고루틴이 100% CPU로 영구 회전한다(recoverer·WriteTimeout으로 회수되지 않음). 서버 코드로 복구할 수 없고 DB에서 설정을 지워야 한다. / internal/tracking/tracking.go:197-211 withNonce도 같은 방식(ToLower 결과의 인덱스로 원본 remaining 슬라이스)이라 위 문자가 있으면 nonce가 <script 태그가 아닌 엉뚱한 바이트 위치에 삽입되어 스니펫 HTML이 깨진다(무한 루프는 아님). 두 곳 모두 ASCII 전용 대소문자 비교(bytes.EqualFold 기반 탐색이나 lowered 슬라이스만 사용)로 바꿔야 한다.","at":"2026-09-12T13:52:18+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":16,"additions":1699,"deletions":41,"tests":3,"title":"feat: 관리자가 화면에서 붙이는 방문 추적 스니펫과 nonce 기반 CSP"}
{"ts":"2026-09-12T14:43:38+09:00","date":"2026-09-12","project":"appstore","result":"merged https://github.com/hkjang/appstore/pull/15, released v2.6.0","outcome":"release-ready","run_id":"2026-09-12-140953-appstore-improve","base_sha":"46c283936b80d6a4f24935e00af6a00e5fd53fd6","head_sha":"1294a7705c132e5160c30b0c06640fe370e2e2de","pr":"https://github.com/hkjang/appstore/pull/15","stages":{"base":{"state":"pinned","reason":"main@46c2839","at":"2026-09-12T14:09:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T14:10:00+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T14:25:59+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/appstore/pull/15","at":"2026-09-12T14:26:07+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T14:29:15+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-12T14:30:13+09:00"},"merge":{"state":"done","reason":"1294a7705c132e5160c30b0c06640fe370e2e2de","at":"2026-09-12T14:30:18+09:00"},"release":{"state":"published","reason":"v2.6.0","at":"2026-09-12T14:41:35+09:00"},"assets":{"state":"verified","reason":"v2.6.0 자산 1개 (이전 v2.5.8: 1)","at":"2026-09-12T14:43:37+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":45,"additions":2008,"deletions":23,"tests":6,"title":"feat: let an administrator attach a visitor tracking snippet under a strict CSP"}
{"ts":"2026-09-12T15:28:27+09:00","date":"2026-09-12","project":"cutover","result":"CI no-ci, PR open https://github.com/hkjang/cutover/pull/2","outcome":"review-pending","run_id":"2026-09-12-145952-cutover-improve","base_sha":"aa8f7d40377fad2388ffd1a026cb5ba1cdbcbec7","head_sha":"68c443b20d85f9fda01dc2e8bff5b5fbb496d1ab","pr":"https://github.com/hkjang/cutover/pull/2","stages":{"base":{"state":"pinned","reason":"main@aa8f7d4","at":"2026-09-12T14:59:56+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T14:59:56+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (auto)","at":"2026-09-12T15:19:26+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/cutover/pull/2","at":"2026-09-12T15:19:32+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T15:24:12+09:00"},"ci":{"state":"no-ci","reason":"이 커밋에 검사가 없음 (정책 allow_merge_without_ci 가 없으면 차단)","at":"2026-09-12T15:28:26+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":19,"additions":2130,"deletions":6,"tests":3,"title":"feat: 관리자가 화면에서 붙이는 방문 추적 스크립트 체계와 nonce 기반 CSP"}
{"ts":"2026-09-12T16:09:47+09:00","date":"2026-09-12","project":"dataworks","result":"merged https://github.com/hkjang/dataworks/pull/18, released v0.9.53","outcome":"release-ready","run_id":"2026-09-12-153953-dataworks-improve","base_sha":"d5b57b41ca586c82e1862d331ccad36f13208b87","head_sha":"c40c161cdfd582031d292824fe919b98258017bc","pr":"https://github.com/hkjang/dataworks/pull/18","stages":{"base":{"state":"pinned","reason":"main@d5b57b4","at":"2026-09-12T15:39:56+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T15:39:56+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T15:58:03+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/dataworks/pull/18","at":"2026-09-12T15:58:12+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T16:02:19+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-12T16:02:49+09:00"},"merge":{"state":"done","reason":"c40c161cdfd582031d292824fe919b98258017bc","at":"2026-09-12T16:02:54+09:00"},"release":{"state":"published","reason":"v0.9.53","at":"2026-09-12T16:09:35+09:00"},"gh-release":{"state":"created","reason":"GitHub Release v0.9.53","at":"2026-09-12T16:09:40+09:00"},"manifest":{"state":"ok","reason":"dataworks-v0.9.53.tar.gz ","at":"2026-09-12T16:09:41+09:00"},"assets":{"state":"verified","reason":"v0.9.53 자산 1개 (이전 v0.9.52: 1)","at":"2026-09-12T16:09:46+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":14,"additions":1755,"deletions":13,"tests":2,"title":"feat(tracking): let administrators attach a visitor tracking snippet under a nonce CSP"}
{"ts":"2026-09-12T17:20:48+09:00","date":"2026-09-12","project":"igame","result":"merged https://github.com/hkjang/igame/pull/16, released v0.7.13","outcome":"release-ready","run_id":"2026-09-12-162953-igame-improve","base_sha":"a8b788d60061d97b0a06a45c86cc73facf9673d2","head_sha":"6383fddfe966b96677c2b4ccee48906ea8df9385","pr":"https://github.com/hkjang/igame/pull/16","stages":{"base":{"state":"pinned","reason":"main@a8b788d","at":"2026-09-12T16:29:59+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T16:29:59+09:00"},"verify":{"state":"passed","reason":"검증 4개 통과 (policy)","at":"2026-09-12T16:49:17+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/igame/pull/16","at":"2026-09-12T16:49:24+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T16:52:16+09:00"},"ci":{"state":"passed","reason":"검사 1개 모두 success","at":"2026-09-12T16:54:11+09:00"},"merge":{"state":"done","reason":"6383fddfe966b96677c2b4ccee48906ea8df9385","at":"2026-09-12T16:54:16+09:00"},"release":{"state":"published","reason":"v0.7.13","at":"2026-09-12T17:04:05+09:00"},"assets":{"state":"verified","reason":"v0.7.13 자산 1개 (이전 v0.7.12: 1)","at":"2026-09-12T17:20:46+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":21,"additions":1679,"deletions":16,"tests":5,"title":"feat: let administrators attach a visit tracking snippet under a nonce-based CSP"}
{"ts":"2026-09-12T18:14:28+09:00","date":"2026-09-12","project":"jikim","result":"merged https://github.com/hkjang/jikim/pull/26, released v0.2.11","outcome":"release-ready","run_id":"2026-09-12-174012-jikim-improve","base_sha":"1504ac381b998f4c544d1e1dfa151cca7de1d56e","head_sha":"67f0934b716785d9431360d8e9ccf32b1200f9f4","pr":"https://github.com/hkjang/jikim/pull/26","stages":{"base":{"state":"pinned","reason":"main@1504ac3","at":"2026-09-12T17:40:17+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T17:40:17+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T17:59:24+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jikim/pull/26","at":"2026-09-12T17:59:31+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T18:03:29+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-12T18:03:59+09:00"},"merge":{"state":"done","reason":"67f0934b716785d9431360d8e9ccf32b1200f9f4","at":"2026-09-12T18:04:03+09:00"},"release":{"state":"published","reason":"v0.2.11","at":"2026-09-12T18:10:58+09:00"},"assets":{"state":"verified","reason":"v0.2.11 자산 2개 (이전 v0.2.10: 2)","at":"2026-09-12T18:14:27+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":18,"additions":2038,"deletions":16,"tests":4,"title":"feat: let administrators attach a visitor tracking snippet under a nonce-backed CSP"}
{"ts":"2026-09-12T18:58:17+09:00","date":"2026-09-12","project":"jupiq","result":"merged https://github.com/hkjang/jupiq/pull/13, released v1.6.0","outcome":"release-ready","run_id":"2026-09-12-182533-jupiq-improve","base_sha":"67eab8afa47cf03428f29bb311f125fdbba6d58c","head_sha":"f9e20c05ea1448e397ac36a66451bcc2985774c0","pr":"https://github.com/hkjang/jupiq/pull/13","stages":{"base":{"state":"pinned","reason":"main@67eab8a","at":"2026-09-12T18:25:39+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T18:25:39+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T18:45:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/jupiq/pull/13","at":"2026-09-12T18:46:00+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T18:49:24+09:00"},"ci":{"state":"passed","reason":"검사 3개 모두 success","at":"2026-09-12T18:49:54+09:00"},"merge":{"state":"done","reason":"f9e20c05ea1448e397ac36a66451bcc2985774c0","at":"2026-09-12T18:49:58+09:00"},"release":{"state":"published","reason":"v1.6.0","at":"2026-09-12T18:55:17+09:00"},"assets":{"state":"verified","reason":"v1.6.0 자산 1개 (이전 v1.5.0: 1)","at":"2026-09-12T18:58:17+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":17,"additions":1638,"deletions":15,"tests":6,"title":"docs: 관리자 가이드에 방문 추적 설정과 CSP 설명을 더한다"}
{"ts":"2026-09-12T19:44:53+09:00","date":"2026-09-12","project":"moina","result":"CI failed, PR open https://github.com/hkjang/moina/pull/19","outcome":"verify-failed","run_id":"2026-09-12-191548-moina-improve","base_sha":"9f29f92b52b60b2e41583c7ff167b07f6fcf271a","head_sha":"f49eb38fe8d55eddd2090bd94735e9129943ed02","pr":"https://github.com/hkjang/moina/pull/19","stages":{"base":{"state":"pinned","reason":"main@9f29f92","at":"2026-09-12T19:15:55+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T19:15:55+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T19:38:54+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moina/pull/19","at":"2026-09-12T19:39:00+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T19:42:33+09:00"},"ci":{"state":"failed","reason":"성공이 아닌 검사: Image and browser smoke=failure","at":"2026-09-12T19:44:53+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":17,"additions":2095,"deletions":4,"tests":4,"title":"feat: 관리자가 화면에서 방문 추적 스니펫을 붙일 수 있게 합니다"}
{"ts":"2026-09-12T20:18:36+09:00","date":"2026-09-12","project":"moyro","result":"review held, PR open https://github.com/hkjang/moyro/pull/13","outcome":"review-pending","run_id":"2026-09-12-195532-moyro-improve","base_sha":"d4ac11dea2f2248bf64d5483ebd90d93d58d1907","head_sha":"2df5459b5f01050d33763e6591de7e9a0b059828","pr":"https://github.com/hkjang/moyro/pull/13","stages":{"base":{"state":"pinned","reason":"main@d4ac11d","at":"2026-09-12T19:55:38+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T19:55:38+09:00"},"verify":{"state":"passed","reason":"검증 2개 통과 (policy)","at":"2026-09-12T20:12:43+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/moyro/pull/13","at":"2026-09-12T20:12:49+09:00"},"review":{"state":"rejected","reason":"리뷰 거절: server/internal/tracking/tracking.go:325-337 SnippetOrigins는 strings.ToLower(snippet)에서 구한 바이트 인덱스를 원본 snippet에 그대로 적용합니다. 소문자화로 바이트 길이가 달라지는 문자(예: U+212A KELVIN SIGN 3바이트→'k' 1바이트, U+0130 'İ' 2바이트→3바이트)가 스니펫에 있으면 인덱스가 어긋나 `lower[index:]`가 범위를 벗어나 panic 합니다(재현: 'K'×8 + \"http://a.example tail\" → slice bounds out of range [40:29]). Validate는 이런 스니펫을 통과시키고, PolicySources→SnippetOrigins는 webui.ServeHTTP가 추적 대상 페이지 응답마다 호출하므로 저장 즉시 모든 화면 응답이 Recoverer 500이 되고, listTrackingViolations(AllowsOrigin)도 함께 500이 됩니다. / server/internal/tracking/tracking.go:359-373 withNonce도 같은 결함입니다. strings.ToLower(remaining)에서 찾은 `<script` 위치를 remaining에 적용하므로 앞에 'İ' 같은 문자가 있으면 태그 중간에 nonce가 삽입됩니다(재현: \"İİİİ<script>1</script>\" → `İİİİ<sc nonce=\"n\"ript>1</script>`). 결과 태그가 깨져 스니펫이 조용히 실행되지 않는데, 이는 이 기능이 해결하려던 '조용히 막힘' 그 자체입니다. 두 함수 모두 소문자 사본에서 위치를 찾은 뒤 원본에 쓰지 말고, ASCII 전용 case-fold(또는 EqualFold 기반 탐색)로 바꿔야 합니다.","at":"2026-09-12T20:18:33+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":25,"additions":2116,"deletions":18,"tests":6,"title":"feat: let administrators attach a visitor-tracking snippet without loosening the CSP"}
{"ts":"2026-09-12T20:59:52+09:00","date":"2026-09-12","project":"muni","result":"merged https://github.com/hkjang/muni/pull/13, released v0.38.0","outcome":"release-ready","run_id":"2026-09-12-202530-muni-improve","base_sha":"b3822dc586c808a30a59350e5d54b6796890420f","head_sha":"bbb223ad93b084b5aa5cc1e498f6ba418add0609","pr":"https://github.com/hkjang/muni/pull/13","stages":{"base":{"state":"pinned","reason":"main@b3822dc","at":"2026-09-12T20:25:37+09:00"},"autonomy":{"state":"release","reason":"","at":"2026-09-12T20:25:37+09:00"},"verify":{"state":"passed","reason":"검증 7개 통과 (auto)","at":"2026-09-12T20:42:06+09:00"},"pr":{"state":"created","reason":"https://github.com/hkjang/muni/pull/13","at":"2026-09-12T20:42:14+09:00"},"review":{"state":"approved","reason":"리뷰 승인 (risk=medium)","at":"2026-09-12T20:45:56+09:00"},"ci":{"state":"passed","reason":"검사 2개 모두 success","at":"2026-09-12T20:46:26+09:00"},"merge":{"state":"done","reason":"bbb223ad93b084b5aa5cc1e498f6ba418add0609","at":"2026-09-12T20:46:30+09:00"},"release":{"state":"published","reason":"v0.38.0","at":"2026-09-12T20:55:53+09:00"},"assets":{"state":"verified","reason":"v0.38.0 자산 1개 (이전 v0.37.0: 1)","at":"2026-09-12T20:59:50+09:00"}},"campaign":"tracking-2026-09","autonomy":"release","files":18,"additions":1817,"deletions":19,"tests":3,"title":"feat: 관리자가 화면에서 방문 추적 스크립트를 붙이고, CSP 가 막은 출처를 보고 허용합니다"}
