docs: weekly TODOs re-verification and MODULE_AUDIT refresh (August 2, 2026) - #171
Draft
cursor[bot] wants to merge 4 commits into
Draft
docs: weekly TODOs re-verification and MODULE_AUDIT refresh (August 2, 2026)#171cursor[bot] wants to merge 4 commits into
cursor[bot] wants to merge 4 commits into
Conversation
Weekly triage pass. Corrects every citation that moved under the ~29 commits since the July 26 audit, records what shipped, and files three new findings. Root TODOs.md: - Sharpen the where.gregorian_calendar P0 with the four shipped implicit-member sites the rule can't see (the old "seven" predates the call-site pass) and the current rule line. - New P1: WhereTests double-links LifecycleKit beside WhereUI and never imports it, which the documented rule forbids. It slipped past because the rule's prose scopes itself to the unitTests helper's extraPackageProducts and WhereTests is a hand-rolled target; the guard test lives in WhereUITests, so nothing catches it. - Correct ./test's affected_bundles range and the StuffTestHost scene-name duplicate line. Where/TODOs.md: - Two new WhereCore items: a store opened without a resolvable URL silently loses remote-change observation in release (assertionFailure is debug-only), and DemoDataBuilder's comment claims a reconcile the bulk ingest doesn't do. - Record what closed: WherePreferences.init(store:) lost its default, IntentSnippets' preview literal is localized, and the LocationsView / YearView empty-state snapshot cases exist. - Correct the "one remaining isCapturingSnapshot read" claim, which was wrong: LaunchSplashView reads it twice more. Both are sanctioned carve-outs, which is the distinction the old wording lost. - Sharpen the launch notification-prompt P1 with why it hits every fresh install (all three preferences default to true). - Re-cite the broken-snapshot cluster; the blank VoiceOver calendar references are confirmed not re-recorded (LFS pointer sizes).
Periscope: re-measure Periscope.swift (931 lines, State still flat) and PeriscopeStore.swift (1230) for the decomposition item; correct the survivesRelaunch warn cite; record that #154's budgeted launch spans made the pre-store-attach P0 more expensive, since a launch span's began and ended now land in different places; recount the hosting smoke tests (18/9 -> 20/10); file SpanHistoryModel under the rebuild-per-commit item. Correct the "no eager store handle" item, which described a WhereModel that no longer exists: #150 replaced the bare Optional<PeriscopeStore> with a typed LogStoreState. The consumer side is honest now; the async make() that forces the state machine is what's still open. SnapshotKit: the shared-content item is half fixed. SnapshotCase rebuilds per access; the runner still hoists one AnyView out of the configuration loop, which is the remaining call site. SnapshotKitTesting: the settle-floor item counted 260 references and 22 floor-bound configurations. It's 273 and 24 now, and the Flyover canvas is the new one. Flag the timing percentages as needing re-measurement rather than quietly restating them. New Shared/Flyover/TODOs.md: the module landed this week with 50 sources and 10 namesake test files, and its invalid-catalog view reports an issue count without the issues. Also re-cite LifecycleKit, Broadway, CreditKit, and Inspector.
Where/AGENTS.md described Inspector's boot runtime but not Flyover, which landed the same week and which WhereUI also builds on. Both are now one section, with the split that matters: Flyover knows nothing about Where, so the seeded demo world and the never-activate rule stay WhereUI's. WhereUI/AGENTS.md claimed views don't read isCapturingSnapshot to branch themselves. Three do. Two are sanctioned (LaunchSplashView freezes a wall-clock timer and pins a motion phase, which is what the flag is for); CalendarContentView's scroll skip is the one that isn't, and is filed. State the rule as the carve-out it actually is, and name the exception so it doesn't read as precedent. SnapshotKitTesting/AGENTS.md quoted settle-cost percentages measured over 260 references. Flyover and Inspector brought their own bundles, so it is 273 now — date the measurement and add the tripwire rather than restating numbers as if they were current. Root AGENTS.md listed the image suites that don't link WhereUI; Flyover's is a third. Regenerated the CLAUDE.md mirrors with ./sync-agents.
The tree moved further in one week than in any before it: 359 -> 501 source files, 14 -> 19 library targets, three new modules. The report is derived from the TODOs.md files as they now stand, so every finding it points at is a real item rather than a restated body. Two things worth calling out in the report itself rather than only in the diff. The July 26 pass listed the LifecycleKit terminal-phase race as an open high against a tree where #116 had already fixed it that same day; this pass says so instead of quietly dropping it. And the severity-count tables are gone: they mixed filed items with findings folded into module summaries, so they could not be reconciled against the backlog, which is the only place a finding lives. A top-findings table of pointers replaces them. Records what was verified clean, which is the part a backlog has no room for — including Inspector's twelve data-deletion safety invariants, each checked against code individually rather than sampled, and all twelve enforced. Limitations are honest about the Linux VM: no test, build, or bumper run backs any runtime claim. What did execute is named (swiftformat --lint, attribution --check, gh for CI status).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The weekly
todo-triagepass.INBOX.mdwas empty, so this is steps 2–5: re-verify the open backlog against current source, review the week's landings, rewrite the audit from what the backlog now says, and fix the docs the week invalidated.The heaviest week the repo has had — 359 → 501 source files, 14 → 19 library targets, three new modules (Flyover, Inspector's boot runtime, LifecycleKitUI), demo mode reshaping composition around
WhereScope, and spans pushed through every expensive path in the app.What moved in the backlog
Every open item in all 11
TODOs.mdfiles was read against current source. Most citations moved and are corrected; the verdicts that changed:Closed:
WherePreferences.init(store:)lost its parameter default (#150),IntentSnippets' preview literal is localized, theLocationsView/YearViewempty-state snapshot cases exist, andSnapshotCasenow rebuilds content per configuration.Corrected rather than carried:
isCapturingSnapshotread that isn't a stand-in" claim was wrong —LaunchSplashViewreads it twice more. Both are sanctioned carve-outs (a wall-clock timer and a motion end-state), which is the distinction the old wording lost.CalendarContentView's scroll skip is still the real exception.WhereModelthat no longer exists; Add demo mode, and open nothing until the user picks a world #150 replaced the bareOptional<PeriscopeStore>with a typedLogStoreState. The consumer side is honest now; theasync make()that forces the state machine is what's still open.SnapshotCaseis no longer the culprit, one runner call site is.where.gregorian_calendarP0 said "seven production sites"; it's four shipped sites plus preview fixtures, and there are now zero explicitCalendar.currentspellings left, so the rule's match set is provably empty.Three new findings:
WhereTestsdouble-linksLifecycleKitbesideWhereUI, and never imports it (Project.swift:311-315) — exactly what the "Never double-link a product WhereUI already carries" rule forbids. It slipped past because the rule's prose scopes itself to theunitTestshelper'sextraPackageProductsandWhereTestsis hand-rolled, and because the guard test lives inWhereUITests.WhereTestsis inStuff-iOS-Tests, which is where the failure reproduces.SwiftDataStore.swift:222-229) — the else branch is a bareassertionFailure, so a debug build traps and a release build returns a store that never sees a share-extension add or a CloudKit sync.Shared/Flyover/TODOs.mdfor it.What the audit now says
Rewritten from the refreshed backlog. Two things worth flagging in the report itself rather than only in the diff:
It also records what verified clean, which a backlog has no room for — including Inspector's twelve data-deletion safety invariants, each checked against code individually rather than sampled, and all twelve enforced.
Docs
Where/AGENTS.mddocumented Inspector's boot runtime but not Flyover, which landed the same week.WhereUI/AGENTS.mdclaimed views don't branch on\.isCapturingSnapshot. Three do; the rule is now stated as the carve-out it actually is, with the one real exception named so it doesn't read as precedent.SnapshotKitTesting/AGENTS.mdquoted settle-cost percentages measured over 260 references; it's 273 now. Dated the measurement and added a tripwire rather than restating stale numbers as current.AGENTS.mdlisted the image suites that don't link WhereUI; Flyover's is a third.Regenerated the
CLAUDE.mdmirrors with./sync-agents.Verification
This pass ran on Linux, so it is static analysis only — no test, build, or
bumper lintrun backs any runtime claim, and the audit's Limitations section says so. What did execute:./swiftformat --lint(clean, 0/818) and./attribution --check(clean, 7 credits). CI onmainwas read viaghand is green through0cce6578, which is what lets the "the Gregorian rule finds nothing" conclusion stand.Every claim published here was spot-checked against source by hand after the verification fan-out, not taken from it directly.
Markdown only — no code changes.