Skip to content

docs: weekly backlog re-verification and MODULE_AUDIT refresh (August 23, 2026) - #291

Closed
cursor[bot] wants to merge 4 commits into
mainfrom
audit/2026-08-23
Closed

cursor[bot] wants to merge 4 commits into
mainfrom
audit/2026-08-23

Conversation

@cursor

@cursor cursor Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Re-verified every open item in all 13 TODOs.md files 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.
  • Filed four new items, three of them about the retained tooling this window landed: the new direct test suites fail on Linux instead of skipping; sync-agents needs a bash launcher; Tools/'s two docs are linked from nothing; and every Flyover registration titles its screen with an English literal.
  • Corrected two published claims and four stale citations — including a Calendar.current recount 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 how DataIssueScanner gets its primary regions.
  • Fixed two false Linux claims in the root AGENTS.md and the todo-triage skill, both invalidated this window when sync-agents gained a #!/usr/bin/env ruby shebang.
  • Rewrote MODULE_AUDIT.md from what the backlog now says.

Why

The scheduled weekly pass of the todo-triage procedure. INBOX.md was 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/lockf and /usr/bin/plutil, a pristine-HOME test that inadvertently needs a system interpreter, and one assertion pinning a shell's 126-vs-127 convention). Tools/ADVERSARIAL_TEST_PLAN.md already 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-agents as 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 root AGENTS.md Linux table listed that exact invocation as working, and the todo-triage skill 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

  • The closed entry (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 the ForEach, 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.
  • The two new root P1s — whether the platform-skip framing is the right shape, and whether a bash launcher is the fix you want for sync-agents versus documenting the prefix.
  • The Calendar.current counting tripwire. A recount reached 15 this week by including five spelled-out uses under Where/*/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.
  • Corrected premises, not just citations. The RegionDays/RegionRanking item claimed DataIssueScanner received primaryRegions from WhereSession; 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.
  • The report's Limitations section now separates what was executed and passing from what was executed with failures analyzed from what remains unread, instead of the blanket "static analysis only" of prior editions.

⚠️ Breaking changes

None. Documentation only — no source, manifest, or CI changes.

Compatibility

No effect on build, targets, or runtime behavior. The AGENTS.md edit changes one row of the Linux checks table; ./sync-agents regenerated the CLAUDE.md mirrors, 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.
  • Direct tooling suites — run and their failures diagnosed (that analysis is one of this pass's findings, not an incidental red).
  • Not run: anything needing a Swift toolchain or Xcode, so no ./test, no --architecture-only, no ./xcstrings --lint. The report says so in its Limitations, and no claim here depends on having run them.
Open in Web View Automation 

cursoragent and others added 4 commits August 23, 2026 13:32
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>
@kyleve kyleve closed this Aug 31, 2026
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.

2 participants