docs: sync the master plan with the 2026-09-15→17 wave - #108
Merged
Merged
Conversation
Twenty-two PRs (#86–#107) shipped, sixteen §1f rows changed state, and the test baseline moved ~800 tests before this file moved at all. The same-PR doc-sync rule postdates most of them, which is the excuse and not a defence — this is the catch-up, and the second occurrence is recorded in the rule's own note so the next reader sees it happened twice. The work index is rewritten against the tracker rather than patched: every row now matches its issue's actual state. Sixteen items that were "unbuilt" or "built, unmerged" are shipped, seven issues found during the wave are added, and the blocked rows say what they are blocked ON rather than just that they are. Three of those blocked rows share one blocker, and that is now stated plainly: #76, #77 and #78 each need a payload only a second account can produce. One other account sending one message and opening one shared document resolves all three. It is the highest-leverage unblock on the list and was not visible while the rows sat apart. Two sections asserted things the wave disproved, and both are corrected in place rather than footnoted. G40's `config` is an object, not a string, and it does not encode column order, visibility or sort — it is a four-key whitelist that silently strips everything else, which is a different feature from the one this doc described. The app-settings section's "populated shapes still unverified" is replaced with the five modelled guesses that turned out wrong when they were finally verified. The toolchain divergence is recorded as a standing hazard: this machine is on Xcode 27, CI pins 26.3, and that gap is exactly why `dev` stopped compiling locally while CI stayed green. Any domain type sharing a name with a SwiftUI symbol is one SDK update from the same break, and CI cannot see it. The baseline now also carries what was NOT run: the kit's live ContractTests and the agent's LiveAPISmokeTests were skipped, not passed, because the recon rate-limited the account. A baseline that quietly counts skipped suites as green is how a release cut gets a surprise. Refs #66 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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
Brings
work-consolidation.mdcurrent after the 2026-09-15→17 wave. Docs-only — no.swift,.pbxprojor.plisttouched.The same-PR doc-sync rule was broken again, immediately. PRs #86–#107 shipped twenty-two changes, moved sixteen §1f rows, and added ~800 tests before this file moved. The rule postdates most of them, which is the excuse and not a defence — the second occurrence is now recorded in the rule's own note, so the next reader sees it has happened twice rather than once.
What changed
§1f rewritten against the tracker, not patched. Every row now matches its issue's actual state. Sixteen items that read "unbuilt" or "built, unmerged" are shipped; seven issues found during the wave are added (#84, #85, #91, #95, #98, #103, #104); the blocked rows now say what they are blocked on.
One blocker, three issues — now visible. #76, #77 and #78 each need a payload only a second account can produce: a DM's
items[]row, its notification row, and a presenceusers[]row. One other account sending one message and opening one shared document resolves all three. That was invisible while the rows sat apart, and it is the highest-leverage unblock on the list.Two sections asserted things this wave disproved, corrected in place rather than footnoted:
configis an object, not a string — and it does not encode column order, visibility or sort. It is a four-key whitelist (mode,density,filters,search) that silently strips everything else. That is a different feature from the one this doc described.deviceName/isDefault, notname/isMainWorkstation.The toolchain divergence is recorded as a standing hazard. This machine is on Xcode 27; CI pins 26.3. That gap is exactly why
devstopped compiling locally while CI stayed green. Any domain type sharing a name with a SwiftUI symbol is one SDK update from the same break, and CI cannot see it.The silent-decode count is corrected from three to seven. Four more were found and fixed in this wave — the list-schema contract, the notification vocabulary, the Mastodon provider token, the app-settings device fields. Every one had green tests written against fabricated fixtures.
The baseline now records what was not run
ContractTestsand the agent'sLiveAPISmokeTestswere skipped, not passed — the recon rate-limited the.envaccount. A baseline that quietly counts skipped suites as green is how a release cut gets a surprise.SyncAgentis added to the baseline for the first time, with the note that it is not in the Xcode scheme and needsswift test --package-path SyncAgent.Deliberately not in this PR
docs/api-coverage.mdstill omits rows for routes this wave shipped —/api/user/identities/verify, the/api/user/app-settings/*family,/api/auth/github/status. Adding them piecemeal would desynchronise the section subtotals and grand total that file maintains, and its own maintenance rule governs whenImplemented/Testedmay flip. That is a proper re-score pass, filed separately rather than half-done here.Verification
Docs gate per
.claude/skills/doc-engineer/assets/docs-quality-checklist.md:🤖 Generated with Claude Code