| event_payload |
{"ref":"refs/heads/main","befo {"ref":"refs/heads/main","before":"883a3e660c313ea02daba8067ed6bb9208d31a25","after":"a4f30da58c8016b72afc8fe44d54723abd5266c0","compare_url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud/compare/883a3e660c313ea02daba8067ed6bb9208d31a25...a4f30da58c8016b72afc8fe44d54723abd5266c0","commits":[{"id":"a4f30da58c8016b72afc8fe44d54723abd5266c0","message":"chore(evidence): rebind seven native levels to docs-only commit 6ab5636 (KC-SR-V4-F10)\n\nThe doc change in 6ab5636 is a provenance input and evidence is inherited\nonly across report-only commits, so pnpm check went red with 7 stale\nreports. Reran on clean 6ab5636: runtime 276/0, parity 28/0, UI 5/5,\nDR 11 tables, containers, deployment 13 steps, production acceptance 14\nsteps all exit 0; pnpm check exit 0 (0 stale / 0 failed); lint+typecheck\n--force exit 0. Image levels used a zero-byte npm config (no credentials)\nand the local BuildKit cache. No source changed versus 39dd298.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud/commit/a4f30da58c8016b72afc8fe44d54723abd5266c0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-28T09:59:08-07:00","added":[],"removed":[],"modified":["reports/agent-skill-sync.latest.json","reports/auth-governance.latest.json","reports/backend-behavior-parity.latest.json","reports/container-acceptance.latest.json","reports/contract-consumers.latest.json","reports/deployment-acceptance.latest.json","reports/disaster-recovery.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-kit.latest.json","reports/governance.latest.json","reports/knowledge-index.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/observability.latest.json","reports/os-product.latest.json","reports/outbox-operations.latest.json","reports/production-acceptance.latest.json","reports/production-operations.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-failure-coverage.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/session-revalidation.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"6ab563608644cb458237bdeffa8a8e8e9fd9911c","message":"docs(realtime): fix JWKS cache TTL statement and register forged-kid JWKS amplification (KC-SR-V4-F10)\n\nDocs only. The batch section no longer claims AUTH_JWKS_CACHE_TTL_MS only\naffects HTTP and the handshake: since KC-SR-V3-F9 the periodic revalidation\nshares the same cache rule during an IdP outage. The \"未覆盖与后续\" section\nnow actually registers the pre-existing issue (claimed but missing in the\nprevious round): an unknown kid forces one JWKS fetch per handshake / HTTP\nrequest with no single-flight or rate limit, amplifying IdP load; suggested\nfollow-up is a separate @repo/auth slice (single-flight + minimum interval).\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud/commit/6ab563608644cb458237bdeffa8a8e8e9fd9911c","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-28T09:51:23-07:00","added":[],"removed":[],"modified":["docs/realtime-session-revalidation.md"]},{"id":"9d75e2a6b50943c283f80b15c43f8a80fdad57ca","message":"chore(evidence): session revalidation round 4 — seven native levels on clean 39dd298\n\nReport-only successor of 39dd298 (verifier finding KC-SR-V3-F9).\nRuntime 276/0 (floor 207), parity 28/0, UI 5/5, DR 11 tables, containers,\ndeployment 13 steps, production acceptance 14 steps all exit 0; pnpm check\nexit 0 with 0 stale / 0 failed; lint+typecheck --force exit 0. Image levels\nused a zero-byte npm config (no credentials) and the local BuildKit cache.\nReceipt: reports/session-revalidation.latest.json (round 4; rounds 1-3 kept).\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud/commit/9d75e2a6b50943c283f80b15c43f8a80fdad57ca","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-28T09:19:28-07:00","added":[],"removed":[],"modified":["reports/agent-skill-sync.latest.json","reports/auth-governance.latest.json","reports/backend-behavior-parity.latest.json","reports/container-acceptance.latest.json","reports/contract-consumers.latest.json","reports/deployment-acceptance.latest.json","reports/disaster-recovery.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-kit.latest.json","reports/governance.latest.json","reports/knowledge-index.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/observability.latest.json","reports/os-product.latest.json","reports/outbox-operations.latest.json","reports/production-acceptance.latest.json","reports/production-operations.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-failure-coverage.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/session-revalidation.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},{"id":"39dd2985bf54b7a2ccc7019dc2f3516f5aef5d07","message":"fix(realtime): one outage rule for revalidation and handshake; no backoff reset on brief opens (KC-SR-V3-F9)\n\nDuring a persistent JWKS outage the batch revalidation closed every\nconnection 1013 while the handshake still accepted cached-kid tokens for up\nto AUTH_JWKS_CACHE_TTL_MS, so clients churned connect -\u003e 1013 -\u003e reconnect.\nNow @repo/auth refreshSigningKeys({ tolerateCachedOnFailure }) keeps a\ncached key set that is still within its TTL (returns \"cached\"), and\nfetchKeys:false treats an expired cache as unavailable. Revalidation uses\nit: while the cache is valid connections stay open (same rule as HTTP and\nthe handshake); after expiry WS closes 1013 / SSE ends without a named\nevent and new handshakes are also 1013. The web client's backoff no longer\nresets on open: only a stable open of \u003e= 30 s followed by a non-outage close\nresets it (contracts realtimeReconnectAttempt / realtimeReconnectDelayMs).\nDoc records the outage behaviour and registers the pre-existing unthrottled\nJWKS fetch on forged kids (not fixed here).\n\nRed first on 19989d2: contracts 3, auth 1, integration 1 failed.\nOwn round-1 demo assertion updated: refreshSigningKeys now reports \"fresh\".\nDirty-tree feedback: runtime 276/0, docs-truth/auth gates and\nlint/typecheck --force green; native levels follow on this commit.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud/commit/39dd2985bf54b7a2ccc7019dc2f3516f5aef5d07","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-28T09:11:44-07:00","added":[],"removed":[],"modified":["CLAUDE.md","apps/api-nestjs/src/auth/auth.service.ts","apps/api-nestjs/src/events/realtime-session.service.ts","apps/api-nestjs/test/realtime.session-revalidation.test.ts","apps/web/src/hooks/useRealtime.ts","docs/realtime-session-revalidation.md","packages/auth/src/auth.test.ts","packages/auth/src/index.ts","packages/contracts/src/realtime-session.test.ts","packages/contracts/src/realtime-session.ts"]},{"id":"19989d2ec5c008128c1ed29e9cbf36cf11e538fd","message":"chore(evidence): session revalidation round 3 — seven native levels on clean 1a0a8bb\n\nReport-only successor of 1a0a8bb (verifier findings KC-SR-V2-F7/F8).\nRuntime 272/0 (floor 207), parity 28/0, UI 5/5, DR 11 tables, containers,\ndeployment 13 steps, production acceptance 14 steps all exit 0; pnpm check\nexit 0 with 0 stale / 0 failed; lint+typecheck --force exit 0. Image levels\nused a zero-byte npm config (no credentials) and the local BuildKit cache.\nReceipt: reports/session-revalidation.latest.json (round 3; rounds 1-2 kept).\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud/commit/19989d2ec5c008128c1ed29e9cbf36cf11e538fd","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-28T08:29:03-07:00","added":[],"removed":[],"modified":["reports/agent-skill-sync.latest.json","reports/auth-governance.latest.json","reports/backend-behavior-parity.latest.json","reports/container-acceptance.latest.json","reports/contract-consumers.latest.json","reports/deployment-acceptance.latest.json","reports/disaster-recovery.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-kit.latest.json","reports/governance.latest.json","reports/knowledge-index.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/observability.latest.json","reports/os-product.latest.json","reports/outbox-operations.latest.json","reports/production-acceptance.latest.json","reports/production-operations.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-failure-coverage.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/session-revalidation.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]}],"total_commits":0,"head_commit":{"id":"a4f30da58c8016b72afc8fe44d54723abd5266c0","message":"chore(evidence): rebind seven native levels to docs-only commit 6ab5636 (KC-SR-V4-F10)\n\nThe doc change in 6ab5636 is a provenance input and evidence is inherited\nonly across report-only commits, so pnpm check went red with 7 stale\nreports. Reran on clean 6ab5636: runtime 276/0, parity 28/0, UI 5/5,\nDR 11 tables, containers, deployment 13 steps, production acceptance 14\nsteps all exit 0; pnpm check exit 0 (0 stale / 0 failed); lint+typecheck\n--force exit 0. Image levels used a zero-byte npm config (no credentials)\nand the local BuildKit cache. No source changed versus 39dd298.\n\nCo-Authored-By: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e\n","url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud/commit/a4f30da58c8016b72afc8fe44d54723abd5266c0","author":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"committer":{"name":"juhailaoluo pro","email":"hillao@juhailaoluodeMacBook-Pro.local","username":""},"verification":null,"timestamp":"2026-10-28T09:59:08-07:00","added":[],"removed":[],"modified":["reports/agent-skill-sync.latest.json","reports/auth-governance.latest.json","reports/backend-behavior-parity.latest.json","reports/container-acceptance.latest.json","reports/contract-consumers.latest.json","reports/deployment-acceptance.latest.json","reports/disaster-recovery.latest.json","reports/docs-truth.latest.json","reports/dual-backend-parity.latest.json","reports/fork-readiness.latest.json","reports/governance-docs.latest.json","reports/governance-kit.latest.json","reports/governance.latest.json","reports/knowledge-index.latest.json","reports/migrations.latest.json","reports/naming.latest.json","reports/observability.latest.json","reports/os-product.latest.json","reports/outbox-operations.latest.json","reports/production-acceptance.latest.json","reports/production-operations.latest.json","reports/report-provenance.latest.json","reports/runtime-acceptance.latest.json","reports/runtime-failure-coverage.latest.json","reports/runtime-governance.latest.json","reports/schema-sync.latest.json","reports/session-revalidation.latest.json","reports/statemachine-write-guard.latest.json","reports/ui-acceptance.latest.json","reports/validation-source.latest.json"]},"repository":{"id":84,"owner":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"law@g-hi.com","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"name":"juhai-knowledge-cloud","full_name":"luoanwu/juhai-knowledge-cloud","description":"巨嗨知识云:受治理的知识唯一真源与混合证据检索","empty":false,"private":false,"fork":false,"template":false,"mirror":false,"size":2799,"language":"","languages_url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-knowledge-cloud/languages","html_url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud","url":"https://gitea.g-hi.com/api/v1/repos/luoanwu/juhai-knowledge-cloud","link":"","ssh_url":"git@gitea.g-hi.com:luoanwu/juhai-knowledge-cloud.git","clone_url":"https://gitea.g-hi.com/luoanwu/juhai-knowledge-cloud.git","original_url":"","website":"","stars_count":0,"forks_count":0,"watchers_count":1,"branch_count":1,"open_issues_count":0,"open_pr_counter":0,"release_counter":0,"default_branch":"main","archived":false,"created_at":"2026-08-26T09:45:53+08:00","updated_at":"2026-10-28T09:16:14+08:00","archived_at":"1970-01-01T08:00:00+08:00","permissions":{"admin":true,"push":true,"pull":true},"has_code":true,"has_issues":true,"internal_tracker":{"enable_time_tracker":true,"allow_only_contributors_to_track_time":true,"enable_issue_dependencies":true},"has_wiki":true,"has_pull_requests":true,"has_projects":true,"projects_mode":"all","has_releases":true,"has_packages":true,"has_actions":true,"ignore_whitespace_conflicts":false,"allow_merge_commits":true,"allow_rebase":true,"allow_rebase_explicit":true,"allow_squash_merge":true,"allow_fast_forward_only_merge":true,"allow_rebase_update":true,"allow_manual_merge":false,"autodetect_manual_merge":false,"default_delete_branch_after_merge":false,"default_merge_style":"merge","default_allow_maintainer_edit":true,"avatar_url":"","internal":false,"mirror_interval":"","object_format_name":"sha1","mirror_updated":"0001-01-01T00:00:00Z","topics":[],"licenses":[]},"pusher":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"},"sender":{"id":5,"login":"luoanwu","login_name":"","source_id":0,"full_name":"","email":"5+luoanwu@noreply.localhost","avatar_url":"https://gitea.g-hi.com/avatar/627574a890388a2aadc80ab38d22f3a0","html_url":"https://gitea.g-hi.com/luoanwu","language":"","is_admin":false,"last_login":"0001-01-01T00:00:00Z","created":"2026-01-30T16:28:30+08:00","restricted":false,"active":false,"prohibit_login":false,"location":"","website":"","description":"","visibility":"public","followers_count":0,"following_count":0,"starred_repos_count":0,"username":"luoanwu"}}... |