UX: show complete URL path if website domain is same as instance domain - #6
Open
everettbu wants to merge 1 commit into
Open
UX: show complete URL path if website domain is same as instance domain#6everettbu wants to merge 1 commit into
everettbu wants to merge 1 commit into
Conversation
|
This pull request has been automatically marked as stale because it has been open for 60 days with no activity. To keep it open, remove the stale tag, push code, or add a comment. Otherwise, it will be closed in 14 days. |
mfeuerstein
reviewed
Apr 10, 2026
mfeuerstein
left a comment
There was a problem hiding this comment.
PR Review — approved
Reviewed 5 files. 0 high-severity issues found. Verdict: approved.
app/assets/javascripts/discourse/templates/user/user.hbs (low)
- Reviewed app/assets/javascripts/discourse/templates/user/user.hbs — looks good
app/serializers/user_serializer.rb (low)
- Reviewed app/serializers/user_serializer.rb — looks good
app/assets/javascripts/discourse/models/user.js.es6 (low)
- Reviewed app/assets/javascripts/discourse/models/user.js.es6 — looks good
spec/serializers/user_serializer_spec.rb (low)
- Reviewed spec/serializers/user_serializer_spec.rb — looks good
app/assets/javascripts/discourse/controllers/user.js.es6 (low)
- Reviewed app/assets/javascripts/discourse/controllers/user.js.es6 — looks good
This was referenced Jul 27, 2026
Closed
leehopper
added a commit
to liatrio-labs/claude-code-gauntlet
that referenced
this pull request
Jul 28, 2026
, #25 PR1) (#71) * fix(verify): degrade only the failed slice, and retry it once first (#54, #25 PR1) verifyStage's degradation was all-or-nothing: the first untrusted slice set `failureReason`, broke the loop, and `unverifiedResult(findings, ...)` re-emitted the ENTIRE original array with origin='unknown' — including findings from slices that had already verified cleanly, and including slices that were never dispatched at all. Measured live on 2026-07-27 (smoke-20260727-205454-f99d948, ai-code-review-evaluation/discourse-graphite#6): one dropped nonce echo on slice 0 ("receipt nonce mismatch (got missing, expected fb2b1ded5014dde8.0)") cost all 16 findings of a one-slice PR their surfaced-vs-introduced classification. Now the size of the damage tracks the size of the fault: - An untrusted slice degrades only its own findings; the loop never breaks, so a fault in slice 0 no longer prevents slices 1..N from being attempted. - Each slice gets EXACTLY ONE deterministic re-dispatch before degrading (VERIFY_ATTEMPTS_PER_SLICE), mirroring writeArtifactsDerived's single retry — the executor is a sampled agent, not a function, so a second dispatch is a fresh sample. It retries uniformly where the persist path classifies: no verify failure class proves "our dispatch never reached the script". This is the part that would actually have saved the incident above, whose PR had only one slice. - The retry carries a DISTINCT nonce (`{nonce}.{i}.r1`). Reusing the slice nonce would move the confusion trustSlice defends against from space (two equal-length slices satisfying each other's receipts) into time (attempt 2 satisfied by a replay of attempt 1's receipt) — and a fresh receipt is exactly what the re-dispatch exists to obtain. - The nonce is now computed once and threaded into verifyPrompt/verifyCommand instead of being derived independently at both sites. An attempt-varying nonce turns that latent duplication into a live bug, so the duplication is removed rather than documented. - A slice-input writer GROUP that fails degrades only the slices it carried; slices from healthy groups still reach the executor. materializeVerifySlices returns a sliceIndex -> {group, reason} map instead of one first-failure reason. - One gap per degraded slice, in slice-index order, each stating its own blast radius ("k of n findings"). A slice recovered by its retry emits a disclosure gap and carries no UNVERIFIED token — nothing degraded. - `verified` is true only when zero slices degraded. Never-drop/never-fabricate is unchanged, now at slice granularity: every finding leaves the stage either as its slice's trusted verified output or as itself with origin='unknown'. Output stays in strict slice-index order because applyChallenges' stable sort breaks ties by array position. worstCaseAgentCount and coarsenLimits scale the verify term by VERIFY_ATTEMPTS_PER_SLICE, since every slice can independently take its retry; the constant is exported so the dispatch-count test asserts against it rather than a copied literal. The remaining terms stay nominal and the comment now says so. bench/runner/check.py needs no change: G3 already counts origin=unknown per finding, so its stat becomes proportional to the actual fault footprint for free (issue #54 requirement 4); its verdict stays fail-on-any-occurrence by design. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MoJGv7nzXjQrw9jf7ZmmtZ * docs(verify): correct the stale per-slice dispatch wording the review pass found Adversarial-review follow-ups, both pre-existing text this change made misleading rather than defects it introduced: - verifyStage's docstring still opened with "dispatches ONE `executor` agent per slice", four lines above the paragraph describing the retry. This repo treats comments as contract, so the one-or-two count is now stated where a reader meets it. - Four single-slice tests were titled "whole set UNVERIFIED". True only because baseInput() yields one slice — extensionally right, contractually wrong now that "whole set" and "that slice" are no longer synonyms. Retitled to say which. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MoJGv7nzXjQrw9jf7ZmmtZ * docs(verify): qualify the never-drop claim — trustSlice binds shape, not content The adversarial review pass produced a working PoC that this change's own documentation overclaims. trustSlice validates a slice's nonce, sha, n_in and verified+eliminated count sum — never that the findings in the envelope are the ones that slice dispatched. verifySliceSize is a constant, so most slices share a length; an envelope carrying a SIBLING slice's findings clears every guard. The real slice's findings are then dropped outright — not degraded to origin=unknown — and the run still reports verified=true. Reproduced end-to-end against this branch: 4 findings in two size-2 slices, slice 0 fails honestly and its retry answers with slice 1's content -> output is [F2,F3,F2,F3], verified=true, no UNVERIFIED gap. The hole predates per-slice degradation and is unchanged by it; the retry adds exactly one dispatch per failed slice on which it can be hit, where before a slice whose first attempt failed honestly could only reach the conservative degrade. Net exposure still falls: the common case went from "one fault costs every slice its classification" to "one fault costs one slice." NOT fixed here, deliberately. The fix is an id-set binding — precisely #25 requirement 2, "the count guard becomes delta-id coverage" — and it changes acceptance on the TRUSTED path: an echo that merely mangles an id character would begin degrading runs that pass today. That is a findings-content change requiring #25's measurement tier, and it would invalidate the claim that justifies this PR's suites-only tier (error paths "can only prevent verify-coverage loss or surface it, never change findings content"). So this commit changes no behavior. It removes the unqualified never-drop assertion from verifyStage's docstring, CLAUDE.md's new section, and validation-pipeline.md, and adds a KNOWN GAP block at trustSlice naming the mechanism and its owner. Shipping a guarantee a PoC breaks is the silent failure this repo exists to avoid. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MoJGv7nzXjQrw9jf7ZmmtZ * docs: drop the CLAUDE.md section this change added Reverts the 13-line "Verify-stage degradation boundary" section — 4,879 bytes, ~1,220 tokens loaded on EVERY session. CLAUDE.md is now byte-identical to main. Anthropic's guidance is explicit that CLAUDE.md is the wrong home for this: "Bloated CLAUDE.md files cause Claude to ignore your actual instructions", the exclude list names "long explanations or tutorials" and "anything Claude can figure out by reading code", and the test is "would removing this cause Claude to make mistakes?" All 13 lines fail it — every claim was already stated in a comment at the site where it matters (verifyStage, verifySliceWithRetry, trustSlice), plus the PR body and issues #25/#54. It duplicated co-located comments and charged the duplicate to every session in the repo. Measurement worth keeping: the file is 115 lines but 23,982 bytes / ~6k tokens, averaging 224 bytes per line. The "under 200 lines" heuristic reads as passing while the real cost is triple. Posted to #46 (the open context-engineering audit) along with the .claude/rules/ path-scoped decomposition — the only split that actually saves context, since @path imports load at launch — and a proposed forward-looking rule so the surface stops regrowing between audits. Nothing is lost. The rationale lives in the code comments, the PR body, and the issue threads. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MoJGv7nzXjQrw9jf7ZmmtZ * docs(verify): name the right detector in the never-drop qualifier Second adversarial pass caught the qualifier "against every failure class trustSlice DETECTS" as inaccurate: of the four classes listed one line above, two never reach trustSlice at all — an agent() throw is caught in dispatchVerifySlice and a missing slice input in materializeVerifySlices. Says "this stage" now, with the exception noted inline so the next reader does not re-derive it. Same fix in references/validation-pipeline.md. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MoJGv7nzXjQrw9jf7ZmmtZ * fix(verify): address PR #71 review comments Flatten the nested ternary in materializeVerifySlices, and add a runWith end-to-end test that forces one verify slice to degrade so the mixed origin array is exercised through validate/filter/challenge/persist. Co-authored-by: Lee Hopper <leehopper@users.noreply.github.com> --------- Co-authored-by: Claude Opus 5 <noreply@anthropic.com> Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Lee Hopper <leehopper@users.noreply.github.com>
zach-source
suggested changes
Jul 31, 2026
zach-source
left a comment
There was a problem hiding this comment.
Serializer inclusion predicate naming bug — see inline.
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.
Test 6