Skip to content

docs(coverage): reconcile the API matrix against shipped code - #22

Merged
Adron merged 2 commits into
devfrom
docs/reconcile-work-consolidation
Sep 6, 2026
Merged

docs(coverage): reconcile the API matrix against shipped code#22
Adron merged 2 commits into
devfrom
docs/reconcile-work-consolidation

Conversation

@Adron

@Adron Adron commented Sep 6, 2026

Copy link
Copy Markdown
Member

Summary

The 2026-07-31 re-baseline added its new endpoint rows at Implemented ☐ / Tested ☐ and they were never rescored, so the matrix badly understated the app: 56 of the 83 scoreable rows had already shipped (G1 DMs, G2 Moderation, G3 Sharing, G5 Search, G4 GitHub, G11a LinkedIn, G12 templates, G14 limits, D2 public profile, native OAuth link).

This walks every row against the Kit builders, DTOs and Domain service call paths and applies the existing maintenance rule literally — no box checked speculatively. Implemented ☑ requires builder + DTO + a service call path, so GET /api/linkedin/targets stays ☐ (the builder exists; nothing calls it). Tested ☑ only where the endpoint has its own decode/encode test and its group supplies failure + empty coverage; where only the group-wide builder-shape test reaches it. Footnote 14 records the rule so it can be overridden.

