Public Access
Archive summary refinements and profile switching
PR and Push Build/Test / build-and-test (push) Successful in 6m37s
PR and Push Build/Test / build-and-test (push) Successful in 6m37s
This commit is contained in:
@@ -107,3 +107,37 @@ Meeting Assistant SHALL use the selected launch profile's summary-agent settings
|
||||
- **GIVEN** two launch profiles configure the same toggle hotkey
|
||||
- **WHEN** Meeting Assistant resolves launch profiles
|
||||
- **THEN** Meeting Assistant rejects the configuration before registering global hotkeys
|
||||
|
||||
### Requirement: Active recording can switch launch profiles
|
||||
Meeting Assistant SHALL allow a launch profile hotkey or named-profile recording toggle request to switch the active meeting to that profile while recording capture is active.
|
||||
|
||||
When switching profiles during an active meeting, Meeting Assistant SHALL keep the existing meeting note, transcript, assistant context, summary path, user notes, calendar metadata, projects, attendees, and assistant-context state.
|
||||
|
||||
When switching profiles during an active meeting, Meeting Assistant SHALL NOT create new meeting artifacts, SHALL NOT collect calendar metadata again, and SHALL NOT run the summary pipeline for the old profile segment.
|
||||
|
||||
When switching profiles during an active meeting, Meeting Assistant SHALL stop and drain the current speech recognition pipeline, append a transcript marker indicating the target profile, start a new speech recognition pipeline using the target profile's resolved options, and continue writing live transcription to the same transcript file.
|
||||
|
||||
When audio is captured while the old speech recognition pipeline is draining, Meeting Assistant SHALL buffer that audio and send it to the new profile's speech recognition pipeline after it is ready.
|
||||
|
||||
When switching profiles during an active meeting, Meeting Assistant SHALL clear run-local speaker label mappings for future transcript segments because backend speaker IDs can change across speech recognition processes. Already-written named transcript segments SHALL remain unchanged.
|
||||
|
||||
#### Scenario: Active meeting switches to named profile
|
||||
- **GIVEN** a meeting was started with the default launch profile
|
||||
- **WHEN** the user triggers launch profile `english` while recording is active
|
||||
- **THEN** Meeting Assistant keeps the existing meeting artifacts
|
||||
- **AND** drains the old speech recognition pipeline without running summary generation
|
||||
- **AND** appends a transcript marker for the profile switch
|
||||
- **AND** starts transcription with the resolved `english` profile
|
||||
- **AND** continues writing transcript segments to the same transcript file
|
||||
|
||||
#### Scenario: Captured audio is buffered while switching
|
||||
- **GIVEN** a meeting is switching from one launch profile to another
|
||||
- **WHEN** audio chunks are captured before the new speech recognition pipeline is ready
|
||||
- **THEN** Meeting Assistant buffers those chunks
|
||||
- **AND** sends the buffered chunks to the new speech recognition pipeline after it starts
|
||||
|
||||
#### Scenario: Switching clears future speaker mappings only
|
||||
- **GIVEN** a live speaker label was mapped to a named speaker before switching profiles
|
||||
- **WHEN** Meeting Assistant switches to another launch profile
|
||||
- **THEN** already-written transcript text keeps the named speaker
|
||||
- **AND** later transcript segments from the new pipeline do not reuse the old backend speaker label mapping
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
|
||||
## Purpose
|
||||
TBD - created by archiving change define-meeting-assistant-v1. Update Purpose after archive.
|
||||
|
||||
## Requirements
|
||||
### Requirement: Meeting Assistant generates meeting outputs
|
||||
Meeting Assistant SHALL generate a summary, decisions, and next steps from the meeting transcript, metadata, user notes, and assistant-discovered context.
|
||||
@@ -33,6 +32,10 @@ The summary pipeline SHALL expose tools scoped to the current meeting:
|
||||
- `read_usernotes`
|
||||
- `read_glossary`
|
||||
- `add_dictation_word`
|
||||
- `add_attendee`
|
||||
- `remove_attendee`
|
||||
- `override_speaker`
|
||||
- `delete_identity`
|
||||
- `write_summary`
|
||||
- `write_context`
|
||||
- `list_projects`
|
||||
@@ -67,6 +70,18 @@ When the summary note already has an `attendees` frontmatter property, Meeting A
|
||||
|
||||
The summary agent SHALL be able to read and write the assistant context body as its own notebook using overwrite, replace, and insert line modes.
|
||||
|
||||
The summary instructions SHALL tell the summary agent to use transcript evidence and screenshot OCR participant evidence to refine the meeting note attendee list conservatively, adding or removing attendees only when the evidence is clear.
|
||||
|
||||
The summary instructions SHALL tell the summary agent to call `override_speaker` only when it is very certain that a transcript speaker label belongs to a named speaker, such as from user notes, OCR with a correlating meeting timestamp, or very clear context cues.
|
||||
|
||||
When `override_speaker` is called with an existing transcript speaker label and a replacement speaker name, Meeting Assistant SHALL rewrite that speaker label in the transcript and record the override for final speaker identity processing.
|
||||
|
||||
When `override_speaker` is called without merge enabled and the transcript already contains the replacement speaker name as a speaker label, Meeting Assistant SHALL refuse the override. When merge is enabled, Meeting Assistant SHALL allow the override, rewrite the source speaker label to the replacement speaker name, and record the override as a speaker merge for final speaker identity processing.
|
||||
|
||||
The summary instructions SHALL tell the summary agent to call `delete_identity` only when it is certain that an existing speaker identity was wrongfully matched.
|
||||
|
||||
When `delete_identity` is called with an existing transcript speaker identity, Meeting Assistant SHALL rewrite transcript speaker labels for that identity to `Removed-<n>` and record the deletion for final speaker identity processing.
|
||||
|
||||
#### Scenario: Assistant context note is initialized
|
||||
- **WHEN** Meeting Assistant starts a meeting session
|
||||
- **THEN** it creates the assistant context note with frontmatter links to the meeting note, transcript note, and summary note
|
||||
@@ -123,6 +138,44 @@ The summary agent SHALL be able to read and write the assistant context body as
|
||||
- **THEN** Meeting Assistant preserves the existing assistant context frontmatter
|
||||
- **AND** writes only the replacement body content after that frontmatter
|
||||
|
||||
#### Scenario: Summary agent refines attendees from clear participant evidence
|
||||
- **GIVEN** assistant context OCR states that visible meeting participants are complete
|
||||
- **AND** the OCR result names a participant missing from the meeting note
|
||||
- **WHEN** the summary pipeline runs
|
||||
- **THEN** the summary agent can add that attendee to the meeting note through `add_attendee`
|
||||
|
||||
#### Scenario: Summary agent does not over-trim partial participant evidence
|
||||
- **GIVEN** assistant context OCR states that visible meeting participants are only a partial result
|
||||
- **WHEN** the summary pipeline runs
|
||||
- **THEN** the summary instructions tell the agent not to remove attendees solely because they are absent from that partial screenshot evidence
|
||||
|
||||
#### Scenario: Summary agent overrides a certain speaker label
|
||||
- **GIVEN** the transcript contains speaker label `Guest-01`
|
||||
- **AND** user notes or OCR evidence clearly identifies that speaker as `Sabrina`
|
||||
- **WHEN** the summary agent calls `override_speaker` with `Guest-01` and `Sabrina`
|
||||
- **THEN** Meeting Assistant rewrites the transcript speaker label to `Sabrina`
|
||||
- **AND** records the override for final speaker identity processing
|
||||
|
||||
#### Scenario: Summary agent cannot accidentally merge speakers
|
||||
- **GIVEN** the transcript contains speaker labels `Guest-01` and `Sabrina`
|
||||
- **WHEN** the summary agent calls `override_speaker` with `Guest-01` and `Sabrina` without merge enabled
|
||||
- **THEN** Meeting Assistant refuses the override
|
||||
- **AND** keeps the transcript unchanged
|
||||
|
||||
#### Scenario: Summary agent explicitly merges speakers
|
||||
- **GIVEN** the transcript contains speaker labels `Guest-01` and `Sabrina`
|
||||
- **AND** user notes or OCR evidence clearly proves they are the same person
|
||||
- **WHEN** the summary agent calls `override_speaker` with `Guest-01`, `Sabrina`, and merge enabled
|
||||
- **THEN** Meeting Assistant rewrites `Guest-01` transcript speaker labels to `Sabrina`
|
||||
- **AND** records the override as a merge for final speaker identity processing
|
||||
|
||||
#### Scenario: Summary agent deletes a wrong speaker identity
|
||||
- **GIVEN** the transcript contains speaker identity `Sabrina`
|
||||
- **AND** user notes or OCR evidence clearly proves that `Sabrina` was wrongfully matched
|
||||
- **WHEN** the summary agent calls `delete_identity` with `Sabrina`
|
||||
- **THEN** Meeting Assistant rewrites the transcript speaker label to `Removed-1`
|
||||
- **AND** records the deletion for final speaker identity processing
|
||||
|
||||
### Requirement: Meeting screenshots are captured into assistant context
|
||||
Meeting Assistant SHALL expose a configurable screenshot hotkey.
|
||||
|
||||
@@ -144,7 +197,7 @@ When OCR returns no crop coordinates or invalid crop coordinates, Meeting Assist
|
||||
|
||||
When screenshot OCR is not configured, Meeting Assistant SHALL skip OCR and keep the screenshot link.
|
||||
|
||||
The default OCR prompt SHALL explain that the image is from a meeting and ask the model to identify who is talking, who is presenting, what is presented, capture slide text in markdown, convert diagrams to Mermaid when possible, return crop coordinates only for confidently isolated presentation/shared-screen content, and otherwise describe the scene.
|
||||
The default OCR prompt SHALL explain that the image is from a meeting and ask the model to identify who is talking, who is presenting, what is presented, capture slide text in markdown, convert diagrams to Mermaid when possible, indicate whether visible people are clearly the exact meeting participants or only a partial result, return crop coordinates only for confidently isolated presentation/shared-screen content, and otherwise describe the scene.
|
||||
|
||||
#### Scenario: Screenshot is linked with meeting timestamp
|
||||
- **GIVEN** a meeting started at `10:00:00`
|
||||
@@ -170,6 +223,10 @@ The default OCR prompt SHALL explain that the image is from a meeting and ask th
|
||||
- **WHEN** the user captures a screenshot
|
||||
- **THEN** Meeting Assistant saves and links the screenshot without calling a model endpoint
|
||||
|
||||
#### Scenario: OCR reports whether visible people are complete or partial
|
||||
- **WHEN** Meeting Assistant uses the built-in screenshot OCR prompt
|
||||
- **THEN** the prompt asks the model to state whether the screenshot clearly shows exactly who is in the meeting or only a partial participant result
|
||||
|
||||
### Requirement: Summary agent instructions are configurable
|
||||
Meeting Assistant SHALL allow the summary agent initial prompt to be configured through application settings.
|
||||
|
||||
|
||||
@@ -201,6 +201,14 @@ Each speaker identity SHALL store a last-modified timestamp used by active-age f
|
||||
|
||||
The configured maximum snippet count per identity SHALL prevent unbounded growth.
|
||||
|
||||
Live speaker matching SHALL be read-only with respect to the speaker identity database. Candidate elimination, canonical promotion, transcription counters, stored snippet updates, and new unmatched identity creation SHALL happen only after transcription is finished and after automatic summary generation has completed, using the latest meeting note frontmatter.
|
||||
|
||||
When the summary agent records a speaker override from a diarized transcript label to a named speaker, final speaker identity processing SHALL attach the current run speaker sample to an existing identity with that name when one exists, or create a new canonical speaker identity with that name when none exists.
|
||||
|
||||
When a speaker override maps a current-run unnamed candidate to an existing named identity, Meeting Assistant SHALL merge the candidate's meeting reference and useful snippets into the named identity instead of leaving a duplicate candidate.
|
||||
|
||||
When the summary agent records that a speaker identity was wrongfully matched, final speaker identity processing SHALL delete the matching identity from the local speaker identity database so it cannot be matched again unless it is newly created in the future.
|
||||
|
||||
#### Scenario: Unknown speaker is learned from meeting attendees
|
||||
- **WHEN** a finished transcript contains an unmatched diarized speaker and the meeting note has attendees
|
||||
- **THEN** Meeting Assistant stores a new unnamed speaker identity with candidate names from the attendees that were not already matched in that meeting
|
||||
@@ -214,6 +222,32 @@ The configured maximum snippet count per identity SHALL prevent unbounded growth
|
||||
- **WHEN** Meeting Assistant creates, identifies, updates candidates for, stores snippets for, stores references for, or merges a speaker identity
|
||||
- **THEN** Meeting Assistant updates that identity's last-modified timestamp
|
||||
|
||||
#### Scenario: Final speaker identity learning uses summary-refined attendees
|
||||
- **GIVEN** the summary agent changes meeting note attendees during automatic summary generation
|
||||
- **WHEN** Meeting Assistant performs final speaker identity learning and candidate creation
|
||||
- **THEN** it uses the attendee list from the meeting note after the summary agent changes
|
||||
|
||||
#### Scenario: Speaker override attaches to existing identity
|
||||
- **GIVEN** the speaker identity database contains canonical speaker `Sabrina`
|
||||
- **AND** the summary agent records that transcript speaker `Guest-01` is `Sabrina`
|
||||
- **WHEN** final speaker identity processing runs
|
||||
- **THEN** Meeting Assistant stores the meeting reference and current speaker sample on Sabrina's identity
|
||||
- **AND** does not create a separate unnamed candidate for `Guest-01`
|
||||
|
||||
#### Scenario: Speaker override creates named identity
|
||||
- **GIVEN** the speaker identity database has no accepted name `Sabrina`
|
||||
- **AND** the summary agent records that transcript speaker `Guest-01` is `Sabrina`
|
||||
- **WHEN** final speaker identity processing runs
|
||||
- **THEN** Meeting Assistant creates a canonical speaker identity named `Sabrina`
|
||||
- **AND** stores the meeting reference and current speaker sample on that identity
|
||||
|
||||
#### Scenario: Speaker identity deletion removes a wrong match
|
||||
- **GIVEN** the speaker identity database contains canonical speaker `Sabrina`
|
||||
- **AND** the summary agent records that `Sabrina` was wrongfully matched
|
||||
- **WHEN** final speaker identity processing runs
|
||||
- **THEN** Meeting Assistant removes Sabrina's identity from the speaker identity database
|
||||
- **AND** the relabeled transcript uses `Removed-1` instead of `Sabrina`
|
||||
|
||||
### Requirement: Speaker identities can be merged diagnostically
|
||||
Meeting Assistant SHALL expose a diagnostic endpoint that merges duplicate speaker identities.
|
||||
|
||||
@@ -317,7 +351,7 @@ Meeting Assistant SHALL run live matching incrementally at the configured interv
|
||||
|
||||
When a speaker is matched during transcription, Meeting Assistant SHALL rewrite already-written live transcript segments for that diarized speaker and write future transcript segments using the canonical name.
|
||||
|
||||
Live speaker matching SHALL be read-only with respect to the speaker identity database. Candidate elimination, canonical promotion, transcription counters, stored snippet updates, and new unmatched identity creation SHALL happen only after transcription is finished, using the latest meeting note frontmatter.
|
||||
Live speaker matching SHALL be read-only with respect to the speaker identity database. Candidate elimination, canonical promotion, transcription counters, stored snippet updates, and new unmatched identity creation SHALL happen only after transcription is finished and after automatic summary generation has completed, using the latest meeting note frontmatter.
|
||||
|
||||
For backends that only provide diarization after finalization, Meeting Assistant SHALL defer speaker identity matching until finished diarization is available, extract candidate snippets from the completed temporary recording, complete identity matching, and only then allow summary generation to start.
|
||||
|
||||
@@ -391,3 +425,13 @@ When the Azure live streaming backend uses `ConversationTranscriber`, Meeting As
|
||||
- **WHEN** `AzureSpeech.PostProcessingOption` is empty
|
||||
- **THEN** Meeting Assistant does not set a post-processing option on the Azure Speech SDK configuration
|
||||
|
||||
### Requirement: Speech recognition can be restarted within one meeting
|
||||
Meeting Assistant SHALL support replacing the active speech recognition pipeline for a recording run while preserving the run's meeting artifacts and transcript session.
|
||||
|
||||
The replacement speech recognition pipeline SHALL use the target launch profile's resolved transcription options.
|
||||
|
||||
#### Scenario: Replacement pipeline uses target profile options
|
||||
- **GIVEN** a recording run started with one launch profile
|
||||
- **WHEN** the active transcription profile is switched to another launch profile
|
||||
- **THEN** the new speech recognition pipeline is created from the target profile options
|
||||
- **AND** it receives audio captured after the switch request and audio buffered during the switch
|
||||
|
||||
Reference in New Issue
Block a user