Skip to content

v0.3.0 - #335

Closed
AnkushMalaker wants to merge 171 commits into
mainfrom
dev
Closed

v0.3.0#335
AnkushMalaker wants to merge 171 commits into
mainfrom
dev

Conversation

@AnkushMalaker

Copy link
Copy Markdown
Collaborator

No description provided.

01PrathamS and others added 30 commits December 5, 2025 17:44
… 'friend-backend' to 'chronicle-backend' across various files, including setup instructions, Docker configurations, and service logs.
Update documentation and configuration to reflect the transition from…

- Bypassing rule as its required upstream
* refactor memory

* add config

* docstring

* more cleanup

* code quality

* code quality

* unused return

* DOTTED GET

* Refactor Docker and CI configurations

- Removed the creation of `memory_config.yaml` from the CI workflow to streamline the process.
- Updated Docker Compose files to mount `config.yml` for model registry and memory settings in both services.
- Added new dependencies for Google API clients in `uv.lock` to support upcoming features.

* Update configuration files for model providers and Docker setup

- Changed LLM, embedding, and STT providers in `config.yml` to OpenAI and Deepgram.
- Removed read-only flag from `config.yml` in Docker Compose files to allow UI configuration saving.
- Updated memory configuration endpoint to accept plain text for YAML input.

* Update transcription job handling to format speaker IDs

- Changed variable name from `speaker_name` to `speaker_id` for clarity.
- Added logic to convert integer speaker IDs from Deepgram to string format for consistent speaker labeling.

* Remove loading of backend .env file in test environment setup

- Eliminated the code that loads the .env file from the backends/advanced directory, simplifying the environment configuration for tests.

* Enhance configuration management and setup wizard

- Updated README to reflect the new setup wizard process.
- Added functionality to load and save `config.yml` in the setup wizard, including default configurations for LLM and memory providers.
- Improved user feedback during configuration updates, including success messages for configuration file updates.
- Enabled backup of existing `config.yml` before saving changes.

* Enhance HTTPS configuration in setup wizard

- Added functionality to check for existing SERVER_IP in the environment file and prompt the user to reuse or enter a new IP for SSL certificates.
- Improved user prompts for server IP/domain input during HTTPS setup.
- Updated default behavior to use existing IP or localhost based on user input.
- Changed RECORD_ONLY_ENROLLED_SPEAKERS setting in the .env template to false for broader access.

* Add source parameter to audio file writing in websocket controller

- Included a new `source` parameter with the value "websocket" in the `_process_batch_audio_complete` function to enhance audio file context tracking.

---------

Co-authored-by: 0xrushi <6279035+0xrushi@users.noreply.github.com>
* refactor memory

* add config

* docstring

* more cleanup

* code quality

* code quality

* unused return

* DOTTED GET

* Refactor Docker and CI configurations

- Removed the creation of `memory_config.yaml` from the CI workflow to streamline the process.
- Updated Docker Compose files to mount `config.yml` for model registry and memory settings in both services.
- Added new dependencies for Google API clients in `uv.lock` to support upcoming features.

* Update configuration files for model providers and Docker setup

- Changed LLM, embedding, and STT providers in `config.yml` to OpenAI and Deepgram.
- Removed read-only flag from `config.yml` in Docker Compose files to allow UI configuration saving.
- Updated memory configuration endpoint to accept plain text for YAML input.

* Update transcription job handling to format speaker IDs

- Changed variable name from `speaker_name` to `speaker_id` for clarity.
- Added logic to convert integer speaker IDs from Deepgram to string format for consistent speaker labeling.

* Remove loading of backend .env file in test environment setup

- Eliminated the code that loads the .env file from the backends/advanced directory, simplifying the environment configuration for tests.

* Enhance configuration management and setup wizard

- Updated README to reflect the new setup wizard process.
- Added functionality to load and save `config.yml` in the setup wizard, including default configurations for LLM and memory providers.
- Improved user feedback during configuration updates, including success messages for configuration file updates.
- Enabled backup of existing `config.yml` before saving changes.

* Enhance HTTPS configuration in setup wizard

- Added functionality to check for existing SERVER_IP in the environment file and prompt the user to reuse or enter a new IP for SSL certificates.
- Improved user prompts for server IP/domain input during HTTPS setup.
- Updated default behavior to use existing IP or localhost based on user input.
- Changed RECORD_ONLY_ENROLLED_SPEAKERS setting in the .env template to false for broader access.

