Repository navigation
[fix] main CI lint 실패 90건을 테스트 코드에서 고친다 - #564
Merged
Merged
Conversation
Lore: - Intent: Make the golangci-lint v2.12.2 step of the main CI verify job pass again without config exclusions or nolint. - Why: Since dd271b8 the verify job stopped at lint with 90 findings (errcheck 62, govet inline 25, unused 3), all in *_test.go, so the Build, race test and self-verify steps never ran (#563). - Changes: - Split assertion helpers that returned an error pointer into a void assertion plus a value-returning helper (requireOrcaCode/requireOrcaError, requirePlanRequired/requiredPlanError, requirePersistenceFailure). - Report the deferred instance.Release error through t.Errorf in mcpservice/instance_test.go. - Inline the four //go:fix inline test helpers with go fix -inline and delete their definitions. - Delete three unused declarations (explicitActor, phaseFlow.prefetches, stepLabels). - Add the tracked cycle copies and the verified-execution report under .issueops/issues/563/. - Verify: GOOS=linux golangci-lint v2.12.2 run ./... -> 0 issues; gofmt, go vet, go build, go test -race ./... -count=1; self-verify --base-ref (27/27 steps); gates G1-G4 met. - Risk: Low; test-only change. internal/adapter/orca/*_test.go may conflict as modify/delete when #560 removes the Orca integration; take the deletion.
4 tasks
Lore: - Intent: Record the remote CI run and the draft PR readback in the #563 verified-execution report before completion. - Why: The report committed with the code predates the push, so the CI result and the PR evidence were still future tense. - Changes: - Replace the planned CI check with the observed verify job result for the pushed head. - Add the draft PR #564 readback and correct the self-verify note to the --base-ref run. - Verify: Not-tested: docs-only; the code head was verified by gates G1-G4 and the CI verify job. - Risk: Low; only the report file changes after the verified pr head.
Lore: - Intent: Remove the Linux ETXTBSY flake that failed the PR #564 pull_request CI at the race test step. - Why: writeScript leaves a script that the test execs right away; a fork from any parallel test duplicates the open write fd and Linux then fails exec with "text file busy". It was hidden behind the lint failure on main and does not reproduce on macOS (#563). - Changes: - Drop t.Parallel from TestProcessTableRead, TestRuntimeInstall and TestRuntimeList and their subtests; the tests that stay parallel never fork. - Document the constraint on writeScript. - Record the caution and its CAUTIONS index row. - Add gate G5 (Linux container run, count 1500) to the #563 ledger, run G4 in a temporary HOME like CI, and update the report. - Verify: Linux arm64 test binary in ubuntu:24.04 reproduced text file busy before (count 300, cpu 4, shuffle) and passed after (count 1500, cpu 2,8,16); one gates check run met G1-G5 (golangci-lint 0 issues, gofmt/vet/build/race ALL_PASS, no suppression, self-verify, container run); self-verify --base-ref 27/27. - Risk: Low; test-only. internal/adapter/issueops and hostprobe use the same exec-file pattern with t.Parallel and were not changed.
Lore: - Intent: Record the pull_request failure, the fix commit's push and pull_request runs, and the PR body sync in the #563 report before completion. - Why: The report committed with the fix predates the push, so the CI results and the PR readback were not in it yet. - Changes: - Add the push run 38720840743 and pull_request run 38720847359 results. - Add the PR body sync and artifact verification. - Verify: Not-tested: docs-only; the code head 87ba7ca passed both CI runs and gates G1-G5. - Risk: Low; only the report file changes after the verified pr head.
m16khb
marked this pull request as ready for review
October 15, 2026 23:36
4 tasks
m16khb
added a commit
that referenced
this pull request
Oct 16, 2026
…e branch Lore: - Intent: Keep the verified-execution report accurate after main was merged and the cycle was reseeded to generation 3. - Why: PR #562's first CI stopped at lint on main's debt (fixed by #564); the branch now contains that fix and the checks were re-run on the merged head. - Changes: - Add the generation 3 re-verification section (focused tests, label eval, self-verify in a CI-like temporary HOME, CI results for the merge commit). - Verify: Not-tested: report-only change; code is unchanged since the previous review. - Risk: Low.
m16khb
added a commit
that referenced
this pull request
Oct 16, 2026
* fix(remote): score rule labels by type-evidence share so Korean issues select a label Lore: - Intent: Make `remote score --judge none` pick bug, enhancement, or documentation from Korean issue text at the default threshold. - Why: The old score was 0.65*overlap + 0.35*heuristic, so a keyword hit alone capped at 0.35 and never reached 0.70, and whitespace tokens such as "오류가" never equalled the keyword "오류". 224 of 229 single-label issues selected no label (#561). - Changes: - Rule labels score as (their evidence tokens) / (all evidence tokens); Korean keywords match a token prefix, English keywords match the whole token, and fewer than 2 evidence tokens in total abstains with score 0. - Labels without a keyword rule, explicit score input, related-issue scoring, CLI/MCP fields, and the 0.70 default stay as they were. - Add the quality table test (issues below #232), keyword/evidence boundary tests, scripts/autoresearch/label_score_eval.py, and the DDD inventory entries. - Verify: gates G1-G4 met; label_score_eval.py on #232-560 selects 56 with 54 correct (96.43%), on #0-231 selects 43 with 36 correct (83.72%, below the 85% bar); self-verify 27/27 (go test -race, go vet, gofmt; scratch venv supplied pydantic/typer). - Risk: Low; the keyword list was tuned on #0-231, and the #232-560 check is not fully independent. English keywords with attached particles are not matched. * docs(issueops): add execution report for issue #561 Lore: - Intent: Record the publication and the intent cross-check in the verified-execution report. - Why: execution complete needs a committed report that names the draft PR; the report is the only path allowed to change after pr_head. - Changes: - Add the intent cross-check and the draft PR link with the label override. - Verify: Not-tested: documentation-only change to the report; the code verification is unchanged since the previous commit. - Risk: Low. * docs(issueops): record the re-verification after syncing main into the branch Lore: - Intent: Keep the verified-execution report accurate after main was merged and the cycle was reseeded to generation 3. - Why: PR #562's first CI stopped at lint on main's debt (fixed by #564); the branch now contains that fix and the checks were re-run on the merged head. - Changes: - Add the generation 3 re-verification section (focused tests, label eval, self-verify in a CI-like temporary HOME, CI results for the merge commit). - Verify: Not-tested: report-only change; code is unchanged since the previous review. - Risk: Low.
m16khb
added a commit
that referenced
this pull request
Oct 16, 2026
Lore: - Intent: Keep the gate ledger and verification report in step with the head that now contains main 6f1ad90. - Why: #565 was CONFLICTING and its CI Lint step failed on debt that #564 already fixed on main; the base moved, so every gate was re-run on the merged head. - Changes: - Reset and re-run all 13 gates in one `gates check` run (all met). - Let G11 accept exactly the one broken link main already carries in .issueops/issues/561/plan.md (it fails the same way on origin/main). - Record the sync-base conflict resolution, the lint result (0 issues on linux and darwin), and the environment notes in the report. - Verify: gates check 13/13 met in one run; golangci-lint v2.12.2 GOOS=linux and darwin 0 issues; go vet ./...; go test ./... -count=1. - Risk: Low; documentation only.
m16khb
added a commit
that referenced
this pull request
Oct 16, 2026
…sync Lore: - Intent: Make the G8 self-verify gate inspect the committed diff, not only the working tree. - Why: After the changes were committed and main was merged, base bac123a and HEAD differ; without --base-ref the risk QA step saw no scope. The implementation review of the reopened cycle (D6) caught it. - Changes: - Add --base-ref bac123a to the G8 CHECK and re-run all 13 gates in one run (all met). - Correct the report: self-verify scope reasoning, the reopen wording, the sync-base command column, and the #564 wording. - Verify: gates check 13/13 met in one run; self-verify with --base-ref reports ok with scope base bac123a and head f6dec21; contract golden tests ok; project docs check shows only the one violation main already has. - Risk: Low; documentation only.
m16khb
added a commit
that referenced
this pull request
Oct 16, 2026
* refactor(issueops)!: remove the Orca integration and execution mode selection Lore: - Intent: Leave direct (git sibling worktree + generation-fenced lease) as the only execution mode and delete everything that existed for Orca or for choosing a mode. - Why: #560. Orca was a hard dependency threaded through prepare, claim, replace, reconcile, cleanup, doctor and the handoff audit; session handoff now runs through the existing release, replace --preview, --reseed, claim --claim-current-token chain in Herdr or a second terminal. - Changes: - Drop Execution.mode/selection/orca and Workspace.driver from the record contract and validators; execution prepare is now `--id ID ACTOR_FLAGS [--confirm]`. - Delete execution resume, execution switch-mode, the MCP resume action, doctor --preserve-terminal/--sealed and the interactive doctor profile, the Orca intent chain, sealed claim context, owner prompt/context packet, and cleanup's orca_remove/orca_resources_absent steps. - Keep remote_pr_create pending intents and reconcile, the claim token, quiescence and workspace-process checks, artifact sealing, manual-direct handoff observation, and cmux. - Remove internal/adapter/orca and internal/port/orca*, the functions that lost their last caller (deadcode ./cmd/... stays at 0 lines), and rename 18 files' camelCase names that matched a case-insensitive orca search. - Rewrite the skills, current .issueops docs and README for Herdr-then-current-or-manual-terminal session selection, add ADR 2026-10-15, and regenerate the CLI/MCP/response/install goldens. - Add TestDirectHandoffChainThroughProductionCommands and rebuild TestSuccessfulDirectClaimObservesReleasedReseededGeneration on the Herdr manual producer. - Verify: gofmt -l, go vet ./..., go test -race ./... , ./bin/issueops self-verify --seed=100 --target-score=95 --llm-eval=false, golangci-lint v2.12.2 (no new findings against bac123a), deadcode ./cmd/..., project docs check (680 documents, 0 violations), gate ledger G1-G12 met in one run, real-binary smoke 1 active -> 1 released -> 2 claimable -> 2 active. - Risk: Breaking. Records and handoff audit lines written by the old binary are unreadable to the new one, so finish or abandon existing cycles with the old binary before updating; any leftover old-shape record makes execution prepare fail with invalid state for every cycle. Out-of-repo callers of the removed flags/commands fail after the update. Local data cleanup is a follow-up. * docs(issueops): record the #560 plan, gate ledger, and verification report Lore: - Intent: Keep the tracked materials of the #560 cycle with the change they justify. - Why: Project convention records the plan, intent, plan review, gate ledger and verified-execution report in the cycle's commit history. - Changes: - Add .issueops/issues/560/{plan,intent,plan-review,gates}.md. - Add .issueops/verified-execution/560-remove-orca-integration.md with acceptance results, smoke table, side effects, size measurements, doc-to-implementation cross-check and the verification table. - Verify: gate ledger G1-G12 met in one gates check run; project docs check ok (680 documents, 0 violations). - Risk: Low; documentation only. * docs(issueops): record the #560 re-verification on the new main Lore: - Intent: Keep the gate ledger and verification report in step with the head that now contains main 6f1ad90. - Why: #565 was CONFLICTING and its CI Lint step failed on debt that #564 already fixed on main; the base moved, so every gate was re-run on the merged head. - Changes: - Reset and re-run all 13 gates in one `gates check` run (all met). - Let G11 accept exactly the one broken link main already carries in .issueops/issues/561/plan.md (it fails the same way on origin/main). - Record the sync-base conflict resolution, the lint result (0 issues on linux and darwin), and the environment notes in the report. - Verify: gates check 13/13 met in one run; golangci-lint v2.12.2 GOOS=linux and darwin 0 issues; go vet ./...; go test ./... -count=1. - Risk: Low; documentation only. * docs(issueops): pass the recorded base to self-verify after the base sync Lore: - Intent: Make the G8 self-verify gate inspect the committed diff, not only the working tree. - Why: After the changes were committed and main was merged, base bac123a and HEAD differ; without --base-ref the risk QA step saw no scope. The implementation review of the reopened cycle (D6) caught it. - Changes: - Add --base-ref bac123a to the G8 CHECK and re-run all 13 gates in one run (all met). - Correct the report: self-verify scope reasoning, the reopen wording, the sync-base command column, and the #564 wording. - Verify: gates check 13/13 met in one run; self-verify with --base-ref reports ok with scope base bac123a and head f6dec21; contract golden tests ok; project docs check shows only the one violation main already has. - Risk: Low; documentation only.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
요약
main의 CI
verify작업이 golangci-lint 지적 90건(모두*_test.go)으로 멈춰 Build, race 테스트, self-verify 단계가 실행되지 못했습니다. 이 PR은 설정 제외나//nolint없이 테스트 코드를 고쳐 lint 단계를 통과시킵니다. lint가 풀리자 가려져 있던internal/adapter/update테스트의 Linux 전용 결함이pull_requestCI에서 드러나 함께 고쳤고, 이 PR의 CI는 두 이벤트 모두 lint 이후 단계까지 통과했습니다.Closes #563
변경 내용
t.Fatalf는 그대로이고, 반환값을 쓰던 호출부만 새 helper를 부릅니다.requireOrcaCode(반환 없음)와requireOrcaError(값 반환, 내부에서requireOrcaCode호출). 호출 85곳 중 값을 쓰던 33곳이requireOrcaError로 바뀌었습니다.requirePlanRequired를 더하고 반환값을 버리던 7곳을 바꿨습니다. 값을 쓰는 4곳은requiredPlanError를 그대로 씁니다.persistenceFailure를 반환 없는requirePersistenceFailure로 바꿨습니다.internal/adapter/mcpservice/instance_test.go의defer instance.Release()가 오류를t.Errorf로 보고합니다.//go:fix inlinehelper 4개는go fix -inline으로 호출 49곳을new(int64(250))같은 형태로 인라인하고 정의를 지웠습니다.explicitActor,phaseFlow.prefetches,stepLabels)를 지웠습니다.internal/adapter/update/runtime_test.go: 스크립트를 쓴 직후 실행하는 테스트 세 개(TestProcessTableRead,TestRuntimeInstall,TestRuntimeList)에서t.Parallel을 뺐습니다..issueops/cautions/2026-10-15-linux-exec-text-file-busy.md)과CAUTIONS.md색인 한 줄을 추가했습니다. 사이클 기록은.issueops/issues/563/에 있습니다.바뀌지 않은 것: production Go 파일,
.golangci.yml, CLI JSON, MCP schema, golden, record schema. 테스트 파일 19개만 수정했습니다.확인한 것
GOOS=linux,go.mod가 정한 toolchain, golangci-lint v2.12.2로run ./...를 실행하면0 issues.입니다(수정 전에는 90건).go vet ./...,go build ./cmd/issueops,go test -race ./... -count=1이 모두 통과했습니다. self-verify는 CI와 같은 방식(임시 HOME에 설치한 뒤 실행)으로 통과했고, 기준 커밋을 지정한 실행도 27단계 모두 통과했습니다..golangci.yml변경, 추가된nolint, 변경된 production Go 파일이 없음을 diff로 확인했습니다.text file busy결함은 CI의pull_requestrun이 두 번 연속Race test all packages에서 실패해 드러났습니다. 스크립트를 쓴 직후 실행하는 동안 다른 병렬 테스트의 fork가 쓰기 fd를 복제하면 Linux가 exec에ETXTBSY를 돌려줍니다. macOS에서는 재현되지 않습니다.ubuntu:24.04컨테이너에서-test.count=300 -test.cpu=4 -test.shuffle=on으로 실행하면 수정 전에는 세 테스트가text file busy로 실패했습니다. 수정 뒤-test.count=1500 -test.cpu=2,8,16 -test.shuffle=on실행이 통과했습니다.verify)가push(https://github.com/m16khb-org/issueops/actions/runs/38720840743)와pull_request(https://github.com/m16khb-org/issueops/actions/runs/38720847359) 두 이벤트 모두 Lint, Build, Race test, 결정적 self-verify 단계까지 success입니다.pass를 냈고,update수정은 별도 delta 리뷰에서도pass였습니다.확인하지 못한 것: 로컬 macOS에서
go test -race ./... -count=1을 여러 번 돌렸을 때 한 번cmd/issueops/issueopscli두 테스트(TestCLIIssueOpsPhaseAdvanceToPRBlockedByChildren,TestChildCLIStaleOperationRequiresCurrentHolderReconcile)가 부하 때문으로 보이는 오류로 실패했습니다. 이 PR이 건드리지 않은 테스트이고 원인은 확정하지 못했습니다. GitHub Actions에서는 실패하지 않았습니다.리뷰 포인트
requireOrcaError와requiredPlanError가 단언 뒤에errors.AsType을 한 번 더 호출하는 형태(판정은 한 곳에만 두기 위한 선택)가 읽기에 괜찮은지 봐 주세요.update패키지는t.Parallel을 뺀 것으로 고쳤습니다.internal/adapter/issueops와internal/adapter/hostprobe에도 실행 파일을 쓰고t.Parallel을 쓰는 테스트가 있지만 이 PR에서는 건드리지 않았고, 같은 결함이 있는지는 판정하지 못했습니다.internal/adapter/orca/*_test.go는 [refactor] Orca 연동을 걷어내고 direct 실행과 Herdr·수동 터미널 인계만 남긴다 #560(Orca 연동 제거)이 지울 예정입니다. #560이 이 변경 뒤에 base를 동기화하면 modify/delete 충돌이 날 수 있고, 그때는 삭제 쪽을 택하면 됩니다.머지 뒤 #561 사이클(PR #562)은
sync-base와 reseed로 새 head에서 CI를 다시 받아야 하며, 이 PR의 범위가 아닙니다.