|
31226
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"01d0eabfa {"Commits":[{"Sha1":"01d0eabfa71ec061d876d39d4f399d2290530a15","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新\n\nRedis 发布时限批次的三级证据,绑定 clean HEAD `56e6e57`(worktreeDirty:false):\n\n· runtime 30/30 步、**776 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 776 = 759 + 本批 17 例(contracts 9 + 两后端各 4),与前置预测一致。\n dependency-resilience / multi-instance / write-capacity 这些真打 Redis 的\n 门禁全过——2 秒时限没有误伤健康链路。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate\n (npm 审计接口 503 重试两次后成功)。\n\n本提交按 C241 把锚点指向父提交 56e6e57;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T18:44:00-07:00"},{"Sha1":"56e6e57c22a534a07ac54bc5f8bf9da1c6806a03","Message":"chore(reports): 静态 28/28 回绑 @ 00cd95d;数字前置到本批实测值\n\nown-tests 96 → 99、own-test-cases 762 → 779(+3 文件 / +17 例:contracts 9 例判定单测\n与两后端各 4 例黑洞 Redis 验收;C70 只计 git 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 759 → 776 是**预测值**(759 + 17),由下一轮 runtime 实测证实。\n前两批这条路子都验证过:预测被实测原样证实。\n\n锚点按 C241 指向父提交 00cd95d。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T18:31:04-07:00"},{"Sha1":"00cd95da0b4f2694db9528235f69d2f95a6707ab","Message":"fix(realtime): Redis 发布加可判责时限 + 批次预算刹车——此前一次 Redis 故障既不可判责也不收敛\n\nB3″ 登记的推迟项里有一条是真缺口,同日单独做掉。**先有证据再动手**:起一个「接受连接但\n永不应答」的 TCP 服务端(C63 已建模的半开/黑洞形态),用与本仓 publisher 完全相同的连接配置\n(maxRetriesPerRequest: null——BullMQ 的要求)打一次 publish,**8 秒后仍然挂着**。\n不是慢,是永远:ioredis 在该配置下无限重试,命令永不 reject。\n\n真正的后果不在「慢」,在它挂在 outbox 领取事务**之内**:\n\n 修复前 修复后\n 单行 publish 无限挂起 2s 抛 REALTIME_REDIS_COMMAND_TIMEOUT\n 该行 attempts 不增(整事务回滚) +1,事务提交\n 批内其余 49 行 一次都没试过 按预算尽量试,剩下留给下一跳\n 连续故障 每秒重开一个必然超时的事务,不收敛 10 跳后进死信,可判责终态\n 运维看到的错误 Prisma 事务超时,**指向数据库** 稳定前缀,指向 Redis\n\n**光加超时不够,这是最容易做漏的一半。** 故障时每行烧掉一个完整时限,一批 50 行 ×2s 远超\n15 秒事务预算——事务照样超时回滚、attempts 照样不增,只是从「挂着」变成「忙着」。\n所以有 realtimeDispatchBudget:每行开工前裁决「还剩不剩得下再试一行」,不够就 break,\n把剩下的留给下一跳,让本事务先把已累加的 attempts 提交掉。**收敛性来自这条刹车,不是超时。**\n\n超时**抛错不吞**:五个 publish 点各有自己的失败语义(dispatcher 累加 attempts 走死信,\n进程内扇出向上传播)。在 helper 里吞掉就变成事件静默丢失,比挂住更糟。\n\n证据:\n· contracts 9 例判定单测——含「超时后底层 promise 迟到 reject 不产生 unhandledRejection」\n 与「15s 预算最多放行 7 行」(关键不是 7,是它 \u003c 50);\n· 两后端各 4 例真实 ioredis 打黑洞服务端验收,**直接测生产类**\n (new EventBus(hungRedis) / new EventBusService(hungRedis, ...))——在测试里另写一份\n publish 只能证明 helper 能用,证明不了生产路径接了它;\n· check:dual-backend 增 12 条 targeted 断言(五个 publish 点 + 两处刹车 + 黑洞用例本身)\n + 1 个受控断线负探针,dualBackendParityNegativeProbes 3 → 4。\n负向实测:摘掉 Fastify 生产 EventBus.publish 的时限 → 该用例挂满 30 秒测试上限后红、\n其余三例仍绿(精确命中);已恢复现场。\n\n顺带调了一个既有断言并注明理由:G16 的「提交后才发投递样本」用 4200 字节邻近窗口,预算刹车\n合法地把两点推远约 600 字节,放宽到 4800。它是邻近性启发式不是语义判据,意图未变;\n我也把预算日志挪到 observeDelivery 之后,尽量少动它的相邻性。\n\ncontracts 升 1.24.0(expand-only),两把锁重签,下游 fixture 源码未改即通过。\n\n证据:typecheck 13/13;pnpm check 28/28。runtime 整轮与报告回绑在下一提交。\n锚点按 C241 指向父提交 94ec469。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T18:29:12-07:00"}],"HeadCommit":{"Sha1":"01d0eabfa71ec061d876d39d4f399d2290530a15","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 56e6e57;锚点随批次刷新\n\nRedis 发布时限批次的三级证据,绑定 clean HEAD `56e6e57`(worktreeDirty:false):\n\n· runtime 30/30 步、**776 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 776 = 759 + 本批 17 例(contracts 9 + 两后端各 4),与前置预测一致。\n dependency-resilience / multi-instance / write-capacity 这些真打 Redis 的\n 门禁全过——2 秒时限没有误伤健康链路。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate\n (npm 审计接口 503 重试两次后成功)。\n\n本提交按 C241 把锚点指向父提交 56e6e57;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T18:44:00-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/94ec469fbac4eeda3fb9d0f0545be831e8eeb2cb...01d0eabfa71ec061d876d39d4f399d2290530a15","Len":3}...
|
1789782244
|
Edit
Delete
|
|
31228
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"c01526188 {"Commits":[{"Sha1":"c015261889aca3b700d1226045d8f66a27c3d431","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新\n\nB4 三级证据绑定 clean HEAD `520cacc`(worktreeDirty:false):\n\n· runtime 30/30 步、**786 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 786 = 776 + 本批 10 例,与前置预测一致。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(接口 503 重试后成功)。\n\n**本轮 runtime 的额外含义**:db-credential-separation / tracing / multi-instance /\ndependency-resilience / capacity / write-capacity 六个子门禁**第一次在聚合内跑在非超级用户\n登录上**——此前它们以 production 姿态启动真实入口却连超级用户,RLS 对其不生效。\n`dbCredentialSuperuserStartupRejected: 2` 是两个生产入口在超级用户连接下拒启的机器回执。\n\n本提交按 C241 把锚点指向父提交 520cacc;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T19:23:25-07:00"},{"Sha1":"520cacc00a6da74c376ff46886b4c61dea393ab3","Message":"chore(reports): 静态 28/28 回绑 @ 52665a2;数字前置到本批实测值\n\nown-tests 99 → 100、own-test-cases 779 → 789(+1 文件 / +10 例 RLS 启动姿态判定单测;\nC70 只计 git 已跟踪文件,故必须在实现提交落地后才数得到)。\n\ntests-passing 776 → 786 是**预测值**(776 + 10),由下一轮 runtime 实测证实。\n前三批都验证过这条路子:预测被实测原样证实。\n\n锚点按 C241 指向父提交 52665a2。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T19:10:01-07:00"},{"Sha1":"52665a2f60d48062cfe891dafcd7728379524b34","Message":"feat(kernel-repin): B4 RLS 启动期姿态探测——顺带修掉验收基座一直跑在超级用户上\n\n开工实测让 B4 第三次校准范围(先「rls 二选一」→ §2 订正「两模块互补」→「双 URL + 启动探测」)。\n**双 URL 那一半不做**:生产编排早有等价的三登录分离(MIGRATION / tenant API / system dispatcher),\nC55/C56 用真库临时 login + 8 个负例验过。语义已覆盖,只差名字;改名要牵动 C55/C56 全部验收面、\n8 个 runner 与生产编排,换不来任何安全收益。登记进迁移手册 §6 分歧账本。\n\n**真正缺的那一件做了。** rls.ts 文件头一直写着「非超级用户生产连接」,但那只是**运维前提**:\n部署时把 URL 填成超级用户,应用照常启动,FORCE RLS 对超级用户不生效,所有 RLS 断言恒绿。\ncheck:db-credential-separation 验的是**供给对不对**,不是**应用会不会拒绝**。\n现在四个入口(两 API 装配点 + 两 dispatcher)在 enforce 姿态下查两个事实——登录不得\nsuperuser/BYPASSRLS、清单内每张租户表已 FORCE RLS,任一不满足即拒启,错误带\n[RLS_RUNTIME_ROLE_UNSAFE] / [RLS_TABLES_NOT_FORCED]。姿态沿用已有的 RLS_CONTEXT_REQUIRED=1,\n不引入第二个开关。\n\n**它当场揪出的第二件事,比第一件更值钱**:加完探测跑第一个 runner 就红了,红的不是生产,\n是本仓自己的验收基座——七个 runner 都以 NODE_ENV=production 启动真实入口,却把共享验收库的\n**超级用户** URL 递给子进程。\"生产入口能跑\"这条证据一直比它看起来的弱:任何只在普通登录下\n才暴露的权限问题,在这些 runner 里结构上看不见。新增 scripts/lib/acceptance-runtime-login.mjs\n幂等供给非超级用户登录(API 走 tenant、dispatcher 走 system,与生产同构),\n**七个全部在新登录下通过**——没有发现只在超级用户下才活得下来的路径,说明 RLS 桥本身是对的,\n这条证据链只是终于名副其实了。\n\ncheck:redis-auth-live 是唯一需要 tenant+system 双成员资格的(它刻意单进程走完\n写库 → in-process dispatcher → Pub/Sub)。为它单开 combined 登录,并在代码里写明\n**它比生产姿态弱且是刻意的**,不构成\"生产也可以合并\"的先例。\n\n**顺带发现一个早已存在的红,判责 C254**:redis-auth 在新登录下仍红;git stash 回到 HEAD\n01d0eab 用超级用户跑一样红,与 B4 无关。根因是 C253 的第四处遗漏——它同样写死基础频道却跑在\nRedis DB 7 上。C253 修了三处,漏它是因为 check:redis-auth 不在 check:runtime 聚合里、修完\n再没跑过,而基线行从 2026-08-26 起一直标着 GREEN。C234 的 agedAcceptanceReports 当时就报了\n24 天陈旧,但「记录不阻断」——**一条不阻断的记录摆在一行 GREEN 旁边,不构成控制**。已修并转绿。\n\n证据:contracts 10 例判定单测;check:db-credentials 负例 8 → 10(新增两个生产入口在超级用户\n连接下拒启的**活证据**);七个 runner 在非超级用户登录下全绿;check:dual-backend 增 11 条\ntargeted 断言 + 1 个受控断线负探针(负探针 4 → 5);pnpm check 28/28;typecheck 13/13。\ncontracts 升 1.25.0(expand-only),两把锁重签。\n\n过程中一次自己的操作失误,如实记:为了给 redis-auth 的红做归因,我 git stash 了整个工作区,\npop 时因未跟踪文件已存在而失败,而我用 \u003e/dev/null 把报错吞了——正是本仓记过的「别用\ncmd \u003e/dev/null \u0026\u0026 echo 掩盖退出码」。已逐文件比对 stash 内容确认无丢失后才 drop。\n\n本批不做:把 agedAcceptanceReports 从「记录」升级为「阻断」——当前 7 份报告 19–24 天陈旧\n(含需 Docker / Xcode 的),一刀切会把整块板子打红。独立立项。\n\nruntime 整轮与报告回绑在下一提交。锚点按 C241 指向父提交 01d0eab。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T19:07:42-07:00"}],"HeadCommit":{"Sha1":"c015261889aca3b700d1226045d8f66a27c3d431","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 520cacc;锚点随批次刷新\n\nB4 三级证据绑定 clean HEAD `520cacc`(worktreeDirty:false):\n\n· runtime 30/30 步、**786 tests / 0 failures**、行为矩阵 **204/204**(地板 204);\n 786 = 776 + 本批 10 例,与前置预测一致。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate(接口 503 重试后成功)。\n\n**本轮 runtime 的额外含义**:db-credential-separation / tracing / multi-instance /\ndependency-resilience / capacity / write-capacity 六个子门禁**第一次在聚合内跑在非超级用户\n登录上**——此前它们以 production 姿态启动真实入口却连超级用户,RLS 对其不生效。\n`dbCredentialSuperuserStartupRejected: 2` 是两个生产入口在超级用户连接下拒启的机器回执。\n\n本提交按 C241 把锚点指向父提交 520cacc;证据新鲜度的 runtime 行同步回绑。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T19:23:25-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/01d0eabfa71ec061d876d39d4f399d2290530a15...c015261889aca3b700d1226045d8f66a27c3d431","Len":3}...
|
1789784609
|
Edit
Delete
|
|
31231
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"8419453de {"Commits":[{"Sha1":"8419453dedda057cca061637c499e06b345c8db8","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `43e3fe5`。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n本批只动了两个门禁脚本(check-access-audit 的 envsubst 白名单、check-operations 的 O4\n派生断言),runtime 路径未变,本可不重跑。**仍然重跑了**:这一批讲的就是「陈旧证据不算数」,\n给自己开例外会让整批话失去分量——runtime 证据现在绑在本批 HEAD 上,不是上一批的。\n\n本提交按 C241 把锚点指向父提交 43e3fe5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T20:03:50-07:00"},{"Sha1":"43e3fe53b3cef4f9941b75a4cc2a132349a37505","Message":"fix(gates): C255 access-audit 网关三周起不来 + 陈旧报告全面复验;O4 改为从模板派生\n\nC254 说「聚合外的 runner 会静默腐化」,那就把这句话查实:基线上还有 9 份报告 19–26 天陈旧\n且都标着 GREEN。能本机复验的七份全部重跑,结果分两类——\n\n**一类是本机缺前提,不是回归**:\n· trace-backend 依次缺 grafana/tempo:3.0.3、prom/prometheus:v3.14.0,runner fail-closed 拒跑,\n 行为正确。拉回后实跑通过(Collector→Tempo 入库、双重启持久、告警 3/3)。\n 顺带订正 CLAUDE.md 里 C243 的说法:「本机 Docker 走离线代理,基础镜像拉取一律超时」当日\n 已不成立,pull 正常。\n· 五个 check:*-image runner(postgres / alertmanager / loki / tempo / otel-collector)全绿。\n\n**一类是真回归,判责 C255**:\nC230 给网关模板加了 set_real_ip_from ${REAL_IP_TRUSTED_CIDR},同步了模板 / compose /\n.env.example / O4 断言四处,**唯独漏了 check-access-audit.mjs 自己硬编码的那份\nNGINX_ENVSUBST_FILTER**。变量不被替换,nginx 以\n`host not found in set_real_ip_from \"${REAL_IP_TRUSTED_CIDR}\"` 启动失败——\n该专项自 2026-08-29 起红了三周,而基线行按 08-26 的绿盘一直标着 GREEN。\n讽刺的是 O4 恰有一条「envsubst filter must allow the real_ip trust variable」:\n**它只查 compose,没查自己的测试夹具**。\n\n修法的重点不在补那一个变量,而在别让下一个变量再漏:O4 该断言改为**从模板派生**——\n模板里出现的每个 ${VAR} 必须同时出现在 compose 与 runner 两份白名单里,漏一个即红。\n负向已验证:摘掉变量精确报 `[O4] ... missing template variables: REAL_IP_TRUSTED_CIDR`。\n\n**今天两个 C 号(C254 / C255)是同一个结构**:功能落地时打断了聚合外的 runner,\n而它不再运行,所以没人知道。`agedAcceptanceReports` 每次都如实报了陈旧,\n但「记录不阻断」——一条不阻断的记录摆在一行 GREEN 旁边不构成控制。\n把它升级为阻断仍是独立立项(当前仍有 mobile-android / mobile-ios /\nimage-vulnerabilities 三项本机不可复验)。\n\n证据:trace-backend、access-audit、五个镜像 runner 七份报告全部回绑当日并 status=passed;\nCLAUDE.md 三处新鲜度日期随报告 generatedAt 同步(C132 会持续盯);pnpm check 28/28。\n\n锚点按 C241 指向父提交 c015261。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T19:51:02-07:00"}],"HeadCommit":{"Sha1":"8419453dedda057cca061637c499e06b345c8db8","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ 43e3fe5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `43e3fe5`。\n· 静态 28/28。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\n本批只动了两个门禁脚本(check-access-audit 的 envsubst 白名单、check-operations 的 O4\n派生断言),runtime 路径未变,本可不重跑。**仍然重跑了**:这一批讲的就是「陈旧证据不算数」,\n给自己开例外会让整批话失去分量——runtime 证据现在绑在本批 HEAD 上,不是上一批的。\n\n本提交按 C241 把锚点指向父提交 43e3fe5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T20:03:50-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/c015261889aca3b700d1226045d8f66a27c3d431...8419453dedda057cca061637c499e06b345c8db8","Len":2}...
|
1789787034
|
Edit
Delete
|
|
31232
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"14983b57a {"Commits":[{"Sha1":"14983b57ae2ab9c0e424700ca11c3f4677984400","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `dd2dab5`。\n· 静态 28/28(含 C256 的时效判定与门禁内自检 9/9)。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\nC256 上线后第一份 governance 报告:staleAcceptanceFreshnessViolations=0,\n两条陈旧源(mobile-android / mobile-ios)都落在已登记且未过期的豁免里——\n**它们仍然是陈旧的,只是不再沉默**:到 2026-12-19 若未解除,门禁会自己红。\n\n本提交按 C241 把锚点指向父提交 dd2dab5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T20:31:52-07:00"},{"Sha1":"dd2dab5799d061d69b7158585f1b38cd58a31833","Message":"feat(gates): C256 验收时效由「记录」升级为「陈旧即红,除非登记」\n\nC254(redis-auth 红 24 天)与 C255(access-audit 红 3 周)同日连出,形态一模一样:\n功能落地时打断了聚合外的 runner,它不再运行,所以没人知道。\n\n关键不在检测失灵——**两次 C234 的 agedAcceptanceReports 都如实报了陈旧,两次都没人动**。\n问题是它「记录不阻断」:一条不阻断的记录摆在一行 GREEN 旁边,不构成控制。\n\nC234 当初不阻断的理由写在注释里且成立——「强制会把离线 check 变成环境人质」。\n所以这次不是在阻断与不阻断之间二选一,而是把「为什么可以不跑」从沉默变成**登记**:\n\n· 超 14 天即红;\n· 出口是五字段登记(reason / registeredAt / expiresAt / blockedBy / replacementPlan),\n 与 platform-dependency-deviations、framework-criteria 的 missing 登记同口径——\n 半份不算、过期即红、expiresAt 非法即红、**策略文件缺失也红**(缺策略不等于没有时效要求);\n· 豁免会过期,逼人重新面对,而不是永久沉默;\n· 已不陈旧却仍挂着的豁免显形但不阻断(它自己会过期),防豁免只增不减。\n\n当前 2 条登记,都是诚实的环境限制而非拖延:\n mobileAndroidAcceptance —— 缺 JDK/SDK/device,runner 本身 fail-closed 无假绿风险;\n mobileIosAcceptance —— 缺 Xcode 26,现有报告只是无 Xcode 下的 fail-closed 自测,\n 不是 native 证据(G19 早已如实标注)。\n两条均至 2026-12-19,replacementPlan 写明各自的解除条件。\n\n**判定器自检在门禁内自跑**(9 条判据、5 条负向),不是只挂一个人工命令——\n只挂人工命令,它自己就会变成下一个 C254。这批修的就是这个病,不能自己再犯一次。\n\n活证据:摘掉 mobile-ios 豁免 → 精确报「已 24 天未重跑(上限 14 天)且无时效豁免登记」,\nmetric 由 0 变 1;恢复即绿。\n\n棘轮新增三项:staleAcceptanceFreshnessViolations(floor 0)、\nacceptanceFreshnessSelfTestCases(floor 9)、acceptanceFreshnessSelfTestNegatives(floor 5)。\n静态轴仍是 28 步——判定挂在 check:governance 内,没有新增步骤。\n\n证据:pnpm check 28/28;自检 9/9。锚点按 C241 指向父提交 8419453。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T20:19:11-07:00"}],"HeadCommit":{"Sha1":"14983b57ae2ab9c0e424700ca11c3f4677984400","Message":"chore(reports): runtime 30/30 + 静态 28/28 回绑 @ dd2dab5;锚点随批次刷新\n\n· runtime 30/30 步、786 tests / 0 failures、行为矩阵 204/204,clean HEAD `dd2dab5`。\n· 静态 28/28(含 C256 的时效判定与门禁内自检 9/9)。\n· 依赖 pnpm audit --prod --audit-level high = 0 high / 3 moderate。\n\nC256 上线后第一份 governance 报告:staleAcceptanceFreshnessViolations=0,\n两条陈旧源(mobile-android / mobile-ios)都落在已登记且未过期的豁免里——\n**它们仍然是陈旧的,只是不再沉默**:到 2026-12-19 若未解除,门禁会自己红。\n\n本提交按 C241 把锚点指向父提交 dd2dab5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T20:31:52-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/8419453dedda057cca061637c499e06b345c8db8...14983b57ae2ab9c0e424700ca11c3f4677984400","Len":2}...
|
1789788715
|
Edit
Delete
|
|
31271
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"0bacabbbf {"Commits":[{"Sha1":"0bacabbbf2ed7e903ea7c77bad7cb973220417f9","Message":"docs(acceptance): record MCP verification and shared-dev OS entry\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T16:37:05-07:00"},{"Sha1":"545112d3ab25eef1235f4ba7e96425f77521cf9a","Message":"chore(governance): register MCP consumer contract exports\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T16:33:38-07:00"},{"Sha1":"cb8177419cb374287ef67bf5a65cdfa2fe5d3a5f","Message":"feat(mcp): add governed read-only control-plane client and evidence view\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T16:23:59-07:00"},{"Sha1":"edec489b68a5957de8136f926c39f509e6b2147c","Message":"feat(realtime): 产品事件补齐请求上下文——不改产品,来源留在 OS 侧\n\nB3″ 如实登记过一条:产品事件走 @repo/product-runtime 的裸 SQL INSERT,Prisma 扩展覆盖不到,\n所以它们没有 context。本批补齐,但**原计划的做法行不通,改了路子**:\n\n原计划「给 ProductSqlRuntimeOptions 加上下文入参」——查下来 createProductSqlRuntime 的调用方是\n**产品自己的组合根**(products/\u003cid\u003e/src/os-composition.mjs),而 products/\u003cid\u003e/ 按双形态原则\n只是派生制品、真源在独立仓。改它的签名就是制造与独立仓的漂移,必须走 GAP-10 对账。\n本仓不越过那道协议去改派生制品。\n\n改为 OS 侧进程级 provider:`setProductOutboxContextProvider`,两后端在装配期各注册一次自己的\n`outboxContext`(读 AsyncLocalStorage),**产品代码一个字不用改**。\n\n**这条依赖一个必须验证而不是假设的前提**:后端按包名 import 与产品按绝对路径 require,\n拿到的是不是同一个模块实例?不是的话,provider 注册在一边、读在另一边,上下文会静默为 null\n——正是那种「看起来接上了、其实全是空」的假绿。实测验证:pnpm 软链 + Node realpath 解析\n使两者命中同一 CJS 缓存项,`byPath.setProductOutboxContextProvider === byName.…` 为 true。\n为此两后端新增 @repo/product-runtime workspace 依赖(它是本仓 6 个稳定内核包之一,\n不是对产品的依赖,方向没问题)。\n\n失败语义:provider 抛错时返回空上下文而不是让事务失败——**上下文缺席远好于业务写链被拖垮**。\n未注册(worker / 独立 dispatcher)时两列为 NULL,缺席是诚实的,不合成。\n\n守护:product-runtime 单测 7 → 10(注册即带 / 未注册即 NULL / provider 抛错不拖垮写链);\ncheck:dual-backend 增 5 条 targeted 断言 + 1 个受控断线负探针(负探针 5 → 6)。\nproduct-runtime 升 1.2.0(expand-only),kernel.packages / kernel.downstream 两把锁重签,\n下游 fixture 源码未改即通过。\n\n过程中撞到一次邻近窗口:注册行插在 assertTenantAuthStartup 与框架初始化之间,撑破了 C51 的\n160 字节断言。**这次没有放宽窗口**——C51 那句「必须在框架初始化之前 fail closed」是有语义的,\n改为把注册挪到框架创建之后(它本来也不需要那么早)。\n\n证据:typecheck 14/14;pnpm check 28/28;product-runtime 10/10。\nown-test-cases 789 → 792 已按实测更新;tests-passing 仍写 786(当前 runtime 报告口径),\n等本批 runtime 实测后再改——不预写未经实测的数字。锚点按 C241 指向父提交 14983b5。\n\nCo-Authored-By: Claude Opus 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-18T22:02:01-07:00"}],"HeadCommit":{"Sha1":"0bacabbbf2ed7e903ea7c77bad7cb973220417f9","Message":"docs(acceptance): record MCP verification and shared-dev OS entry\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T16:37:05-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/14983b57ae2ab9c0e424700ca11c3f4677984400...0bacabbbf2ed7e903ea7c77bad7cb973220417f9","Len":4}...
|
1789861082
|
Edit
Delete
|
|
31351
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"888fbd1a9 {"Commits":[{"Sha1":"888fbd1a9e8c2c373d8082885920795e441de858","Message":"docs(hr): publish validated workspace acceptance evidence\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:14:19-07:00"},{"Sha1":"46589618dc3e228c79aa23d78f34a33e720b4f2d","Message":"docs(governance): align runtime evidence with 819 executed tests\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:01:44-07:00"},{"Sha1":"568fb4d989746ee41e8c25fbb11f9d9c2812618b","Message":"chore(hr): freeze strengthened acceptance contract at 0.19.1\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T21:56:11-07:00"},{"Sha1":"a799ae4f1b352a144d9d658f5c788da0d1afea0c","Message":"test(hr): verify separate approvals, stale sources and query recovery\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T21:55:21-07:00"},{"Sha1":"ca77b3bc4712784321dfad13567fc77018ae69f5","Message":"feat(hr): govern personnel workspace and assisted transfer workflow\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T21:48:11-07:00"}],"HeadCommit":{"Sha1":"888fbd1a9e8c2c373d8082885920795e441de858","Message":"docs(hr): publish validated workspace acceptance evidence\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:14:19-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/0bacabbbf2ed7e903ea7c77bad7cb973220417f9...888fbd1a9e8c2c373d8082885920795e441de858","Len":5}...
|
1789881294
|
Edit
Delete
|
|
31352
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"5c934f699 {"Commits":[{"Sha1":"5c934f6995108226630166390917c999dcbfb371","Message":"docs(hr): record local deployment and remaining activation boundary\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:18:31-07:00"}],"HeadCommit":{"Sha1":"5c934f6995108226630166390917c999dcbfb371","Message":"docs(hr): record local deployment and remaining activation boundary\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:18:31-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/888fbd1a9e8c2c373d8082885920795e441de858...5c934f6995108226630166390917c999dcbfb371","Len":1}...
|
1789881529
|
Edit
Delete
|
|
31353
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"68c461908 {"Commits":[{"Sha1":"68c461908af592429f5d1ea7c248731a756f73d6","Message":"docs(onboarding): record skill validation and verified frontend deployment\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:26:25-07:00"},{"Sha1":"5a42f3bce2ea0365a1a93baf650dad0d66be99bc","Message":"fix(onboarding): validate and retain explicit skill selections\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:19:53-07:00"}],"HeadCommit":{"Sha1":"68c461908af592429f5d1ea7c248731a756f73d6","Message":"docs(onboarding): record skill validation and verified frontend deployment\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:26:25-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/5c934f6995108226630166390917c999dcbfb371...68c461908af592429f5d1ea7c248731a756f73d6","Len":2}...
|
1789882003
|
Edit
Delete
|
|
31368
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"1dae5c842 {"Commits":[{"Sha1":"1dae5c842780000bb72c7d9ba6ae17adac2faf3c","Message":"docs: record responsibility binding verification and local deployment\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:48:17-07:00"},{"Sha1":"e3b20ae0b4d9cec5926dddb1b79d7285e576fa23","Message":"fix(onboarding): validate responsibility bindings and repair ready employees\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:46:26-07:00"}],"HeadCommit":{"Sha1":"1dae5c842780000bb72c7d9ba6ae17adac2faf3c","Message":"docs: record responsibility binding verification and local deployment\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-19T22:48:17-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/68c461908af592429f5d1ea7c248731a756f73d6...1dae5c842780000bb72c7d9ba6ae17adac2faf3c","Len":2}...
|
1789883331
|
Edit
Delete
|
|
31498
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"9431bb4cf {"Commits":[{"Sha1":"9431bb4cfdfbc4e28e052c52f3b34b74a7d4bb4e","Message":"docs: record readiness refresh regression and local deployment\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T05:55:11-07:00"},{"Sha1":"3c8175bb9966806116fa46a5df7fd8270e2c8c88","Message":"fix(onboarding): refresh readiness issues as profile fields change\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T05:42:27-07:00"}],"HeadCommit":{"Sha1":"9431bb4cfdfbc4e28e052c52f3b34b74a7d4bb4e","Message":"docs: record readiness refresh regression and local deployment\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T05:55:11-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/1dae5c842780000bb72c7d9ba6ae17adac2faf3c...9431bb4cfdfbc4e28e052c52f3b34b74a7d4bb4e","Len":2}...
|
1789909153
|
Edit
Delete
|
|
31606
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"761072ce9 {"Commits":[{"Sha1":"761072ce9154ac38928c05402de32c3829f1abd0","Message":"docs(operations): record governance rollout\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T21:00:11-07:00"},{"Sha1":"cc6db5096fb620ee9170b04fb3b51ed0431ccccf","Message":"fix(governance): finalize gate evidence and API locks\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T20:56:03-07:00"}],"HeadCommit":{"Sha1":"761072ce9154ac38928c05402de32c3829f1abd0","Message":"docs(operations): record governance rollout\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T21:00:11-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/9431bb4cfdfbc4e28e052c52f3b34b74a7d4bb4e...761072ce9154ac38928c05402de32c3829f1abd0","Len":2}...
|
1789963255
|
Edit
Delete
|
|
31612
|
5
|
5
|
5
|
76
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"374f4749d {"Commits":[{"Sha1":"374f4749d6aeb24a49818a90b603dd60bd5e615a","Message":"chore(reports): 刷新完整治理与运行验收证据\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T21:27:58-07:00"}],"HeadCommit":{"Sha1":"374f4749d6aeb24a49818a90b603dd60bd5e615a","Message":"chore(reports): 刷新完整治理与运行验收证据\n","AuthorEmail":"hillao@juhailaoluodeMacBook-Pro.local","AuthorName":"juhailaoluo pro","CommitterEmail":"hillao@juhailaoluodeMacBook-Pro.local","CommitterName":"juhailaoluo pro","Timestamp":"2026-09-20T21:27:58-07:00"},"CompareURL":"luoanwu/digital-employee-os/compare/761072ce9154ac38928c05402de32c3829f1abd0...374f4749d6aeb24a49818a90b603dd60bd5e615a","Len":1}...
|
1789964887
|
Edit
Delete
|
|
24578
|
1
|
1
|
1
|
77
|
0
|
0
|
|
1
|
|
1787212145
|
Edit
Delete
|
|
24598
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
|
1787214745
|
Edit
Delete
|
|
24599
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"d80f78a6a {"Commits":[{"Sha1":"d80f78a6a62f2c183cb441605faa681d55dcf3ef","Message":"feat: CI4 版 MCP 授权服务(OAuth 2.0 + PKCE)\n\n基于 CodeIgniter 4.4.8 的 MCP Streamable HTTP 服务:\n- OAuth 2.0 Authorization Code + PKCE(S256) 网站授权流程\n- RFC 8414 元数据端点、token 端点、userinfo、RFC 7009 revoke\n- MCP 端点:initialize / tools/list / tools/call(get_user_info、ping)\n- .env 配置(database.default.*、Oauth.* 可覆盖)\n- scripts/ 冒烟测试(SQLite 隔离,52 项断言)\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T16:22:01+08:00"}],"HeadCommit":{"Sha1":"d80f78a6a62f2c183cb441605faa681d55dcf3ef","Message":"feat: CI4 版 MCP 授权服务(OAuth 2.0 + PKCE)\n\n基于 CodeIgniter 4.4.8 的 MCP Streamable HTTP 服务:\n- OAuth 2.0 Authorization Code + PKCE(S256) 网站授权流程\n- RFC 8414 元数据端点、token 端点、userinfo、RFC 7009 revoke\n- MCP 端点:initialize / tools/list / tools/call(get_user_info、ping)\n- .env 配置(database.default.*、Oauth.* 可覆盖)\n- scripts/ 冒烟测试(SQLite 隔离,52 项断言)\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T16:22:01+08:00"},"CompareURL":"","Len":1}...
|
1787214745
|
Edit
Delete
|
|
24632
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"960212e4c {"Commits":[{"Sha1":"960212e4c9d89f89bcde533b537149f043864a5f","Message":"build: update escaper for PHP 8.3\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T17:05:21+08:00"}],"HeadCommit":{"Sha1":"960212e4c9d89f89bcde533b537149f043864a5f","Message":"build: update escaper for PHP 8.3\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T17:05:21+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/d80f78a6a62f2c183cb441605faa681d55dcf3ef...960212e4c9d89f89bcde533b537149f043864a5f","Len":1}...
|
1787217108
|
Edit
Delete
|
|
24650
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"433fd721a {"Commits":[{"Sha1":"433fd721a8e456a0464bc6bedad0d2a59587e8cc","Message":"Merge remote-tracking branch 'origin/master'\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T17:50:20+08:00"},{"Sha1":"4ebdc321b37d721c97f8fd832872ae634388a096","Message":"fix: 触发 MCP OAuth 授权流程 + 支持 public client\n\n1. Mcp.php: GET /mcp 未认证时返回 401 + WWW-Authenticate: Bearer\n 之前返回 200 导致客户端(WorkBuddy)认为无需认证,\n 匿名连接后 tools/list 401 直接报连接失败,不弹授权页。\n2. Oauth.php token(): 支持 public client(仅 client_id 无 secret 换 token),\n 元数据声明 token_endpoint_auth_methods_supported 含 none。\n3. 新增 scripts/smoke_public_client.php:public client 全流程回归测试。\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T17:49:44+08:00"}],"HeadCommit":{"Sha1":"433fd721a8e456a0464bc6bedad0d2a59587e8cc","Message":"Merge remote-tracking branch 'origin/master'\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T17:50:20+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/960212e4c9d89f89bcde533b537149f043864a5f...433fd721a8e456a0464bc6bedad0d2a59587e8cc","Len":2}...
|
1787219425
|
Edit
Delete
|
|
24652
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"efeeaa705 {"Commits":[{"Sha1":"efeeaa705a8c19572fe9f3ba34e718273c634f70","Message":"feat: 支持 RFC 7591 动态客户端注册(WorkBuddy 连接必需)\n\n- 元数据新增 registration_endpoint\n- 新增 POST /oauth/register(public client,动态端口回调)\n- Oauth_client_model::create_dynamic 持久化动态注册客户端\n- 修复登录失败回显授权页时误用 GET 参数导致 400\n- 新增 scripts/smoke_dcr.php 全链路测试(30 断言)\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T18:05:12+08:00"}],"HeadCommit":{"Sha1":"efeeaa705a8c19572fe9f3ba34e718273c634f70","Message":"feat: 支持 RFC 7591 动态客户端注册(WorkBuddy 连接必需)\n\n- 元数据新增 registration_endpoint\n- 新增 POST /oauth/register(public client,动态端口回调)\n- Oauth_client_model::create_dynamic 持久化动态注册客户端\n- 修复登录失败回显授权页时误用 GET 参数导致 400\n- 新增 scripts/smoke_dcr.php 全链路测试(30 断言)\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-20T18:05:12+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/433fd721a8e456a0464bc6bedad0d2a59587e8cc...efeeaa705a8c19572fe9f3ba34e718273c634f70","Len":1}...
|
1787220549
|
Edit
Delete
|
|
24661
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"d0c0d6271 {"Commits":[{"Sha1":"d0c0d62717fb703446dd4acc0e050718fa85a95f","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T09:48:12+08:00"}],"HeadCommit":{"Sha1":"d0c0d62717fb703446dd4acc0e050718fa85a95f","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T09:48:12+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/efeeaa705a8c19572fe9f3ba34e718273c634f70...d0c0d62717fb703446dd4acc0e050718fa85a95f","Len":1}...
|
1787276934
|
Edit
Delete
|
|
24662
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"e2fe9f0bf {"Commits":[{"Sha1":"e2fe9f0bfc626b883b527992871bb89d212c6121","Message":"feat(oauth): publish MCP resource metadata\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T09:54:17+08:00"}],"HeadCommit":{"Sha1":"e2fe9f0bfc626b883b527992871bb89d212c6121","Message":"feat(oauth): publish MCP resource metadata\n\nCo-authored-by: Qwen-Coder \u003cqwen-coder@alibabacloud.com\u003e\n","AuthorEmail":"zhangjunnan@g-hi.com","AuthorName":"zhangjunnan","CommitterEmail":"zhangjunnan@g-hi.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T09:54:17+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/d0c0d62717fb703446dd4acc0e050718fa85a95f...e2fe9f0bfc626b883b527992871bb89d212c6121","Len":1}...
|
1787277259
|
Edit
Delete
|
|
24687
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"3081dc769 {"Commits":[{"Sha1":"3081dc769d0faece2f4cc4284178f3437978bf91","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T10:13:45+08:00"}],"HeadCommit":{"Sha1":"3081dc769d0faece2f4cc4284178f3437978bf91","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T10:13:45+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/e2fe9f0bfc626b883b527992871bb89d212c6121...3081dc769d0faece2f4cc4284178f3437978bf91","Len":1}...
|
1787278432
|
Edit
Delete
|
|
24688
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"4e57fd80f {"Commits":[{"Sha1":"4e57fd80f3fee43350349608069fae8e3873b1e3","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T10:17:00+08:00"}],"HeadCommit":{"Sha1":"4e57fd80f3fee43350349608069fae8e3873b1e3","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T10:17:00+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/3081dc769d0faece2f4cc4284178f3437978bf91...4e57fd80f3fee43350349608069fae8e3873b1e3","Len":1}...
|
1787278627
|
Edit
Delete
|
|
24713
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"9e8863979 {"Commits":[{"Sha1":"9e8863979ccfac75f600ad0156ad5ac1c3803487","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T10:50:58+08:00"}],"HeadCommit":{"Sha1":"9e8863979ccfac75f600ad0156ad5ac1c3803487","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T10:50:58+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/4e57fd80f3fee43350349608069fae8e3873b1e3...9e8863979ccfac75f600ad0156ad5ac1c3803487","Len":1}...
|
1787280672
|
Edit
Delete
|
|
24722
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
1
|
{"Commits":[{"Sha1":"c25720315 {"Commits":[{"Sha1":"c2572031561eb32f2d49a43e354badad267a2b22","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T11:00:15+08:00"}],"HeadCommit":{"Sha1":"c2572031561eb32f2d49a43e354badad267a2b22","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T11:00:15+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/9e8863979ccfac75f600ad0156ad5ac1c3803487...c2572031561eb32f2d49a43e354badad267a2b22","Len":1}...
|
1787281220
|
Edit
Delete
|
|
24779
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"982f51fb6 {"Commits":[{"Sha1":"982f51fb67c1bb39a2f315004c9c51f913519c24","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T13:27:47+08:00"}],"HeadCommit":{"Sha1":"982f51fb67c1bb39a2f315004c9c51f913519c24","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T13:27:47+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/c2572031561eb32f2d49a43e354badad267a2b22...982f51fb67c1bb39a2f315004c9c51f913519c24","Len":1}...
|
1787290071
|
Edit
Delete
|
|
24958
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"132f0d76f {"Commits":[{"Sha1":"132f0d76f2f41234d5710191f49018705b09ca5c","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T16:49:02+08:00"}],"HeadCommit":{"Sha1":"132f0d76f2f41234d5710191f49018705b09ca5c","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T16:49:02+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/982f51fb67c1bb39a2f315004c9c51f913519c24...132f0d76f2f41234d5710191f49018705b09ca5c","Len":1}...
|
1787302147
|
Edit
Delete
|
|
24995
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"aa3375d6f {"Commits":[{"Sha1":"aa3375d6fad2264f69776c4c1aa129902c62c542","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:10:32+08:00"}],"HeadCommit":{"Sha1":"aa3375d6fad2264f69776c4c1aa129902c62c542","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:10:32+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/132f0d76f2f41234d5710191f49018705b09ca5c...aa3375d6fad2264f69776c4c1aa129902c62c542","Len":1}...
|
1787303438
|
Edit
Delete
|
|
25030
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"0fb780076 {"Commits":[{"Sha1":"0fb78007691ba620d36cdb7a4851239b3573791f","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:21:53+08:00"}],"HeadCommit":{"Sha1":"0fb78007691ba620d36cdb7a4851239b3573791f","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:21:53+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/aa3375d6fad2264f69776c4c1aa129902c62c542...0fb78007691ba620d36cdb7a4851239b3573791f","Len":1}...
|
1787304119
|
Edit
Delete
|
|
25039
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"c927ea6f7 {"Commits":[{"Sha1":"c927ea6f7a6a3818e52e993446fd48f1c3c4e115","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:30:37+08:00"}],"HeadCommit":{"Sha1":"c927ea6f7a6a3818e52e993446fd48f1c3c4e115","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:30:37+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/0fb78007691ba620d36cdb7a4851239b3573791f...c927ea6f7a6a3818e52e993446fd48f1c3c4e115","Len":1}...
|
1787304643
|
Edit
Delete
|
|
25074
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"2b0f7bca4 {"Commits":[{"Sha1":"2b0f7bca4ca4df288324fed02d0d07185cb03e1b","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:44:07+08:00"}],"HeadCommit":{"Sha1":"2b0f7bca4ca4df288324fed02d0d07185cb03e1b","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-21T17:44:07+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/c927ea6f7a6a3818e52e993446fd48f1c3c4e115...2b0f7bca4ca4df288324fed02d0d07185cb03e1b","Len":1}...
|
1787305452
|
Edit
Delete
|
|
25164
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"5a225012a {"Commits":[{"Sha1":"5a225012a465719a2109b1b87aff1b1a2597944b","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-24T10:53:01+08:00"}],"HeadCommit":{"Sha1":"5a225012a465719a2109b1b87aff1b1a2597944b","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-24T10:53:01+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/2b0f7bca4ca4df288324fed02d0d07185cb03e1b...5a225012a465719a2109b1b87aff1b1a2597944b","Len":1}...
|
1787540005
|
Edit
Delete
|
|
25183
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"7f89b6952 {"Commits":[{"Sha1":"7f89b6952c8de39a4480a13e342ea55322ef6f6c","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-24T11:08:24+08:00"}],"HeadCommit":{"Sha1":"7f89b6952c8de39a4480a13e342ea55322ef6f6c","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-24T11:08:24+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/5a225012a465719a2109b1b87aff1b1a2597944b...7f89b6952c8de39a4480a13e342ea55322ef6f6c","Len":1}...
|
1787540914
|
Edit
Delete
|
|
25184
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"522be8716 {"Commits":[{"Sha1":"522be871659c9316afec2138c84fec284926dbec","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-24T11:21:23+08:00"}],"HeadCommit":{"Sha1":"522be871659c9316afec2138c84fec284926dbec","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-24T11:21:23+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/7f89b6952c8de39a4480a13e342ea55322ef6f6c...522be871659c9316afec2138c84fec284926dbec","Len":1}...
|
1787541692
|
Edit
Delete
|
|
25854
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"1145df36b {"Commits":[{"Sha1":"1145df36bc7ce60be2c5813c5c40384b255030f9","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-25T15:36:19+08:00"}],"HeadCommit":{"Sha1":"1145df36bc7ce60be2c5813c5c40384b255030f9","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-25T15:36:19+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/522be871659c9316afec2138c84fec284926dbec...1145df36bc7ce60be2c5813c5c40384b255030f9","Len":1}...
|
1787643389
|
Edit
Delete
|
|
25863
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"a543e0f84 {"Commits":[{"Sha1":"a543e0f84179122779890a933fb6bc2d1836ee76","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-25T15:42:30+08:00"}],"HeadCommit":{"Sha1":"a543e0f84179122779890a933fb6bc2d1836ee76","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-25T15:42:30+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/1145df36bc7ce60be2c5813c5c40384b255030f9...a543e0f84179122779890a933fb6bc2d1836ee76","Len":1}...
|
1787643757
|
Edit
Delete
|
|
26206
|
1
|
5
|
1
|
77
|
0
|
0
|
refs/heads/master
|
0
|
{"Commits":[{"Sha1":"059f21c81 {"Commits":[{"Sha1":"059f21c81a98313e591b811d559912ddf18ff09e","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-26T13:51:44+08:00"}],"HeadCommit":{"Sha1":"059f21c81a98313e591b811d559912ddf18ff09e","Message":"111\n","AuthorEmail":"121158035@qq.com","AuthorName":"zhangjunnan","CommitterEmail":"121158035@qq.com","CommitterName":"zhangjunnan","Timestamp":"2026-08-26T13:51:44+08:00"},"CompareURL":"zhangjunnan/jhmcp/compare/a543e0f84179122779890a933fb6bc2d1836ee76...059f21c81a98313e591b811d559912ddf18ff09e","Len":1}...
|
1787723519
|
Edit
Delete
|
|
25249
|
12
|
1
|
12
|
78
|
0
|
0
|
|
0
|
|
1787552170
|
Edit
Delete
|
|
25250
|
12
|
5
|
12
|
78
|
0
|
0
|
refs/heads/main
|
0
|
|
1787552530
|
Edit
Delete
|
|
25251
|
12
|
5
|
12
|
78
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b6747b05e {"Commits":[{"Sha1":"b6747b05ee8d2e7d6b7f3b29a38f703b66959b41","Message":"docs(player): 增加音视频分离播放参数\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-08-20T11:32:23+08:00"},{"Sha1":"a8ce210347a22e3d920ad99d81387d2238fa4a34","Message":"fix(audio): 修正自动调音上报次数与示例格式\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-05T11:30:37+08:00"},{"Sha1":"b057b7b79598b7751a91e79b285819519800b454","Message":"fix(audio): 修复自动调音响应示例注释混行问题\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-05T11:16:55+08:00"},{"Sha1":"5a3de4033317278cd1d9ecb90c53f5b41bda7785","Message":"feat(docs): 首页增加模块快捷入口按钮\n\n补充音频与音效、智控与外设、摄像头控制入口,便于从首页直达对应模块\n\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-05T10:52:00+08:00"},{"Sha1":"ed7f93f7095fc48297411adf3e14adee004e9925","Message":"feat(theme): 调整天蓝配色并重构导航选中高亮\n\n- 品牌色由青灰改为白色底与天蓝色强调\n- 新增 nav.css,顶栏与侧栏采用链接级淡底选中\n- 移动端抽屉补齐 active 选中标记\n\n","AuthorEmail":"228834386@qq.com","AuthorName":"starry","CommitterEmail":"228834386@qq.com","CommitterName":"starry","Timestamp":"2026-08-05T10:51:59+08:00"}],"HeadCommit":{"Sha1":"b6747b05ee8d2e7d6b7f3b29a38f703b66959b41","Message":"docs(player): 增加音视频分离播放参数\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-08-20T11:32:23+08:00"},"CompareURL":"zhengpeizhong/PlayerAPI/compare/948f735eb5d6bd2d8bb3c4354a55bc2a1d1bd81d...b6747b05ee8d2e7d6b7f3b29a38f703b66959b41","Len":10}...
|
1787552530
|
Edit
Delete
|
|
25260
|
12
|
5
|
12
|
78
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"1e61a4fae {"Commits":[{"Sha1":"1e61a4fae285d421a74cd596b01c5893a6d758bd","Message":"docs(player): 新增 YouTube 解析接口导航\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-08-24T14:37:56+08:00"}],"HeadCommit":{"Sha1":"1e61a4fae285d421a74cd596b01c5893a6d758bd","Message":"docs(player): 新增 YouTube 解析接口导航\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-08-24T14:37:56+08:00"},"CompareURL":"zhengpeizhong/PlayerAPI/compare/b6747b05ee8d2e7d6b7f3b29a38f703b66959b41...1e61a4fae285d421a74cd596b01c5893a6d758bd","Len":1}...
|
1787553497
|
Edit
Delete
|
|
27533
|
12
|
5
|
12
|
78
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"b6015ff37 {"Commits":[{"Sha1":"b6015ff373e0c7903a113b5a0e15d148b44d641e","Message":"Add microphone audio energy interfaces\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-09-02T16:59:04+08:00"}],"HeadCommit":{"Sha1":"b6015ff373e0c7903a113b5a0e15d148b44d641e","Message":"Add microphone audio energy interfaces\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-09-02T16:59:04+08:00"},"CompareURL":"zhengpeizhong/PlayerAPI/compare/1e61a4fae285d421a74cd596b01c5893a6d758bd...b6015ff373e0c7903a113b5a0e15d148b44d641e","Len":1}...
|
1788339591
|
Edit
Delete
|
|
31607
|
12
|
5
|
12
|
78
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"78fed0f1f {"Commits":[{"Sha1":"78fed0f1f8ef10ecc4e7fe8d8aa16fed355ace1a","Message":"docs(audio): add speaker health detection mode\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-09-21T12:01:13+08:00"}],"HeadCommit":{"Sha1":"78fed0f1f8ef10ecc4e7fe8d8aa16fed355ace1a","Message":"docs(audio): add speaker health detection mode\n","AuthorEmail":"paidong@live.com","AuthorName":"paidong","CommitterEmail":"paidong@live.com","CommitterName":"paidong","Timestamp":"2026-09-21T12:01:13+08:00"},"CompareURL":"zhengpeizhong/PlayerAPI/compare/b6015ff373e0c7903a113b5a0e15d148b44d641e...78fed0f1f8ef10ecc4e7fe8d8aa16fed355ace1a","Len":1}...
|
1789963276
|
Edit
Delete
|
|
25496
|
4
|
1
|
4
|
79
|
0
|
0
|
|
0
|
|
1787566189
|
Edit
Delete
|
|
25497
|
4
|
5
|
4
|
79
|
0
|
0
|
refs/heads/main
|
0
|
|
1787566197
|
Edit
Delete
|
|
25498
|
4
|
5
|
4
|
79
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"4f5d04761 {"Commits":[{"Sha1":"4f5d04761f2e06c35f5bfb043fe82bfbaa3b909e","Message":"init: 全民K歌缓存资源管理器\n\n包含缓存解码工具(wesing_tool.py)和GUI管理界面(wesing_manager.py)。\n支持PCM XOR解密、QRC buggy 3DES歌词解密、音频播放、批量复制等功能。\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-08-24T18:09:39+08:00"}],"HeadCommit":{"Sha1":"4f5d04761f2e06c35f5bfb043fe82bfbaa3b909e","Message":"init: 全民K歌缓存资源管理器\n\n包含缓存解码工具(wesing_tool.py)和GUI管理界面(wesing_manager.py)。\n支持PCM XOR解密、QRC buggy 3DES歌词解密、音频播放、批量复制等功能。\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-08-24T18:09:39+08:00"},"CompareURL":"","Len":1}...
|
1787566197
|
Edit
Delete
|
|
25499
|
4
|
5
|
4
|
79
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"5da2744b6 {"Commits":[{"Sha1":"5da2744b6c9797fbef829f48629c2dcddc523db4","Message":"docs: 添加项目README、产品需求文档和技术文档\n\n- README.md: 项目概览和快速开始\n- docs/PRD.md: 项目背景、功能需求、界面设计、目录约定\n- docs/TECHNICAL.md: 加密算法(XOR/Buggy 3DES)、MCI播放、GUI架构\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-08-24T18:14:46+08:00"}],"HeadCommit":{"Sha1":"5da2744b6c9797fbef829f48629c2dcddc523db4","Message":"docs: 添加项目README、产品需求文档和技术文档\n\n- README.md: 项目概览和快速开始\n- docs/PRD.md: 项目背景、功能需求、界面设计、目录约定\n- docs/TECHNICAL.md: 加密算法(XOR/Buggy 3DES)、MCI播放、GUI架构\n\nCo-Authored-By: Claude Sonnet 5 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-08-24T18:14:46+08:00"},"CompareURL":"laiqiaojie/wesing-cache-manager/compare/4f5d04761f2e06c35f5bfb043fe82bfbaa3b909e...5da2744b6c9797fbef829f48629c2dcddc523db4","Len":1}...
|
1787566494
|
Edit
Delete
|
|
28322
|
4
|
5
|
4
|
79
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"2f70a5f0a {"Commits":[{"Sha1":"2f70a5f0a8d662663d09903382dcb4dbc7ade247","Message":"feat: 日志轮转+目录持久化+动态路径推导\n\n- 添加 TimedRotatingFileHandler 按天轮转日志,保留7天\n- 凭证提取/升级流程/引擎初始化/元数据解析全链路增加详细日志\n- 缓存目录和复制目标目录持久化到 conf.json,重启自动恢复\n- LOG_DIR 和 DECODE_DIR 从缓存目录动态推导,适配不同设备路径\n- pykakasi 初始化异常捕获从 ImportError 改为 Exception\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-09-08T11:09:50+08:00"}],"HeadCommit":{"Sha1":"2f70a5f0a8d662663d09903382dcb4dbc7ade247","Message":"feat: 日志轮转+目录持久化+动态路径推导\n\n- 添加 TimedRotatingFileHandler 按天轮转日志,保留7天\n- 凭证提取/升级流程/引擎初始化/元数据解析全链路增加详细日志\n- 缓存目录和复制目标目录持久化到 conf.json,重启自动恢复\n- LOG_DIR 和 DECODE_DIR 从缓存目录动态推导,适配不同设备路径\n- pykakasi 初始化异常捕获从 ImportError 改为 Exception\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-09-08T11:09:50+08:00"},"CompareURL":"laiqiaojie/wesing-cache-manager/compare/5da2744b6c9797fbef829f48629c2dcddc523db4...2f70a5f0a8d662663d09903382dcb4dbc7ade247","Len":1}...
|
1788836996
|
Edit
Delete
|
|
28355
|
4
|
5
|
4
|
79
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"73e210b32 {"Commits":[{"Sha1":"73e210b32e5e93eee9adc5d7cf79ba09af5e3bb0","Message":"fix: KAS样式模板对齐Sayatoo官方导出格式\n\n根据官方Sayatoo导出的KAS文件,全面修正_KAS_STYLE_TEMPLATE:\n- 启用effects/signals/transition并绑定GUID实例\n- 颜色格式改为ARGB + pos键\n- 缩放值改为1.0(非100)\n- 布局定位到屏幕底部(row1.y=819, row2.y=955)\n- 启用trans-in/out过渡(duration=200)\n- foreground=1, font.shadow=true\n- phonetic改为完整配置对象\n- modules填充完整的effects跑色和signals信号灯样式\n- 中文歌词不输出空phonetic/element字段\n- global段补充viewport.align/scale和overlap字段\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-09-08T14:15:41+08:00"}],"HeadCommit":{"Sha1":"73e210b32e5e93eee9adc5d7cf79ba09af5e3bb0","Message":"fix: KAS样式模板对齐Sayatoo官方导出格式\n\n根据官方Sayatoo导出的KAS文件,全面修正_KAS_STYLE_TEMPLATE:\n- 启用effects/signals/transition并绑定GUID实例\n- 颜色格式改为ARGB + pos键\n- 缩放值改为1.0(非100)\n- 布局定位到屏幕底部(row1.y=819, row2.y=955)\n- 启用trans-in/out过渡(duration=200)\n- foreground=1, font.shadow=true\n- phonetic改为完整配置对象\n- modules填充完整的effects跑色和signals信号灯样式\n- 中文歌词不输出空phonetic/element字段\n- global段补充viewport.align/scale和overlap字段\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-09-08T14:15:41+08:00"},"CompareURL":"laiqiaojie/wesing-cache-manager/compare/2f70a5f0a8d662663d09903382dcb4dbc7ade247...73e210b32e5e93eee9adc5d7cf79ba09af5e3bb0","Len":1}...
|
1788848144
|
Edit
Delete
|
|
28538
|
4
|
5
|
4
|
79
|
0
|
0
|
refs/heads/main
|
0
|
{"Commits":[{"Sha1":"d510589b0 {"Commits":[{"Sha1":"d510589b00caf0ccf52eca788907c18554d11d77","Message":"feat: 在线搜索下载 + 凭证最小化 + PyInstaller打包\n\n- 新增匿名搜索API(kg.qq.com/node/webapp/proxy),支持在线关键词搜索\n- 搜索下载:原唱+伴奏+歌词,高品质优先(KC80→KC20逐级探测)\n- 下载后自动解码QRC歌词为XML+KAS格式\n- Cookie精简为3字段(qua/openid/openkey),凭证用后即清\n- 日志脱敏:不记录凭证明文,仅记录布尔状态\n- 添加PyInstaller spec文件,支持单文件EXE打包\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-09-09T11:01:05+08:00"}],"HeadCommit":{"Sha1":"d510589b00caf0ccf52eca788907c18554d11d77","Message":"feat: 在线搜索下载 + 凭证最小化 + PyInstaller打包\n\n- 新增匿名搜索API(kg.qq.com/node/webapp/proxy),支持在线关键词搜索\n- 搜索下载:原唱+伴奏+歌词,高品质优先(KC80→KC20逐级探测)\n- 下载后自动解码QRC歌词为XML+KAS格式\n- Cookie精简为3字段(qua/openid/openkey),凭证用后即清\n- 日志脱敏:不记录凭证明文,仅记录布尔状态\n- 添加PyInstaller spec文件,支持单文件EXE打包\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e\n","AuthorEmail":"584481098@qq.com","AuthorName":"laiqiaojie","CommitterEmail":"584481098@qq.com","CommitterName":"laiqiaojie","Timestamp":"2026-09-09T11:01:05+08:00"},"CompareURL":"laiqiaojie/wesing-cache-manager/compare/73e210b32e5e93eee9adc5d7cf79ba09af5e3bb0...d510589b00caf0ccf52eca788907c18554d11d77","Len":1}...
|
1788922869
|
Edit
Delete
|
|
25932
|
5
|
1
|
5
|
80
|
0
|
0
|
|
1
|
|
1787673153
|
Edit
Delete
|