跳转至

English | 中文

Documentation and source code consistency audit

Executed on 2026-10-08 per the "Documentation and source code consistency audit specification": all documentation surfaces checked against source code as the source of truth, with the three difference categories (① document ahead of code / ② code ahead of document / ③ description mismatch) each backed by file:line evidence. Fixes only modify documents, never code (reverse code changes forbidden). Newly added features must be written back to the corresponding rows of this document.

1. Audit scope and method

14 documentation surfaces in total: README.md, docs/{index,mission,mission-excerpt,mvp-issues,positioning,solution-structure,troubleshooting,configuration,master-plan,acceptance-checklist}.md, docs/acceptance-{B705-L0-behavior,B803-e2e-walkthrough}.md, docs/rfc/RFC-001-technical-design.md, plus the mkdocs.yml navigation. (From the 2026-10-11 incremental review onward, configuration.md, master-plan.md, and acceptance-checklist.md were brought into scope; at the F-01~34 baseline audit they did not yet exist or were not included.)

Method: sample verifiable technical claims and gather evidence against the code one by one (widget type strings, interface signatures, configuration keys, file names, package references, window forms, refresh periods); a null grep result first requires verifying the path exists (e.g. ls src/) before concluding "does not exist". mission-excerpt.md (original plan archive) and the two acceptance documents (dated acceptance records) are treated as historical literature; only the code references that are still alive are checked.

2. Audit table

2.1 P0 (would directly lead to writing incorrect configuration/incorrect implementation from the document)

ID Document page Claim Source evidence Category Severity Fix
F-01 RFC §4.2 widgets.json example widget config key is "repository" src/Beacon.Connections/GitHubPullRequestsProvider.cs:21 RequireConfig(widget, "repo"); GitHubActionsProvider.cs:25-27 reads repo/workflow/branch ③ mismatch P0 Change example key to repo
F-02 RFC §4.2 pins.json is a flat structure (monitor/anchor directly on the tile), anchor value bottom-right src/Beacon.Core/Models/AppConfig.cs:40-48 PinTile{WidgetId, Layout} nested; PinLayout.cs:14-32 (incl. FloatingX/Y); src/Beacon.Core/Json/BeaconJson.cs:31 enum camelCase serialization (actually bottomRight) ③ mismatch P0 Change example to nested layout{...}, anchor to bottomRight, add floatingX/floatingY

2.2 ① Document ahead of code (documented but not implemented)

ID Document page Claim Source evidence Severity Fix
F-03 RFC §9.1 Storage contains notifications.json (recent notifications + read state, rolling 200 entries persisted) src/Beacon.Storage/JsonConfigurationStore.cs:39-42 only manages the four files config/connections/widgets/pins; notifications.json zero hits across src; notification center is an in-session view P1 Mark as "persistence not implemented (in-session)"
F-04 mission.md Configuration directory contains workflows.json zero hits in src; Workflow engine task spec itself lists "not in MVP scope" P1 Note as not implemented
F-05 positioning.md §3 Generic HTTP Provider = YAML provider DSL (mapping + actions.retry) Actually landed as JSON-configured http.status (src/Beacon.Connections/HttpStatusProvider.cs:10, dot-path + vocabulary mapping); no YAML parsing, no per-provider actions P1 Change description to landed http.status; mark DSL/actions as "planned"
F-06 positioning.md §4 UsageMetric model (name/current/limit/window/…) zero hits for UsageMetric across src; actually carried by WidgetState P2 Mark as "conceptual design, no standalone type landed"
F-07 solution-structure §3.3 WebhookAction.cs (webhook POST + secret signing) Implemented (2026-10-09, 3760f57): src/Beacon.Actions/WebhookExecutor.cs — HMAC-SHA256 signing header + credentialRef secret fail closed; directory tree already updated to 5 files P1 Closed
F-08 solution-structure §3.4 CredentialManagerSecretStore.cs (alternative implementation drawn into the directory tree) src/Beacon.Storage/ only 5 files, no such file P2 Remove from directory tree, keep alternative note as a comment

2.3 ② Code ahead of document (implemented but undocumented or contradicting)

