ChatGPT-Plugin modernisieren – Übergabe an einen neuen Chat
Erstellt: 26. Oktober 2026
Kritisch geprüft: 30. Oktober 2026, Repositorystand 7bcf2a644 vor diesem Dokumentationscommit
Zuletzt dokumentierter Produktions- und Hostbefund: 19./20. Oktober 2026
Repository: /home/enpasos/projects/skillpilot
Grundlage: Verbindliche Entscheidungen, aktueller Repository- und Artefaktabgleich sowie historische Betreiber- und Clientbefunde. Produktion und angemeldetes OpenAI-Portal wurden für diese Prüfung nicht erneut untersucht. Der lokale Kandidat hat sich seit dem letzten dokumentierten Deployment geändert.
1. Auftrag und Ziel
Wir modernisieren das ChatGPT-Plugin von SkillPilot. Ziel ist ein dauerhaftes Plugin „SkillPilot Coach“, ein zeitgemäßes Deployment und die Vorbereitung der offiziellen OpenAI-Veröffentlichung. Neben Desktop sollen Web und Mobilgeräte unterstützt werden, soweit die tatsächliche OpenAI-Verteilung und die jeweiligen Clients das ermöglichen.
Arbeitspräferenz aus dem bisherigen Chat: bevorzugt GPT‑6.1 Sol Ultra verwenden; Astra Ultra, wenn Sol für eine anspruchsvolle Prüfung nicht ausreicht.
Vor weiteren Änderungen Repository, Deployment und OpenAI-Verfahren erneut prüfen. SSH-, SCP- und Benutzerrechteprobleme gehören nicht zu dieser Übergabe.
2. Verbindlich getroffene Architekturentscheidungen
Wir haben uns ausdrücklich für ein dauerhaftes Plugin über zukünftige Paket-Major-Versionen hinweg entschieden.
| Bestandteil | Festlegung |
|---|---|
| Öffentlicher Name | SkillPilot Coach |
| Technischer Pluginname | skillpilot-coach |
| Dauerhafter MCP-Endpunkt / OAuth-Resource | https://mcp-openai.skillpilot.com/mcp |
| Widget-Origin | https://mcp-openai.skillpilot.com |
| Protected-Resource-Metadaten | https://mcp-openai.skillpilot.com/.well-known/oauth-protected-resource/mcp |
| OAuth-Issuer, unverändert | https://skillpilot.com/api/openai/v1 |
| Interner MCP-Adapter | /internal/openai/v1/mcp |
| Interner Contract-Major | weiterhin 1 |
| Vorbereitete Paketversion | 1.1.3 |
Die Paketversion kann später beispielsweise auf 2.x steigen, ohne ein neues öffentliches Plugin oder einen neuen öffentlichen Endpunkt anzulegen. Paket-SemVer und interner API-/MCP-Vertrag sind unterschiedliche Dinge. Änderungen an Tools müssen trotzdem zu den vom Host tatsächlich freigegebenen Definitionen passen.
Weitere ausdrückliche Entscheidungen:
- Die Coach-, MCP- und OAuth-Funktionalität bleibt im bestehenden Spring-Boot-Prozess. Keine neue parallele Coach-Serverarchitektur.
- Alte ChatGPT-Chats müssen nicht erhalten oder migriert werden. Neu verbinden und eine frische Lernsitzung starten ist akzeptiert.
- Dauerhafter Lernfortschritt bleibt erhalten.
- Beim Origin-Wechsel werden OAuth-Resource/Audience, Discovery, Widget-Origin und Edge-Konfiguration gemeinsam umgestellt.
- Keine parallelen alten und neuen öffentlichen MCP-Laufzeitendpunkte und keine doppelt akzeptierten Audiences.
- Provider-Isolation zwischen OpenAI, Claude usw. bleibt erhalten.
- Bereits veröffentlichte Pakete, historische Review-Artefakte und zuvor ausgelieferte hashadressierte UI-Ressourcen bleiben unverändert.
Der alte OpenAI-Review-Freeze ist aufgehoben. Die abgelehnte Version skillpilot-coach-v1 1.0.0 bleibt historische Evidenz, blockiert aber keine aktuelle Entwicklung. Die Historie liegt unter contracts/openai/skillpilot-coach-v1/review-history/1.0.0-rejected/.
Lokale Entwicklung und Vorbereitung, tatsächliches Deployment, Marketplace-Veröffentlichung, Portal-Einreichung und Portal-Veröffentlichung sind getrennte Vorgänge. Diese Übergabe erteilt keine zusätzliche Veröffentlichungsfreigabe.
3. OAuth und Transport
Für den neutralen Endpunkt wurde ein exakt festgelegtes natives Desktop-CIMD-Profil vorbereitet:
Client-ID:
https://chatgpt.com/oauth/codex/7yTcOAOqrumX/client.json
Callback:
http://127.0.0.1/callback/7yTcOAOqrumX
mit dynamischem Loopback-Port
Client-Authentifizierung: none
PKCE: S256
Policy-Version: native-cimd-stable-origin-v1
Das ist das native Desktop-Profil. Der geltende
SkillPilot-Vertrag sieht für die
gehostete Directory-Anbindung ein eigenes private_key_jwt-Profil mit exakt
registriertem Callback vor. Transitional Basic bleibt standardmäßig aus.
Die tatsächlich verwendete Client-Identität, Redirect-URI und
Signaturschlüssel-Anbindung müssen separat festgestellt und geprüft werden.
Native Werte nicht als Hosted-Konfiguration übernehmen oder Hosted-IDs erraten.
Die am 30. Oktober gelesene OpenAI-Submission-Dokumentation
akzeptiert private_key_jwt im Schema, beschreibt aber keine Einrichtung der
Signaturschlüssel. Sie fordert hierfür eine Klärung mit OpenAI. Die interne
Profilvorgabe belegt deshalb noch keine funktionierende Hosted-Verbindung.
Ein fehlgeschlagener vertraulicher Client darf nicht auf das öffentliche native Profil ausweichen. Der dynamische Port gilt nur für den exakt gebundenen Loopback-Host und Callback-Pfad, nicht als allgemeines Redirect-Wildcard.
Der Origin-Wechsel aktiviert einen neuen OAuth-Profil-Fingerprint und pensioniert den alten. Ein Rollback ist deshalb nicht bloß das Zurückkopieren einer alten Nginx-Konfiguration; dafür wären eine ausdrückliche neue Policy-Revision und frische Autorisierung nötig.
mTLS im Modus observe ist für die zunächst funktionierende Integration ausdrücklich akzeptiert. OAuth und Lernsitzungsisolation bleiben dabei verpflichtend.
4. Bereits erledigte Repository- und Deploymentarbeiten
Die Umstellung lief auf:
Branch:
codex/openai-stable-origin-cutover
Wichtige Commits:
06ab6928e0bedf55e9b7342460c3d7f5d659d01c
fa5320f49a8ec3f0c477a2672ad7fc464d07a2b7
57f34b0e49665a1b62e24b99076f07712b2d72b0
Merge nach main:
d26799c9e0d38f7d2e60a6a25de6a15718a12069
Der Branch wurde veröffentlicht und am 20. Oktober gemergt. Für den geprüften PR-Head waren alle 16 CI-Jobs erfolgreich. Lokale und serverseitige Source-Checkouts wurden anschließend auf main gebracht.
Der tatsächlich beobachtete produktive Backend-Build war zuletzt:
fa5320f49a8ec3f0c477a2672ad7fc464d07a2b7
Die damals zwischen diesem Build und dem PR-Merge hinzugekommenen Änderungen betrafen Dokumentationslinks. Diese Aussage gilt nur für diesen damaligen Zeitraum. Spätere Commits haben Backend-/Widget-Abhängigkeiten und die aktiven UI-Ressourcen verändert; ihr Produktionsrollout ist hier nicht belegt.
Beim Serverupdate wurden 52 lokal veränderte generierte Deck-Dateien erhalten und gesichert. Bei weiterer Arbeit keine Benutzeränderungen mit Reset/Clean verwerfen.
Zuletzt bestätigte technische Ergebnisse:
- Neutraler MCP-Origin mit gültigem TLS erreichbar.
- Unauthentifiziertes
/mcpantwortet erwartungsgemäß mit 401 und passender OAuth-Resource-Metadata-Challenge. - Backend-Readiness war
UP. - OAuth-Discovery und S256-Konfiguration geprüft.
- Alte öffentliche MCP-Hosts und nicht vorgesehene Aliase liefern
404. - Nginx-/mTLS-Vertragsprüfungen im Modus
observeerfolgreich. - Bestehende Claude-Anbindung und weitere Deployment-Smokes erfolgreich.
- Let's-Encrypt-Zertifikat für
mcp-openai.skillpilot.comausgestellt; damaliges Ablaufdatum 18. Januar 2027. - Automatische Zertifikatserneuerung war eingerichtet; Timer zuletzt aktiv und aktiviert.
Lokale Prüfungen umfassten unter anderem 446 Backend-Tests, zusätzliche Node-/Python-Tests sowie Release-, Dokumentations- und Edge-Prüfungen. Das belegt technische Prüfungen, keine vollständige ChatGPT-Clientabnahme.
Diese Angaben sind der protokollierte Stand vom 20. Oktober, keine aktuelle Live-Abnahme. PR #75 und sein Merge wurden bei der Dokumentenprüfung erneut abgeglichen; die historischen Testzahlen sind dadurch nicht erneut ausgeführte Tests. Ältere Abschnitte der Runbooks beschreiben teilweise noch die Vorbereitung vor dem Cutover.
5. Paket, ZIP und Veröffentlichungsstatus
Die kanonische neue Pluginquelle liegt unter:
ai/openai plugin/skillpilot-coach/
Der neue Skill liegt unter:
ai/openai plugin/skillpilot-coach/skills/skillpilot-coach/SKILL.md
Das am 20. Oktober vorbereitete Submission-ZIP für 1.1.3 liegt noch unter:
/home/enpasos/projects/skillpilot/tmp/openai-submission-skillpilot-coach-1.1.3/skillpilot-coach-1.1.3-submission.zip
Am 30. Oktober erneut als historische Datei geprüft:
Größe: 102481 Bytes
SHA-256:
539644b1fad63810f1d8f420c21bfeb16a9303ae452386c8a2c947f2aa019209
Es enthält die neue Identität, den neutralen Endpunkt, die explizite OAuth-/CIMD-Präferenz sowie Review-Materialien mit fünf positiven und drei negativen Testfällen. Es entspricht jedoch nicht mehr den aktuellen Quellen: audit-zip weist diese alte Datei inzwischen zurück. Die gleiche Paketversion 1.1.3 identifiziert bei diesem unveröffentlichten Kandidaten noch keine identischen Bytes.
Der aktuelle, mit openai_plugin_submission.mjs check geprüfte Bericht unter
ai/openai plugin/skillpilot-coach/submission/generated/submission-package.json
nennt dagegen:
Größe: 102788 Bytes
SHA-256: 4b7228edb860d714043841755036ffc844ecd02183962c5a1a8b6b1096e5f2cc
Status: PREPARED_NOT_SUBMITTED, ready: false
Für den Quellstand dieser Prüfung lautet der reproduzierbare lokale Einstieg:
node scripts/openai_plugin_submission.mjs check
node scripts/openai_plugin_submission.mjs package --out-dir tmp/openai-submission-handoff-review-2026-10-30
node scripts/openai_plugin_submission.mjs audit-zip --zip tmp/openai-submission-handoff-review-2026-10-30/skillpilot-coach-1.1.3-submission.zip
Alle drei Schritte wurden am 30. Oktober erfolgreich ausgeführt. Das neu erzeugte ZIP hat die oben angegebenen aktuellen Bytes. Eine vollständige neue Releaseprüfung einschließlich Backend-Build und sämtlicher Abnahmeprüfungen ist damit nicht dokumentiert.
Bei später geänderten Quellen ein neues Arbeitsverzeichnis verwenden und den
dazugehörigen neuen Bericht prüfen. Der ZIP-Abgleich bestätigt reproduzierbare
Bytes, keine inhaltliche Vollständigkeit oder Host-Abnahme. Insbesondere nennt
die aktuelle release-notes/1.1.3.md noch den Zwischenhash 7cfc661… und einen
Stand vor dem Origin-Cutover. Vor der nächsten Kandidatenfreigabe diese
Release-Notiz mit datierten Betriebsangaben und den tatsächlich gebundenen
Ressourcen abgleichen; anschließend die abhängigen Kandidaten-/Submission-
Artefakte neu erzeugen und prüfen.
Begleitdateien im Vorbereitungsverzeichnis:
submission-package.json
preparation.json
acceptance-guide.md
submission-plugin.json
Zusätzlich wurde ein lokaler Marketplace-Export vorbereitet:
tmp/openai-marketplace-skillpilot-coach-1.1.3/
Dateien unter tmp/ sind lokale Arbeitsartefakte. Ihre Verfügbarkeit und Hashes vor weiterer Verwendung prüfen; bei einem neuen Checkout sind sie nicht automatisch vorhanden.
Veröffentlichungsstatus nach vorhandenen Nachweisen
- Neues Paket: vorbereitet, nicht offiziell im OpenAI-Verzeichnis veröffentlicht.
- Vorbereitungsstatus:
PREPARED_NOT_SUBMITTED. - Neue Version 1.1.3 nicht als neue Git-Marketplace-Version veröffentlicht.
- Das am 30. Oktober erneut gelesene öffentliche Marketplace-Manifest nennt weiterhin
skillpilot-coach-v11.1.2. - Deren Veröffentlichungscommit war
cf5e23a7908412f3f28a1a66485d0e106c346154. - Bereits veröffentlichte Versionen und Tags nicht überschreiben.
review.demo_recording_urlwurde bewusst leer gelassen: Das alte Review-Video darf nicht als Demo des neuen Kandidaten ausgegeben werden.- Eine vollständige aktuelle Host-Abnahme und neue Demo fehlen im vorliegenden Nachweisstand.
Die lokalen Berichte belegen den Vorbereitungsstatus. Ob sich der tatsächliche Portalbestand seit dem Betreiberbericht geändert hat, muss im angemeldeten Portal geprüft werden.
Die Löschung des alten unveröffentlichten Portalentwurfs wurde vom Benutzer übernommen. Vor einer neuen Einreichung den tatsächlichen Portalbestand prüfen.
6. Submission-Verfahren und Plattformen
Die offizielle Submission-Dokumentation wurde am 30. Oktober erneut gelesen. Sie bestätigt den folgenden Ablauf für den öffentlichen Remote-MCP-Weg:
- Plugin-ZIP hochladen und Entwurf erstellen.
- Metadaten und Skills prüfen.
- MCP-Verbindung, Domainnachweis, OAuth und Tool-Erkennung vervollständigen.
- Review-Unterlagen, Testzugang und aktuelle Demo ergänzen.
- Zur Prüfung einreichen.
- Nach Freigabe ausdrücklich veröffentlichen.
Die Dokumentation verlangt für Änderungen einer bestehenden MCP-URL weiterhin Kontakt mit dem Support. Änderungen an Metadaten oder Skills benötigen ein neues ZIP. Nach erster Veröffentlichung werden geeignete Änderungen am gehosteten MCP-Server nach erfolgreichen Scans übernommen; neue oder zurückgehaltene Tooldefinitionen sind dadurch nicht automatisch freigegeben. Der Server muss die jeweils tatsächlich aktive Tooldefinition bedienen. Siehe Updates und MCP-Scans.
Die bisherige direkte Git-/Desktop-Installation ist kein Nachweis für Web- oder Mobile-Unterstützung. Ziel für diese Oberflächen ist die gehostete Verteilung über OpenAI. Verfügbarkeit und tatsächliches Verhalten müssen pro Oberfläche getestet werden.
Noch offen:
- Domain-Challenge am neutralen Origin:
https://mcp-openai.skillpilot.com/.well-known/openai-apps-challenge. Den im Portal tatsächlich vorgegebenen Origin und Token prüfen und exakt diesen Token als Klartext bereitstellen; keinen fremden Challenge-Token überschreiben. - Tatsächliches Hosted-OAuth-Profil ermitteln und korrekt konfigurieren.
- Aktuelle Demo aufnehmen.
- Review-Testfälle tatsächlich durchführen und Ergebnisse dokumentieren.
- Dedizierten Reviewer-Testzugang mit Beispieldaten über die vorgesehenen sicheren Portalwege bereitstellen; für zustandsbehaftete Fälle die in der Abnahmeanleitung vorgesehenen frischen Wegwerf-Lernstände über
CREATEverwenden. Keine echten Lernendenkonten, Secrets oder Lernsitzungs-IDs in ZIP/Git ablegen. - Portal-Einreichung und spätere Veröffentlichung.
- Reale Web-/iOS-/Android-Abnahme, soweit verfügbar.
Der Benutzer hatte sowohl die Plattform-Submission-Seite als auch den persönlichen ChatGPT-Plugin-Upload geöffnet. Für den ersten Funktionstest wurde der persönliche ZIP-Upload in ChatGPT verwendet bzw. angeleitet. Dieser Test ersetzt keine Verzeichnisveröffentlichung.
Der frühere Desktop-Test zeigte eine funktionierende manuelle Marketplace-Aktualisierung, aber keine beobachtete automatische Aktualisierung. Daraus nicht ableiten, dass automatische Updates grundsätzlich unmöglich seien. Für neue Tests die tatsächlich installierte Version erfassen.
7. Ursprüngliche Coach-Probleme und korrigierte Regeln
Es gab drei Probleme:
- Nach dem ersten Lernziel fehlte das Bild zum nächsten Ziel, besonders im Desktop-Voice-Modus.
- Nach erfolgreichem Abschluss fragte der Coach offen nach einem neuen Thema, obwohl das Backend bereits den Nachfolger bestimmt hatte.
- ChatGPT schlug als nächste Benutzernachricht direkt die Lösung auf eine Coach-Frage vor.
Die Coach-Anweisungen wurden für den Kandidaten korrigiert:
- Bei gewöhnlichen Lernzielen und bestandenen Prüfungen Mastery nach ausreichender fachlicher Evidenz vor der Erfolgsbestätigung über den autorisierten Schreibpfad speichern. Orientierung und Verified Recall behalten ihre eigenen Zustimmungs- und Abschlussregeln.
- Erst nach erfolgreichem Speichern behaupten, das Ziel sei gemeistert und gespeichert.
- Den exakten lokalisierten Titel des backendseitig bestimmten Nachfolgers anbieten, sofern der Lernende keine Pause oder Beendigung gewählt hat.
- Auf die Antwort des Lernenden warten.
- Erst nach Zustimmung das Nachfolgebild anzeigen und mit dessen Unterricht beginnen.
- Keine erneute offene Themenauswahl, wenn der Nachfolger bereits feststeht.
- Keine selbst verfassten Antwortvorschläge, die eine Lösung vorwegnehmen.
- Neutrale Aktionen wie „Hinweis“, „mehr Zeit“ oder „Pause“ sind möglich.
- Eine vom Coach oder Host gelieferte Antwort ist keine eigenständige Leistungsevidenz.
Eine widersprüchliche alte Regel, die schon das Nennen des Nachfolgers vor Zustimmung untersagte, wurde beseitigt.
ChatGPT-eigene Antwortvorschläge: Dafür wurde kein belegter Abschaltmechanismus in unserer Integration gefunden. Der Benutzer hat hierzu bereits ein Issue bei OpenAI eröffnet. Nicht behaupten, unsere Skill-Anweisungen könnten native ChatGPT-Vorschläge zuverlässig deaktivieren.
Im damals besprochenen Screenshot wurde der konkrete Nachfolger bereits korrekt angeboten und nach Zustimmung begonnen. Das ist die protokollierte positive Beobachtung dieses einzelnen Übergangs; der Screenshot wurde bei dieser Dokumentenprüfung nicht erneut als Host-Nachweis abgenommen.
8. Weiterhin offenes Problem: Nachfolgebild in Voice
Benutzerbericht aus dem am 20. Oktober untersuchten Durchlauf:
Nach Abschluss des Lernziels erscheint kurz „Display the learning-goal image“, danach wird das Bild nicht angezeigt.
Das erste Bild funktioniert zumindest in manchen Durchläufen. Im Cockpit sind Lernfortschritt und zugehörige Bilder vorhanden. Textmodus wurde früher als funktionierend gemeldet; Voice bleibt ungeklärt. Exakte Clientversion und installierte Paketbytes des letzten Durchlaufs sind nicht vollständig dokumentiert.
Entwicklung der Widget-Ressourcen
| Ressource | Änderung / Evidenz |
|---|---|
12762009bd8e… |
Ältere Ressource; frühere Voice-Fehler damit beobachtet |
08030bd956b6… |
Korrektur für bekannte Result-Envelopes und verspäteten widgetState; am 19. Oktober produktiv, Voice-Problem weiterhin vorhanden |
9c09821e96ab… |
Zusätzliche Korrektur einer Handshake-/Pending-Image-Race; am 20. Oktober produktiv beobachtet |
7cfc661b04b0… |
Späterer Repository-Zwischenstand nach SDK-Update; inzwischen ebenfalls unter retained |
870ddad58249… |
Am 30. Oktober im Repository aktive Goal-Ressource nach weiteren Abhängigkeitsänderungen; Produktions- und Host-Nachweis hier offen |
Die 08030…-Korrektur akzeptiert die bekannten MCP-/toolResponseMetadata-Envelopes. Persistierter widgetState dient nur noch als Bootstrap-Fallback, damit er kein neueres Ergebnis mit dem ersten Bild überschreibt.
Die 9c098…-Korrektur hält die Kompatibilitätszustellung auch bei fehlgeschlagenem Standard-Handshake offen. Ein noch ausstehendes Ergebnis soll nicht durch vorzeitiges Schließen verloren gehen.
Vollständiger zuletzt produktiv beobachteter Hash vom 20. Oktober:
9c09821e96abadfccb08d07b62367d47963420c3a5cc51021ba801e2d6019fe4
Davon verschieden ist der am 30. Oktober in OpenAiDeV1ContractMetadata und
der aktiven HTML-Datei geprüfte Repositoryhash:
870ddad5824924198038515ba9b051b1956a797267e5a24490e0589f8ee0e408
Der aktuelle Kandidat bindet diesen neuen Hash. Ein Test der alten
9c098…-Ressource nimmt ihn nicht mit ab. Paketversion, Quellrevision,
Backend-Build und tatsächlich geladene Ressourcen-URI gemeinsam erfassen.
Die aktuelle Ressourcenbindung steht in
ai/openai plugin/skillpilot-coach/release/line.json; die neue Bindung wurde
mit ee91563f8 am 26. Oktober eingeführt.
Die vorhandenen Ressourcen bleiben unverändert erhalten. Eine weitere Korrektur muss einen neuen Hash und eine neue Ressourcen-URI bekommen.
Serverseitige Evidenz
Bereits am 19. Oktober war unter Build fd1f419769c9… die Ressource 08030bd956b6… produktiv. Mastery wurde um 11:50:26.927 UTC bei Zustand 142 gespeichert, der Nachfolger-Renderer war um 11:51:35.894 UTC erfolgreich. Das fehlende Voice-Bild war in diesem Durchlauf also weder durch einen fehlenden Renderer-Aufruf noch durch die ganz alte Ressource erklärt.
Für den 20. Oktober wurde anschließend beobachtet:
| Zeit, UTC | Beobachtung |
|---|---|
| 11:37:06 | Mastery gespeichert, Zustand 143, Planübergabe |
| 11:37:44 | Kontext bietet Bild an |
| 11:37:48 | Aktive UI-Ressource 9c098… ausgeliefert |
| 11:37:53.474 | Renderer erfolgreich für Zustand 143 |
| 11:47:18.683 | Späterer Mastery-Schritt auf Zustand 144 |
Nach diesem letzten Schritt war im damals untersuchten Log kein weiterer Kontext-/Rendereraufruf sichtbar.
Diese beiden Abläufe nicht vermischen: Für Zustand 143 ist ein erfolgreicher Renderer belegt. Für die spätere 144-Sequenz fehlt dieser Nachweis.
Der Benutzer kennt die genaue Uhrzeit nicht mehr und bezeichnet den Fehler als seine letzte Aktivität im betreffenden Chat.
Betroffene Lernziele und Bildprüfung
Das zuletzt gezeigte Nachfolgethema war:
Druck in Flüssigkeiten und Gasen qualitativ beschreiben
Goal-ID: 5308de76-79f0-44f4-8cb7-fc9de4772217
Das vorherige Thema:
Aggregatzustandsänderungen im Teilchenmodell deuten
Goal-ID: 873c6371-4ffb-582b-8d8d-3f45f968ba08
Die öffentlichen JPEGs waren erreichbar und dekodierbar: HTTP 200, 2752 × 1536 Pixel. Auch lokale Chromium-Tests mit der tatsächlich ausgelieferten UI und dem Druck-Bild waren erfolgreich.
Öffentliche URL des Druck-Bildes:
https://skillpilot.com/assets/goal-visualizations/physik/5308de76-79f0-44f4-8cb7-fc9de4772217/5308de76-79f0-44f4-8cb7-fc9de4772217.jpg
Entscheidende Evidenzgrenze: Ein erfolgreicher Renderer, eine Ressourcenabfrage oder ein HTTP-200-Bild beweist nicht, dass ChatGPT das Widget ausführt und sichtbar darstellt. goalVisualizationOffered=false in der Renderer-Antwort ist erwartetes Verhalten des Präsentationsergebnisses, kein Beleg für ein fehlendes Bild.
Frühere OAuth-401- und notifications/initialized-Warnungen erklären den erfolgreichen Renderer nicht automatisch.
9. Zusätzlich reproduzierter Höhenfehler – noch nicht behoben
Eine unabhängige Untersuchung mit Sol und Astra reproduzierte einen konkreten Fehler im Kompatibilitätspfad:
- Bei erfolgreichem Standard-MCP-Apps-Handshake meldet die UI eine Höhe von 0 → 380 px.
- Bei abgewiesenem/fehlendem Handshake kann das Bild über
window.openai.toolOutputdennoch korrekt ankommen und laden. - Das innere Element ist dann sichtbar und etwa 380 px hoch.
- Es erfolgt aber keine Höhenmeldung an den Host.
- Ein äußerer Frame mit Anfangshöhe 0 bleibt dadurch unsichtbar.
Das ist ein lokal nachgewiesener Fehler, aber noch nicht die nachgewiesene Ursache des konkreten Voice-Vorfalls. Es ist nicht belegt, dass dieser Voice-Durchlauf genau diesen Handshake-/Frame-Zustand hatte.
Im am 30. Oktober geprüften Quellcode fehlt weiterhin eine
Kompatibilitäts-Höhenmeldung; die Bridge verwendet den Standard-SDK-Pfad mit
autoResize. Die damalige Messung 0 → 380 px stammt aus der älteren
9c098…-Untersuchung und ist keine neue Browsermessung der 870ddad…-Datei.
Möglicher Ansatz:
- Die am 30. Oktober erneut gelesene Component-Bridge-Referenz nennt
window.openai.notifyIntrinsicHeight(...)zur Höhenmeldung, zeigt dort aber keine vollständige Signatur. Vor Umsetzung Signatur und verfügbare Hostfähigkeit prüfen; den Standard-MCP-Apps-Pfad bevorzugen. - Bei fehlender nativer Größenmeldung einen zentralen, fähigkeitsabhängigen Ersatzpfad verwenden.
- Tatsächliche äußere Frame-Höhe testen, einschließlich verzögertem Ergebnis, Bildwechsel und Resize.
- Keine weiteren pauschalen Zeitlimits oder Voice-/User-Agent-Sonderfälle einbauen.
Für diesen Befund wurde noch kein weiterer Bildfix implementiert.
Lokale Diagnoseartefakte:
tmp/voice-pressure-runtime-audit/evidence.json
tmp/voice-pressure-runtime-audit/audit.mjs
tmp/voice-pressure-runtime-audit/native-pressure-build-query.png
Diese ignorierten Dateien sind historische lokale Diagnosehilfen. Das
audit.mjs liest die aktive HTML-Datei, erwartet aber fest den alten Hash
9c098…; gegen den heutigen Checkout bricht es deshalb bereits vor dem
Bildtest ab. Für eine erneute Reproduktion eine eigene Auditkopie ausdrücklich
an den aktuellen Hash und ein neues Ausgabeverzeichnis binden und den äußeren
Frame vermessen. Das Skript überschreibt sonst die alten Ergebnisse und
Screenshots. Bilddatei und Netzwerkzustand als weitere Testeingaben erfassen.
Noch benötigt wird eine zusammenhängende Beobachtung desselben Versuchs:
Renderer-Ergebnis
→ Ergebnis im Client angekommen?
→ Bildanfrage / Status
→ image load oder error
→ gemeldete Höhe
→ tatsächliche äußere Frame-Höhe / Sichtbarkeit
Ein bereinigter Nginx-Auszug wurde angefragt, aber noch nicht geliefert:
sudo awk '$7 ~ /^\/assets\/goal-visualizations\// {print $4,$5,$7,$9}' /var/log/nginx/access.log | tail -n 40
Dabei Cache und mögliche Cockpit-Aufrufe berücksichtigen; nicht jeden Bildabruf automatisch dem ChatGPT-Widget zuordnen. Ein fehlender Serverabruf beweist wegen Cache oder einer vorgelagerten Blockade nicht, dass der Client keinen Ladeversuch unternommen hat.
10. Wichtige Dateien, Werkzeuge und Runbooks
Widget:
ai/openai app/widget/src/goal-visualization-main.ts
ai/openai app/widget/src/goal-visualization-bridge.ts
ai/openai app/widget/src/goal-visualization.ts
Backend:
backend/src/main/java/com/skillpilot/backend/openai/mcp/de/v1/
Dort insbesondere OpenAiDeV1ContractMetadata, OpenAiDeV1McpContractAdapter und die Kontextprojektion prüfen.
Release-Werkzeuge:
scripts/openai_plugin_release.mjs
scripts/openai_plugin_submission.mjs
scripts/openai_marketplace_release.mjs
scripts/check_skillpilot_coach_behavior.mjs
Verbindliche Dokumentation, Pfade relativ zum Repository:
AGENTS.md
docs/deploy/openai-stable-origin.md
docs/concept/runtime-workflows/openai-plugin-versioning-and-lifecycle.md
docs/deploy/openai-personal-marketplace-release.md
docs/deploy/openai-plugin-v1-submission.md
docs/deploy/openai-plugin-v1-release.md
docs/deploy/openai-native-cimd.md
docs/deploy/claude-beta-chatgpt-release-strategy.md
Einige Dateinamen und historische Abschnitte enthalten weiterhin v1. Die aktuelle Entscheidung für skillpilot-coach und mcp-openai.skillpilot.com hat Vorrang vor historischen Beispielen. Insbesondere alte Client-IDs, Endpunkte, ZIP-Namen und Demo-Belege nicht ungeprüft übernehmen.
Offizielle Dokumentation für die nächste Prüfung:
Submission und Component Bridge wurden am 30. Oktober erneut geprüft. ChatGPT UI und Troubleshooting bleiben weiterführende Referenzen der damaligen Untersuchung; ihre aktuellen Inhalte wurden hier nicht erneut ausgewertet.
11. Empfohlene Fortsetzung
Die verbindliche Veröffentlichungsreihenfolge bleibt Claude-Beta → stabiler gemeinsamer Kandidat → fokussierte ChatGPT-Integrationsabnahme → Einreichung. Die ausdrücklich autorisierte Desktop-/Git-Arbeit und die Untersuchung beobachteter Fehler können parallel fortgesetzt werden. Für die Veröffentlichungsabnahme den unter Claude bewährten gemeinsamen Stand festhalten und durch den tatsächlichen ChatGPT-Adapter testen; Providerpakete und Hostnachweise bleiben eigenständig.
- Vor weiterer Umsetzung Repository, Deployment und Paket erneut abgleichen. Die lokalen Angaben wurden am 30. Oktober geprüft; die letzten Produktions-/Hostbefunde stammen vom 20. Oktober.
- Bildvorfall zeitlich und nach Zustand zuordnen; erfolgreichen Renderer bei
143und fehlenden späteren Aufruf bei144auseinanderhalten. - Die reproduzierte fehlende Höhenmeldung gezielt beheben, falls die aktuelle Implementierung sie noch enthält, und mit echten Frame-Höhen testen. Den Voice-Zusammenhang weiterhin gesondert nachweisen.
- Bei Widgetänderungen neue hashadressierte Ressource erzeugen und historische Bytes erhalten. Veraltete Release-Notiz berichtigen und abhängige Kandidaten-/Vertrags-/Submission-Artefakte passend aktualisieren und prüfen. Einen zusammengehörigen Stand tatsächlich deployen, bevor dessen Host-Abnahme beginnt.
- Frische Installation und neuen Chat mit mindestens zwei aufeinanderfolgenden Lernzielen testen: Text und Voice, sichtbare Bilder, Mastery-Persistenz, korrekter Nachfolger und Sitzungsfortsetzung. Geladene Version/Ressource sowie OAuth-Verbindung und Token-Erneuerung erfassen.
- Aktuelle Demo und echte Abnahmeprotokolle erstellen. Erwartete Ergebnisse nicht als bereits ausgeführte Tests eintragen.
- Bei beauftragter Portalvorbereitung den tatsächlichen Entwurf prüfen und Hosted-OAuth einschließlich Schlüsselanbindung, Domain-Challenge und MCP-Erkennung vervollständigen.
- Nach stabiler gemeinsamer Basis und belegter ChatGPT-Abnahme die jeweils autorisierte Einreichung und Veröffentlichung getrennt durchführen.
- Web und Mobilgeräte tatsächlich testen, bevor Unterstützung als bestätigt ausgewiesen wird.
12. Status auf einen Blick
| Bereich | Belegter Stand und zeitliche Grenze |
|---|---|
| Dauerhafte Plugin-/Endpoint-Architektur | Festgelegt und implementiert |
| Neutraler produktiver Origin | Am 20. Oktober umgestellt und technisch geprüft; heutiger Betrieb nicht erneut geprüft |
| Repository-Umstellung | PR #75 gemergt; 16 erfolgreiche Jobs des damaligen PR-Heads am 30. Oktober bestätigt |
| Neues Paket 1.1.3 | Aktuelle Quellen und neu erzeugtes ZIP am 30. Oktober abgeglichen; weiterhin PREPARED_NOT_SUBMITTED |
Altes ZIP 539644… |
Historisch erhalten; aktueller ZIP-Abgleich weist es zurück |
| Aktive Goal-Ressource | Repository 870ddad…; letzter dokumentierter Produktionsbefund 9c098… |
| Release-Notiz 1.1.3 | Nennt noch Zwischenstand; vor nächster Kandidatenfreigabe mitsamt abgeleiteten Artefakten aktualisieren |
| Neue Git-Marketplace-Veröffentlichung 1.1.3 | Öffentliches Manifest am 30. Oktober weiterhin bei 1.1.2 |
| Offizielle OpenAI-Veröffentlichung | Im Nachweisstand nicht erfolgt; Portal nicht erneut geprüft |
| Konkreten Backend-Nachfolger anbieten | Aktuelle Anweisungen geprüft; historisch berichteter positiver einzelner Screenshot |
| ChatGPT-eigene Lösungsvorschläge abschalten | Kein belegter Mechanismus; Benutzer-Issue bei OpenAI |
| Voice-Nachfolgebilder | Weiterhin offen |
| Fehlende Höhenmeldung im Kompatibilitätspfad | Lokal reproduziert, noch nicht behoben; Voice-Ursache unbewiesen |
| Vollständige Host-Abnahme und aktuelle Demo | Offen |
| Web-/Mobile-Unterstützung | Ziel der gehosteten Verteilung; tatsächliche Abnahme offen |