docs(handoff): land the app-analytics handoff on main, updated with shipped outcomes - #193
Open
ZacxDev wants to merge 5 commits into
Open
docs(handoff): land the app-analytics handoff on main, updated with shipped outcomes#193ZacxDev wants to merge 5 commits into
ZacxDev wants to merge 5 commits into
Conversation
Captures the state of #190, civitai/civitai#3557 and #3561, the stale-integration-gate blocker, the measured per-app analytics, ranked follow-ups, and the session's reusable lessons. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01858ymA3tEJQi83435u7npi
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01858ymA3tEJQi83435u7npi
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01858ymA3tEJQi83435u7npi
…s a to-do list The app-analytics handoff has been sitting on this branch, unmerged, describing three open PRs and a re-gate in flight. All of that shipped — 8 PRs across both repos, plus follow-ups #1, #2 and #4 — so as written the doc's most prominent content is a set of live-sounding directives for work that is done. A stranded doc that is also stale is worse than no doc. Changes: - A RESOLVED banner up top with the full merged-PR table, replacing "nothing merged". - Neutralised the "Do not merge until that re-gate reports" imperative, and recorded that the rebase it anticipated WAS needed, for a different reason: #3566 landed later and edited the same `detail: {}` object, turning #3561 CONFLICTING after its gate had passed. - Struck follow-ups #1, #2 and #4 with what actually happened, including the two places this doc was WRONG: * #1's entry missed a second proc with the identical live defect — `getMyForgejoCloneInfo`, which `civitai app pull` drives. It was found by an audit, not by the list, which is worth knowing about ranked follow-up lists in general: the list is not a survey. * #2's suggested fix (reuse `humaniseScopeEndpoint`) would have shipped a bug. Measured against the real function it returns '(no workflow id)' for `workflow:submit` and '' for `user-settings:write`, because it is the per-ROW labeller and an aggregate bucket has no `detail`. - Recorded #1's scope decision with the prod evidence that later confirmed it: 331 live tokens unblocked, 30 of which lack bit 26 — so copying the nearest precedent (AppBlocksDevTunnel) would have left those 30 still 403ing. Plus the measurement trap: `(mask & Full) = Full` is also true when `mask == Full` and reports 145 false hits; the strict-superset form needs `AND mask <> Full`. - New "Still open — start here" section: the CI `component`-tier gap (three PRs shipped browser tests that have never run on a canonical browser), the stale-node_modules trap that silently removes ~1,126 tests, the unverified `addCollaborator` downgrade lead, and a note that `installs: 0` should be assumed broken until a positive control exists. - "What actually caught the bugs": across 12 adversarial audit rounds every fix round found a defect in the previous fix, and the mechanical gate caught none of them — the suite and typecheck were green at every tip. Doc-only. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…aim — it was false The "Still open" section asserted that CI does not run the `component` (browser) project at all, and used that to frame the browser tests shipped today as having no CI coverage. **That was wrong.** The `preview / component-tests` external check runs exactly that project. Recording HOW the error happened, because the mechanism is more useful than the fact: every status query written during the session filtered for `Unit tests|Typecheck|ESLint|event-engine`, so `preview / component-tests` was never in a result set — and its absence from those results was read as evidence it did not exist. The evidence was selected and then the selection was treated as the finding. The claim was then repeated in three PR comments and this doc without ever being checked directly. What the check actually shows on #3574, the PR that shipped 7 browser tests: 075519d380 (before the audit-fix round) success 8e75826616 (first fix round) FAILURE 928273e4dd (second fix round) FAILURE It is report-only, which is why the merge was not blocked. Cutting the other way: PR 3591 PASSES component-tests on a base that contains the #3574 merge, while PR 3594 fails on the same base — green for some PRs, red for others, which looks like flakiness or content-dependence rather than a defect #3574 introduced. Genuinely unresolved. Also recorded: this cannot be settled from a NixOS host. The full-project component run does not complete locally either WITH the merge (crashes, "Browser connection was closed") or WITHOUT it (times out at 25 minutes) — measured both ways specifically to check whether the local failure was attributable to the change. It is not. Single-file runs pass, cold cache included, so a local run can validate one file and says nothing about the suite. The preview pipeline's logs are the only authority. And one genuinely stale thing found while investigating, left as an actionable note: `lint.yml`'s unit job excludes browser tests on the grounds that they "carry the cold-optimizeDeps flake documented at vitest.config.mts:98-124" — but that section documents the FIX, and a cold-cache single-file run passes. The stated reason no longer holds. Doc-only. Co-Authored-By: Claude Opus 5 (1M context) <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.
Gets the app-analytics handoff doc onto
maininstead of leaving it on a branch, and updates it so it stops reading as a to-do list for work that has since shipped.Why now
The doc is the source for everything in this stream — cli#190/#191/#192 and civitai#3557/#3561/#3572/#3574/#3581. It has been sitting on an unmerged branch describing "3 PRs open, nothing merged", with a prominent "Do not merge until that re-gate reports" directive that is now three merges out of date. A stranded doc that is also stale is worse than no doc: the next reader acts on the imperatives.
What changed
#3566landed later still and edited the samedetail: {}object, turning #3561CONFLICTINGafter its gate had already passed.getMyForgejoCloneInfo, whichcivitai app pulldrives. An audit found it, not the list. Worth knowing generally: a ranked follow-up list is not a survey.humaniseScopeEndpoint) would have shipped a bug. Measured against the real function it returns'(no workflow id)'and''for the bounded tokens, because it's the per-row labeller and an aggregate bucket has nodetail.(mask & Full) = Fullis also true whenmask == Fulland reports 145 false hits.component-tier gap, the stale-node_modulestrap that silently removes ~1,126 tests, the unverifiedaddCollaboratordowngrade lead, and a note thatinstalls: 0should be assumed broken until a positive control exists.The two things in here I'd most want a reviewer to see
CI does not run the
component(browser) project at all. Three PRs merged today ship browser tests — #3574's 7, #3581's 3, plus #3557's existing panel tests — that have never executed on a canonical browser. They ran only against a nixpkgsplaywright-chromium-headless-shellshimmed in locally, because Playwright's vendored binary can't exec on NixOS. As things stand those guards would catch nothing in CI.A stale
node_modulessilently removes ~1,126 tests. A worktree installed before main gained@civitai/db-queriesfails atkyselyDb.tsmodule load, so 89 files' tests are never collected and the runner still prints a plausible total (10,131 passed vs 11,257 afterpnpm install). Filed on civitai#3579.Doc-only; no code touched.
🤖 Generated with Claude Code