docs(specs): commit specs 104/105 and put both on the roadmap - #1232
Merged
Conversation
Specs 104 (auto routing mode) and 105 (agent-token scope hardening) were written and cross-reviewed on 2026-09-07 but never committed; five merged PRs already cite 105 by name as their acceptance contract. This lands both and records them in roadmap.yaml so the DAG reflects what shipped and what is left. Spec 105 — agent-token scope hardening. The Spec 104 review verified the scoped-token promise against the code one surface at a time and found eight places where a legitimately narrow token could learn about or act on servers outside its grant. Five fix sessions ran from that review and merged on 2026-09-08: #1223 target tier, #1224 tail_log, #1225 set_profile, #1226 read_cache provenance, #1227 prompt owner and deleted-pin enumeration. Each was live-verified against a baseline binary and reviewed to a clean verdict. The epic records those five as done tasks and carries eight todo tasks, one per remaining FR group, taken from the "Follow-ups / Spec 105 gaps" checklists in those PR bodies: FR-005 retrieve_tools scoping, FR-008 direct publication identity, FR-010 refusal shapes, the FR-003/FR-004 selectable- profile predicate for unpinned tokens, FR-002 legacy cache invalidation, FR-007 log-record attribution, FR-009 producer-side identity, and the FR-011/013/014 regression suite. Spec 104 — auto routing mode. Measures the three candidate surfaces per session on the catalog that session will actually see and serves the richest rung under a token budget. It depends on 105: its FR-016 states the invariant those corrections make true. P1 is US1-4, P2 is US5-6. PR evidence sits on the child tasks rather than the epic, because gen-roadmap.py --check-github reads an all-merged epic pr: list as "this epic is done" and the scope-hardening epic is not. Also flips activity-storage-bounds to done: #1174 wired the 64KB write-path cap and #1214 bounded the per-server tool_calls buckets, stopped omitempty erasing configured zeros and added db compact, closing #1175 and #1176. The specs/README index rows are appended for both, though that table has been stale since 043 and does not list 044-103. Validation: gen-roadmap.py --check-github reports 0 errors. The one warning (mcp-2026-upgrade has no pr: link or child tasks) is pre-existing.
Deploying mcpproxy-docs with
|
| Latest commit: |
fe75aa7
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://e4fa14dd.mcpproxy-docs.pages.dev |
| Branch Preview URL: | https://docs-specs-104-105-roadmap.mcpproxy-docs.pages.dev |
Dumbris
enabled auto-merge (squash)
September 9, 2026 07:00
|
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
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.
Summary
Specs 104 (auto routing mode) and 105 (agent-token scope hardening) were written and cross-reviewed on 2026-09-07 but never committed. Five already-merged PRs cite 105 by name as their acceptance contract. This lands both specs and records them in
roadmap.yaml, so the DAG shows what shipped and what is left.Spec 105 — agent-token scope hardening
The Spec 104 review checked the scoped-token promise against the code one surface at a time and found eight places where a legitimately narrow token could learn about or act on servers outside its grant. Five fix sessions ran from that review and merged on 2026-09-08, each live-verified against a baseline binary built from
mainand reviewed to a clean cross-model verdict:call_tool_*requires the target tool's tier, fail closed on unresolved tierstail_logauthorizes the named server before lookup, non-disclosing refusalset_profilereports token ∩ profile; non-selectable reads as nonexistentThe epic records those five as
doneand carries eighttodotasks, one per remaining FR group, lifted from the "Follow-ups / Spec 105 gaps" checklists in those PR bodies. The two heaviest are FR-007 per-record log attribution (a/banda_bshare one log file; Docker cleanup matches by name prefix) and the FR-003/FR-004 selectable-profile predicate for unpinned tokens.Spec 104 — auto routing mode
Measures the three candidate surfaces per session, on the catalog that session will actually see, and serves the richest rung under a token budget. Depends on 105: its FR-016 states the invariant those corrections make true. P1 is US1–4 (rung selection, session stability, scoped measurement, routing API and
doctor); P2 is US5–6 (hysteresis reporting, tray and Web UI, telemetry).Notes
gen-roadmap.py --check-githubreads an epic whosepr:list is fully merged as "this epic is done", and the scope-hardening epic is not.activity-storage-boundsflipped to done. fix(activity): apply activity_max_response_size on the write path #1174 wired the 64KB write-path cap; fix(storage): bound the tool-call history, stop erasing configured zeros, add db compact #1214 bounded the per-servertool_callsbuckets, stoppedomitemptyerasing configured zeros and addeddb compact, closing omitempty silently erases explicitly-configured zero values on max_result_size_chars, activity_max_size_mb and tracing.sample_rate #1175 and server_*_tool_calls records are unbounded — the other ~432MB of the 940MB config.db in #1173 #1176.specs/README.mdgains a row for each spec, though that index has been stale since 043 and lists none of 044–103.Validation
python3 scripts/gen-roadmap.py --check-github→ 0 errors. The single warning (mcp-2026-upgradehas nopr:link and no child tasks) is pre-existing and untouched here.ROADMAP.mdregenerated; the pre-commit freshness hook passes.