Skip to content

docs(examples): correct four claims the code does not support - #151

Merged
rubenhensen merged 4 commits into
mainfrom
fix/examples-false-claims
Jul 30, 2026
Merged

docs(examples): correct four claims the code does not support#151
rubenhensen merged 4 commits into
mainfrom
fix/examples-false-claims

Conversation

@rubenhensen

@rubenhensen rubenhensen commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Four claims in examples/ that the code does not support, from dobby's review of #145. All four were imported verbatim from the archived postguard-examples, and each is the class the import exists to close: an example teaching something untrue.

pg-node's README promised a guardrail that was deliberately removed

The SDK validates the shape and throws a clear TypeError if you pass { notify: true } or forget to nest.

No such validator exists. packages/pg-js/tests/postguard.test.ts pins its removal — it hand-maintained an allowlist of upload keys and rejected valid options when the types moved ahead of it.

Worse, the footgun it claimed to guard is silent, and strictly worse than omitting the option. Traced through the production path rather than assumed:

step result
delivery?.recipients where delivery is true (crypto/encrypt.ts:104) undefined
options.notifyRecipients ?? false (api/cryptify.ts:112) false on the wire — no mail
opts?.notify === undefined (sealed.ts:98) false, so the silent-upload notice does not fire

So { notify: true } sends no mail and suppresses the warning that would have said so. The README now says exactly that, and points at { notify: { recipients: false } } as the way to mean silence.

pg-dotnet's README claimed an SDK that cannot build it

.NET 8.0 or 10.0 SDK is not achievable: the project targets net8.0;net10.0, and an SDK cannot build a target framework newer than itself, so the .NET 8 SDK fails on net10.0. examples/README.md already said "10.0+", so the two READMEs this repo ships contradicted each other. examples.yml installing both is about runtimes, not about what can drive the build.

pg-dotnet's README snippet could not compile

sealed is a C# keyword, so var sealed = pg.Encrypt(…) is CS1585/CS1525 — and var result was then declared twice in one scope (CS0128). Program.cs uses sealed1/sealed2 and result1/result2 for precisely this reason. The snippet now uses named variables and says why, since this is the file the .NET surface is taught from.

pg-sveltekit exported two constants nothing reads

UPLOAD_CHUNK_SIZE = 1MB read as "this example uploads in 1 MB chunks", but new PostGuard({ pkgUrl, cryptifyUrl }) never passes uploadChunkSize, so the SDK's DEFAULT_UPLOAD_CHUNK_SIZE of 5,000,000 is what actually runs. FILEREAD_CHUNK_SIZE is unread too.

Deleted rather than wired in: the example demonstrates nothing else about chunk tuning, and configuration that is not applied is the class this workspace has been removing (.npmrc, both overrides blocks, .prettierignore). Wiring it would be a deliberate change about what the example teaches, and should be argued as one.

Also

Recorded why integration.yml's node lane is the deliberate exception to the --filter reasoning the bun, deno and api-surface lanes carry. It is the one lane whose job is whole-workspace coverage — both addons included, which is what its env: block exists to supply (apps/website is covered by the lane too, but reads its own committed .env, so it needs nothing from that block) — so narrowing it would remove coverage rather than relocate it. The examples are cheap there, and examples.yml covering them again is duplication rather than a gap.

Verified: pg-sveltekit typecheck, build and lint clean; pg-node typecheck clean; pg-dotnet builds net8.0 + net10.0; actionlint clean.

The wording fix on that integration.yml comment cannot ship in this branch — the bot has no workflows permission, so the push is rejected. It is a one-line patch in a comment below for a maintainer to apply.

Refs #145.

All four were imported verbatim from the archived postguard-examples and
surfaced by dobby's review of #145. Each is the class the import exists to
close: an example teaching something untrue.

pg-node's README promised a guardrail that was deliberately removed. It said
"The SDK validates the shape and throws a clear TypeError if you pass
{ notify: true } or forget to nest." No such validator exists, and
packages/pg-js/tests/postguard.test.ts pins its removal -- it hand-maintained
an allowlist of upload keys and rejected valid options when the types moved
ahead of it.