Changes

  • 50 rows flipped ☐/☐ → Implemented ☑ with Tested ☑ or ◐.
  • Eight endpoint paths corrected — they were transcribed from OpenAPI rather than from the live-verified client. Six Moderation rows: the app sends POST|DELETE /api/users/{username}/block and /mute, POST /api/users/{username}/report, POST /api/messages/{id}/report — not the /api/user/blocks and /api/reports/* forms documented. Two GitHub rows: the client sends PATCH /api/github/repos/{repo}/issues/{number} and its /comments sibling. Both GitHub routes remain unconfirmed live (P1-H2) — ☑ records that the client path is built and tested, not that the route answers.
  • Six shipped /invites endpoints added (lists + documents) that were absent from the matrix entirely, though built in SharingEndpoint.swift and driven by SharingService. G3 goes 17 → 23 rows.
  • Totals recomputed from the rows. The previous "53 new / 151 total" was an arithmetic slip — 53 is the running total through the sixth of sixteen sections. The matrix is 89 new + 98 original = 187 rows: 154 ☑ / 27 ☐ / 6 — implemented, 104 ☑ / 44 ◐ / 33 ☐ / 6 — tested.
  • G6 List Folders rescored (feature removed in PR refactor(lists): remove the List Folders feature, keep parent/child list nesting #19), joining the out-of-scope G8 Stripe rows. The routes still exist server-side; the client will not implement them.
  • Rows verified still ☐: POST /api/dm/images/upload, GET /api/dm/{id}, GET /api/lists/watching, GET /api/lists/shared/{token}/data, GET /api/linkedin/targets, GET /api/documents/tree, and the two block/mute status reads.
  • work-consolidation.md: a Provenance note recording the pass and flagging the stale "~151-endpoint API surface" figure. The G14 tail edits collided with d8778d4 from a concurrent session — same finding, independently reached — and were resolved in dev's favour, since its wording additionally documents uploadVideo's videoMaxBytes path and the test coverage.

No original-98 row was touched. Docs-only diff; the historical 2026-07-31 update-history entry is annotated rather than rewritten.

Verification

Run on the merged tree (a91f91f), after merging origin/dev:

  • xcodebuild -scheme InterlinedList -destination 'platform=macOS' build** BUILD SUCCEEDED **
  • xcodebuild … CODE_SIGNING_ALLOWED=NO test** TEST SUCCEEDED ** — Executed 622 tests, with 0 failures
  • swift test — InterlinedKit 314, InterlinedDomain 619, InterlinedPersistence 135; 0 failures
  • Decision-0003 guard → 0 real import InterlinedKit hits in App/Features|Navigation|MenuCommands
  • Matrix self-check: 0 malformed table rows, 0 broken anchors, every prose total recomputed from the rows and asserted against them

🤖 Generated with Claude Code

Adron and others added 2 commits September 5, 2026 22:27
The 2026-07-31 re-baseline added 83 new endpoint rows at Implemented ☐ /
Tested ☐ and they were never rescored, so the matrix badly understated the
app: 56 of the 83 scoreable rows had shipped in the interim (G1 DMs, G2
Moderation, G3 Sharing, G5 Search, G4 GitHub, G11a LinkedIn, G12 templates,
G14 limits, D2 public profile, native OAuth link).

Walked every row against the Kit builders, DTOs and Domain service call
paths and applied the existing maintenance rule literally. Implemented ☑
requires builder + DTO + a service call path, so GET /api/linkedin/targets
stays ☐ (builder exists, nothing calls it). Tested ☑ only where the endpoint
has its own decode/encode test and its group supplies failure + empty
coverage; ◐ where only the group-wide builder-shape test reaches it.

Four defects found beyond the flips:

- Six Moderation paths were transcribed from OpenAPI, not from the
  live-verified client: the app sends POST|DELETE /api/users/{username}/block
  and /mute, POST /api/users/{username}/report and
  POST /api/messages/{id}/report — not the /api/user/blocks and
  /api/reports/* forms the matrix documented.
- Two GitHub paths likewise: the client sends
  PATCH /api/github/repos/{repo}/issues/{number} and its /comments sibling.
  Both routes are still unconfirmed live (P1-H2); ☑ records that the client
  path is built and tested, not that the route answers.
- Six shipped /invites endpoints (lists + documents) were absent from the
  matrix entirely. Added; G3 goes 17 -> 23 rows.
- The subtotal and grand total were arithmetic errors: "53 new" is the
  running total through the sixth of sixteen sections, and "151 endpoints"
  inherited it. Recomputed from the rows: 89 new, 187 total.

G6 List Folders is rescored — (feature removed in PR #19), joining the
out-of-scope G8 Stripe rows. No original-98 row was touched.

work-consolidation.md: G14's ImagePrep size-ceiling tail was already done —
ContentLimits.imagePrepLimits feeds both upload paths — so §1 is fully
closed, leaving G4's backend-blocked routes as the only §1 thread.

Footnote 14 records the scoring rule and every correction.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GpH4PQZhdYiCfsk5PQmwzq
…nsolidation

# Conflicts:
#	work-consolidation.md
@Adron
Adron merged commit ec449d6 into dev Sep 6, 2026
8 checks passed
@Adron
Adron deleted the docs/reconcile-work-consolidation branch September 6, 2026 05:44
Adron added a commit that referenced this pull request Sep 6, 2026
Reconciles the second of two parallel audit passes (PR #22 merged the
first) and folds in the live API re-measure that followed.

Conflict resolution: dev's merged version is the base for both files;
this branch's unique content is ported on top.

docs/api-coverage.md
- Adds a section for four implemented endpoints neither pass had a row
  for: GET /api/users/search, /api/users/lookup, /api/auth/bluesky/status
  and /api/auth/mastodon/status.
- GET /api/auth/twitter/authorize flips to ☑/☑ — built by the shared
  Auth.authorize(provider:) builder (OAuthProvider includes .twitter) and
  consumed by UserService + LinkedAccountsViewModel.
- Corrects the two GitHub issue rows again, this time against the live
  API: the routes are the flat PATCH /api/github/issues/{owner}/{repo}/
  {number} and its /comments sibling (confirmed by openapi.json and by
  OPTIONS Allow headers), and Implemented returns to ☐ because the
  client's builders point at a nested path that 404s. Footnote 15.
- Adds a staleness banner: the live API reports 294 operations against
  this matrix's 191 rows.
- Where the two passes graded Tested differently on shared rows, PR #22's
  grades stand. Totals recomputed: 93 new rows, 191 total.

work-consolidation.md
- Adds §1c (six live-verb defects that break shipped features) and §1d
  (G15-G29, the unimplemented product areas found by the re-measure).
- Re-statuses §2: P1-H2 and P2-I resolved as client-side errors, P3-H's
  premise withdrawn, P3-D's client half unblocked, G11b deployed, G13
  no longer blocked; P1-G and G10 re-verified still blocked.
- Keeps dev's G14 closure, refreshed test baseline and §3a audit intact;
  the superseded "§1 is exhausted" paragraph is marked as such rather
  than deleted, since it was accurate for the gaps known at the time.
- Adds the re-measure log recording method and evidence.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QYA3FQuyhHgvpbbeMFuYrx
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.

1 participant