ID Document page Claim Source evidence Severity Fix
F-09 RFC §6.2.3/§6.2.4/§10 "One host window per monitor" "Do not make one HWND per pinned widget" Independent floating window form has landed: src/Beacon.App/App.xaml.cs:157-169 branches on PinDisplayMode; src/Beacon.App/Windows/FloatingTileWindow.cs:14-19 one window per pinned widget; src/Beacon.Core/Models/AppConfig.cs PinDisplayMode (panel default / floating) P1 RFC adds both forms (panel default single host / floating one window per widget)
F-10 RFC §7.1 Machine 5–30s "Phase 2", Agent 5–15s "Phase 2" src/Beacon.Core/Models/RefreshTiers.cs:28-29 both tiers implemented (15s / 10s) P2 Change note to "implemented"
F-11 solution-structure §1/§3.2 Connections = GitHub/ + Rest/ two subdirectories (GitHub / Rest) Actually flat 16 files, no subdirectories; contains GitHub 6 files + HTTP 3 files + BigModel/Claude/DeepSeek/Kimi 2 files each (ls src/Beacon.Connections/) P1 Redraw directory tree as the real structure
F-12 mvp-issues B-701 L0 has only the "single-window multi-tile host" one form Independent floating window extension landed (FloatingTileWindow.cs; commit 0182b57); positioning §8 already records it, issue not written back P2 B-701 add the extension record

2.4 ③ Description mismatch (both sides exist but inconsistent)