Worse, the footgun it claimed to guard is silent and strictly worse than
omitting the option, which I traced through the production path rather than
assuming:

  delivery?.recipients on `true`  -> undefined      (crypto/encrypt.ts:104)
  undefined ?? false             -> false on wire  (api/cryptify.ts:112)
  notify is defined              -> notice suppressed (sealed.ts:98)

So { notify: true } sends no mail and also silences the warning that would
have said so. The README now says that, and points at
{ notify: { recipients: false } } as the way to mean silence.

pg-dotnet's README claimed ".NET 8.0 or 10.0 SDK". The project targets
net8.0;net10.0, and an SDK cannot build a target framework newer than itself,
so the .NET 8 SDK fails on net10.0 -- examples/README.md already said "10.0+"
and the two contradicted each other. examples.yml installing both is about
runtimes, not about what can drive the build.

pg-dotnet's README snippet could not compile. `sealed` is a C# keyword, so
`var sealed = pg.Encrypt(...)` is CS1585/CS1525, and `var result` was then
declared twice in one scope (CS0128). Program.cs uses sealed1/sealed2 and
result1/result2 for exactly this reason; the snippet now uses named variables
and says why.

pg-sveltekit exported two constants nothing reads. UPLOAD_CHUNK_SIZE = 1MB
read as "this example uploads in 1 MB chunks", but the PostGuard config never
passes uploadChunkSize, so the SDK's 5,000,000 default is what runs. Deleted
rather than wired: the example demonstrates nothing else about chunk tuning,
and configuration that is not applied is the class this workspace has been
removing. Wiring it in would be a deliberate change about what the example
teaches.

Also recorded why integration.yml's `node` lane is the deliberate exception to
the --filter reasoning the bun, deno and api-surface lanes carry: it is the one
lane whose job is whole-workspace coverage, which is what its env: block
exists to supply, so narrowing it would remove coverage rather than relocate
it.

Refs #145
@dobby-coder

dobby-coder Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Thanks for the detailed writeup — I'm on it. I'll dig into the pg-node notify-option and pg-dotnet SDK claims (and the other two) in examples/, trace them against the actual code paths like you did, and come back with a consolidated review on #151.

@dobby-coder dobby-coder Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Three of the four corrections hold up. The fourth replaces a false claim with a different false claim, in the file the PR exists to make accurate, so this is about one sentence away from ready.

