Conversation
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Contributor
📦 Build ArtifactsWorkflow Run: View Run Available Artifacts
How to DownloadOption 1: GitHub Web UI (easiest)
Option 2: GitHub CLI gh run download 34809637677 --repo smart-mcp-proxy/mcpproxy-go
|
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.
chore(specs): gardener checkbox sync — 2026-09-14
2 ticks applied · 1 un-tick proposed (not applied) · 172 tick-candidates dropped · 66 un-tick-candidates dropped (artifact actually exists) · run date 2026-09-14
Ran
scripts/check-spec-evidence.pyagainst allspecs/*/tasks.md(73 specs). It reported 66 UNRESOLVED, 2 REMOVED, 30 RELOCATED (informational, no action needed — work exists, just a stale cited path), and 174possibly_built(unchecked tasks whose cited artifacts exist). Every one of the 174 + 68 candidates was checked against the actual code by hand, applying the TICK TEST (behavior promised, code that produces it, cited as file:line, confirmed real/wired/tested) plus an adversarial pass. Only 2 tick candidates and 1 un-tick candidate survived — the overwhelming majority of the checker's candidates were false positives caused by shared/generic files, renamed artifacts, or partially-built features.ROADMAP.mdwas also regenerated viascripts/gen-roadmap.py(required — the pre-commit hook rejects a stale roadmap after a checkbox change) and committed separately aschore(roadmap): regenerate ROADMAP.md after gardener checkbox sync. It was not hand-edited; only the two affected specs' progress numbers changed (007-oauth-e2e-testing 93→94/103, 044-diagnostics-taxonomy 59→60/106).Testing
specs/*/tasks.mdand the regeneratedROADMAP.mdtable. Nothing to run.Applied ticks
internal/server/diagnostics_fixers.go:70(registration),:86-162(fixShowLastServerLogs); testinternal/server/diagnostics_fixers_test.go:121diagnostics.Register("stdio_show_last_logs", s.fixShowLastServerLogs)→entries, err := s.GetServerLogs(req.ServerID, diagnosticsLogTailLines), rendered intoFixResult.Preview; covered byTestDiagnosticFixer_StdioShowLastLogs_ReturnsRealTail. (Task namesinternal/diagnostics/fixers.go; the real, wired implementation is the runtime-backed override ininternal/server/diagnostics_fixers.go, installed byregisterDiagnosticFixers()called fromNewServerWithConfigPath.)cmd/mcpproxy/auth_cmd.go:680-694(printDaemonOAuthLoginResult); testcmd/mcpproxy/auth_cmd_test.go:272fmt.Fprintf(w, " %s\n", result.AuthURL)— printed both as the primary path when the browser couldn't open and as a fallback hint when it did; covered byTestPrintDaemonOAuthLoginResult_BrowserNotOpened/_BrowserOpened.Proposed un-ticks (NOT applied)
native/macos/MCPProxy/Menu/FixIssuesMenu.swift: 'Fix Issues (N)' submenu populated from failing servers; each entry opens web UI at server's detail page"native/macosforFixIssuesMenu, the string "Fix Issues", and every consumer ofAppState.serversWithDiagnostic(native/macos/MCPProxy/MCPProxy/State/AppState.swift:330). No such file, noNSMenu/MenuBarExtraitem, and no URL-opening code referencing it exists anywhere in production Swift.[x]but the described UI does not exist.Dropped by verification
Tick candidates rejected (172 of 174
possibly_built)All failed the TICK TEST: cited file exists (why the checker flagged it) but the specific promised behavior — the exact test, field, method, or doc content — is not actually present. Grouped by spec.
001-code-execution (13/13 dropped)
cfg.Serversis empty in every test inmcp_code_execution_test.go).mockToolCaller.errorsmap defined but never populated/used; no test exercises a genuine failingcall_tool().input; existing tests use flat fields only.ExecutionIDexists but no test asserts uniqueness/UUID format.--codeinline-flag test incode_cmd_test.go.--fileflag test.--input/--input-fileflag test.001-oas-endpoint-documentation (6/6 dropped)
internal/contracts/types.go, consolidated into one file instead of four the checker expected) — see un-tick-side note below; not proposed here since already correctly ticked.handleGetSecretRefs(server.go:4159) has no swag@Summary/@Routerannotation.handleGetConfigSecrets(server.go:4241) has no swag annotation.handleMigrateSecrets(server.go:4205) has no swag annotation.internal/httpapi/code_exec.gohas zero swag comments.handleSSEEvents(server.go:3843) has no swag annotation.001-update-version-display (6/6 dropped)
CheckNow()is tested).DefaultCheckInterval), not 4h as claimed; no such ticker test exists.scripts/test-api-e2e.shchecks.data.versionbut never asserts on theupdatefield.003-tool-annotations-webui (3/3 dropped)
SessionsTablecomponent; Dashboard.vue renders "Recent Sessions" inline instead.getToolCallsinfrontend/src/services/api.ts:628takes nosessionIdparam.sessions.created/updated/closedSSE events anywhere in server.go.004-management-health-refactor (9/9 dropped)
upstream restartCLI→REST→Service flow.doctor_cmd_test.gotests are unit tests of formatters, not an E2E test of thedoctorcommand.--allrestart test.logHTTPRequestdoes not exist anywhere in the repo.monitoring.go:288-306says "we intentionally do NOT stream container logs."redactToken/sanitizeAuthHeaderfunctions exist.006-oauth-extra-params (8/8 dropped)
runAuthLoginClientMode.printDaemonOAuthLoginResultprints a generic hint, not a verification summary.007-oauth-e2e-testing (4/5 dropped — T080 applied above)
auth_cmd.goat all.connection.go.displayAuthStatusPretty.008-oauth-token-refresh (6/6 dropped)
correlation_idanywhere ininternal/oauth/config.go,connection.go(handleCallback),discovery.go,persistent_token_store.go, orinternal/upstream/managed/client.go; feature entirely absent.009-proactive-oauth-refresh (21/21 dropped)
SSEEventTypehas nooauth.token_refreshed/oauth.refresh_failed.TestTriggerOAuthLogout*tests exist; only the earlier Login-variant test and an unasserted mock method.authLogoutCmdhas no--allflag (only onauthLoginCmd/authStatusCmd).oauthExpiredcomputed property; Login visibility uses the pre-existinghealthAction === 'login'.isAuthenticatedcomputed; Logout visibility uses the broader pre-existingcanLogout.triggerLogout()calls the store directly with no confirmation dialog.oauthErrorcomputed, no "Token Expired"/"Auth Error" badges, no badge markup at all.FormatRelativeTimefunction exists.ServerCard.vue.scripts/verify-oas-coverage.shcurrently exits 1 (74.3% coverage) — does not pass clean.v-if="isAuthenticated"but the real code usesv-if="canLogout"— outside this run's scope since T061 wasn't flagged by the checker, noted here for a human to look at separately.)011-resource-auto-detect (1/1 dropped)
doctor_cmd.gonever mentions "resource"; no diagnostic added.014-cli-output-formatting (1/1 dropped)
doctor_cmd.godoesn't import or useinternal/cli/output.016-activity-log-backend (1/1 dropped)
handleExportActivitydirectly.017-activity-cli-commands (8/8 dropped)
runActivityShow; only checks a raw HTTP 404.GetActivitySummary()method ininternal/storage/activity.go; computed inline elsewhere.runActivitySummaryor asserts formatted table output.019-activity-webui (1/1 dropped)
ActivityWidget.vueexists but is never imported anywhere (classic unwired component).021-request-id-logging (1/1 dropped)
--request-idflag.026-pii-detection (3/3 dropped)
scripts/test-api-e2e.shhas zero sensitive-data-detection scenarios.028-agent-tokens (1/1 dropped)
token_cmd_test.goonly covers list/create; missing JSON-list, revoke, and regenerate behavior tests.029-mcpproxy-teams (1/1 dropped)
.github/workflows/release.ymlare still commented out.040-server-ux (4/4 dropped)
preview=true/checkbox-based server list; import is a one-click action.NSOpenPanel/"Browse Other File..." button.042-telemetry-tier2 (12/12 dropped)
internal/oauth/coordinator.gohas zero references toRecordError/ErrCatOAuthRefreshFailed/ErrCatOAuthTokenExpired; not wired.docs/features/telemetry.mdhas noDO_NOT_TRACKmention at all.044-diagnostics-taxonomy (9/10 dropped — T090 applied above)
go generatedirective exists ininternal/diagnostics/registry.go.RecordFixAttempt/FixAttemptdon't exist inactivity_service.go/models.go.test-diagnostics-e2e.shnever starts mcpproxy or exercises a real broken server.run-all-tests.sh.doctor fixdry-run / rate-limit assertion in the e2e script.telemetry_payload_test.go.docs/architecture.mdhas no Diagnostics section;docs/api/rest-api.mddoesn't document the new per-server endpoints.044-retention-telemetry-v3 (3/3 dropped)
docs/features/telemetry.mdhas no Environment Classification/Activation Tracking/Launch Source sections despite the underlying code existing.056-output-schema-validation (1/1 dropped)
outputSchemamention inscripts/test-api-e2e.sh.057-in-proxy-profiles (1/1 dropped)
README.md/CLAUDE.mddoc updates missing (onlydocs/features/profiles.mdwas done).058-mcp-2026-upgrade (40/40 dropped)
resolveActiveProfileForList, list-only resolver gating, cross-client cancellation guard, identity-capture-in-AddBeforeAny, corrected session_store.go comment, era docs, decided "open product decision" items, dual-era discovery+call test, lifted legacy-protocol pin, modern-era health probes, MCP-* header emission,-32020/-32022validation,input_requiredhandling, cache-hints, tool-ordering determinism,$refrejection, trace-context capture, per-request log level, architecture docs, idle-session sweeper) is genuinely absent — none of the 40 candidates survived, all matched only via shared/reused files.073-activity-size-retention (1/1 dropped)
activity_max_size_mbdocumented indocs/features/activity-log.mdbut not indocs/configuration.md(task requires both).076-deterministic-tool-scanner, 077-scanner-simplification (×2), 083-discovery-profiler, 096-batched-call-tools, 097-stored-scripts, 098-tools-preflight (7/7 dropped)
.github/.golangci.ymlconfig file — no artifact proves this specific spec's gate was executed.Un-tick candidates rejected (66 of 68 UNRESOLVED/REMOVED — artifact confirmed to still exist, just relocated/renamed)
These were already correctly ticked; the checker's path-matching just couldn't find the renamed/consolidated artifact. No action needed, listed here per the process so nothing looks silently skipped.
internal/contracts/types.go(not 4 separate files).internal/httpapi/contracts_test.go:625.internal/management/service.go, not a separateservice_impl.go.internal/contracts/types.go:52-53.internal/server/e2e_oauth_resource_injection_test.go..md→.mdx, content intact.internal/server/e2e_test.goandinternal/httpapi/sse_activity_test.go.internal/security/detector_test.go:363.internal/security/paths.go, not apatterns/files.go.internal/httpapi/activity.go.frontend/src/views/Activity.vuerather than separate components.cmd/mcpproxy/activity_cmd.go/activity_cmd_test.go(nocommands/subpackage).mcp_auth_scope_test.goandscope_reveal_test.go.internal/runtime/activity_service_test.go.frontend/src/services/api.ts.frontend/src/views/AgentTokens.vue.teams_register.go→serveredition_register.go(Teams→ServerEdition rename, refactor(config): rename Teams→ServerEdition (internal/teams→serveredition, teams→server_edition key + alias) (MCP-1086) #603).internal/httpapi/patch_server_test.go.cmd/mcpproxy/startup_outcome_test.go.main.go;recordStartupOutcomelives instartup_outcome.go.internal/telemetry/payload_v2_test.go:155,185.internal/telemetry/telemetry.go.internal/telemetry/telemetry.go/id_rotation_test.go.internal/telemetry/notice_test.go:11.Codableconformance innative/macos/MCPProxy/MCPProxy/API/Models.swift.MCPProxyApp.swift:935-974, not a separateStatusBarController.swift.cmd/mcpproxy/doctor_fix_cmd_test.go:54.doctor_list_codes.go→doctor_listcodes_cmd.go.internal/runtime/runtime.go:3180.native/macos/MCPProxy/MCPProxy/Services/AutoStartService.swift.frontend/src/stores/servers.ts:429-445.internal/server/protocol_era_test.go.internal/storage/sessions_filter_test.go:97..json; real fixture is.jsonl(matches the task text itself).internal/server/mcp_direct_catalog_publish_test.go:65.Method
For every candidate: read the exact task text at its cited line in
tasks.md, located the code that would produce the promised behavior (not just a keyword match), confirmed it's real/wired/tested (not a stub, comment, skipped test, or unwired component), then ran a one-sentence adversarial counter-argument before accepting a TICK or UNTICK-CANDIDATE verdict. Work was parallelized across six independent verification passes (five over the 174possibly_builttick candidates, one over the 68 UNRESOLVED/REMOVED un-tick candidates); this body consolidates all six.Generated by Claude Code