ID Document page Claim Source evidence Severity Fix
F-13 RFC §1 Platform Windows 10 1903+ src/Beacon.App/Beacon.App.csproj TargetPlatformMinVersion=10.0.17763.0 (1809); README also says "1809+" P1 RFC change to 1809+
F-14 RFC §10 System Tray uses H.NotifyIcon.WinUI (alternative Win32 self-implementation) src/Beacon.App/Services/TrayIconService.cs:9 "Win32 Shell_NotifyIcon self-implementation, no third-party tray library" P1 Change to self-implementation description
F-15 RFC §10 Toast uses CommunityToolkit Notifications (AUMID shortcut manually registered) Directory.Packages.props Microsoft.Toolkit.Uwp.Notifications 7.1.3; ToastNotificationService.cs:4,12-13 ToastNotificationManagerCompat auto-creates/repairs the shortcut on first launch P2 Change package name and AUMID self-healing description
F-16 RFC §5 Interface signatures: Task<ConnectionHealth> TestAsync(c, ct), Task<WidgetState> GetStateAsync(w, conn, ct), ISecretStore.GetAsync → Task<string>, connection type comments include "rest" src/Beacon.Core/Abstractions/IConnectionProvider.cs:16,25 (ConnectionHealthState, multiple ConnectionConfig parameters, WidgetState?); ISecretStore.cs:7 (string?); actual connection types github/http/bigmodel/claude/kimi/deepseek P2 Align summary block with actual signatures
F-17 RFC §8 Notification rule example is when{...}/then{...}/dockColor nested, cooldown PT10M src/Beacon.Core/Models/NotificationModels.cs:4-16 actually flat: id/widgetType/widgetId/severityAtLeast/severityAtMost/toast/sound/cooldown(TimeSpan); no dockColor field; BeaconJson has no TimeSpan custom converter (not PT10M format) P1 Change example to actual flat structure and field names
F-18 RFC §9.1 cache\{connId}\*.json src/Beacon.Storage/JsonCacheStore.cs:76 fixed states.json P2 Change to the concrete file name
F-19 RFC §4.3 WidgetState field list missing widgetType/connectionId src/Beacon.Core/Models/WidgetState.cs:7-8 P2 Add both fields
F-20 index.md "35 MVP Issues" grep -c '^### ' docs/mvp-issues.md = 43; README also says 43 P1 35→43
F-21 index.md Roadmap M4 🔨, M5 ⬜ README roadmap: M4 ✅, M5 🔨 (code-level complete, remaining B-803/B-804 on-machine acceptance) P1 Align with README
F-22 index.md / mkdocs.yml Document navigation missing positioning / troubleshooting / both acceptance docs mkdocs.yml:32-40 nav already includes positioning/troubleshooting, missing acceptance and the audit document; index.md navigation table likewise missing P2 Complete both navigations
F-23 mvp-issues B-101 "H.NotifyIcon tray icon" "second launch brings up the existing instance" TrayIconService.cs:9 Win32 self-implementation; App.xaml.cs:101-109 second launch actually shows a balloon tip on the existing instance (not raising the panel) P1 Change implementation description
F-24 mvp-issues B-804 "self-contained single exe release (win-x64)" Actual release form: Inno Setup x86_64 setup.exe + portable zip (packaging/beacon.iss:20; README download section) P1 Change release description
F-25 solution-structure §3.5 App contains Controls/, ViewModels/, Notifications/ToastService.cs, Themes/; all four Windows have .xaml Directories do not exist (ls src/Beacon.App/); actually only CapsuleWindow.xaml/QuickPanelWindow.xaml two xaml files, the rest pure code; Toast is in Services/ToastNotificationService.cs; missing Infrastructure/ (MonitorService/NativeMethods/Win32MessageWindow) and Services/ToastNotificationService, TopmostGuard, FileLoggerProvider, CrashLog, BeaconRuntime, ShellStateStore, UiDispatcher, HotkeyService, StartupService, MotionEngine, UiPalette, SingleInstanceGuard and Windows/FloatingTileWindow.cs P1 Redraw directory tree as the real structure
F-26 solution-structure §3.1 Core contains Time/IClock.cs; Models contains ActionConfig/ActionResult/NotificationRecord/NotificationRule as standalone files IClock is actually in Abstractions/ (8 files incl. INotificationSink); no Time/; Models 12 files are ActionModels.cs/NotificationModels.cs merged naming + ConnectionHealthState/RefreshTiers; also Events/Events.cs, Json/BeaconJson.cs; Services 9 files incl. PaletteResolver/PinLayoutMath/TemplateRenderer/WidgetHost P1 Redraw directory tree
F-27 solution-structure §4 NuGet table lists CommunityToolkit.WinUI.* (controls/animations) Directory.Packages.props zero hits, not referenced P1 Delete that row
F-28 solution-structure §4/§6 "UI = MVVM (CommunityToolkit.Mvvm), Views contain no business logic; state always comes from ViewModel subscriptions" zero hits for ObservableObject/RelayCommand across src/tests; package referenced at Beacon.App.csproj:33 but unused; actually code-built UI + code-behind P1 Change to actual form description
F-29 solution-structure §6 Configuration JSON uses System.Text.Json + source-gen converter src/Beacon.Core/Json/BeaconJson.cs is a hand-written JsonSerializerOptions+converter; no JsonSerializerContext anywhere P2 Remove source-gen wording
F-30 solution-structure §2 Core "only references BCL / extensions / MVVM utility libraries" src/Beacon.Core/Beacon.Core.csproj only Microsoft.Extensions.Logging.Abstractions P2 Change to accurate wording
F-31 solution-structure header "The current repository working environment is Linux — this phase only produces documents, no project built" Project already built: 5 src projects + 4 test projects, 285 tests, M1-M4 delivered P1 Delete outdated statement, describe current state
F-32 positioning.md §6 "Usage / Machine Provider, Generic HTTP — new, to merge after M5 closes" positioning §8 already records Generic HTTP/BigModel/Claude/Kimi/DeepSeek landed (internal self-contradiction within the same document) P2 §6 row changed to "Status/Usage landed, Machine not implemented"
F-33 RFC §6.2.3 Drag "snaps to the four edges and adjacent tiles" src/Beacon.App/Windows/PinnedHostWindow.cs:219 only SnapDips four-edge snapping; no adjacent tile snapping logic P2 Remove "adjacent tile" wording
F-34 RFC §3 architecture diagram "MVVM / Event Bus" "Connections: GitHub / Rest" "Actions: Http/Command/Url/Webhook" MVVM zero usage anywhere (same as F-28); actually six connection types with no Rest (same as F-11); Actions has no Webhook (same as F-07, closed 2026-10-09); L1 capsule also written in §6.1/§6.3 as "a tile inside the host window", actually an independent CapsuleWindow (src/Beacon.App/Windows/CapsuleWindow.cs:18) P1 Change architecture diagram and §6.1/§6.3 to actual descriptions together

