feat(2.9.1): Die Begruendung zieht ins Deploymentcenter, die Datei wird erzeugt
Bis hierher galt eine Zweiteilung: Zustand im Deploymentcenter, Begruendung in docs/ROADMAP.md, verbunden ueber doc_anchor. Die Beschreibung der uebernommenen Eintraege sagte es woertlich - "Die Begruendung steht weiterhin in der Datei - hier steht nur der Zustand." Zwei Folgen, die erst im Betrieb sichtbar wurden: 1. Die Roadmap-Tafel kann die Begruendung nicht zeigen. Sie sieht die Datenbank; die Datei liegt auf einem Entwicklungsrechner. Im Seitenpanel stand deshalb nur doc_anchor als nicht anklickbarer Text mit dem Hinweis, er zeige auf etwas, das das WebUI nie zu sehen bekommt. 2. Schwerer: Die Beschreibung von dc_roadmap wies Agenten an, vor dem erneuten Vorschlagen eines zurueckgestellten Vorhabens "diesen Absatz" zu lesen. Ein Agent in polytrader oder clawddotnet kann ihn nicht lesen - er liegt in einem fremden Repository. Die Anweisung war nicht befolgbar. Dazu kam, dass cli/roadmap.php --check PHP braucht und auf dem Windows-Arbeitsplatz keines liegt: Die Haelfte der Pflegemaschinerie, die die Zweiteilung zusammenhalten sollte, lief dort nie. == Was sich aendert == bugtracker_items und roadmap_epics tragen rationale (Migration 020). Ein EIGENES Feld neben description, nicht statt dessen: description sagt, was gemeldet wurde, und kommt oft von einer fremden Maschine; rationale sagt, warum wir uns so entschieden haben. Zusammengelegt haette jede redaktionelle Ueberarbeitung den urspruenglichen Wortlaut der Meldung ueberschrieben, also die Grundlage, auf der entschieden wurde. Der Verlauf vermerkt nur, DASS die Begruendung sich geaendert hat und um wie viele Zeichen. Der ganze Absatz ein zweites Mal im Verlauf haette ihn nach der fuenften Ueberarbeitung unlesbar gemacht. == Der Weg herauf, einmalig == ?action=import_rationale liest eine mitgeschickte Roadmap-Datei. Drei Formen werden erkannt: Bereichsabschnitte, Vorhabensabschnitte und Tabellenzeilen. Die dritte ist kein Beiwerk - der Abschnitt "Verworfen" fuehrt seine zwoelf Ablehnungen als Tabelle, und ohne sie bliebe ausgerechnet das nicht am Item auffindbar, was am haeufigsten gebraucht wird: warum etwas schon einmal abgelehnt wurde. Ohne overwrite=true bleibt stehen, was im DC schon steht. == Der Weg herunter, dauerhaft == Ein zweites Markerpaar dc:rationale neben dc:roadmap. Bewusst ein zweites und keine Erweiterung des ersten: Zwischen den beiden steht in jeder gewachsenen Roadmap-Datei Handgeschriebenes - Einleitung, Leitlinie, Statuszeichen -, und ein einziger Block haette das beim naechsten Erzeugen verschluckt. ?action=render_file setzt beide Bloecke serverseitig ein, damit die Markersuche nur einmal umgesetzt ist. Sie hat eine Feinheit, die zweimal umgesetzt zweimal verschieden waere: Ein im Fliesstext ERWAEHNTER Marker darf nicht gefunden werden - die Einleitung dieser Datei erwaehnt jetzt beide. == Werkzeuge == scripts/dc.py roadmap-import und roadmap-write, in Python und nicht in cli/roadmap.php - sonst waeren sie auf dem Arbeitsplatz wieder nicht aufrufbar. roadmap-write behaelt die Zeilenenden der Datei bei. == Bestand == 35 Vorhaben und 6 Bereiche aus docs/ROADMAP.md uebernommen, 476 Zeilen handgepflegte Prosa durch den erzeugten Block ersetzt. Gegengeprueft auf Wortebene: Aus dem Fliesstext fehlt nichts, die einzigen Abweichungen sind die ersetzten Ueberschriften und die alte Einleitung. Kaertchen ohne hinterlegte Begruendung tragen auf der Tafel eine dezente Marke - erledigte nicht, dort waere sie ein Vorwurf ohne Adressaten. MCP-Adapter auf 1.3.0: dc_roadmap_set nimmt rationale, und die Beschreibung von dc_roadmap verweist nicht mehr auf eine Datei, die der Agent nicht erreichen kann. Geprueft: 7 neue Testfaelle, Suite gesamt 179 von 179. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
700be4614c
commit
8f514eb17a
@@ -61,7 +61,7 @@ const SERVER_NAME = 'deploymentcenter';
|
||||
//
|
||||
// 1.2.0: fields=compact|full fuer dc_roadmap (Vorgabe compact) und dc_search
|
||||
// (Vorgabe full). Neue Faehigkeit, abwaertsvertraeglich.
|
||||
const SERVER_VERSION = '1.2.0';
|
||||
const SERVER_VERSION = '1.3.0';
|
||||
|
||||
// Protokollfassungen, die dieser Adapter tatsaechlich bedient - neueste zuerst.
|
||||
//
|
||||
@@ -405,10 +405,15 @@ const TOOLS = [
|
||||
+ 'Naechstes dran" und "arbeitet schon jemand daran" - beides, bevor man anfaengt. '
|
||||
+ 'Der Zustand steht hier, nicht in einer Markdown-Datei; eine Datei im Repository '
|
||||
+ 'zeigt nur eine erzeugte Kopie, die aelter sein kann.\n\n'
|
||||
+ 'Was hier NICHT steht, ist die Begruendung: warum etwas so entschieden, '
|
||||
+ 'zurueckgestellt oder verworfen wurde. Die steht in der Projektdatei, auf die '
|
||||
+ 'doc_anchor verweist. Bevor ein zurueckgestelltes oder verworfenes Vorhaben '
|
||||
+ 'erneut vorgeschlagen wird, gehoert dieser Absatz gelesen.',
|
||||
+ 'Die Begruendung - warum etwas so entschieden, zurueckgestellt oder verworfen '
|
||||
+ 'wurde - steht seit 2.9.1 ebenfalls hier, im Feld rationale. Sie kommt nicht in '
|
||||
+ 'dieser Uebersicht mit, weil sie lang ist; dc_get_item liefert sie vollstaendig. '
|
||||
+ 'Bevor ein zurueckgestelltes oder verworfenes Vorhaben erneut vorgeschlagen wird, '
|
||||
+ 'gehoert sie gelesen.\n\n'
|
||||
+ 'Vorher stand sie ausschliesslich in einer Markdown-Datei im Repository des '
|
||||
+ 'Projekts, auf die doc_anchor verwies. Diese Anweisung war damit fuer jeden Agenten '
|
||||
+ 'ausserhalb genau dieses Repositorys nicht befolgbar - der Absatz lag auf einer '
|
||||
+ 'fremden Maschine. Die Datei wird jetzt aus diesen Feldern erzeugt.',
|
||||
annotations: { readOnlyHint: true },
|
||||
inputSchema: {
|
||||
type: 'object',
|
||||
@@ -472,9 +477,17 @@ const TOOLS = [
|
||||
type: 'string',
|
||||
description: 'Pflicht bei status="deferred": der Anlass, an dem es wieder ansteht.',
|
||||
},
|
||||
rationale: {
|
||||
type: 'string',
|
||||
description: 'Die Begruendung selbst: warum so und nicht anders, was dagegen '
|
||||
+ 'sprach, woran man spaeter erkennt, dass es richtig war. Markdown. Ersetzt '
|
||||
+ 'den bisherigen Absatz in der Projektdatei - die wird daraus erzeugt.',
|
||||
},
|
||||
doc_anchor: {
|
||||
type: 'string',
|
||||
description: 'Wo steht die Begruendung? z. B. "docs/ROADMAP.md#142-symbol-upload".',
|
||||
description: 'Historisch: der Verweis auf den Absatz in der Projektdatei. Seit '
|
||||
+ '2.9.1 steht die Begruendung in rationale; dieses Feld bleibt nur fuer alte '
|
||||
+ 'Verweise erhalten.',
|
||||
},
|
||||
},
|
||||
required: ['id'],
|
||||
|
||||
Reference in New Issue
Block a user