* Add source parameter to audio file writing in websocket controller

- Included a new `source` parameter with the value "websocket" in the `_process_batch_audio_complete` function to enhance audio file context tracking.

* Refactor error handling in system controller and update memory config routes

- Replaced ValueError with HTTPException for better error handling in `save_diarization_settings` and `validate_memory_config` functions.
- Introduced a new Pydantic model, `MemoryConfigRequest`, for validating memory configuration requests in the system routes.
- Updated the `validate_memory_config` endpoint to accept the new request model, improving input handling and validation.

---------

Co-authored-by: 0xrushi <6279035+0xrushi@users.noreply.github.com>
* obsidian support

* neo4j comment

* cleanup code

* unused line

* unused line

* Fix MemoryEntry object usage in chat service

* comment

* feat(obsidian): add obsidian memory search integration to chat

* unit test

* use rq

* neo4j service

* typefix

* test fix

* cleanup

* cleanup

* version changes

* profile

* remove unused imports

* Refactor memory configuration validation endpoints

- Removed the deprecated `validate_memory_config_raw` endpoint and replaced it with a new endpoint that accepts plain text for validation.
- Updated the existing `validate_memory_config` endpoint to clarify that it now accepts JSON input.
- Adjusted the API call in the frontend to point to the new validation endpoint.

* Refactor health check model configuration loading

- Updated the health check function to load model configuration from the models registry instead of the root config.
- Improved error handling by logging warnings when model configuration loading fails.

---------

Co-authored-by: 0xrushi <6279035+0xrushi@users.noreply.github.com>
Adds COPY src/ src/ step after dependency installation to ensure
all source files are available in the Docker image. This improves
build caching while ensuring complete source code is present.
* Enhance configuration management and add new setup scripts

- Updated .gitignore to include config.yml and its template.
- Added config.yml.template for default configuration settings.
- Introduced restart.sh script for service management.
- Enhanced services.py to load config.yml and check for Obsidian/Neo4j integration.
- Updated wizard.py to prompt for Obsidian/Neo4j configuration during setup and create config.yml from template if it doesn't exist.

* Refactor transcription providers and enhance configuration management

- Updated Docker Compose files to include the new Neo4j service configuration.
- Added support for Obsidian/Neo4j integration in the setup process.
- Refactored transcription providers to utilize a registry-driven approach for Deepgram and Parakeet.
- Enhanced error handling and logging in transcription processes.
- Improved environment variable management in test scripts to prioritize command-line overrides.
- Removed deprecated Parakeet provider implementation and streamlined audio stream workers.