3. Conclusions and P0 list

  • ① Document ahead of code: 6 items (F-03~08); ② Code ahead of document: 4 items (F-09~12); ③ Description mismatch: 24 items (F-01/02, F-13~34). Total 34 items.
  • Claims verified as consistent, no changes needed: all of README (download form/install path/hotkey/autostart default/1809+/codecov/nightly early-morning release), all of troubleshooting (log file names/crash logs/install path), solution-structure §3.6 test description (coverlet+Codecov accurate), RFC §9.2 secret constraints and §8 default rule existence, code references in both acceptance documents.
  • P0 list (2 items):
  • F-01: RFC widgets.json example key repository ≠ actual repo — writing a widget per the document will definitely fail;
  • F-02: RFC pins.json flat example ≠ actual {widgetId, layout{...}} nesting + camelCase enums — reading/writing pins.json per the document will definitely be wrong.
  • Fix principle: treat source code as truth and only change documents; "document ahead" items are marked "not implemented/planned" rather than deleting design intent; no items requiring reverse code changes were found this time.
  • 2026-10-10 re-review: all 34 fixes have been written back to the corresponding documents (spot-checked one by one against code; F-03 was recorded directly per implementation because notifications.json landed on 2026-10-09, exceeding the original "mark as not implemented" fix; F-07 closed the same day). The 34 F-numbers in the table above are now aligned with the counts in this conclusion (previously the conclusion under-counted F-32~34; index.md "30 items" corrected together).

4. 2026-10-11 incremental review

Background: after master-plan.md was designated the design baseline on 2026-10-11 (commit 09a4b9b), a documentation surface inspection was performed. The F numbers in this section continue from the baseline table; the "Fix" column = actual changes made this round (all closed within the round).