What I verified rather than assumed

  • pg-node: no validator exists anywhere in packages/pg-js/src, and all three mechanism claims in the new paragraph check out against source (encrypt.ts reads delivery?.recipients, api/cryptify.ts:112 sends notifyRecipients: options.notifyRecipients ?? false, sealed.ts:98 gates the silent-upload notice on opts?.notify === undefined).
  • pg-dotnet snippet: sealed is a keyword, and Program.cs:57,84 does use sealed1/sealed2 with result1/result2. The renames are correct.
  • pg-sveltekit deletion: a repo-wide grep for both constants returns only the two declarations plus the unrelated SDK-internal DEFAULT_UPLOAD_CHUNK_SIZE in encrypt.ts:14. Zero readers, nothing in a README or changeset describes them, and examples/* publishes nothing, so deleting rather than wiring them in leaves no stale docs behind.
  • integration.yml: every claim in the new comment checks out. Details in the inline note.
  • The prerequisite's conclusion is right. SDK 10 alone does build both target frameworks; I built them.

Blocking item (inline on examples/pg-dotnet/README.md:14): the .NET 10 SDK does not ship the net8.0 reference assemblies. Restore downloads them from NuGet.

One more, outside the diff so I could not attach it inline: dotnet run at lines 23 and 30 of that same README does not work on this project. TargetFrameworks is net8.0;net10.0, and dotnet run on a multi-target project exits with Unable to run your project / Your project targets multiple frameworks. Specify which framework to run using '--framework'. I reproduced it both with and without --no-build; dotnet run -f net10.0 works. It came in with the #145 import, it is the same class as the four claims this PR fixes, and it is one flag per occurrence while the file is already open.

Rule check. The title matches Conventional Commits and pr-title.yml is active. Refs #145 is the correct form rather than a missing closing keyword, because #145 is a pull request, not an issue. No changeset is needed: nothing under packages/pg-js changed and examples/* is unpublished. Em dash and bold density in the new prose runs above the org writing rules' cap, but it matches what these files already do, so I am not raising it as a finding.

Comment thread examples/pg-dotnet/README.md Outdated
Comment thread examples/pg-node/README.md Outdated
Comment thread .github/workflows/integration.yml Outdated
Comment thread .github/workflows/integration.yml Outdated
@dobby-coder

dobby-coder Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Reviewed #151 and requested changes on one item — three of the four corrections hold up, but the pg-dotnet one swapped in a different wrong claim.

Blocking (examples/pg-dotnet/README.md:14): it's not that the .NET 10 SDK can't build net8.0;net10.0 — it can, but it doesn't ship the net8.0 reference assemblies, it downloads them from NuGet on restore. Verified by clearing the NuGet cache and watching dotnet restore --locked-mode re-fetch microsoft.netcore.app.ref 8.0.21 before the build succeeds. Same conclusion (need 10.0+ SDK), but the corrected reason means the first build needs network or a warm cache.

Also flagged (non-blocking, left as comments):

  • Same README (lines 23, 30, outside the diff): dotnet run actually fails on this multi-target project without --framework — pre-existing from the feat: import postguard-examples as examples/*, on the workspace SDK #145 import.
  • pg-node/README.md:79 uses delivery, an SDK-internal rename a reader has nothing to match against.
  • integration.yml:132 mislabels a line reference, and the new comment sits in the wrong job.

Everything else — the pg-sveltekit removal, the pg-dotnet snippet renames, the pg-node validator removal, title/Refs — checked out clean.

Review: #151 (review)

Four review findings. The blocking one is that the previous commit replaced a
false claim with a different false claim, in the file the PR exists to make
accurate.

The .NET 10 SDK does not ship the net8.0 reference assemblies. `dotnet restore`
acquires that targeting pack from NuGet. Verified locally rather than reasoned
about: the SDK's packs directory holds only 10.0.10, while
~/.nuget/packages/microsoft.netcore.app.ref holds the 8.0.x copies. The
conclusion -- SDK 10 builds both target frameworks, SDK 8 cannot -- was right;
the reason was not. Also records that `--locked-mode` does not block the
download, because a targeting pack is not a PackageReference and so never
appears in packages.lock.json.

`dotnet run` cannot work on this project at all. TargetFrameworks is
`net8.0;net10.0`, so it exits with "Your project targets multiple frameworks.
Specify which framework to run using '--framework'". Reproduced, then fixed in
all three places it appears -- twice in pg-dotnet's README and once in
examples/README.md, which the earlier commit missed. Same class as the four
claims this PR set out to fix, and it came in with the import.

The pg-node note named an SDK-internal identifier. `delivery` exists only
inside the SDK, so a reader of that README has nothing to match it against --
they only ever type `notify`. Restated in the caller's vocabulary: reading
`.recipients` off the boolean `true` yields `undefined`. Same mechanism, no
name the public surface does not have.

Moved the node-lane rationale to where its reader is. It explains why the
`node` lane must not be narrowed, but sat inside the `bun` job's steps, so
whoever edits the node lane never reached it. It now sits above `node:`. And
corrected "api-surface below" to "above" while that hunk was open --
api-surface is the second job, the bun lane the third.

Refs #145
@rubenhensen

Copy link
Copy Markdown
Contributor Author

/dobby fixed in ec2ecfb. You were right that the fourth correction swapped one false claim for another, in the file this PR exists to make accurate — which is worse than the original, because it reads as freshly verified.

The .NET 10 SDK does not ship the net8.0 reference assemblies. Confirmed on this machine rather than taking it: packs/Microsoft.NETCore.App.Ref/ holds 10.0.10 and nothing else, while ~/.nuget/packages/microsoft.netcore.app.ref/ holds 8.0.26, 8.0.27, 8.0.29. So restore acquires the targeting pack. The line now says that, and records your --locked-mode point too — a targeting pack is not a PackageReference, so it never appears in packages.lock.json and the lock cannot block the download. My conclusion happened to survive; the mechanism I invented for it did not.

dotnet run was worse than one flag. Reproduced: Your project targets multiple frameworks. Specify which framework to run using '--framework'. Fixed in all three places, not the two you could see — examples/README.md:54 had the same line, so the previous commit's "corrections" left the top-level README teaching a command that cannot work either.

The delivery name was the right catch for the right reason. It exists only inside the SDK, so a reader of that README has nothing to match it against; they only ever type notify. Restated as reading .recipients off the boolean true yielding undefined — same mechanism, no identifier the public surface does not have.

Moved the node-lane rationale above node:. Your placement point is the whole value of that comment: it argues why that lane must not be narrowed, and it was sitting in the bun job's steps where the person editing the node lane never reaches it. Also corrected "api-surface below" to "above" while the hunk was open — api-surface is job two, the bun lane job three.

On the em-dash and bold density: noted, and I agree it is not worth raising when the surrounding files read the same way.

@dobby-coder

dobby-coder Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Thanks for confirming and for catching that examples/README.md:54 slip too — I'm on it, reviewing ec2ecfb now to make sure the .NET SDK/lock-file, dotnet run --framework, and delivery/notify fixes all hold up before I weigh in on this PR.

@dobby-coder dobby-coder Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Three findings, one blocking.

The .NET rewrite in ec2ecfb holds up. I reproduced the multi-target error verbatim (Your project targets multiple frameworks. Specify which framework to run using '--framework'), and the targeting-pack mechanism checks out: packs/Microsoft.NETCore.App.Ref/ on this machine holds only 10.0.0-rc.2, and packages.lock.json has zero ref-pack entries, so --locked-mode has nothing to block. All three dotnet run sites are fixed and a repo-wide grep finds no fourth. The api-surface above correction and the move above node: are both right: job order is node(24), api-surface(60), bun(108), deno(152), and the comment sits in the bun lane.

The blocker is the one claim ec2ecfb did not touch. apps/website is still named as something the env: block supplies, and it is not. It has two homes: the workflow comment and the PR body's ## Also section, which repeats it. Fixing only the comment leaves the untrue version as the description.

Checked rather than argued, on the other two:

  • @sealed compiles and prints 42 under SDK 10.0.100-rc.2, so cannot be an identifier is still an overclaim.
  • { notify: true } is TS2559 against the real UploadOptions, so nothing checks that for you is wrong for TypeScript callers. The mechanism in the two bullets under it is correct end to end.

The delivery restatement, the dotnet run -f net10.0 sweep, and the sveltekit constant removal (zero remaining references repo-wide) all verify clean. Not raising the em-dash and bold density, per your note.

Comment thread .github/workflows/integration.yml
Comment thread examples/pg-dotnet/README.md Outdated
Comment thread examples/pg-node/README.md Outdated
@dobby-coder

dobby-coder Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Reviewed ec2ecfb and posted review 4817809599 as request changes.

The .NET rewrite holds up end to end: the SDK really doesn't ship net8.0 ref assemblies (only 10.0.0-rc.2 is present), --locked-mode has nothing to block since targeting packs never land in packages.lock.json, the multi-target error reproduces verbatim, and all three dotnet run sites are now fixed (including the examples/README.md:54 one) — a repo-wide grep confirms there's no fourth. Job order and the api-surface/bun placement check out too.

One blocker remains: apps/website still isn't what the env: block claims. apps/website/src/lib/env.ts:10 hardcodes PKG_URL, and none of PKG_URL, CRYPTIFY_URL, or POSTGUARD_WEBSITE_URL is actually read under apps/website — the block's own comment already attributes it to the addons. Same false line also sits in the PR body's ## Also section, so fixing just the workflow comment would leave the description wrong.

The two nits carry over as confirmed rather than stylistic: @sealed is a legal verbatim identifier (builds and runs), and { notify: true } is a real TS2559 for TypeScript callers, so "nothing checks that" needs the "at runtime" scope you already gave it.

@rubenhensen

Copy link
Copy Markdown
Contributor Author

/dobby fix the issues in the dobby comments

@dobby-coder

dobby-coder Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

On it! I'll go through the review comments on this PR and push fixes for the issues raised.

dobby-coder Bot added 2 commits July 30, 2026 11:18
`nothing checks that for you` is false for TypeScript callers: `notify` is
object-only in `UploadOptions`, so `{ notify: true }` is a TS2559. It is the
runtime that has no check, and this example is plain JS, so `at runtime` is
the scope that makes the sentence true without weakening it.

`cannot be an identifier` overstates the C# rule: verbatim identifiers make
`@sealed` legal (`var @Sealed = 42` builds and prints 42 on the 10.0.100-rc.2
SDK). Bare `sealed` is the part the compiler rejects, and the reason
Program.cs picks sealed1/sealed2 is readability, not legality.
Both came out of checking this PR's claims against the toolchain, and both
cost a build to rediscover: the example is multi-target so `dotnet run` needs
`-f net10.0`, and its first build restores the net8.0 targeting pack from
NuGet. `UploadOptions.notify` is checked by the compiler and not at runtime,
which is why the plain-JS examples need to say so.
@dobby-coder

dobby-coder Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

The integration.yml wording fix cannot ship in this branch. I tried the push and GitHub rejected it:

! [remote rejected] fix/examples-false-claims -> fix/examples-false-claims
  (refusing to allow a GitHub App to create or update workflow
   .github/workflows/integration.yml without `workflows` permission)

Patch for whoever applies it:

diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml
index 6d6eb16..8b114e1 100644
--- a/.github/workflows/integration.yml
+++ b/.github/workflows/integration.yml
@@ -12,20 +12,20 @@ on:
 env:
     PKG_URL: ${{ vars.PKG_URL || 'https://pkg.postguard.eu' }}
     CRYPTIFY_URL: ${{ vars.CRYPTIFY_URL || 'https://storage.postguard.eu' }}
     POSTGUARD_WEBSITE_URL: ${{ vars.POSTGUARD_WEBSITE_URL || 'https://postguard.eu' }}
 
 jobs:
     # The broad lane, deliberately. It runs the recursive typecheck, build and test
     # rather than filtering to the SDK the way `api-surface`, `bun` and `deno` do,
-    # because whole-workspace coverage is its job: apps/website and both addons
-    # included, which is what the `env:` block above exists to supply. Narrowing it
-    # would remove that coverage rather than relocate it. examples/* is cheap here,
-    # and examples.yml covering them again is duplication rather than a gap.
+    # because whole-workspace coverage is its job: both addons included, which is
+    # what the `env:` block above exists to supply. Narrowing it would remove that
+    # coverage rather than relocate it. examples/* is cheap here, and examples.yml
+    # covering them again is duplication rather than a gap.
     node:
         name: Node ${{ matrix.node }}
         runs-on: ubuntu-latest
         strategy:
             fail-fast: false
             matrix:
                 node: ['22', '24']
         steps:

git apply --check passes both against the branch tip (85f06bc) and against the branch merged with current main. It only reflows the comment block; main has added seven lines to the same file since this branch started, in a different region.

I re-checked the claim behind it rather than taking it from the review: PKG_URL, CRYPTIFY_URL and POSTGUARD_WEBSITE_URL are read by apps/tb-addon/build.mjs:11, apps/tb-addon/src/lib/pkg-client.ts:4-6 and apps/outlook-addon/webpack.config.js:11, and nowhere under apps/website. That app reads VITE_* names through requireEnv, plus a hardcoded PKG_URL = '/pkg' at apps/website/src/lib/env.ts:10. So the env: block supplies the two addons, and the website needs nothing from it.

The same sentence in the PR body is corrected (a body PATCH needs no push, so no CI rerun).

On the base sync: merging current main into this branch is conflict-free locally, but the merge commit itself updates integration.yml, which hits the same rejection. I left it unmerged. GitHub still reports the PR mergeable, so its own merge is unaffected.

@dobby-coder dobby-coder Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One blocker, unchanged from cycle 2, and it is now the only thing left. It cannot be fixed by another bot cycle, so this is a hand-off rather than another lap.

.github/workflows/integration.yml:20 still ships the false apps/website claim. Confirmed against the tree at 85f06bc rather than re-read from the last round: PKG_URL, CRYPTIFY_URL and POSTGUARD_WEBSITE_URL are consumed only by apps/tb-addon/build.mjs:11, apps/tb-addon/src/lib/pkg-client.ts, and apps/outlook-addon/webpack.config.js:11. Under apps/website the only hit is src/lib/env.ts:10, which hardcodes export const PKG_URL = '/pkg'; every requireEnv call in that file reads a VITE_* name, and those come from the committed apps/website/.env. So the lane covers apps/website, but the env: block supplies it nothing — which is the shape of claim this PR exists to delete.

Why this ends the loop instead of going back for a fix. The App has no workflows permission; the push was already attempted and rejected (refusing to allow a GitHub App to create or update workflow). A second fix cycle would reproduce exactly that. This needs a maintainer — nothing will pick it up on its own. The one-line patch is in the comment above; I re-checked it rather than trusting it:

  • git apply --check against the branch tip 85f06bc — clean.
  • git apply -3 --check against 85f06bc merged with current main — clean. Worth stating because main has moved integration.yml since this branch started (322c44f, a different region of the file); the three-way still handles it.

No separate docs commit from me, deliberately: a push touching the same tree would risk the git apply, and there is nothing outstanding that needs one.

Everything else checks out at 85f06bc.

  • Both cycle-2 nits are addressed in the shipped text. pg-dotnet/README.md now says @sealed compiles and gives the readability reason, and pg-node/README.md scopes the claim to "nothing checks that at runtime", which is the correct scope given TypeScript callers get TS2559.
  • The dotnet run fix is complete — a repo-wide grep over *.md finds no bare dotnet run left, including the examples/README.md:54 site.
  • The pg-sveltekit deletion leaves nothing stale: UPLOAD_CHUNK_SIZE and FILEREAD_CHUNK_SIZE appear nowhere else in the tree, docs included. The only remaining hits are the SDK's own unrelated DEFAULT_UPLOAD_CHUNK_SIZE in packages/pg-js/src/crypto/encrypt.ts.
  • The PR body's ## Also section already carries the corrected wording, so the fix is not left half-applied across the two surfaces — only the workflow file is behind.
  • New CLAUDE.md section claims no CI gate that no workflow defines, and both bullets are repo-specific, so the root CLAUDE.md is the right home for them.
  • PR title is conventional and pr-title.yml will pass. Refs #145 is correct here — this is a partial fix and should not auto-close the tracker.

Loop limit reached. This is the third gatekeeping cycle on #151 (prior CHANGES_REQUESTED on 29daf58-era HEAD and on ec2ecfb), so I am not sending it back again regardless of the blocker. The PR is one git apply away from ready: apply the patch from the comment above, and the last false claim is gone.

jobs:
# The broad lane, deliberately. It runs the recursive typecheck, build and test
# rather than filtering to the SDK the way `api-surface`, `bun` and `deno` do,
# because whole-workspace coverage is its job: apps/website and both addons

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Blocking, carried from cycle 2 and re-verified at this HEAD rather than re-read: apps/website takes nothing from the env: block, so "apps/website and both addons included, which is what the env: block above exists to supply" is false about half of what it names.

Evidence: PKG_URL, CRYPTIFY_URL and POSTGUARD_WEBSITE_URL are read only by apps/tb-addon/build.mjs:11, apps/tb-addon/src/lib/pkg-client.ts and apps/outlook-addon/webpack.config.js:11. The single hit under apps/website is src/lib/env.ts:10, which hardcodes export const PKG_URL = '/pkg'; the requireEnv calls there read VITE_* names supplied by the committed apps/website/.env. The lane does cover apps/website — the env: block just is not what covers it.

This is the one file the bot cannot push (no workflows permission — the push was attempted and rejected), so it needs a maintainer. The corrected wording is in the patch comment on this PR; it drops apps/website and from this line and reflows the block. git apply --check passes at 85f06bc and git apply -3 --check passes after merging current main.

@dobby-coder

dobby-coder Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Done with cycle 3 — I posted a consolidated review requesting changes, and everything from cycle 2 checks out clean (the @sealed/notify wording, dotnet run -f net10.0 across all docs, the pg-sveltekit cleanup, and the CLAUDE.md additions).

One blocker is left, and it needs you rather than another bot pass: .github/workflows/integration.yml:20 still claims its env: block covers apps/website, but that app's PKG_URL comes from a hardcoded value in apps/website/src/lib/env.ts:10, not those env vars (they're only consumed by the two addon builds). The fix is a patch already sitting in a PR comment — I confirmed it applies cleanly both at the current tip and after merging main. I didn't push it myself (the App has no workflows permission and a prior push attempt was rejected), so it just needs someone to apply it directly.

I've hit the 3-cycle loop limit, so this won't get picked up automatically again — the PR stays in "changes requested" until that one patch lands.

@rubenhensen
rubenhensen merged commit 70fa425 into main Jul 30, 2026
28 checks passed
@rubenhensen
rubenhensen deleted the fix/examples-false-claims branch July 30, 2026 11:52
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