Implement Meeting Context V1 and extraction improvements

Introduce Meeting Context V1 with YAML schema, validation and template.
Support optional --meeting-context during chunk extraction.
Inject authoritative Meeting Context into extraction prompts.
Record Meeting Context provenance in extraction output.
Activate todos.md in shared prompt assembly.
Strengthen responsibility attribution and decision/todo boundaries.
Add focused Gold scenarios and validation tests.
Update architecture and pipeline documentation.
This commit is contained in:
2026-08-01 16:49:48 +02:00
parent 63075eaca9
commit 06f0e7e651
25 changed files with 1453 additions and 22 deletions
@@ -31,6 +31,9 @@ Original input files:
Reference material:
- `meeting_context.yaml`: manually maintained Meeting Context V1 scaffold for
reliable metadata. It can be validated and injected into chunk extraction
with `--meeting-context`; later pipeline stages are not connected yet.
- `reference/human_reference_protocol.md`: not currently included. No exact
existing human-written protocol file was found in the repository workspace.
@@ -0,0 +1,135 @@
schema_version: "1"
meeting:
meeting_id: "2026-07-27-projektprozess"
title: "Projektprozess für neue Projektideen in F&E, Marketing und Business Development"
language: "de"
date: 2026-07-27
objective: ""
notes: "Manuell gepflegter Kontext; noch nicht an die Pipeline angeschlossen."
participants:
- participant_id: "martin"
display_name: "Martin"
aliases:
- "Martin Tazl"
- "Herr Tazl"
role: "Leiter F&E und Technik"
department_id: "fe"
attendance_status: "present"
notes: null
- participant_id: "lars"
display_name: "Lars"
aliases:
- "Lars Vollmert"
- "Herr Vollmert"
roles:
- "Leiter EDD"
- "Leiter Product Management"
department_id: "pm"
attendance_status: "present"
notes: null
- participant_id: "malte"
display_name: "Malte"
aliases:
- "Jan-Malte"
- "Herr Schnau"
role: "Product Manager GreenLine"
department_id: "pm"
attendance_status: "present"
notes: null
- participant_id: "bjoern"
display_name: "Björn"
aliases:
- "Björn-Erik"
- "Herr Falkenau"
role: "Leiter Marketing"
department_id: "mk"
attendance_status: "present"
notes: null
mentioned_people:
- person_id: "jovana"
display_name: "Jovana"
aliases:
- "Jovana Husemann"
- "Frau Husemann"
- "Giovanna"
- "Jovanna"
- "Giovana"
role: "Leiterin Business Development"
department_id: "bd"
attendance_status: "not_present"
notes: null
organization:
name: "Naue GmbH & Co. KG"
departments:
- id: "fe"
name: "F&E"
aliases:
- "Forschung und Entwicklung"
- "Research and Development"
- id: "pm"
name: "Product Management"
aliases: []
- id: "mk"
name: "Marketing"
aliases: []
- id: "bd"
name: "Business Development"
aliases: []
abbreviations:
PM: "Product Management"
BD: "Business Development"
MK: "Marketing"
GF: "Geschäftsführung"
known_entities:
projects: []
products:
- "Bentofix"
- "Carbofol"
- "Combigrid"
- "Secugrid"
- "Secutex"
- "SoftRock"
systems: []
locations:
- "Adorf"
- "Bückeburg"
- "Espelkamp"
- "Malaysia"
technical_terms: []
context_rules:
participant_list_is_authoritative: true
do_not_infer_roles: true
do_not_infer_departments: true
do_not_infer_responsibilities: true
do_not_infer_attendance: true
mentioned_people_are_not_participants: true
@@ -0,0 +1,74 @@
# Meeting Context V1 template.
# This file is manually maintained. Enter only objective context that is known
# before or independently of model output.
schema_version: "1"
meeting:
# Human-readable title for the meeting.
title: ""
# Dominant meeting language, for example "de" or "en".
language: "de"
# Optional ISO date. Leave null if unknown.
date: null
# Optional meeting objective. Do not infer it from generated summaries.
objective: ""
# Optional neutral notes about context, scope or source material.
notes: ""
participants:
# participant_id must remain stable across corrections and later runs.
# Use aliases for alternative spellings, short names or Whisper variants.
# attendance_status distinguishes actual participants from mentioned persons.
# role and department may remain null; uncertain values must not be guessed.
- participant_id: ""
display_name: ""
aliases: []
role: null
department: null
attendance_status: "present"
notes: null
mentioned_people:
# People discussed or referenced but not present in the meeting.
# Mentioned people are not speakers and must not become responsible persons
# unless the meeting evidence explicitly assigns or confirms responsibility.
- person_id: ""
display_name: ""
aliases: []
role: null
department: null
attendance_status: "not_present"
notes: null
organization:
name: null
departments:
# Department ids should be stable. aliases capture spelling variants.
- id: ""
name: ""
aliases: []
abbreviations:
# Fill in only abbreviations that are known for this meeting context.
# Leave values empty when expansion is unknown.
PM: ""
BD: ""
MK: ""
GF: ""
known_entities:
# Relevant projects, products, systems, locations and technical terms.
# These lists provide vocabulary only; they must not imply responsibility.
projects: []
products: []
systems: []
locations: []
technical_terms: []
context_rules:
participant_list_is_authoritative: true
do_not_infer_roles: true
do_not_infer_departments: true
do_not_infer_responsibilities: true
mentioned_people_are_not_participants: true