Repository navigation
port(upstream#1962): naive-clock notice says it clears itself - #43
Merged
adminopenclaw8-sketch merged 4 commits intoSep 17, 2026
Merged
adminopenclaw8-sketch merged 4 commits into
adminopenclaw8-sketch merged 4 commits into
Conversation
…pa-clawbot#1962) Closes Kpa-clawbot#1896. The banner told operators their clock is naive but not that the notice goes away on its own, so people went looking for Kpa-clawbot#1480 to find out. One sentence: > Clock is naive — per-packet timing clamped to ingest time. **Clears itself 24h after the last skew event.** ## Verified before writing it into the UI The issue asserts the 24h self-clear. Rather than repeat that, I checked it: - `cmd/server/observer_naive_clock.go:8` — `const observerNaiveClockWindow = 24 * time.Hour` - `applyObserverNaiveClock` applies the decay at read time and leaves `clock_naive` false once the last event is older than the window - its own comment: *"any event older than observerNaiveClockWindow is treated as absent so the chip and banner clear automatically without a background sweep"* So "24h after the last skew event" is accurate, including the fact that it needs no sweep and no restart. No test pinned the old string. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit 83134d6) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…pa-clawbot#1962) Closes Kpa-clawbot#1896. The banner told operators their clock is naive but not that the notice goes away on its own, so people went looking for Kpa-clawbot#1480 to find out. One sentence: > Clock is naive — per-packet timing clamped to ingest time. **Clears itself 24h after the last skew event.** ## Verified before writing it into the UI The issue asserts the 24h self-clear. Rather than repeat that, I checked it: - `cmd/server/observer_naive_clock.go:8` — `const observerNaiveClockWindow = 24 * time.Hour` - `applyObserverNaiveClock` applies the decay at read time and leaves `clock_naive` false once the last event is older than the window - its own comment: *"any event older than observerNaiveClockWindow is treated as absent so the chip and banner clear automatically without a background sweep"* So "24h after the last skew event" is accurate, including the fact that it needs no sweep and no restart. No test pinned the old string. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> (cherry picked from commit 83134d6) 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.
"Split out of #25 (commit
2a745f4cthere). This branch holds exactly one upstream change so it can be reviewed, tested and reverted on its own.\n\n## Upstream\n- PR: Kpa-clawbot/CoreScope#1962 by @efiten, merged 2026-09-04\n- Upstream commit:83134d6e7022bb1575d04c2b6809514a614ded5c\n- Applied withgit cherry-pick -xonto masterfda24ca5; upstream authorship kept, and the commit message carries the(cherry picked from commit …)line.\n- Patch-id identical to the #25 commit and to the upstream commit.\n- Scope:public/observers.js(one string).\n\n## Problem\nThe observer slide-over told operators their clock is naive but not that the notice goes away on its own.\n\n## Change\nAppends “Clears itself 24h after the last skew event.” to the notice text.\n\n## Adaptation to this fork\nNone. The cherry-pick applied without conflicts and the changed lines are identical to upstream.\n\n## Dependencies and merge order\n- Independent. Branched directly from masterfda24ca5and needs no other PR from this split.\n- A merge simulation of all 24 split PRs gives the same tree in upstream order and in reverse order.\n- The same simulation also merges cleanly with each of the open #11, #13 and #22, and with #33 (opened during this split; it makesTestPruneOldNeighborMetricsdeterministic). If #33 lands first, the expected CI failure named below disappears; nothing in this PR depends on it.\n- Recommended position: 17 of 24, following upstream's merge order (the order #25 was assembled in).\n\n## Verification\nLocal run of the same commands as CI's “Go Build & Test” job (server tests with-race), on this branch and on masterfda24ca5under the same conditions (same machine, run one after another):\n\n| Check | masterfda24ca5| this branch | verdict |\n|---|---|---|---|\n|xss-gate-diff| PASS | PASS | |\n|channel-lib-test| PASS | PASS | |\n|decrypt-cli-build-test| PASS | PASS | |\n|dockerfile-copy-invariants| FAIL | FAIL | not runnable locally: script needs bash ≥4 (declare -A), macOS has 3.2; identical on master |\n|staging-disk-monitor| PASS | PASS | |\n|css-vars-lint| PASS | PASS | |\n| JS unit tests from CI list + AGENTS.md set (67 files) | see below | 63 PASS, 4 FAIL | |\n|test-issue-1375-scope-stats-fetch.js| FAIL | FAILExactly oneapi('/scope-stats'call exists (the fixed loader) — found 2| baseline failure, unchanged |\n|test-issue-1648-m4-emoji-scan.js| FAIL | FAILmap.js has 1 emoji/misc-icon hit(s):| baseline failure, unchanged |\n|test-a11y-axe-routes-coverage.js| FAIL | FAILaxe ROUTES missing analytics tabs (issue #1706): areas, foreign-traffic, wardriving| baseline failure, unchanged |\n|test-frontend-helpers.js| FAIL | FAILfavStar returns empty star for non-favorite: The expression evaluated to a falsy value:,favStar returns filled star for favorite: The expression evaluated to a falsy value:| baseline failure, unchanged |\n\nBaseline failures (fail identically on master; not introduced or changed here): see rows marked baseline failure, unchanged.\n\nBrowser validation (local, fixture DB, no staging/production): Local Go server (built from master) on the committed E2E fixture DB (freshened, migrated and seeded exactly like CI), serving this branch'spublic/, compared side by side with the same server serving master'spublic/. Fixture copy: observer "DUBLIN Observer" given a currentclock_last_naive_atso/api/observersreportsclock_naive: true. The notice lives in the observer slide-over, which the app only uses at narrow widths, so both runs used a 375×812 mobile viewport and clicked the observer row. master slide-over: "Clock is naive — per-packet timing clamped to ingest time." this branch: "Clock is naive — per-packet timing clamped to ingest time. Clears itself 24h after the last skew event."\n\nNot run:\n- Playwright E2E suites (no local Playwright install); CI's E2E job will also be skipped, see below.\n-eslint(not installed locally; CI installs it on the fly).\n- Go-race/tests for modules this PR does not touch (unchanged code, identical to master).\n- Browser tests against staging/production (deliberately none).\n\nExpected GitHub CI: “Go Build & Test” is expected to fail onTestPruneOldNeighborMetrics, which already fails on master (see #25's run). Downstream jobs (Playwright, image build) are therefore skipped. “Deploy Staging” and all GHCR publish steps only run onpushtomasterand cannot run for this PR.\nTwo further ingestor tests have failed intermittently in this split's CI on branches whosecmd/ingestortree is byte-identical to master (#27, #28), so they can also appear here without being caused by this change:\n-TestBackfillTxLastSeen_ResolvesFromMaxObservationTimestamp: also reproduced locally on unmodified master.\n-TestMQTTStallWatchdog_DisconnectedEscalationThrottled_1749: the suite flake that upstream Kpa-clawbot#2003 (also split out of #25) addresses.\n\nGitHub CI result: run 34751731885 onbd3d73c2. Go Build & Test: failure; all downstream jobs incl. Deploy Staging skipped. Failed tests:\n -TestPruneOldNeighborMetrics: fails on master, documented baseline\n -TestMQTTStallWatchdog_DisconnectedEscalationThrottled_1749: intermittent suite flake. It is not reproduced locally on master: 0/20 and 0/100 (-cpu=1/-cpu=2) runs of the watchdog tests, and 3 full ingestor-suite runs. This branch'scmd/ingestorandinternaltrees are byte-identical to master, so the ingestor test binary is the same as master's; the failure has hit two frontend-only split PRs (#27, #43). Upstream documents it as flaky on clean master (2/20), and Kpa-clawbot#2003 (split PR #48) fixes the test\n\n🤖 Generated with Claude Code\n\n## Update — current master 693eb04 (2026-09-17)\n\nThe existing PR branch was updated without force-push frombd3d73c2to350b0b74. The merge graph preserves the original upstream-attributed commit, incorporates green master693eb045dbb10ecdd4657444134a696f007297e1, and includes the verified local prep commitc32b640c.\n\nThe PR diff against current master remains exactlypublic/observers.js.\n\n### Fresh verification on 350b0b7\n\n-node --check public/observers.js: PASS\n-node test-observer-naive-clock-1478.js: 8/8 PASS for list-chip and detail-banner rendering\n-git diff --check: PASS\n-test-naive-banner-tone.js: FAILS because its document stub lacksaddEventListener; the same harness failure reproduces unchanged on master693eb045\n\nNo staging, production, deployment, workflow, or auto-merge action was performed. GitHub PR CI: run 35220097556 completed successfully. Go/build gates and Playwright E2E passed. The Docker job performed only the local staging build; GHCR login/push, release artifacts, staging deploy, and badge publication were skipped.\n\n"