Conversation
Deploying mcpproxy-docs with
|
| Latest commit: |
cdb0f4e
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://cf30380c.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://claude-spec-gardener.mcpproxy-docs.pages.dev |
|
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 35592091387 --repo smart-mcp-proxy/mcpproxy-go
|
# Conflicts: # ROADMAP.md
# Conflicts: # ROADMAP.md
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.
17 ticks applied, 3 un-ticks proposed (not applied), 22 candidates examined-and-dropped as false alarms, run date 2026-09-21.
Scope of this run: the deterministic checker (
scripts/check-spec-evidence.py) flagged 193possibly_builttick candidates and 72 currently-ticked tasks with no resolvable artifact (67UNRESOLVED+ 5REMOVED) across 75 specs. Every one of those 265 candidates was hand-verified against the actual code (reading the cited files, tracing wiring, and — for the applied batch — independently re-running the cited tests) before any checkbox changed. 36 additionalRELOCATEDfindings were informational-only (work exists at a different path) and required no action.Applied ticks
All 17 applied ticks are in
specs/105-agent-scope-hardening/tasks.md, Phase 1 (Setup) and Phase 2 (PR A —scope-target-identity-producers). These tasks describe already-shipped, already-tested code that simply never got its checkbox flipped after merge. Each was independently re-verified by this run (not just trusted from the sub-review): the cited tests were re-run live and passed, and the cited symbols were re-grepped directly.internal/server/scope_fixture_test.go:41,55func agentCtx(allowed []string, perms []string, pin string) context.Context/func adminCtx()— present, used across the T00x test suiteinternal/server/scope_fixture_test.go:121func startCountingUpstream(t *testing.T, proxy *MCPProxyServer, rt *runtime.Runtime, server string, tools ...toolSpec) *countingUpstream— called 48× acrossinternal/server/*_test.gospecs/105-agent-scope-hardening/spec.md:6,107,108,126,128,132,166,168internal/runtime/tool_quarantine_identity_test.go+internal/server/mcp_call_tool_target_tier_test.go:1448-1466TestCheckToolApprovals_NamespacedTool_PendingUnderRawName/TestCallToolRead_NamespacedTool_NoOwnRecord_IsPendingNotInherited— re-run live, PASSinternal/runtime/lifecycle_identity_test.go:86,110+internal/index/bleve_rawname_test.goTestApplyDifferentialToolUpdate_ExactNameDisabledRecordSurvivesRerunand paired-raw-name docID tests — passinternal/server/mcp_direct_callability_test.go:255+internal/server/preflight_glue_test.go:460TestDirectDispatch_CollapsedOrAbsentApprovalIsPendingNotReady/TestPreflight_CollapsedPendingRecordIsPendingNotReady— re-run live, PASSinternal/server/mcp_call_tool_target_tier_test.go:1495+internal/server/mcp_code_execution_scope_test.go:84TestCallToolRead_UnresolvedIdentityOnKnownServer_RefusedForEveryCaller(full-tier + admin refused, zero upstream) — re-run live, PASSinternal/server/tool_gate_test.go:96,170TestToolGate_NoApprovalRecordUnderActiveGate_IsPending/TestToolGate_QuarantineDisabled_NoRecordStaysCallable— passinternal/server/scope_target_tier_matrix_test.go:297,338,444,561TestScopeTargetTier_RetrieveTable/_DirectTable/_NestedTable— generated 54-cell + direct + nested + paired-name tables, passinternal/server/scope_target_tier_matrix_test.go:338TestScopeTargetTier_RetrieveTable_ReadDestructive— re-run live, PASS (all 18 subtests)internal/config/tool_identity.go:39func RawToolName(tool *ToolMetadata) stringprefers theRawNamestamp — confirmed present, populated atinternal/upstream/core/client.go:396internal/runtime/tool_quarantine.go:504+internal/runtime/lifecycle.go:816,821toolName := config.RawToolName(tool)/oldToolsMap[config.RawToolName(tool)] = tool— confirmed liveinternal/index/bleve.go:188,240toolName := config.RawToolName(toolMeta)(docID) /RawName: strings.TrimPrefix(canonical, serverName+":")(read-side) — confirmed liveinternal/server/tool_gate.go:249+internal/preflight/classify.go:116-120lookupToolApprovalexact-wins + pending-on-nil-under-gate;ClassifyToolconsults the gate beforeReadyinternal/server/mcp.go:2687-2689+internal/jsruntime/runtime.go:146,612const PermissionTierUnresolved = "unresolved"; retrieve and nested both refuse on it — re-run live, PASSdocs/features/agent-tokens.md:152### Target tool tiersection replaces the old "destructive implies both" claim (confirmed absent via grep)internal/server/mcp_call_tool_target_tier_test.go:238-260extractToolNamehas zero remaining references ininternal/server/*.go(confirmed via grep)ROADMAP.md was regenerated (
python3 scripts/gen-roadmap.py) in a separate commit after the checkbox commit, per the pre-commit hook requirement — spec 105's progress moved from 82/112 (73%) to 99/112 (88%). ROADMAP.md and roadmap.yaml were not hand-edited.Proposed un-ticks (NOT applied)
These are currently
- [x]but no artifact proving the promised behavior could be found. Flagged for human review only — never un-ticked by this run.102-schema-deferredT026servers.changedevent published immediately afterNewServerreturns still reaches the direct rebuild)SubscribeEventshoisted beforeStartBackgroundInitialization,internal/server/server.go:380-395), but no test constructs aServerand asserts aservers.changedfired immediately after construction is not dropped. The existingmcp_direct_init_test.gocovers the related-but-distinct T024 (D15 initial-rebuild) claim, not this one.044-diagnostics-taxonomyT071FixIssuesMenu.swiftor any "Fix Issues" UI exists anywhere innative/macos/. The backing state propertyserversWithDiagnostic(State/AppState.swift:330) carries its own doc comment: "Nothing consumes this today, which is exactly why the drift would have gone unnoticed until something did." First-party confirmation the submenu was never built.044-diagnostics-taxonomyT080doctor --server <name>table/JSON/YAML output formattingcmd/mcpproxy/doctor_cmd_test.go's 17 test functions all cover pre-existing generaldoctoroutput formatting; none exercise the--serverflag (which does exist,doctor_cmd.go:79) or the new per-server diagnostics REST response format.Dropped by verification
Every other candidate the deterministic checker surfaced was examined and dropped. Grouped by why:
Tick candidates rejected (176 of 193) — task genuinely not built despite a matching filename/keyword hit:
058-mcp-2026-upgrade: all 40 rejected — Phase 3 onward (protocol-era-aware work: session statelessness,IsModernRequestgating, era-split tests, header validation, input_required detection, trace propagation, cache hints) genuinely has not landed; the evidence script matched on file existence, not the described behavior. Notably, this run also found the Phase-1 checkpoint note in tasks.md ("fails only TestProfile_SetProfileSessionScoped and TestProfile_SetProfileUnknown") no longer holds — both tests currently pass, because the client-facing protocol pin (T041, still unticked) hasn't been lifted. Not a checkbox issue, flagged for whoever picks up Phase 3.009-proactive-oauth-refresh: all 21 rejected — missing frontend fields/computeds (oauthExpired,isAuthenticated, expiry badges), missing CLI--alllogout loop, missing logout contract tests, missing OAS coverage (scripts/verify-oas-coverage.shcurrently fails at 74.3%).042-telemetry-tier2: all 12 rejected — real, wired production code (surface classifiers, error-category recording, startup-outcome tracking) consistently lacking the specific unit test the task promises;T057also foundErrCatOAuthTokenExpiredis defined but never recorded anywhere.044-diagnostics-taxonomy: all 9 rejected — nogo:generatecodegen forinternal/diagnostics(T004/T203), REST-level assertions and new-endpoint docs missing (T162/T202), e2e script never exercises the new endpoints (T034/T083).001-code-execution: all 13 rejected — sandbox error-propagation, execution-ID, andcode execCLI-flag tests all absent; only success-path coverage exists.004-management-health-refactor: all 9 rejected — named helper functions (logHTTPRequest,redactToken,sanitizeAuthHeader,monitorDockerLogsWithContext) don't exist at all; CLI E2E tests are unit-level formatting tests only.006-oauth-extra-params: 6 of 7 rejected — auth-status output is missing masking, redirect-URI display, and last-refresh display; only T045 (full auth URL printed on login) confirmed.017-activity-cli-commands: all 8 rejected — cited tests check unrelated things (cobra flag defaults, HTTP status codes) rather than the CLI behavior the task names; two are unverifiable "ran the linter/E2E suite" process claims.001-oas-endpoint-documentation: all 6 rejected — three new REST endpoint families (/secrets/*,/code/exec,/events) have no swagger annotations and are absent fromoas/swagger.yaml.001-update-version-display,008-oauth-token-refresh,007-oauth-e2e-testing,028-agent-tokens,040-server-ux,003-tool-annotations-webui,026-pii-detection,077-scanner-simplification, and 18 small specs: remaining rejections follow the same pattern — real underlying feature code with the specific test, doc section, or UI wiring the task promises still missing. Full per-task reasoning was captured during review; omitted here for length but available on request.017T059/T060,077T040/T041,083T041,096T016,097T014,098T032) are "run the full verification gate and confirm green" process tasks where the only cited evidence was the pre-existing, repo-wide.github/.golangci.yml— that file existing proves nothing about whether this spec's gate was actually run. Treated as unverifiable, left unticked.Un-tick candidates dropped (69 of 72) — ticked correctly, artifact just relocated or renamed, not missing:
The dominant pattern across
026-pii-detection(26),107-server-edition-sso-hardening(11),004-management-health-refactor(6),001-oas-endpoint-documentation(5),001-update-version-display(5),044-retention-telemetry-v3(6), and the rest: tasks.md cites a per-domain filename (e.g.internal/contracts/server.go,patterns/files.go,commands/activity.go) that was consolidated into a single file (internal/contracts/types.go,internal/security/paths.go,cmd/mcpproxy/activity_cmd.go) during refactors, or a Swift/native path was abbreviated with...in the task text. In every one of these 69 cases the actual behavior and its test were located, read, and confirmed to match the task's claim. Two (107T015/T016) are intentional deletion tasks, confirmed as correctly executed (the named symbols are genuinely gone, guarded by a regression test asserting their absence). One soft spot noted for a human, not a checkbox action:107T036's cache-TTL-clamp sub-clause is implemented with correct constants but has no dedicated unit test asserting the clamp behavior by name — everything else in that compound task is solidly tested.Notes
claude/spec-gardenertomainbefore starting (only already-merged history was discarded, confirmed viagit rebasedropping both prior commits as "patch already upstream").Generated by Claude Code