feat(STATE-WP-0079): retire the suggestion-backlog surface (slice E1)
History is archived fleet-side, so the read surface has no remaining job. - api/routers/suggestions.py: whole prefix 410s with a pointer to intake and to the archive; the router drops from 176 lines to a stub - mcp_server: the 6 suggestion tools removed outright rather than stubbed -- a retired tool that still appears in the tool list costs every agent session context on every call, which is the opposite of retiring it - write_idempotency: 5 /suggestions rules dropped - dashboard: suggestions.md deleted, nav entry removed, reference.md and wsjf-triage.md updated; docs/suggestions.md rewritten as archive pointer - tests: two tests pinned the old read-live behaviour and now pin the retirement contract instead Tables stay: they are retire/archive in SHR-INV-0001 and are captured by the final dump at T06. Untouched, and worth knowing during cutover: ui-feedback.md / todo.md 'suggestions' are Shift+click dashboard feedback backed by technical_debt, a different entity that shares the word. E3 (dashboard-meta) is that page; its owner is state-hub-until-cutover so it retires at the T06 window, not now. Full suite 612 passed. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
98af485cd5
commit
fb363b37d3
13 changed files with 148 additions and 447 deletions
|
|
@ -1222,108 +1222,20 @@ def get_next_steps() -> str:
|
|||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Demand-weighted suggestion backlog (STATE-WP-0061)
|
||||
# Suggestion backlog — RETIRED (STATE-WP-0079-T05, slice E1)
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
@mcp.tool()
|
||||
def list_suggestions(
|
||||
domain: str | None = None,
|
||||
stage: str | None = None,
|
||||
rank: str | None = None,
|
||||
limit: int = 50,
|
||||
) -> str:
|
||||
"""List persisted suggestions, optionally ranked by WSJF."""
|
||||
return json.dumps(
|
||||
_get("/suggestions", {
|
||||
"domain": domain,
|
||||
"stage": stage,
|
||||
"rank": rank,
|
||||
"limit": limit,
|
||||
}),
|
||||
indent=2,
|
||||
)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def create_suggestion(
|
||||
domain: str,
|
||||
title: str,
|
||||
description: str | None = None,
|
||||
origin_ref: str | None = None,
|
||||
workplan_id: str | None = None,
|
||||
base_value: float = 3.0,
|
||||
job_size: float = 3.0,
|
||||
) -> str:
|
||||
"""Retired (CUST-WP-0061-T06, 2026-07-21): suggestions are read-only
|
||||
legacy. Use create_intake instead (kind: intake per canon/standards/
|
||||
work-record-types_v0.1.md). This call now 410s server-side; kept only
|
||||
so old callers get a clear error instead of a missing tool."""
|
||||
return json.dumps(_post("/suggestions", {
|
||||
"domain": domain,
|
||||
"title": title,
|
||||
"description": description,
|
||||
"origin_ref": origin_ref,
|
||||
"workplan_id": workplan_id,
|
||||
"base_value": base_value,
|
||||
"job_size": job_size,
|
||||
}), indent=2)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def vet_suggestion(suggestion_id: str, note: str, author: str | None = None) -> str:
|
||||
"""Retired (CUST-WP-0061-T06, 2026-07-21): suggestions are read-only
|
||||
legacy. There is no vet/route equivalent needed for intake — use
|
||||
route_intake directly. This call now 410s server-side."""
|
||||
return json.dumps(_post(f"/suggestions/{suggestion_id}/vet", {
|
||||
"note": note,
|
||||
"author": author,
|
||||
}), indent=2)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def decline_suggestion(suggestion_id: str, note: str, author: str | None = None) -> str:
|
||||
"""Retired (CUST-WP-0061-T06, 2026-07-21): suggestions are read-only
|
||||
legacy. Use close_intake(outcome="declined") instead. This call now
|
||||
410s server-side."""
|
||||
return json.dumps(_post(f"/suggestions/{suggestion_id}/decline", {
|
||||
"note": note,
|
||||
"author": author,
|
||||
}), indent=2)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def promote_suggestion_to_task(
|
||||
suggestion_id: str,
|
||||
note: str | None = None,
|
||||
task_title: str | None = None,
|
||||
author: str | None = None,
|
||||
) -> str:
|
||||
"""Retired (CUST-WP-0061-T06, 2026-07-21): suggestions are read-only
|
||||
legacy. Use route_intake then the promote-intake CLI
|
||||
(scripts/promote_intake.py --to task) instead. This call now 410s
|
||||
server-side."""
|
||||
return json.dumps(_post(f"/suggestions/{suggestion_id}/promote", {
|
||||
"note": note,
|
||||
"task_title": task_title,
|
||||
"author": author,
|
||||
}), indent=2)
|
||||
|
||||
|
||||
@mcp.tool()
|
||||
def bump_suggestion_relevance(
|
||||
suggestion_id: str,
|
||||
reason: str | None = None,
|
||||
author: str | None = None,
|
||||
) -> str:
|
||||
"""Retired (CUST-WP-0061-T06, 2026-07-21): suggestions are read-only
|
||||
legacy — relevance/WSJF scoring has no intake equivalent yet (ordering
|
||||
is lane+priority+age per the founder-reviewed architecture draft).
|
||||
This call now 410s server-side."""
|
||||
return json.dumps(_post(f"/suggestions/{suggestion_id}/bump-relevance", {
|
||||
"reason": reason,
|
||||
"author": author,
|
||||
}), indent=2)
|
||||
|
||||
# The six suggestion tools (list/create/vet/decline/promote/bump) were removed
|
||||
# on 2026-08-20. Mutations had 410'd since CUST-WP-0061-T06; the reads existed
|
||||
# only to keep the historical backlog reachable, and that history is now
|
||||
# archived at the-custodian/docs/archived-suggestion-backlog.md.
|
||||
#
|
||||
# Successor: the intake work-record entity — create_intake / route_intake /
|
||||
# close_intake, and scripts/promote_intake.py --to task. See
|
||||
# canon/standards/work-record-types_v0.1.md.
|
||||
#
|
||||
# Kept as a comment rather than as 410 stubs: a retired tool that still appears
|
||||
# in the tool list costs every agent session context on every call, which is the
|
||||
# opposite of retiring it.
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Dependency graph tools (S1.4)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue