Neue Pakete ai/internal/httpclient, ai/internal/auditclient, ai/internal/decisionaudit (Muster aus connect/internal/*, ENG-06): jede KI-Entscheidung (Modell, Prompt-Version, Eingabe-Referenz, Ergebnis) wird ueber Cores Audit-Ingest-Endpunkt (AUD-08, POST /audit/ingest) als Ereignis ai.decision.<function> gemeldet.
auditclient.Client bietet ausschliesslich Ingest (anfuegend) - keine Update-/Delete-Operation. Unveraenderlichkeit wird technisch bei Core per DB-Trigger durchgesetzt (AUD-02, Migration 0005_audit_append_only), bereits dort geprueft.
classify.Classifier erhaelt eine zusaetzliche, additive Methode ClassifyWithSchemaAudited (unveraenderte ClassifyWithSchema bleibt bestehen, keine bestehenden Aufrufer/Tests angefasst) als konkrete Demonstration der Kopplung. Schlaegt die Audit-Meldung fehl, gilt die Entscheidung als nicht protokolliert (fail-closed) statt still verloren zu gehen.
## Zusammenfassung
- Neue Pakete `ai/internal/httpclient`, `ai/internal/auditclient`, `ai/internal/decisionaudit` (Muster aus `connect/internal/*`, ENG-06): jede KI-Entscheidung (Modell, Prompt-Version, Eingabe-Referenz, Ergebnis) wird ueber Cores Audit-Ingest-Endpunkt (AUD-08, `POST /audit/ingest`) als Ereignis `ai.decision.<function>` gemeldet.
- `auditclient.Client` bietet ausschliesslich `Ingest` (anfuegend) - keine Update-/Delete-Operation. Unveraenderlichkeit wird technisch bei Core per DB-Trigger durchgesetzt (AUD-02, Migration `0005_audit_append_only`), bereits dort geprueft.
- `classify.Classifier` erhaelt eine zusaetzliche, additive Methode `ClassifyWithSchemaAudited` (unveraenderte `ClassifyWithSchema` bleibt bestehen, keine bestehenden Aufrufer/Tests angefasst) als konkrete Demonstration der Kopplung. Schlaegt die Audit-Meldung fehl, gilt die Entscheidung als nicht protokolliert (fail-closed) statt still verloren zu gehen.
## Pruefungen vor der Abnahme
| # | Pruefung | Ergebnis |
|---|---|---|
| 1 | Audit-Eintrag an Testentscheidung nachvollzogen | Bestanden. TestRecord_CreatesAuditEntryForDecision, TestClassifyWithSchemaAudited_RecordsDecisionAtCore |
| 2 | Verweis auf Modell-/Promptversion im Test bestaetigt | Bestanden. TestRecord_MetadataReferencesModelAndPromptVersion, TestClassifyWithSchemaAudited_RecordsDecisionAtCore |
| 3 | Unveraenderlichkeit des Eintrags im Test geprueft | Bestanden. TestRecord_RepeatedDecisionsCreateSeparateImmutableEntries (Client bietet nur anfuegendes Ingest, wiederholte Entscheidungen erzeugen getrennte, unveraenderte Eintraege) + TestClassifyWithSchemaAudited_AuditFailureFailsClosed |
Details siehe `ai/docs/GOV-05-PRUEFPROTOKOLL.md`. go build/go vet/go test im ai-Modul: alle Pakete ok, keine Regressionen.
## Nicht Bestandteil dieser Kachel
QA-05 (Datenschutz- & Governance-Pruefung) - nicht umgesetzt, nur die Audit-Schnittstelle vorbereitet.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Neue Pakete ai/internal/httpclient, auditclient, decisionaudit (Muster
aus connect/internal/* ENG-06): jede KI-Entscheidung (Modell,
Prompt-Version, Eingabe-Referenz, Ergebnis) wird ueber Cores
Audit-Ingest-Endpunkt (AUD-08) als ein Ereignis ai.decision.<function>
gemeldet. Der Client bietet ausschliesslich Ingest (anfuegend), keine
Update-/Delete-Operation - Unveraenderlichkeit wird technisch bei Core
per DB-Trigger (AUD-02) durchgesetzt.
classify.Classifier erhaelt eine zusaetzliche, optionale Methode
ClassifyWithSchemaAudited (unveraenderte ClassifyWithSchema bleibt
bestehen) als konkrete Demonstration der Kopplung; schlaegt die
Audit-Meldung fehl, gilt die Entscheidung als nicht protokolliert
(fail-closed) statt still verloren zu gehen.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
patrick
merged commit fc5a1df1ce into main2026-09-28 00:26:42 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Zusammenfassung
ai/internal/httpclient,ai/internal/auditclient,ai/internal/decisionaudit(Muster ausconnect/internal/*, ENG-06): jede KI-Entscheidung (Modell, Prompt-Version, Eingabe-Referenz, Ergebnis) wird ueber Cores Audit-Ingest-Endpunkt (AUD-08,POST /audit/ingest) als Ereignisai.decision.<function>gemeldet.auditclient.Clientbietet ausschliesslichIngest(anfuegend) - keine Update-/Delete-Operation. Unveraenderlichkeit wird technisch bei Core per DB-Trigger durchgesetzt (AUD-02, Migration0005_audit_append_only), bereits dort geprueft.classify.Classifiererhaelt eine zusaetzliche, additive MethodeClassifyWithSchemaAudited(unveraenderteClassifyWithSchemableibt bestehen, keine bestehenden Aufrufer/Tests angefasst) als konkrete Demonstration der Kopplung. Schlaegt die Audit-Meldung fehl, gilt die Entscheidung als nicht protokolliert (fail-closed) statt still verloren zu gehen.Pruefungen vor der Abnahme
Details siehe
ai/docs/GOV-05-PRUEFPROTOKOLL.md. go build/go vet/go test im ai-Modul: alle Pakete ok, keine Regressionen.Nicht Bestandteil dieser Kachel
QA-05 (Datenschutz- & Governance-Pruefung) - nicht umgesetzt, nur die Audit-Schnittstelle vorbereitet.
🤖 Generated with Claude Code