kean/Pulse
57.4
Weak · 27 September 2026
24.6k
lines of production code
Swift
primary language
4
measurements over time
What this system is
Pulse is a cross-platform debugging and logging framework for Apple ecosystems that captures console logs and network traffic. It provides a rich UI for inspecting, filtering, and searching these records, along with capabilities for remote logging and data export. The system supports automatic instrumentation via method swizzling and offers extensive customization for sensitive data redaction and network request mocking.
How it got here
2020–2021 — PulseUI feature expansion and platform support
10 changes.
The project transitioned from Herald to Pulse, upgrading to Swift 5.10 and adding visionOS support while cleaning up legacy test infrastructure. Significant work focused on enhancing the PulseUI module with platform-specific layouts, new inspector and console features, and utilities for customization and data sharing.
2022–2023 — Console UI overhaul and search enhancements
16 changes.
This period focused on a comprehensive redesign of the Pulse console interface, introducing advanced filtering, grouping, and sorting capabilities alongside a robust, scope-based search engine. Significant backend improvements included restructuring the LoggerStore for better configuration and memory management, enhancing network request redaction, and upgrading the remote logger with encrypted, bidirectional communication.
2024–2026 — Network debugging and UI enhancements
12 changes.
This period focused on expanding network inspection capabilities through automatic request logging, mocking, and detailed metrics visualization. The PulseUI interface was significantly upgraded with a unified file viewer, rich text search, and platform-specific rendering improvements. Additionally, the project modernized its build infrastructure by migrating the demo app to Swift Package Manager and adding automation scripts.
Features
Added automatic network request logging via method swizzling
The PulseProxy module now includes a \URLSessionSwizzler\ that enables automatic logging and remote debugging of network requests by swizzling \URLSessionTask\ methods. This allows users to capture request lifecycle events (creation, data receipt, completion) without manual instrumentation, though it relies on internal Objective-C runtime mechanisms that may be fragile across SDK versions.
Sources/PulseProxy · high confidence
Added build, test, and lint automation scripts
New shell scripts have been added to the .scripts directory to automate the development workflow. The build.sh script compiles the Pulse Xcode scheme for specified destinations, while test.sh handles building for testing and running unit tests across those destinations. A new lint.sh script executes SwiftLint if available, supported by install\_swift.sh which downloads the pre-compiled SwiftLint binary (version 0.39.1), and validate.sh runs the linter in strict mode.
.scripts · high confidence
Added network request mocking capability via MockingURLProtocol
The NetworkDebugger module now includes a new MockingURLProtocol that allows developers to intercept and mock network responses for debugging purposes. This feature automatically registers with URLSession instances to swap out real network calls with predefined mock data, supporting features like request skipping and limited execution counts. The implementation uses method swizzling to inject the protocol into all URLSession configurations, enabling seamless integration without requiring manual setup in the app's networking layer.
Sources/Pulse/NetworkDebugger · high confidence
Console now supports per-task customization via ConsoleDelegate
The Console view now accepts an optional ConsoleDelegate, allowing integrators to customize how individual network tasks are rendered. This new protocol enables overriding display settings, injecting custom context menu items, replacing the main cell content or response body viewers, adding sections to the network inspector, and redacting sensitive strings (such as URLs, headers, or task descriptions) before they appear in the UI. The ConsoleEnvironment now consults this delegate to apply these customizations, falling back to global UserSettings when no delegate is provided.
Sources/PulseUI/Features/Console · high confidence
Expanded URLSession tracking with Swift Concurrency and WebSocket support
The \URLSessionProxy\ now supports a comprehensive set of \URLSession\ APIs, including Swift Concurrency methods (async/await for data, upload, download, and bytes), WebSocket tasks, and stream tasks. The underlying \URLSessionProtocol\ has been updated to conform to \Sendable\ to support modern concurrency safety, and the proxy implementation now intercepts and logs completion-based callbacks for these new task types, ensuring consistent network request logging across both delegate-based and modern async usage patterns.
Sources/Pulse/URLSessionProxy · high confidence
Introduce unified FileViewer for previewing network response content
The FileViewer feature has been consolidated into a new, platform-agnostic SwiftUI view that renders network response data. Users can now view images, PDFs, and rich text (JSON, HTML, etc.) through a single interface that adapts to the content type. The implementation supports iOS, tvOS, macOS, watchOS, and visionOS, with specific handling for PDFs on platforms that support PDFKit and fallback placeholders where native preview is unavailable.
Sources/PulseUI/Features/FileViewer · high confidence
Introduction of custom console filtering and Objective-C exception safety
Users can now apply custom text-based filters to console log messages and network tasks, targeting specific fields like URL, status code, or log level with options for case sensitivity and negation. The filter criteria are persisted and combined using AND/OR logic to refine the displayed data. Additionally, the PulseObjCHelpers module was added to safely catch Objective-C exceptions during execution, converting them into recoverable NSError objects to prevent crashes.
Sources/PulseObjCHelpers, Sources/PulseUI/Features/Filters/Predicates · high confidence
New Foundation and SwiftUI extension utilities for PulseUI
This change introduces a new set of extension files in Sources/PulseUI/Extensions to support the Pulse 5.2 integration. It adds helper methods for AttributedString and NSMutableAttributedString to simplify text formatting, provides human-readable descriptions for TLS cipher suites, protocol versions, and URL error codes, and includes CoreData utilities for fetching distinct values. Additionally, it introduces SwiftUI extensions for platform-specific color separators, keyboard state observation, and a backport mechanism for navigation titles and button roles to ensure compatibility across iOS, macOS, tvOS, watchOS, and visionOS.
Sources/PulseUI/Extensions · high confidence
New Pulse integration demo app with Alamofire, Moya, and URLSession examples
A new demo application has been added to demonstrate how to integrate Pulse with various networking libraries. The app includes specific integration examples for Alamofire and Moya using event monitors, as well as manual and automated URLSession integration patterns. It also features a SwiftUI view for browsing debug analytics and provides a main menu to showcase PulseUI components like the ConsoleView in both push and modal presentations.
Demo/Sources · high confidence
New UI components and enhanced sharing capabilities
This update introduces several new SwiftUI views to improve the user interface and functionality. A new \Checkbox\ component provides a consistent toggle control across platforms, while \TextView\ enables rendering of attributed strings on all supported systems. The \ImageViewer\ now displays higher-resolution thumbnails and detailed image metadata. A new \ShareStoreView\ and its associated \ShareStoreViewModel\ allow users to export and share log stores with configurable options such as session selection and output format. Additionally, \ContextMenus\ have been added to provide quick actions for messages and network tasks, and a \LoggerStoreSizeChart\ visualizes storage usage.
Sources/PulseUI/Views · high confidence
New console message details and metadata views
The MessageDetails feature now includes dedicated SwiftUI views for displaying console log information. ConsoleMessageDetailsView presents the main log message content using a rich text renderer, with platform-specific navigation elements (iOS, macOS, watchOS, tvOS, visionOS) that allow users to access further details. ConsoleMessageMetadataView provides a structured breakdown of message attributes, including summary information (date, log level, label), source details (file, function, line number), and custom metadata key-value pairs, all rendered in a scrollable format with a navigation title.
Sources/PulseUI/Features/MessageDetails · high confidence
New console search filter cells for content type, duration, HTTP method, log levels, and more
The console search interface now includes dedicated UI cells for filtering by content type, duration, HTTP method, log levels, request/response sizes, request state, response source, status code, task type, and time period. These new SwiftUI views provide platform-specific implementations (e.g., macOS vs iOS/visionOS for log levels, watchOS vs others for status codes) and include quick-filter options for common selections like status code ranges and time periods.
Sources/PulseUI/Features/Filters/Cells · high confidence
New helper utilities for logging infrastructure
This change introduces a new set of helper files in the Pulse Helpers module to support the logging system. It adds a Mutex wrapper for thread-safe access, a Regex wrapper for pattern matching, and a Keychain wrapper for secure storage. It also includes utilities for image processing (thumbnails and encoding), file and URL management, and CoreData extensions for safe context operations and store management. Additionally, it defines a LoggerSession struct for tracking log sessions and a PulseDocument class for handling persistent container documents.
Sources/Pulse/Helpers · high confidence
New helper utilities for store sharing, HAR export, and search
The PulseUI helpers now include a comprehensive sharing infrastructure that allows users to export logged data as Pulse packages, plain text, HTML, PDF, or HAR files via the new ShareStoreTask and ShareService. HAR export is supported through the new HARDocument implementation, which serializes network tasks and pages into the standard HAR format. Additionally, the app introduces a robust string search system with support for text, wildcard, and regular expression matching, along with helper classes for observing Core Data object counts and managing file viewer contexts for decoding errors.
Sources/PulseUI/Helpers · high confidence
New inspector cells for cURL, cookies, headers, and body content
The inspector now includes dedicated cells to view the cURL representation, cookies, request/response headers, and request/response bodies. These new UI components allow users to inspect detailed network data directly within the Pulse interface, with specific views for cookies, headers, and body content that display relevant metadata and link to detailed views.
Sources/PulseUI/Features/Inspector/Cells · high confidence
New mock store and demo view for PulseUI
Added MockStore, MockTask, and PulseDemoView to the PulseUI mocks module. MockStore provides pre-populated LoggerStore instances (mock, preview, demo) for use in SwiftUI previews and standalone apps. MockTask defines sample network tasks with various scenarios (success, failure, redirects, decoding errors). PulseDemoView is a SwiftUI view that displays the console using mock data, allowing developers to test the PulseUI interface without a real logger store. The demo can also load a real .pulse store via the PULSE\_STORE\_URL environment variable.
Sources/PulseUI/Mocks · high confidence
New network metrics and timing views for macOS and iOS
The Network Inspector now includes dedicated views for displaying detailed network metrics and timing breakdowns. This adds a new \NetworkInspectorMetricsView\ that lists transactions, a \NetworkInspectorTransactionView\ showing status, timing, and transfer sizes, and a \NetworkInspectorTransferInfoView\ breaking down sent/received bytes by headers and body. Timing data is visualized with sections for Scheduling, Connection (DNS, TCP, Secure), and Response phases, anchored to the task interval. These views are available on macOS, iOS, tvOS, and visionOS, but are disabled on watchOS to reduce binary size.
Sources/PulseUI/Views/Metrics · high confidence
New search services and scope-based matching engine
The search experience in the Console now supports granular scope filtering for both logs and network traffic. Users can search within specific areas such as message text, metadata, URL, query parameters, request/response headers, and bodies. The system includes a new matcher engine that processes these scopes, a service to cache response bodies for efficient searching, and a recent searches store to persist and suggest past queries. Additionally, a suggestions service provides intelligent filter recommendations based on the current search text and available data.
Sources/PulseUI/Features/Search/Services · high confidence
Removals
Removal of Herald placeholder struct
The placeholder \Herald\ struct, which previously held a default \text\ property, has been removed from the \Sources/Herald\ module. This change eliminates the initial boilerplate code from the package's public interface.
Sources/Herald · high confidence
Behavioural changes
Added privacy manifests for API usage transparency
The Pulse and PulseUI targets now include PrivacyInfo.xcprivacy files that declare the use of specific Apple APIs, including file timestamp access and user defaults. This ensures compliance with Apple's privacy requirements by explicitly documenting the reasons for accessing these APIs in the app's privacy manifest.
Sources/Pulse, Sources/PulseUI · high confidence
Console UI reworked with new display settings, context menus, and pill-based toolbar
The Console interface has been redesigned to offer greater customization and a more compact layout. Users can now configure exactly which fields (such as headers, response size, or duration) appear in the task cell headers, content, and footers via the new ConsoleListDisplaySettings. The toolbar has been replaced with a space-efficient pill-based design for filters, sorting, and grouping, while context menus and swipe actions on iOS/visionOS allow for easier sharing and management of logs and network tasks.
Sources/PulseUI/Features/Console/Views · high confidence
Console list now supports grouping, sorting, and collapsible sections
The console list view has been reworked to allow users to group and sort log entries and network tasks. Users can now group logs by label, level, file, or session, and network tasks by URL, host, method, status code, and other attributes. Sorting options include date, level, duration, and request/response sizes. Grouped sections are collapsible, and the collapsed state is persisted across app launches via a new on-disk cache, ensuring the user's preferred view layout is preserved.
Sources/PulseUI/Features/Console/List · high confidence
Demo project Xcode schemes and workspace configuration updated for SwiftPM integration
The Pulse demo application's Xcode project has been reconfigured to support Swift Package Manager integration. This change introduces new build and launch schemes for the iOS, tvOS, and Integration Examples targets, ensuring they are correctly set up for building, testing, and running within the Xcode environment. Additionally, the workspace configuration files have been moved from the SwiftPM internal directory to the main project structure, with the workspace reference updated to point to the local project container, streamlining the development workflow for the demo app.
Demo/Pulse.xcodeproj/xcshareddata · high confidence
Demo project migrates to Swift Package Manager and updates platform targets
The Pulse demo application has switched its dependency management from CocoaPods to Swift Package Manager, integrating the Pulse and PulseUI frameworks via SwiftPM. The project structure has been updated to include dedicated targets for iOS and tvOS, while macOS and watchOS demo targets have been removed in favor of SwiftUI previews. Additionally, deployment targets for the supported platforms have been increased, and build configurations have been adjusted to fix compilation issues in release mode and prevent task double-registration.
Demo/Pulse.xcodeproj · high confidence
Enhanced network request redaction and configuration options
The NetworkLogger now provides more granular control over sensitive data handling. Users can configure specific HTTP headers, URL query items, and JSON data fields to be redacted from logs using the new \sensitiveHeaders\, \sensitiveQueryItems\, and \sensitiveDataFields\ configuration properties. Additionally, the logger supports wildcard and regex-based pattern matching for host and URL inclusion/exclusion filters, allowing for more flexible logging scopes. The redaction logic has been refined to correctly handle sensitive headers in metrics and prevent issues with non-HTTP responses.
Sources/Pulse/NetworkLogger · high confidence
LoggerStore restructured with new configuration, entities, and in-memory options
The LoggerStore implementation has been reorganized into distinct source files to improve clarity and maintainability. A new \Configuration\ struct allows users to customize store behavior, including size limits, save intervals, and blob compression settings. The \Options\ enum now supports an \inMemory\ mode for testing or temporary logging without disk writes. Core data entities for sessions, messages, and network tasks are explicitly defined, and the store now exposes a \Version\ type for semantic versioning. These changes provide a more flexible and robust foundation for logging and network inspection.
Sources/Pulse/LoggerStore · high confidence
New Settings and Store Details views across platforms
The Settings interface has been restructured with platform-specific implementations: iOS and tvOS now use a Form-based layout with a direct link to Store Details, macOS utilizes a sidebar-style List with explicit 'Show in Finder' and 'Remove Logs' actions, and watchOS adds a 'Share Store' option alongside store management. A new StoreDetailsView provides a unified, async-loaded display of store statistics (message count, blob sizes) and app/device information, replacing previous inline or less structured info displays.
Sources/PulseUI/Features/Settings · high confidence
New console filter UI with recent filters and time period support
The console now features a redesigned filter interface (ConsoleFiltersView) that includes a time period filter for logs and network requests, domain/host filtering for network traffic, and a persistent 'Recents' list that saves and restores your last 10 filter configurations per mode (logs vs. network). This new UI replaces the previous custom filter implementation and is available on iOS 18, macOS 15, tvOS 18, watchOS 11, and visionOS 1.
Sources/PulseUI/Features/Filters · high confidence
Redesigned Network Inspector with platform-specific layouts and new detail views
The Network Inspector has been restructured to provide a more detailed and platform-optimized experience. On iOS, macOS, and visionOS, the main inspector now features a segmented picker to toggle between the original and current request states, alongside dedicated sections for request/response bodies, headers, cookies, metrics, and cURL export. A new NetworkDetailsView handles rich text rendering for detailed inspection. Platform-specific implementations tailor the layout: tvOS uses a two-column form view, while watchOS employs a compact list view with hidden transfer metrics to conserve space. The update also introduces new views for displaying request and response bodies, including file viewers and placeholders for unavailable or empty data.
Sources/PulseUI/Features/Inspector · high confidence
Redesigned filter interface with custom filters and session selection
The filter views have been completely reworked to support a new, more flexible filtering experience. Users can now create, edit, and manage custom filters via a dedicated edit sheet, with support for regex matching and field-specific criteria. The interface introduces a new list selection component for choosing hosts and labels, and adds a session picker to filter logs by specific recording sessions. The layout has been updated with new section headers, improved context menus for managing custom filters, and platform-specific adjustments for iOS, macOS, tvOS, and watchOS.
Sources/PulseUI/Features/Filters/Views · high confidence
Redesigned remote logger settings with password-protected server support
The remote logging configuration interface has been restructured to improve usability and security. The new settings view features a dedicated password entry flow for servers marked as protected, allowing users to securely connect to authenticated remote loggers. Error handling has been enhanced with specific views for DNS misconfigurations (including a copyable plist snippet) and local network permission denials. The device list now displays real-time connection status indicators and provides options to forget previously connected servers, with platform-specific UI adjustments for macOS, iOS, and watchOS.
Sources/PulseUI/Features/Remote · high confidence
Redesigned search interface with dynamic suggestions and scoped options
The search experience in the console has been overhauled to include dynamic suggestions, recent search history, and a dedicated options sheet for configuring search scopes and filters. Users now see recent searches as interactive pills at the top of the results list, with an option to view or clear the full history. The search interface supports filtering by specific scopes (such as URL, query, message, or metadata) and allows users to save their preferred scope configurations as defaults. Additionally, search results are grouped by entity and scope, displaying match counts and previews to help users quickly navigate to relevant log entries or network tasks.
Sources/PulseUI/Features/Search/Views · high confidence
Redesigned search interface with session grouping and extended results
The search experience has been restructured to improve result organization and discovery. Search results are now grouped by session, allowing users to expand or collapse groups to navigate logs more effectively. Additionally, when a search yields results from other sessions, an 'extended results' section appears with an option to apply those findings, ensuring no relevant logs are missed. The interface also includes a prompt to show newly added results and displays a footer when all results have been loaded.
Sources/PulseUI/Features/Search · high confidence
Redesigned session management with multi-select and sharing
The Sessions view now supports multi-select mode, allowing users to select multiple sessions to share via a new Share Store sheet or to delete them in bulk. A new SessionPickerView provides a dedicated interface for selecting sessions, and the main list now displays message counts per session and groups sessions by date. The UI also includes a session preview view showing creation date and version, and enforces a minimum store version (3.6.0) for compatibility.
Sources/PulseUI/Features/Sessions · high confidence
Remote logger connection restructured with new protocol and encryption support
The remote logging infrastructure has been significantly reworked to support a new message format, encrypted messaging, and bidirectional communication. The connection logic is now encapsulated in a dedicated \RemoteLogger.Connection\ class running on a background queue, replacing the previous implementation. This change introduces a new protocol definition (\RemoteLogger-Protocol.swift\) with updated packet codes and a \Message\ structure for custom paths, enabling features like automatic server connection, remembering recently selected servers, and sending responses. The main \RemoteLogger\ class now manages these connections, handles server discovery via \NWBrowser\, and persists known servers, while also improving error handling and concurrency safety by marking the logger as \@MainActor\.
Sources/Pulse/RemoteLogger · high confidence
Rich text viewer now supports search, sharing, and platform-specific UIs
The RichTextView component has been updated to include an in-view search feature with match highlighting and navigation, available on iOS and visionOS. On watchOS, the view now includes a share button for text content. The implementation also introduces platform-specific rendering: tvOS uses a custom scrollable text view, while iOS and visionOS feature a new search toolbar that adopts the Liquid Glass aesthetic on iOS 26 and visionOS 26, with a legacy style for earlier versions. Additionally, HTML content can now be previewed in an embedded web view on iOS/visionOS.
Sources/PulseUI/Features/FileViewer/RichTextView · high confidence
Test coverage
Removed legacy Linux test infrastructure
The test suite for Herald has been cleaned up by removing the Linux-specific test entry points. Specifically, the \LinuxMain.swift\ file and the \XCTestManifests.swift\ file, which were used to register and run tests on Linux platforms, have been deleted. Additionally, the \HeraldTests.swift\ file containing the basic example test case has been removed, indicating a shift away from this specific legacy test structure.
Tests · high confidence
Dependencies
Upgrade to Swift 5.10 and add visionOS support
The package manifest has been updated to require Swift 5.10, replacing the previous 5.1 minimum. Minimum deployment targets have been raised to iOS 15, tvOS 15, macOS 13, and watchOS 9, and support for visionOS 1 has been added. The package name was changed from Herald to Pulse, and the product structure now includes Pulse, PulseProxy, and PulseUI libraries.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 42 → 57 (+15.2)
- Rubric changed (rubric-2026.08.15 → rubric-2026.09.15) — scores are not directly comparable.
Lenses
- Code Health 100 → 95 (-5.5)
- Architecture 97 (new)
- Maturity 46 → 46 (-0.2)
- Readiness 27 → 43 (+15.4)
- Security 53 → 87 (+34.6)
- Domain Modelling 99 (new)
Resolved (5)
- Dimension evaluation failed
- No exposed public API
- Secret: jwt (Sources/PulseUI/Mocks/MockTask.swift)
- The README is a single banner with no dedicated architecture or usage documentation for developers (e.g. how to add Pulse as a SwiftLog backend, configure logging paths). (README.md)
- The README links only to kean-docs.github.io (external docs) for getting started, not to the project's own architecture or usage docs. (README.md)
New (61)
- Ambiguous type reuse: The type State is used for both the lifecycle state of a NetworkTaskEntity and the connection state of RemoteLogger. While technically distinct domains, naming them with the same generic type State without namespace qualification (e.g., TaskState vs ConnectionState) is confusing, especially since ConnectionState already exists for the remote logger.
- ClassTooLong: RemoteLogger (Sources/Pulse/RemoteLogger/RemoteLogger.swift)
- ConsoleSearchCustomFiltersSection.body (cognitive 16) (Sources/PulseUI/Features/Filters/Views/ConsoleSearchCustomFiltersSection.swift)
- ConsoleSearchFilterMatcher.parseStatusCodeDescription (cognitive 22) (Sources/PulseUI/Features/Search/Services/ConsoleSearchToken+Parsers.swift)
- ConsoleSearchFilterMatcher.parseStatusCodeDescription (cyclomatic 23) (Sources/PulseUI/Features/Search/Services/ConsoleSearchToken+Parsers.swift)
- ConsoleSearchMatcher.search (cognitive 33) (Sources/PulseUI/Features/Search/Services/ConsoleSearchMatcher.swift)
- ConsoleSearchMatcher.search (cyclomatic 22) (Sources/PulseUI/Features/Search/Services/ConsoleSearchMatcher.swift)
- Dependency hygiene PARTLY measured — SwiftPM pinning read, dependency currency NOT established
- Duplicate property intent: taskType (Int16) and type (TaskType?) appear to represent the same semantic information (the type of network task) but with different types (raw integer vs enum). This creates confusion on which to use for reading/writing.
- Duplicated block (10 lines × 2) (Demo/Sources/Integrations/IntegrationsExamples/URLSessionAutomatedIntegration.swift)
- Duplicated block (10–11 lines × 2) (Sources/PulseUI/Helpers/TextRenderer.swift)
- Duplicated block (11 lines × 2) (Sources/Pulse/URLSessionProxy/URLSessionProxy.swift)
- Duplicated block (11 lines × 4) (Sources/Pulse/URLSessionProxy/URLSessionProxy.swift)
- Duplicated block (12 lines × 2) (Sources/Pulse/URLSessionProxy/URLSessionProxy.swift)
- Duplicated block (12 lines × 2) (Sources/PulseUI/Features/Inspector/Cells/NetworkCookiesCell.swift)
- Duplicated block (12–13 lines × 2) (Sources/PulseUI/Features/Console/List/ConsoleListContentView.swift)
- Duplicated block (14–15 lines × 2) (Sources/PulseUI/Features/Filters/Views/ConsoleSearchCustomFiltersSection.swift)
- Duplicated block (16 lines × 2) (Sources/PulseUI/Features/Filters/Cells/ConsoleSearchRequestSizeCell.swift)
- Duplicated block (22 lines × 2) (Demo/Sources/Integrations/IntegrationsExamples/AlamofireIntegration.swift)
- Duplicated block (5 lines × 2) (Sources/Pulse/Helpers/Regex.swift)
- …and 41 more
Changes since last survey
- 1 commits — 0 feature/other, 1 fixes
By area
- (repo) — 1 commit
Notable commits
- fix: Merge pull request #377 from mthuong/fix/deleted-entity-timestamp-trap
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
kean/Pulse was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 27 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 687b4faf573a5ed5fb7221af1972e8d8993d6f48 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-d00c643c3f66.