ID Document page Claim Source evidence Fix
F-35 mkdocs.yml nav Navigation missing the "configuration reference" page (configuration.md exists and both index/README link to it, nav alone omits it) grep -n configuration mkdocs.yml only hits docs body references nav adds one row after "troubleshooting" (fixed)
F-36 README.md configuration reference line "12 connection types" ConnectionType => is actually 13 (github/http/bigmodel/ark/claude/kimi/deepseek/mimo/codex/copilot/opencode/qwen/moonshot); moonshot landed in 4c3ecb2 12→13 (fixed)
F-37 index.md configuration reference line "endpoints/credentials/quota descriptions for 12 connection types" same as F-36 12→13 (fixed)
F-38 index.md document navigation table missing the master-plan.md row (09a4b9b only added the README table and mkdocs nav, missed this table) no such row in the table add one row after the RFC row (fixed)
F-39 configuration.md both the connection type table and the quota description table missing the moonshot row (12 of 13 types written) MoonshotBalanceProvider.cs:146 "moonshot"; endpoint api.moonshot.cn/v1/users/me/balance; grading warn_below(20)/error_below(5) add one row to each table (fixed)
F-40 solution-structure §1 / §3.2 §3.2 says "23 files" and the directory tree missing the Qwen/Moonshot blocks; §1 overview lists 9 vendors missing Copilot/OpenCode/Bailian/Moonshot; WidgetValueHint note "nine vendors' payload keys" no longer nine ls src/Beacon.Connections/*.cs = 25 files; QwenUsageProvider.cs, MoonshotBalanceProvider.cs have no tree entries; WidgetValueHint.cs also handles copilot/opencode etc. §3.2 changed to 25 files + two directory blocks added; §1 overview completed with 13 vendors; "nine vendors" changed to "each vendor" (fixed)
F-41 positioning §8 L0 decision numeric floating "off by default (corrected 2026-10-08) … switch off = floating form equivalent to panel" overturned by user order on 2026-10-11 (fac860c code change + configuration.md sync); AppConfig.cs:25 NumericFloatingEnabled = true; positioning.md missed the update at the time decision sentence changed to "on by default, 2026-10-11 user order", one-time migration wording removed (fixed)
F-42 positioning §8 research conclusion Moonshot open platform balance listed as "deferred — endpoint confirmed, to integrate later following deepseek's pattern" landed (4c3ecb2, 2026-10-10): MoonshotBalanceProvider.cs, §8 has no entry for this vendor research conclusion struck through as closed; §8 adds an "eleventh vendor" entry (fixed)
  • All 8 items in this section are "code ahead of document / navigation missing a page / decision not synced" category, all closed within the round, no leftovers. Baseline 34 items + increment 8 items = 42 items.
  • Claims verified as consistent during re-review: index/README "43 MVP Issues" (grep -c '^### B-' = 43), the kimi row and the description of Moonshot open platform being two separate account systems (configuration.md:104), positioning "ninth/tenth vendor" ordinals self-consistent with landing order (OpenCode ninth, Qwen tenth, MiMo/Codex belong to the first nine).

2026-10-11 second increment (solution-structure numeric counts)

ID Document page Claim Source evidence Fix
F-43 solution-structure §3.1/§3.5/§3.6 Services tree only shows 12 files (actually 17, missing WidgetTypeNames/QuickPanelSections/DpiLayoutMath/ContrastMath/HighContrastPalette); Windows "7 files" actually 10 (8 .cs + 2 .xaml, missing ThemeColors.cs); Services/ missing AppIcon.cs; tests "474 (C 249/Core 170/Act 27/Sto 28)" ls actual: Core Services 17, Windows 10, App Services 14 (incl. AppIcon); dotnet test four projects = 685 (Connections 371 / Core 256 / Actions 27 / Storage 31) directory tree adds 5+1 entries with counts, Windows 7→10, test count changed to 685 with per-project alignment (fixed)
  • This item closed within the round; ls src/Beacon.Core/Models|wc -l = 13, Abstractions 8, Connections 25, Actions 5, Storage 6, App Infrastructure 3/Services 14 consistent with the document; the three yml files in .github/workflows/ confirmed. Running total: 42 + 1 = 43 items.

2026-10-11 third increment (troubleshooting paths)

ID Document page Claim Source evidence Fix
F-44 troubleshooting version line "nightly looks like 0.0.20261009+<commit短sha>" daily-build.yml:50 $version = Get-Date -Format "yyyy.M.d"; :51 -p:Version=$version "-p:InformationalVersion=$version+$env:GITHUB_SHA"; beacon.iss:4 notes that 0.0.yyyyMMdd triggers CS7034 changed to 2026.10.9+<full commit sha> with a note on why the old form was deprecated (fixed)
F-45 troubleshooting widget-shows-no-data step ① keywords include 已添加并上板拉取中 zero hits across src; actually only SettingsWindow.cs:949 一键示例:组件 {Id} 已创建并钉选(连接 …,端点 …) removed the nonexistent keyword (fixed)
  • Verified as consistent: log path %AppData%\Beacon\logs\beacon-YYYYMMDD.log and crash-*.log, step ② 组件注册已重建并立即拉取 {N} 个, step ③ Widget {id} refreshed ok / refresh failed, the tile initial state 「加载中…」 literal, %LOCALAPPDATA%\Beacon (beacon.iss DefaultDirName={localappdata}\Beacon + PrivilegesRequired=lowest), ChineseSimplified.isl, the config directory config.json/connections.json layout, SHA256SUMS and the visual-evidence artifact name. Running total: 43 + 2 = 45 items.

2026-10-11 fourth increment (master-plan unaudited sections)

ID Document page Claim Source evidence Fix
F-46 master-plan §5.4 (§11.1 same item) Activity/Fingerprint domain model (incl. fingerprint dedup, event merging), §11.1 lists it as a unit-test coverage item zero hits for Activity/Fingerprint across src; actually NotificationRecord (notifications.json + read state, rolling 200 entries) + NotificationEngine threshold-crossing/time-cooldown dedup + RecentEvent (QuickPanelWindow.cs:18 in-session record, no persistence) §5.4 adds a "landing status" note: three existing mechanisms carry the semantics, fingerprint dedup/event merging not implemented, to be scheduled (fixed)
F-47 master-plan §8 logical file names cache.json / history.json actual split differs: config/connections/widgets/pins/actions.json + notifications.json (no history counterpart) + cache\{connId}\states.json (split directories) + secrets.bin; the plan itself already allowed "no forced renaming" §8 adds a "landing status" note listing the actual file set and the .corrupt retention mechanism (fixed)
F-48 master-plan §10 "About" contains the open-source license, check-update/project-homepage entries; "exit behavior" listed in general settings SettingsWindow About section only has a version line (BuildAboutSection) + a log location hint (:634); license and homepage entries zero hits; exit only via tray Exit §10 adds a "landing status" note: landed/pending/not-done marked separately, exit is in the tray not the settings page (fixed)
  • Verified as consistent: §6.2 "must implement" all eight items landed (cancel/concurrency dedup/backoff/timeout/ETag/rate-limit awareness/recovery refresh/offline cache — RefreshScheduler, GitHubApiClient, JsonCacheStore, ff8208a); the "initial suggestions" numbers and §12 performance targets are both self-declared non-commitments, consistent with RefreshTiers' seven tiers and the unmeasured wording; §8 corruption prompt (*.corrupt + LoadErrors) and "invalid configuration does not block startup" confirmed; connection 13 types (GitHub + generic HTTP + 11 AI quota vendors) count verified correct. Running total: 45 + 3 = 48 items.

2026-10-11 fifth increment (positioning landed list)

ID Document page Claim Source evidence Fix
F-49 positioning §6 correspondence table Usage Provider landed list stops at opencode.usage (11 items) QwenUsageProvider.cs (qwen.usage, 2026-10-09), MoonshotBalanceProvider.cs (moonshot.balance, 2026-10-10) landed, list missing the last two vendors landed list adds qwen.usage / moonshot.balance (fixed)
  • Verified as consistent: §3 http.status/http.quota configuration keys compared one by one against HttpStatusProvider/HttpQuotaProvider field descriptors (status_path/summary_path/url_path/success_values/warning_values/error_values, total_path/used_path/remaining_path/reset_path) all accurate; YAML DSL marked "planned" consistent with the F-05 fix; §4 UsageMetric status line consistent with F-06; §6 Machine Provider "not implemented" consistent with the freeze record; §7 scheduling agreement cross-checked with mission.md freeze record. Running total: 48 + 1 = 49 items.

2026-10-11 sixth increment (real packet-capture-driven description corrections)

ID Location Original document/code claim Actual status Action
F-50 configuration.md § each vendor's quota descriptions kimi row, § each type's credentials and endpoints kimi row; positioning §8 kimi entry Data source "GET usages (cross-verified against community implementations)", response described as top-level usage+limits[] (numeric values) 2026-10-11 user's actual capture of the real response: usages[] (scope=FEATURE_CODING) + totalQuota + string values, inconsistent with the document/old parser assumptions (ReadDouble only accepts Number → all null → wrong display) parser rewritten for dual-form compatibility + HttpEndpoint adds http_method/http_body (batch3-addendum 29), document changed to the real shape with the Cookie credential model made explicit (paste + DPAPI replay, no QR login) (fixed)
F-51 positioning §8 mimo entry "official has no quota endpoint (all 7 endpoints 404)"; MiMoUsageProvider console parsing defensive key names Wording reads as "Xiaomi has no quota endpoint at all"; console parsing assumes percent is 0-100 / defensive key names 2026-10-11 user's actual capture of the console tokenPlan/usage real shape: monthUsage/usage blocks + items[], percent is a 0-1 ratio (the 7 endpoint 404s are the inference-domain APIs, the console domain is an exception); old parser returned null on the real shape → Degraded document restricted to the "inference-domain 404" wording + console-tier real-shape-first parsing + referer header (batch3-addendum 30) (fixed)
F-53 positioning §6 Machine Provider row "not implemented", README/index/solution-structure/master-plan §10 (14-type count) Local resources/network not landed 2026-10-11 user decision "local resources and local network are both fine to do": machine.net landed (IP/↑↓ rates/cumulative traffic, zero credentials zero network, reads only the local machine, does not touch the frozen remote Machines management) count 14→15, tree adds MachineNetProvider, positioning §6 row changed, master-plan §10 landing status (fixed)
F-52 mission freeze record, master-plan §10 landing status/§13, README/index/solution-structure (13-type count) Jenkins classified as "Phase 2 / later optional, suspended awaiting a real address" 2026-10-11 user decision: Jenkins is open-source software, the standard JSON API works with any instance, the address is just a configuration value (not a blocker); jenkins.build + jenkins connection landed (batch3-addendum 31) count 13→14, directory tree adds Jenkins, master-plan §10 landing status and §13 landing note, mission freeze record moves Jenkins out, positioning §6/§8 add entries (fixed)
  • Verified as consistent: F-50/F-51 fixes cross-checked — solution-structure §3.2 "Kimi 1 file" "MiMo 1 file" unchanged (parser rewrites both stayed within the same file), README "13 connection types" unchanged (no new types). Running total: 49 + 4 = 53 items.

2026-10-11 seventh increment (machine.git landed)

ID Location Original document/code claim Actual status Action
F-54 solution-structure (27 files/748 tests; MachineNetProvider tree entry mistakenly placed under the "Jenkins 1 file" group), configuration.md machine row (only machine.net), positioning §6/§8 (local machine only network) Git repository status not landed; directory tree grouping misplaced 2026-10-11 user decision "do git too": machine.git landed (one card per repository ↑↓·modified·stash, git CLI read-only zero credentials zero network, behind>0 lights yellow, first 5 changes preview into L3) count 27→28 files, 748→766 tests, tree regrouped as "Machine 2 files", configuration/positioning add machine.git description; MiMo console Cookie whole-line paste tolerance landed in sync (batch3-addendum 34, config page adds 「整行也行」) (fixed)
  • Verified as consistent: machine.git and machine.net both hang off the machine connection (connection types still 15, README count unchanged); GitWorkspaceProvider multi-type-in-one-file consistent with the Jenkins/Machine precedent. Running total: 53 + 1 = 54 items.

2026-10-11 eighth increment (Herald integration)

ID Location Original document/code claim Actual status Action
F-55 README/index/solution-structure/master-plan (15-type count), configuration.md (no herald row) Herald not integrated 2026-10-11 user decision: herald connection + herald.incidents/herald.feed landed (incident ledger open lights yellow, critical lights red; RSS unread baseline, private token via DPAPI; deliveries deferred) count 15→16, 29 files/787 tests, rows added to both tables, positioning §8 entry; incidentally fixed GitWorkspaceProviderTests Windows cleanup of read-only objects (fixed)
  • Verified as consistent: herald is a new connection type (the 16th); RFC1123Z weekday-name-stripped parsing compatible with globalization-invariant (probe-verified). Running total: 54 + 1 = 55 items.

2026-10-11 ninth increment (machine.local landed)

ID Location Original document/code claim Actual status Action
F-56 solution-structure (29 files/787 tests; Machine 2 files), configuration.md machine row (only net/git), positioning §6/§8 (local machine only network+Git) Local resources (CPU/memory/disk) not landed batch3-addendum 32 decision receipt "the local machine's cpu memory disk space is indeed a low-cost display" wrapped up: machine.local landed (CPU tick differencing same as the rate methodology; Linux /proc + Windows API injection abstraction; three thresholds default 90, over the line lights yellow, compared against the rounded display value) count 29→30 files, 787→801 tests, Machine 3 files, configuration/positioning add descriptions; incidentally fixed the index.md audit item count (23 actually 22, 55−34=21+1) (fixed)
  • Verified as consistent: connection types still 16 (machine.local reuses the machine connection); Beacon.App side registration in two places (BeaconRuntime/SettingsWindow text) pending windows-latest CI build verification. Running total: 55 + 1 = 56 items.

2026-10-11 tenth increment (herald.deliveries landed)

ID Location Original document/code claim Actual status Action
F-57 positioning §8 (deliveries deferred), configuration.md herald row (two cards), solution-structure (801 tests) Delivery failure card not landed (batch3-addendum 35 deferred item) 2026-10-11 follow-up batch decision: herald.deliveries landed (logs?status=failed fetch surface verified; failed lights yellow without escalating to red — dead is written as failed at the log layer, indistinguishable; shadow filtered out) solution-structure 801→807 tests / herald tree row adds three cards, configuration/positioning add descriptions; mvp-issues batch3-addendum 37 + installation rows 65 items (fixed)
  • Verified as consistent: herald one-file-multi-type precedent unchanged (HeraldProvider.cs still 1 file 4 types); connection types still 16. Running total: 56 + 1 = 57 items.

2026-10-11 eleventh increment (MiMo 401 made explicit + troubleshooting entry)

ID Location Original document/code claim Actual status Action
F-58 troubleshooting.md full text troubleshooting manual has no MiMo entry (all 17 lines are install/startup/blank/log) 2026-10-11 user actually hit "Xiaomi's still doesn't work": the capsule Offline banner is an aggregate alert (incl. Degraded 401), the real cause is in the tile failure-reason line; quota card login-state expiry is the norm, Key and Cookie are two separate credential chains added a "Xiaomi MiMo card shows Offline / no data?" section (offline banner explanation + three common pitfalls: Cookie-expired re-entry guide / Key alone is not enough / litellm tier defaults to empty and no_db_connection belongs to the gateway side) (fixed)
  • Verified as consistent: configuration.md already records the litellm_spend_url/litellm_key_ref key semantics; solution-structure 828 tests is the 2026-10-11 unit-test recount figure. Running total: 57 + 1 = 58 items.

2026-10-14 twelfth increment (incremental review: SenseNova documentation gap-fill + count drift)

ID Location Original document/code claim Actual status Action
F-59 configuration.md (three places missing a sensenova row), positioning §1 table and §8 (13 types, no SenseNova), solution-structure (Connections 33 files, tree without SenseNovaUsageProvider, 16 types), master-plan landing status (11 AI vendors / 16 types), index.md (16 connection types) SenseNova completely absent from the user-facing documentation SenseNovaUsageProvider.cs 1 file 3 types (2026-10-13 user order): sensenova.tokenplan console pool-level Token Plan quota (multiple pools × 5h/7d, graded by the worst window of the worst pool + bonus-expiry warning), via the HttpEndpoint.FetchAsync unified HTTP channel (Bearer console JWT, default platform.sensenova.cn/lite/console/v1/tokenplan/pool-usage) configuration.md adds three rows (credentials and endpoints / generic channel key list / quota descriptions) + the multi-window quota display section adds the sensenova form; positioning §1 table +1, §8 adds a "twelfth vendor" entry; solution-structure 33→35 files + tree row added + 16→17 types; master-plan 11→12 vendors / 16→17 types; index.md 16→17 types
F-60 solution-structure (Core Services 19 files; 4 projects 991 tests total = Connections 599 / Core 334 / Actions 27 / Storage 31) counts lag behind the code Services actually 20 files (DebugInjection.cs added, BEACON_DEBUG_SEVERITY injection gating); 2026-10-14 local gate measured 4 projects 1057 total (Connections 652 / Core 347 / Actions 27 / Storage 31) counts corrected; Services tree adds the DebugInjection.cs row (debug gating, only for CI scenario V and on-machine rehearsal, not in user configuration docs)
  • Verified as consistent: store-submission.md's SignPath claims (secrets names SIGNPATH_API_TOKEN/SIGNPATH_ORGANIZATION_ID, project-slug: beacon, signing-policy-slug: beacon, artifact-configuration-slug optional, signed/ preferred, fail-closed wording, README "Code signing policy" section) match daily-build.yml item by item; both MSIX dry runs 38230149697 + 38233094172 succeeded, msix-pack.ps1 and msix-dry-run.yml present, the appxmanifest placeholders Beacon.CuiHairu / CN=cuihairu consistent with the document; master-plan "fingerprint-level dedup not implemented" still holds (QuickPanelWindow only Insert(0) + cap of 50); Actions 5 files, Storage 6 files, App tree (Services 15 / Windows 10 / Infrastructure 3) consistent with reality. mvp-issues.md has no SenseNova batch record — no batch number fabricated, this audit increment serves as the record. Running total: 58 + 2 = 60 items.