## MODIFIED 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. Meeting Assistant SHALL use a Microsoft Agent Framework pipeline for the first summary implementation. The pipeline SHALL use a configurable OpenAI-compatible endpoint, model, and API key source, including support for a direct key or an environment variable name. The summary pipeline SHALL retry transient model endpoint failures according to configurable reconnection attempts and delay settings. The summary pipeline SHALL expose tools scoped to the current meeting: - `read_meetingnote` - `read_transcript` - `read_context` - `read_usernotes` - `read_glossary` - `add_dictation_word` - `add_attendee` - `remove_attendee` - `override_speaker` - `delete_identity` - `write_summary` - `write_context` - `list_projects` - `list_projectfiles` - `read_projectfile` - `write_projectfile` - `search` All summary-agent read tools that return file-like content SHALL support either reading the whole file or reading a clamped inclusive 1-based line range when `from` and `to` are supplied. The summary pipeline SHALL write the summary note as a markdown artifact linked to the meeting note, transcript, and assistant context. The summary agent SHALL be able to read the meeting note, transcript, assistant context, glossary, and bound project files through tools. The summary agent SHALL be able to write the summary and assistant context files as its owned artifacts. The summary agent SHALL be able to read and write the assistant context body as its own notebook using append-by-default, explicit whole-body replacement, replace, and insert line modes. When the summary agent calls `write_context` without line edit arguments and without `replace_file`, Meeting Assistant SHALL append the supplied content to the assistant context body while preserving assistant context frontmatter. When the summary agent calls `write_context` with `replace_file` true, Meeting Assistant SHALL replace the assistant context body while preserving assistant context frontmatter. Meeting Assistant SHALL refuse ambiguous `write_context` calls that combine `replace_file` with line edit arguments. For summary-agent writes to any file other than the summary file and assistant context file, Meeting Assistant SHALL record an in-memory diff containing removed and added lines. Meeting Assistant SHALL use a diff implementation that can reduce whole-file rewrites to changed lines instead of treating every rewrite as a full replacement. When the summary agent finishes, Meeting Assistant SHALL append the collected external write diffs to the assistant context file. #### 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 #### Scenario: Assistant context body appends by default - **WHEN** the summary agent writes assistant context content without line arguments - **THEN** Meeting Assistant appends the content to the existing assistant context body - **AND** preserves the existing assistant context frontmatter #### Scenario: Assistant context body can be explicitly replaced - **WHEN** the summary agent writes assistant context content with `replace_file` set to true - **THEN** Meeting Assistant replaces the assistant context body - **AND** preserves the existing assistant context frontmatter #### Scenario: Assistant context body writes do not duplicate frontmatter - **WHEN** the summary agent writes assistant context content that accidentally includes a markdown frontmatter block - **THEN** Meeting Assistant preserves the existing assistant context frontmatter - **AND** writes only the replacement body content after that frontmatter #### Scenario: Assistant context write mode is ambiguous - **WHEN** the summary agent combines `replace_file` with `from`, `to`, or `insert` - **THEN** Meeting Assistant refuses the assistant context write #### Scenario: External project write is audited - **WHEN** the summary agent writes a bound project file - **THEN** Meeting Assistant records the changed removed and added lines for that project file - **AND** appends that diff to the assistant context after the agent finishes