* Update configuration management and enhance file structure, add test-matrix (#237)

* Update configuration management and enhance file structure

- Refactored configuration file paths to use a dedicated `config/` directory, including updates to `config.yml` and its template.
- Modified service scripts to load the new configuration path for `config.yml`.
- Enhanced `.gitignore` to include the new configuration files and templates.
- Updated documentation to reflect changes in configuration file locations and usage.
- Improved setup scripts to ensure proper creation and management of configuration files.
- Added new test configurations for various provider combinations to streamline testing processes.

* Add test requirements and clean up imports in wizard.py

- Introduced a new `test-requirements.txt` file to manage testing dependencies.
- Removed redundant import of `shutil` in `wizard.py` to improve code clarity.

* Add ConfigManager for unified configuration management

- Introduced a new `config_manager.py` module to handle reading and writing configurations from `config.yml` and `.env` files, ensuring backward compatibility.
- Refactored `ChronicleSetup` in `backends/advanced/init.py` to utilize `ConfigManager` for loading and updating configurations, simplifying the setup process.
- Removed redundant methods for loading and saving `config.yml` directly in `ChronicleSetup`, as these are now managed by `ConfigManager`.
- Enhanced user feedback during configuration updates, including success messages for changes made to configuration files.

* Refactor transcription provider configuration and enhance setup process

- Updated `.env.template` to clarify speech-to-text configuration and removed deprecated options for Mistral.
- Modified `docker-compose.yml` to streamline environment variable management by removing unused Mistral keys.
- Enhanced `ChronicleSetup` in `init.py` to provide clearer user feedback and updated the transcription provider selection process to rely on `config.yml`.
- Improved error handling in the websocket controller to determine the transcription provider from the model registry instead of environment variables.
- Updated health check routes to reflect the new method of retrieving the transcription provider from `config.yml`.
- Adjusted `config.yml.template` to include comments on transcription provider options for better user guidance.

* Enhance ConfigManager with deep merge functionality

- Updated the `update_memory_config` method to perform a deep merge of updates into the memory configuration, ensuring nested dictionaries are merged correctly.
- Added a new `_deep_merge` method to handle recursive merging of dictionaries, improving configuration management capabilities.

* Refactor run-test.sh and enhance memory extraction tests

- Removed deprecated environment variable handling for TRANSCRIPTION_PROVIDER in `run-test.sh`, streamlining the configuration process.
- Introduced a new `run-custom.sh` script for executing Robot tests with custom configurations, improving test flexibility.
- Enhanced memory extraction tests in `audio_keywords.robot` and `memory_keywords.robot` to include detailed assertions and result handling.
- Updated `queue_keywords.robot` to fail fast if a job is in a 'failed' state when expecting 'completed', improving error handling.
- Refactored `test_env.py` to load environment variables with correct precedence, ensuring better configuration management.

* unify tests to robot test, add some more clean up

* Update health check configuration in docker-compose-test.yml (#241)

- Increased the number of retries from 5 to 10 for improved resilience during service readiness checks.
- Extended the start period from 30s to 60s to allow more time for services to initialize before health checks commence.

* Add step to create test configuration file in robot-tests.yml

- Introduced a new step in the GitHub Actions workflow to copy the test configuration file from tests/configs/deepgram-openai.yml to a new config/config.yml.
- Added logging to confirm the creation of the test config file, improving visibility during the test setup process.

* remove cache step since not required

* coderabbit comments

* Refactor ConfigManager error handling for configuration file loading

- Updated the ConfigManager to raise RuntimeError exceptions when the configuration file is not found or is invalid, improving error visibility and user guidance.
- Removed fallback behavior that previously returned the current directory, ensuring users are explicitly informed about missing or invalid configuration files.

* Refactor _find_repo_root method in ConfigManager

- Updated the _find_repo_root method to locate the repository root using the __file__ location instead of searching for config/config.yml, simplifying the logic and improving reliability.
- Removed the previous error handling that raised a RuntimeError if the configuration file was not found, as the new approach assumes config_manager.py is always at the repo root.

* Enhance speaker recognition service integration and error handling (#245)

* Enhance speaker recognition service integration and error handling

- Updated `docker-compose-test.yml` to enable speaker recognition in the test environment and added a new `speaker-service-test` service for testing purposes.
- Refactored `run-test.sh` to improve the execution of Robot Framework tests from the repository root.
- Enhanced error handling in `speaker_recognition_client.py` to return detailed error messages for connection issues.
- Improved error logging in `speaker_jobs.py` to handle and report errors from the speaker recognition service more effectively.
- Updated `Dockerfile` to copy the full source code after dependencies are cached, ensuring all necessary files are included in the image.

* Remove integration tests workflow and enhance robot tests with HF_TOKEN verification

- Deleted the `integration-tests.yml` workflow file to streamline CI processes.
- Updated `robot-tests.yml` to include verification for the new `HF_TOKEN` secret, ensuring all required secrets are checked before running tests.

* Fix key access in system admin tests to use string indexing for speakers data

* Refactor Robot Framework tests and enhance error handling in memory services

- Removed the creation of the test environment file from the GitHub Actions workflow to streamline setup.
- Updated the Robot Framework tests to utilize a unified test script for improved consistency.
- Enhanced error messages in the MemoryService class to provide more context on connection failures for LLM and vector store providers.
- Added critical checks for API key presence in the OpenAIProvider class to ensure valid credentials are provided before proceeding.
- Adjusted various test setup scripts to use a centralized BACKEND_DIR variable for better maintainability and clarity.

* Refactor test container cleanup in run-robot-tests.sh

- Updated the script to dynamically construct container names from docker-compose services, improving maintainability and reducing hardcoded values.
- Enhanced the cleanup process for stuck test containers by utilizing the COMPOSE_PROJECT_NAME variable.

* Enhance run-robot-tests.sh for improved logging and cleanup

- Set absolute paths for consistent directory references to simplify navigation.
- Capture container logs, status, and resource usage for better debugging.
- Refactor cleanup process to utilize dynamic backend directory references, improving maintainability.
- Ensure proper navigation back to the tests directory after operations.

* Add speaker recognition configuration and update test script defaults

- Introduced speaker recognition settings in config.yml.template, allowing for easy enable/disable and service URL configuration.
- Updated run-robot-tests.sh to use a test-specific configuration file that disables speaker recognition for improved CI performance.
- Modified deepgram-openai.yml to disable speaker recognition during CI tests to enhance execution speed.

* Refactor speaker recognition configuration management

- Updated docker-compose-test.yml to clarify speaker recognition settings, now controlled via config.yml for improved CI performance.
- Enhanced model_registry.py to include a dedicated speaker_recognition field for better configuration handling.
- Modified speaker_recognition_client.py to load configuration from config.yml, allowing for dynamic enabling/disabling of the speaker recognition service based on the configuration.

* Add minimum worker count verification to infrastructure tests

- Introduced a new keyword to verify that the minimum number of workers are registered, enhancing the robustness of health checks.
- Updated the worker count validation test to include a wait mechanism for worker registration, improving test reliability.
- Clarified comments regarding expected worker counts to reflect the distinction between RQ and audio stream workers.

* Update configuration management and enhance model handling

- Added OBSIDIAN_ENABLED configuration to ChronicleSetup for improved feature toggling.
- Introduced speaker_recognition configuration handling in model_registry.py to streamline model loading.
- Refactored imports in deepgram.py to improve clarity and reduce redundancy.
* Refactor configuration management in wizard and ChronicleSetup

- Updated wizard.py to read Obsidian/Neo4j configuration from config.yml, enhancing flexibility and error handling.
- Refactored ChronicleSetup to utilize ConfigManager for loading and verifying config.yml, ensuring a single source of truth.
- Improved user feedback for missing configuration files and streamlined the setup process for memory and transcription providers.

* Fix string formatting for error message in ChronicleSetup
#250)

* added JWT issuers for audience auth for service interop and shared user accounts

* amended default value in line wioth code
* Refactor configuration management in wizard and ChronicleSetup

- Updated wizard.py to read Obsidian/Neo4j configuration from config.yml, enhancing flexibility and error handling.
- Refactored ChronicleSetup to utilize ConfigManager for loading and verifying config.yml, ensuring a single source of truth.
- Improved user feedback for missing configuration files and streamlined the setup process for memory and transcription providers.

* Fix string formatting for error message in ChronicleSetup

* Enhance chat configuration management and UI integration

- Updated `services.py` to allow service restart with an option to recreate containers, addressing WSL2 bind mount issues.
- Added new chat configuration management functions in `system_controller.py` for loading, saving, and validating chat prompts.
- Introduced `ChatSettings` component in the web UI for admin users to manage chat configurations easily.
- Updated API service methods in `api.ts` to support chat configuration endpoints.
- Integrated chat settings into the system management page for better accessibility.

* Refactor backend shutdown process and enhance chat service configuration logging

- Updated `start.sh` to improve shutdown handling by explicitly killing the backend process if running.
- Modified `chat_service.py` to enhance logging for loading chat system prompts, providing clearer feedback on configuration usage.
- Added a new `chat` field in `model_registry.py` for better chat service configuration management.
- Updated vector store query parameters in `vector_stores.py` for improved clarity and functionality.
- Enhanced the chat component in the web UI to conditionally auto-scroll based on message sending status.

* Return JSONResponse instead of raw result

* Refactor headers creation in system admin tests

* Make config.yml writable for admin updates
* Update cleanup_state.py

* Update index.html

---------

Co-authored-by: Ankush Malaker <43288948+AnkushMalaker@users.noreply.github.com>
@github-actions

Copy link
Copy Markdown

🎉 Robot Framework Test Results (No API Keys)

Status: ✅ All tests passed!

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 130
❌ Failed 0
📊 Total 130

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

* feat: unify desktop capture and vault sync

* feat: separate screen audio capture sources
@github-actions

Copy link
Copy Markdown

🎉 Robot Framework Test Results (No API Keys)

Status: ✅ All tests passed!

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 130
❌ Failed 0
📊 Total 130

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

@github-actions

Copy link
Copy Markdown

🎉 Robot Framework Test Results (No API Keys)

Status: ✅ All tests passed!

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 130
❌ Failed 0
📊 Total 130

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

@github-actions

Copy link
Copy Markdown

🎉 Robot Framework Test Results (No API Keys)

Status: ✅ All tests passed!

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 130
❌ Failed 0
📊 Total 130

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

…mitives

Reskin both web UIs to the Espresso palette (warm espresso neutrals +
terracotta brand + forest-green status; dark-capable) via a shared Tailwind
preset that REMAPS the color names, so thousands of existing gray-*/blue-*/
dark:* utilities reskin with no per-component churn.

- chronicle-espresso-preset.js (per app; separate Docker build contexts):
  full 50-950 ramps gray->espresso, blue->terracotta, green->forest,
  red/amber/purple->status, sky->info; warm shadows, DS fonts/radius.
- advanced/webui: new src/components/ui primitive library (Button, IconButton,
  Card, Input/Textarea, Select, Checkbox, Label, StatCard, Tabs, Alert, Modal
  + StateBadge/MetadataChip) with barrel; ~54 files migrated onto it
  (buttons/cards/modals/inputs/badges/tabs/alerts), behavior-preserving.
- speaker/webui: same palette preset; consolidated the duplicate App.css /
  components.css token systems into one; fixed 73 pre-existing tsc errors so
  `npm run build` is green for the first time.
- Theme stays system-preference-then-user-choice. Brand-blue hex literals in
  waveforms/sliders -> terracotta; categorical data-viz palettes left intact.

Both webui builds pass. Opus review pass applied fixes: Queue modal scroll
containers, Modal Escape/backdrop close-guards for form/in-flight modals,
Alert dismiss alignment, Checkbox disabled styling.
@github-actions

Copy link
Copy Markdown

🎉 Robot Framework Test Results (No API Keys)

Status: ✅ All tests passed!

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 130
❌ Failed 0
📊 Total 130

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

…o dev

# Conflicts:
#	backends/advanced/src/advanced_omi_backend/routers/modules/device_input_routes.py
#	backends/advanced/src/advanced_omi_backend/services/device_audio_ingest.py
#	backends/advanced/webui/src/pages/Timeline.tsx
#	extras/screenpipe-collector/chronicle_screenpipe/collector.py
#	extras/screenpipe-collector/init.py
#	extras/screenpipe-collector/tests/test_collector.py
#	extras/screenpipe-collector/tests/test_init.py
#	extras/vault-sync/README.md
#	extras/vault-sync/menu_linux.py
#	extras/vault-sync/service.py
…:workspaces/friend-lite into dev

# Conflicts:
#	backends/advanced/webui/src/pages/Timeline.tsx
#	extras/screenpipe-collector/chronicle_screenpipe/main.py
#	extras/vault-sync/README.md
#	extras/vault-sync/menu_linux.py
#	extras/vault-sync/menu_vault.py
#	extras/vault-sync/service.py
These were referenced by the espresso-branch DataAudit/AuditTable but only
existed untracked on Kraken; without them the webui does not typecheck.
The espresso branch and deploy checkpoint referenced modules that only
existed untracked in Kraken's working tree (audio_stream durability and
lifecycle, background suppression/bucket controllers and workers, the
chronicle-tray package, benchmark harness, tests, docs). Imported from
working-tree snapshot ce48af75 so the tree imports and typechecks.
…istry

Adopt the Kraken reconciliation: repo-root clients.py is the single
registry for client-node user services (tray, screenpipe-collector),
shared by services.py, updates.py, the node agent, and component CLIs.
vault-sync drops its menu/desktop code (cc26575 state); the tray lives
in extras/chronicle-tray.

Port the source-oriented audio controls (79354ea) that the
reconciliation dropped: per-source record/forward toggles, screen
capture toggle, and pause timers move into the tray's ScreenPipe
section, with the pure settings helpers and their tests carried over.
Fix collector main.py imports for the clients.py-delegating installer.
The LoCoMo/LongMemEval benchmark harness and the gemma-trial scripts are
experiment tooling, not app code — they came along with the Kraken WIP
import and don't belong in the tree.
Trained-model binaries, training metrics, diarization-repro debug data,
and one-off probe scripts live on the experiment machines, not in the
repo.
@github-actions

Copy link
Copy Markdown

🎉 Robot Framework Test Results (No API Keys)

Status: ✅ All tests passed!

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 129
❌ Failed 0
📊 Total 129

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

The tray unification dropped the View Logs dialog and its in-memory log
buffer, and my port of the ScreenPipe controls lost the Start/Stop
greying that tracks unit state. Both are back, with the log buffer now
setting the root level explicitly — basicConfig ignores level= once
handlers exist, so the buffer stayed empty under any prior config.
@github-actions

Copy link
Copy Markdown

🎉 Robot Framework Test Results (No API Keys)

Status: ✅ All tests passed!

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 129
❌ Failed 0
📊 Total 129

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

Vault sync and the other native client components now read AUTH_USERNAME,
AUTH_PASSWORD, and the vault settings from the repository-root .env
instead of a per-project extras/vault-sync/.env, so one file configures a
client node. On macOS the tray's launchd plist no longer bakes in a copy
of that environment — the tray reads the file itself, so edits take
effect on restart rather than being shadowed by the plist.

Completes the change whose tray-side half landed in 203c4b3.
Three independent problems kept the speaker-recognition workflow red on
every run since 2026-07-15.

1. BuildKit disabled but required (the actual CI failure)

   run-test.sh exported DOCKER_BUILDKIT=0, forcing the legacy builder,
   while the Dockerfile uses `RUN --mount=type=cache` for the uv cache:

     Step 10/21 : RUN --mount=type=cache,target=/root/.cache/uv uv sync ...
     the --mount option requires BuildKit.

   At the last green commit (087a106) the Dockerfile had a plain
   `RUN uv sync ...` with no --mount, and DOCKER_BUILDKIT=0 was already
   present. The cache mount was re-added later without dropping the
   export, so `docker compose up` died ~90s in on every run.

   Swap DOCKER_BUILDKIT=0 for BUILDKIT_PROGRESS=plain: the cache mount
   works and we keep the flat, greppable build log that disabling
   BuildKit was presumably meant to preserve. The workflow already runs
   docker/setup-buildx-action, so BuildKit was set up and then discarded.

2. `uv run` discarded the CPU torch selection

   run-test.sh synced `--extra cpu`, then bare `uv run` resynced to the
   default extra set, pulling PyPI CUDA torch plus 15 nvidia wheels on
   top of the CPU build - ~40s and ~12GB of pure waste per run. Pin the
   invocation to `uv run --extra cpu --group test`.

3. Phase 7 asserted a contract that never existed

   Phase 7 required a `words` field on every /diarize-and-identify
   segment, but that endpoint only diarizes and identifies - it has never
   transcribed, on main or dev. Phases 7-8 were added after the last green
   run (which had only Phases 1-6), so Phase 7 has never passed once.

   Point it at the structure the endpoint actually guarantees rather than
   bolting transcription onto a diarization endpoint. Word-level coverage
   is not lost: Phase 8 still validates it against
   /v1/diarize-identify-match, which is handed a transcript to match.

Verified locally against the real service in a container with real
HF/Deepgram credentials: 1 passed in 110.92s, with Phase 8 executing for
the first time. The BuildKit change is read directly from the CI error
and cannot be exercised locally (docker here is a podman shim that
accepts --mount regardless), so it needs a CI run to confirm.
@github-actions

Copy link
Copy Markdown

⚠️ Robot Framework Test Results (No API Keys)

Status: ❌ Some tests failed

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 128
❌ Failed 1
📊 Total 129

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

The workflow gated both its push and pull_request triggers on
[main, develop], but develop was retired in favour of dev years ago and
no longer exists on the remote (origin/HEAD -> origin/dev).

The practical effect was silent: PRs targeting dev never ran the speaker
recognition suite at all, so the only runs came from PRs into main. Point
both triggers at dev so the tests actually gate the branch we merge into.

ios-ipa-build.yml and android-apk-build.yml carry the same stale
reference and are left alone here to keep this change scoped.
The iOS and Android workflows had two overlapping gaps:

  push:         branches: [main, develop]   # develop no longer exists
  pull_request: branches: [main]            # dev never included at all

develop was retired in favour of dev, so the push trigger's second entry
was dead. Worse, the pull_request trigger only ever covered main, so app
changes merged into dev were never built - not by the stale entry, and
not by the PR gate either.

Four merged PRs touched app/** with base=dev and got no build: #319, #315,
#311, #233. Point both triggers at [main, dev].
@github-actions

Copy link
Copy Markdown

⚠️ Robot Framework Test Results (No API Keys)

Status: ❌ Some tests failed

ℹ️ Note: This run excludes tests requiring external API keys (Deepgram, OpenAI).
Tests tagged with requires-api-keys will run on dev/main branches.

Metric Count
✅ Passed 128
❌ Failed 1
📊 Total 129

📊 View Reports

GitHub Pages (Live Reports):

Download Artifacts:


View full workflow run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants