docs: weekly backlog re-verification and MODULE_AUDIT refresh (August 23, 2026) - #291
Closed
cursor[bot] wants to merge 4 commits into
Closed
cursor[bot] wants to merge 4 commits into
cursor[bot] wants to merge 4 commits into
Conversation
PR #283 gave `sync-agents` a `#!/usr/bin/env ruby` shebang, making it the only root command that reaches its interpreter that way. A bare `./sync-agents` now exits 127 on a host with no system Ruby on PATH, which is every Linux cloud-agent VM. Two docs promised otherwise: - The root AGENTS.md "What works on Linux" table listed a bare `./sync-agents` as a working check. - The todo-triage skill told the weekly automation the same thing, so the automation's own environment note was wrong about its own environment. Both now name the required `mise exec --` prefix and the exact failure text. The skill's environment section also gains the checks that do work there, including the direct tooling suites added this window. Giving the command a bash launcher so the documented invocation works without a prefix is filed as a root TODOs item; this commit only stops the docs lying about the current state. Also refresh the reference count in SnapshotKitTesting/AGENTS.md from 466 (2026-08-16) to 472 (2026-08-23). Both sites keep the dated form, which is the discipline the last audit landed for numbers that cannot be re-measured in place. Validation: `mise exec -- ./sync-agents` regenerates cleanly; `./swiftformat --lint` 0/1110, `./attribution --check` up to date, `./shellcheck` clean. Swift-toolchain and Tuist checks are unavailable on Linux. Co-authored-by: Kyle Van Essen <k@kve.me>
Re-verified every open item in all 13 TODOs.md files against current source, closed what shipped, and filed this pass's findings. Closed (1): the Locations ranking-reorder animation, by PR #289 — and deliberately not the way the item proposed. It asked for an `.animation(_:value:)` on the ForEach; a list-reorder animation was rejected because it moves the source hierarchy and so reorders VoiceOver mid-flight. What shipped animates position instead, keeping semantic order fixed. The entry records that difference, since the next reader will otherwise wonder why the simple fix was skipped. Filed (4): - P1 root: the new direct tooling suites fail on Linux rather than skipping. Measured here: 61/62 Python and 62/75 Ruby cases pass; every failure is a platform assumption in one of three groups (macOS-only /usr/bin/lockf and /usr/bin/plutil, a pristine-HOME interpreter assumption, and a 126-vs-127 shell status contract). ADVERSARIAL_TEST_PLAN already declares a per-command platform matrix the tests do not honor, and both CI systems run these only on macOS, so nothing catches it. - P1 root: `sync-agents` needs a bash launcher so its documented invocation works without a `mise exec --` prefix. - P2 root: Tools/README.md and Tools/ADVERSARIAL_TEST_PLAN.md are linked from nothing outside Tools/, so the rules for editing a root script live only in a human-facing README nothing points at. - P2 Where: every Flyover registration titles its screen with an English literal, against the documented "DEBUG-only UI is still localized" rule. PR #289 made it visible rather than introducing it — the same screen now localizes its navigation title and hardcodes its Flyover title. Corrections to previously published claims: - The Calendar.current count is 12, not 15. A recount folded in five spelled-out uses under Where/*/Tests/, which are outside Bumper's production-only scope. Recorded as a counting tripwire so a sixth pass does not re-litigate it. - The RegionDays/RegionRanking item's premise was wrong: DataIssueScanner derives primary regions itself via Region.primaryRegions(in:) and never received them from WhereSession. - `CalendarContentView.scrolledForYear` no longer exists; the test item is re-aimed at the current gate. - Three citations pointed past the end of their files or at the wrong construct (WhereIntents/README.md, OnboardingView.swift, PeriscopeStoreJournalIngest.swift). Counts re-derived: 472 references (was 466), 39 addressable settle-floor configurations (was 37), WhereCore namesake debt 60 of 128, `./test` 709 lines plus Tools/test_runner.py 445. Validation: static analysis only, on Linux. `./swiftformat --lint`, `./attribution --check`, and `./shellcheck` pass. No Swift toolchain, so no `./test`, no `--architecture-only`, no `./xcstrings --lint`. Documentation-only change. Co-authored-by: Kyle Van Essen <k@kve.me>
Rewritten from what the backlog now says, per the todo-triage procedure. Prior edition: August 16, 2026 (PR #282). Shape of the week: seven of eight commits touched no shipping Swift. The retained-tooling hardening stack and the CircleCI build-once/shard change dominate, with two WhereUI features and one snapshot-pipeline change. Two things make this edition different from its predecessors: - It executed something. The hardening stack produced the repo's first toolchain-free test suites, so a Linux host can now run them. The report separates what was executed and passing (swiftformat, attribution, shellcheck, snapshot-shards check) from what was executed with failures analyzed (both tooling suites) from what remains unread. Previous editions could only say "static analysis only". - It audits a non-Swift area. Tools/ gets a per-area section covering the 12 implementations, their 21 test files, their CI wiring, and the platform gap. New themes, each supported by this window's evidence rather than carried forward: a macOS-only CI has no gradient telling it which of its own tests are portable; the always-loaded doc went false about the automation reading it; specific module rules held across ~1,900 lines of new Swift while the one convention with no lint drifted uniformly; PR #289 is the shape to copy because it documented the limit of its own coverage; and hardening can dissolve a filed refactor's motivation without closing it. Counts re-derived rather than carried: 688/368/47 Swift files, 472 references, 26 test bundles, 18 root commands, 12 tooling implementations, 10 TLA+ specs. Validation: swiftformat --lint 0/1110, attribution --check up to date at 12 credits, shellcheck clean. Derived report; no actionable items, no code. Co-authored-by: Kyle Van Essen <k@kve.me>
The re-verification commit added a second '## P2s (Nice to have)' heading at the top of Where/TODOs.md's completed section instead of using the one already at the bottom. Same entry, correct section, no duplicate heading. Co-authored-by: Kyle Van Essen <k@kve.me>
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.
Summary
TODOs.mdfiles against current source, re-deriving each citation. One item closed (the Locations ranking-reorder animation, by PR feat(WhereUI): animate live location ranking overtakes #289) against last week's zero.sync-agentsneeds a bash launcher;Tools/'s two docs are linked from nothing; and every Flyover registration titles its screen with an English literal.Calendar.currentrecount that had drifted to 15 by folding in out-of-scope test files, and one item whose premise (not just its line numbers) was wrong about howDataIssueScannergets its primary regions.AGENTS.mdand thetodo-triageskill, both invalidated this window whensync-agentsgained a#!/usr/bin/env rubyshebang.MODULE_AUDIT.mdfrom what the backlog now says.Why
The scheduled weekly pass of the
todo-triageprocedure.INBOX.mdwas empty, so this pass is re-verification, new-surface review, and the audit refresh.Seven of the window's eight commits touched no shipping Swift — four hardening the retained Python/Ruby behind the root commands (#283, #284, #287, #288) and one rebuilding CircleCI's iOS side into build-once/shard-the-snapshots (#276). That changed what an audit on Linux can do: those suites need no Xcode, no Swift toolchain, no simulator, and no network, so they are the first tests here a Linux host can genuinely run. This is the first edition of this report that executed something rather than only reading.
Running them is what produced the pass's main finding. 61 of 62 Python cases and 62 of 75 Ruby cases pass on Linux; all 14 failures are platform assumptions rather than regressions, in three separable groups (macOS-only
/usr/bin/lockfand/usr/bin/plutil, a pristine-HOMEtest that inadvertently needs a system interpreter, and one assertion pinning a shell's 126-vs-127 convention).Tools/ADVERSARIAL_TEST_PLAN.mdalready assigns each command a platform — the tests just don't read it, and because both CI systems run them only on macOS, nothing would have said so.The second finding came from trying to run
./sync-agentsas the skill instructs. PR #283 gave it a Ruby shebang, making it the only root command of eighteen that reaches its interpreter that way, so a bare call exits 127. The rootAGENTS.mdLinux table listed that exact invocation as working, and thetodo-triageskill repeated it — so the automation's own instructions were wrong about the automation's own environment. Both are corrected here; the launcher is filed.Review focus
Where/TODOs.md, completed P2s). PR feat(WhereUI): animate live location ranking overtakes #289 shipped a different design from the one the item proposed: not.animation(_:value:)on theForEach, but a layout that interpolates card positions while holding semantic order fixed, because moving the source hierarchy reorders VoiceOver mid-transition. The entry records that difference deliberately, so a future reader doesn't wonder why the one-line fix was skipped. Worth a check that it describes what actually landed.sync-agentsversus documenting the prefix.Calendar.currentcounting tripwire. A recount reached 15 this week by including five spelled-out uses underWhere/*/Tests/, which are outside Bumper's production-only scope. The number is 12, unchanged for a third pass, and the item now carries the scoping rule so a sixth pass doesn't re-litigate it.RegionDays/RegionRankingitem claimedDataIssueScannerreceivedprimaryRegionsfromWhereSession; it derives them itself. Second week running that an item needed its reasoning rebuilt rather than its line numbers bumped — flagged as a theme in the report.None. Documentation only — no source, manifest, or CI changes.
Compatibility
No effect on build, targets, or runtime behavior. The
AGENTS.mdedit changes one row of the Linux checks table;./sync-agentsregenerated theCLAUDE.mdmirrors, which are gitignored.Testing
./swiftformat --lint— 0 of 1110 files require formatting../attribution --check— up to date, 12 credits../shellcheck— clean../snapshot-shards check— plan valid: 47 suites across 3 planned shards plus intake (1=13, 2=15, 3=18, 4=1). Confirms PR feat(WhereUI): animate live location ranking overtakes #289's new snapshot suite lands on the intake shard, which is what the documented design says should happen.mise exec -- ./sync-agents— regenerates cleanly../test, no--architecture-only, no./xcstrings --lint. The report says so in its Limitations, and no claim here depends on having run them.