From cb8fe899915fe3be89f092ac7fdb6043f43c35e0 Mon Sep 17 00:00:00 2001 From: Mathias Date: Fri, 25 Sep 2026 07:35:06 +0200 Subject: [PATCH] chore(context): regenerate derived adapters from the canonical root context MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ContextAdapterDrift was firing for 13 repos. Picks up behaviour rule 7 ("Finish what's closable"), which landed in ~/dev/.context/AGENT.md and never reached any repo's derived files. Where mcp.json changes, it also picks up root MCP config the repo was stale on: brain/gitea/infra move from public hostnames to tailnet Serve URLs, and gitea's bearer changes from GITEA_MCP_TOKEN to DMABE_GITEA_API_TOKEN — gitea-mcp authenticates by pass-through and 401s on the former, so a harness syncing from the old file had a dead gitea server and no signal saying so. No literal secrets: mcp.json carries ${VAR} placeholders only. CLAUDE.md deliberately unchanged — context-sync writes it from PROJECT.md alone, since Claude Code walks up to ~/dev/CLAUDE.md for root context. Refs mathias/infra ContextAdapterDrift Co-Authored-By: Claude Opus 5 --- .context/mcp.json | 23 +++++++++++++++++++++++ .context/system-prompt.txt | 13 +++++++++++++ AGENTS.md | 13 +++++++++++++ 3 files changed, 49 insertions(+) diff --git a/.context/mcp.json b/.context/mcp.json index cd0f1bc..804acd0 100644 --- a/.context/mcp.json +++ b/.context/mcp.json @@ -3,6 +3,29 @@ "knowledge": { "url": "http://localhost:3100/mcp", "description": "Project knowledge base — vector + graph retrieval" + }, + "brain": { + "type": "http", + "url": "https://koala.tail30472e.ts.net:8443/mcp", + "headers": { + "Authorization": "Bearer ${BRAIN_MCP_TOKEN}" + } + }, + "gitea": { + "_comment": "gitea-mcp authenticates by PASS-THROUGH: the bearer is a Gitea PAT it validates against Gitea and then acts as. GITEA_MCP_TOKEN -- which this entry used until 2026-09-08 -- 401s against it, so every harness synced from this file had a dead gitea server and no signal saying so. Probed 2026-09-08: GITEA_MCP_TOKEN 401, DMABE_GITEA_API_TOKEN 200, on both the public and the Serve URL.", + "type": "http", + "url": "https://koala.tail30472e.ts.net:8446/mcp", + "headers": { + "Authorization": "Bearer ${DMABE_GITEA_API_TOKEN}" + } + }, + "infra": { + "_comment": "The bearer is belt-and-braces: this endpoint answers 200 with or without it, since Serve already limits reach to the tailnet. Sending it anyway means the day the server starts enforcing is not the day every harness breaks.", + "type": "http", + "url": "https://koala.tail30472e.ts.net:8444/mcp", + "headers": { + "Authorization": "Bearer ${INFRA_MCP_TOKEN}" + } } } } diff --git a/.context/system-prompt.txt b/.context/system-prompt.txt index f54e30e..83e1f3b 100644 --- a/.context/system-prompt.txt +++ b/.context/system-prompt.txt @@ -106,6 +106,19 @@ These rules apply to every task across every project, regardless of harness. revisit Y". Those are exactly the items that need a locator. If it is worth saying in a summary, it is worth writing where it can be found again without you. +7. **Finish what's closable — only involve me for a genuine call.** If a + tracker issue, PR, or checklist item is demonstrably resolved — the fix + landed, the state changed, you verified it live — close/merge/check it off + in the same turn. Don't leave it open "for the record" or park it waiting + on me to confirm something that already happened; that's bookkeeping, not + a decision. Reserve asking me (`AskUserQuestion`, a `DECISION NEEDED` + comment, or otherwise pausing) for when it's genuinely mine to call: + irreversible or prod/host-impacting actions, a real judgment call with no + clearly-better option, ambiguous intent, or anything secret-writes/ + destructive-git already gate. Before claiming something is closable, + verify it live (re-check the issue, re-run the command) rather than + trusting your own earlier summary (brain: `filed-issue-not-same-as-fixed`). + ## CAD sprint patterns Two CAD sprint archetypes (defs: brain `wiki/homelab/decisions/continuous-agentic-development-cad-concept-2026-06-16`): diff --git a/AGENTS.md b/AGENTS.md index 58300d2..970d238 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -101,6 +101,19 @@ These rules apply to every task across every project, regardless of harness. revisit Y". Those are exactly the items that need a locator. If it is worth saying in a summary, it is worth writing where it can be found again without you. +7. **Finish what's closable — only involve me for a genuine call.** If a + tracker issue, PR, or checklist item is demonstrably resolved — the fix + landed, the state changed, you verified it live — close/merge/check it off + in the same turn. Don't leave it open "for the record" or park it waiting + on me to confirm something that already happened; that's bookkeeping, not + a decision. Reserve asking me (`AskUserQuestion`, a `DECISION NEEDED` + comment, or otherwise pausing) for when it's genuinely mine to call: + irreversible or prod/host-impacting actions, a real judgment call with no + clearly-better option, ambiguous intent, or anything secret-writes/ + destructive-git already gate. Before claiming something is closable, + verify it live (re-check the issue, re-run the command) rather than + trusting your own earlier summary (brain: `filed-issue-not-same-as-fixed`). + ## CAD sprint patterns Two CAD sprint archetypes (defs: brain `wiki/homelab/decisions/continuous-agentic-development-cad-concept-2026-06-16`):