当前执行记录
启用前硬门槛
首位外部贡献者正式签署后,不再对同一 ICLA v1.0 Gist 做无意义的措辞、格式或 metadata 修改。实质条款变化必须发布新版本,并要求后续贡献显式接受。
MANUAL-UI-1 · GitHub App 安装权限(已完成)
GitHub 当前 REST/GraphQL API 未暴露此开关;当前 gh 身份已确认是 Organization Owner。执行记录:
已打开:https://github.com/organizations/e-dialect/settings/member_privileges
已在 GitHub Apps 中取消勾选 Allow repository admins to install GitHub Apps for their repositories。
Organization Owner 已回复 MANUAL-UI-1 done(2026-09-15)。
MANUAL-UI-CLA-1 · 仅为 .github 安装并连接 CLA Assistant(已完成)
Organization Owner 已完成 GitHub App 安装、GitHub OAuth 和 e-dialect/.github 与生产 Gist 的连接。
首次 API 验证发现 repository_selection: all 后已暂停 Canary,并要求修正。
Organization Owner 已回复 MANUAL-UI-CLA-1 corrected。
修正后组织 API 证据(2026-09-15):installation id 161854925;repository_selection: selected;suspended_at: null;updated_at: 2026-09-15T16:30:15+08:00。
当前 gh token 不含 read:user,无法通过 /user/installations/{id}/repositories 独立枚举 selected 列表;没有为此扩大 token scope。最终范围证据为 GitHub API 的 selected 状态与 Organization Owner 明确确认仅选择 .github。
Agreement/Gist:https://gist.github.com/lin594/e7aad6aea670fb1075a294f1269e58ae
Privacy Policy URL:https://github.com/e-dialect/.github/blob/main/CLA_PRIVACY.md
未启用 organization members exemption,未添加 allowlist,未使用 Import Signature,未连接其他仓库。
Gist 中的 metadata 固定为 required string legalName 与 required boolean crossBorderConsent;未添加 current email 或手填 GitHub username 字段,未修改 Gist。
CLA metadata 与隐私配置
crossBorderConsent 的 required boolean 含义为:
I separately consent to the cross-border processing of my CLA signature information as described in the e-dialect CLA Privacy Notice.
我已阅读 e-dialect CLA 隐私说明,并单独同意按其中说明将我的 CLA 签署相关个人信息提供至境外服务进行处理。
GitHub、CLA Assistant 或 SAP 仍可能依其自身告知处理账户邮箱;上述最小化仅表示 e-dialect 不额外要求 current email custom field。
.github CLA Canary
Test A · 未签署状态(已完成)
MANUAL-UI-2 · 完成一次真实 ICLA 测试签署(已完成)
2026-09-15 16:58,用户提供截图:GitHub 登录成功,但签署页只显示空白 Version 与空白正文,字段和接受按钮均未加载。这不是用户漏操作。
诊断证据:
GitHub Gist API:生产 Gist 为 public,仅有固定 revision b41fb7e4f5a53d57092b133757bdc23c92a417a0;ICLA.md 为 11,527 bytes;metadata JSON 完整。
GitHub Markdown API:metadata 可正常渲染,去除 CLA Assistant 代码所处理的 <p> 与换行后仍是有效 JSON。
CLA Assistant /api/cla/getLinkedItem 直连返回正确关联:e-dialect/.github → 生产 Gist。
CLA Assistant /api/cla/get 直连返回 updatedAt: 2026-09-15T05:29:37Z、非空 CLA HTML(11,743 chars)和非空 metadata HTML(555 chars)。
经当前代理访问 CLA Assistant 时连续出现 TLS/空响应;同机绕过代理直连约 10 秒成功。
上游已有同类未关闭报告:cla-assistant/cla-assistant#1185、#1168、#933,症状均包含空白 Version/正文或极慢 API。
恢复步骤:
让 cla-assistant.io 暂时绕过系统代理/规则走直连,然后重新打开或硬刷新:https://cla-assistant.io/e-dialect/.github?pullRequest=9
等待页面显示 Version 2026-09-15、ICLA 正文和字段。
Legal name 填写你的法定姓名。
勾选 crossBorderConsent;如页面显示 CLA Assistant 内置的 project privacy policy consent,也需单独勾选。
显式点击 I agree 接受 ICLA v1.0;不要填写额外 email,不要修改其他设置。
完成后回复:MANUAL-UI-2 done。若直连后仍为空白,回复:MANUAL-UI-2 still blank。
Codex 不得代表 GitHub 用户点击接受法律协议。
首次签署后的机器验证(2026-09-15):
Organization Owner 已回复 MANUAL-UI-2 done。
PR test(cla): verify CLA Assistant workflow #9 的同一 head 179d903a5697d2a8f8337b4ce7f8a634b811c963 上,license/cla 于 2026-09-15T09:50:16Z 变为 SUCCESS,描述为 Contributor License Agreement is signed.。
CLA Assistant 原评论已更新为 All committers have signed the CLA.;GitHub merge state 由 UNSTABLE 变为 CLEAN。
CLA Assistant 客户端从 GitHub authenticated user 取得签署身份,服务端以该身份的 login / user id 写入签署记录;本次 Canary 的签署账号为 @lin594。
未把法定姓名或其他签署个人信息复制到本公开 Issue。
首次签署后的隐私配置复核曾发现:
CLA Assistant 公开 /api/cla/getLinkedItem 返回的 .github 关联记录含正确 Gist,但不含 privacyPolicy。
对应开源版本的清理中间件只移除 repository token,不会移除 privacyPolicy;数据模型、更新接口和签署页面均使用同名字段。
因而当时不能证明首次签署前展示并强制勾选了项目自己的 CLA_PRIVACY.md 链接;首次结果未作为最终 Test B。
该缺口已通过下述 MANUAL-UI-PRIVACY-1 修正;首次测试签名随后由签署人撤销并重新签署。
MANUAL-UI-PRIVACY-1 · 项目隐私政策链接(已完成)
Organization Owner 已回复 MANUAL-UI-PRIVACY-1 done(2026-09-15)。
CLA Assistant 公开 /api/cla/getLinkedItem 已返回 privacyPolicy: https://github.com/e-dialect/.github/blob/main/CLA_PRIVACY.md。
GitHub API 已确认该 URL 对应 main 上的 CLA_PRIVACY.md(blob ce12ce808bd876c756fb3306c34b80bb13b422fc,8,428 bytes)。
生产 Gist、ICLA v1.0 文本和 metadata 均未修改。
由于首次测试签署发生在上述链接生效前,签署人已撤销该测试签名并完成下述重新签署。
Test B · 生效后重新签署(已完成)
Organization Owner 已回复 MANUAL-UI-2-RESIGNED done。
为避免把旧 status 冒充复测结果,在 Privacy Policy 生效并完成重新签署后,Canary 分支增加了一个不修改文件的空提交以触发新的 synchronize webhook。
新 head:76ded50aedadc156cc391a5c74077d04bf9fab66。
新 license/cla 状态:SUCCESS;时间 2026-09-15T11:09:51Z;描述 Contributor License Agreement is signed.。
legalName 为 required string、crossBorderConsent 为 required boolean;项目 Privacy Policy URL 由 CLA Assistant 独立显示和强制接受。未配置项目 current-email 字段,GitHub username 来自 authenticated identity。
生产 Gist 未修改:仍只有 b41fb7e4f5a53d57092b133757bdc23c92a417a0 一个 revision;ICLA.md SHA-256 仍为 445bd124d129f75a377629fecbcd58c14aa25c78acefca7c877d3a9e46547f85。
Canary PR test(cla): verify CLA Assistant workflow #9 已关闭且远端分支已删除;CLA_CANARY.md 未合并进 main。
.github activation record 与 required check(已完成)
PR docs(cla): record .github activation #10 将 PIPIA 范围从拟上线更新为已启用的 .github 工作流,并写入 activation ledger;未修改 ICLA.md、CCLA.md、Gist 或 metadata。
PR docs(cla): record .github activation #10 已于 2026-09-15T11:22:17Z squash merge;merge commit ad377c2f13b85b1063e78ebff192bf557e6cac97。
变更前备份:原 branch protection 要求 PR、dismiss stale reviews、conversation resolution 且 enforce admins;没有 required status checks;repository rulesets 为空。
因 required-status-check 子资源尚未启用,GitHub 拒绝增量 PATCH;没有用整份 protection PUT 覆盖现有配置。
已改用独立 repository ruleset 23440617:active,只匹配 refs/heads/main,只要求 license/cla,strict_required_status_checks_policy: false,无 bypass。
回读确认 main 的有效 rules 中存在上述 check,原 branch protection 逐项保持不变;仍开放的组织主页 PR docs(profile): present community infrastructure vision #8 已有 license/cla: SUCCESS,未被错误卡住。
.github Canary 完成清单
每个仓库的启用清单
对每个仓库分别完成:
Activation ledger 的每行必须记录 Repository、CLA version、明确的 Enabled at 日期时间、正式 ICLA repository commit、真实 Gist revision 和实际 CLA check name,不记录贡献者个人信息。
Cohort 1
.github
xiangsheng-box
wanyu-proofreader
edialect.top
hinghwa-chat
hinghwa-dict-backend
hinghwa-dict-web
hinghwa-dict-uni-app
以上仓库必须各自完成边界 PR 后逐一启用,不批量立即开启。
Cohort 2
hinghwa_semantic_retrieval
ipa_tts_minimal
Voice_Whisper
quick-start
以上仓库必须先完成并合并更严格的路径级许可证审查,再逐一启用。
明确不启用
fork;
private / archived legacy repositories;
code-contributing-practice;
hinghwa-ime;
hinghwa-RAG;
hinghwa-dict-basic-service;
hinghwa-dict-mp-weixin。
始终使用 selected repositories,不选择 All repositories。
企业贡献者:仅首次实际出现时执行
CCLA 是低频例外流程,不是立即工作。首次出现企业或机构贡献者时:
白名单本身不产生知识产权授权,授权来源始终是双方签署的 CCLA。不得使用 Import Signature 伪造、模拟或代替未签署人员的 ICLA 记录;不得建设公共员工登记系统,也不得在 GitHub 公开员工真实姓名、邮箱或完整签署记录。
当前执行记录
26f24cb518d6bc03d26b8f27c64e172ff3988d33445bd124d129f75a377629fecbcd58c14aa25c78acefca7c877d3a9e46547f85b41fb7e4f5a53d57092b133757bdc23c92a417a0CLA_SETUP.md回填 PR:docs(cla): pin ICLA v1.0 production identity #779721ddda2233148aa60fc20c11e125464d7a07cMANUAL-UI-1:已由 Organization Owner 于 2026-09-15 确认完成161854925;repository_selection: selected;suspended_at: null;Owner 已确认仅选择.github179d903a5697d2a8f8337b4ce7f8a634b811c963;final head76ded50aedadc156cc391a5c74077d04bf9fab66license/cla,状态PENDING;PR merge state 为UNSTABLEMANUAL-UI-2-RESIGNED done;Privacy Policy 生效后更新的 Canary head76ded50aedadc156cc391a5c74077d04bf9fab66于 2026-09-15 19:09:51(UTC+8)产生全新的license/cla: SUCCESSad377c2f13b85b1063e78ebff192bf557e6cac9723440617(Require CLA on main)已 active;只匹配refs/heads/main,只要求license/cla,无 bypass;原 branch protection 未改动main启用前硬门槛
@lin594完成人工 R2 审查并给出明确合并指令ICLA.md仍为 Version 1.0,且 signer-specific effective date 语义未变CLA_PRIVACY.mdCLA_PIPIA.md与实际服务方、metadata、Privacy Policy URL、数据流、Azure/欧洲存储说明和 CSV export 行为逐项复核,并通过 docs(cla): record .github activation #10 回填启用事实.githubcommit SHAICLA.md的 SHA-256ICLA.md字节完全一致CLA_SETUP.mdSettings > Member privileges中限制只有 Organization Owner 可以安装 GitHub App(MANUAL-UI-1 done,2026-09-15)首位外部贡献者正式签署后,不再对同一 ICLA v1.0 Gist 做无意义的措辞、格式或 metadata 修改。实质条款变化必须发布新版本,并要求后续贡献显式接受。
MANUAL-UI-1 · GitHub App 安装权限(已完成)
GitHub 当前 REST/GraphQL API 未暴露此开关;当前
gh身份已确认是 Organization Owner。执行记录:GitHub Apps中取消勾选Allow repository admins to install GitHub Apps for their repositories。MANUAL-UI-1 done(2026-09-15)。MANUAL-UI-CLA-1 · 仅为
.github安装并连接 CLA Assistant(已完成)e-dialect/.github与生产 Gist 的连接。repository_selection: all后已暂停 Canary,并要求修正。MANUAL-UI-CLA-1 corrected。161854925;repository_selection: selected;suspended_at: null;updated_at: 2026-09-15T16:30:15+08:00。ghtoken 不含read:user,无法通过/user/installations/{id}/repositories独立枚举 selected 列表;没有为此扩大 token scope。最终范围证据为 GitHub API 的selected状态与 Organization Owner 明确确认仅选择.github。https://gist.github.com/lin594/e7aad6aea670fb1075a294f1269e58aehttps://github.com/e-dialect/.github/blob/main/CLA_PRIVACY.mdGist 中的
metadata固定为 required stringlegalName与 required booleancrossBorderConsent;未添加 current email 或手填 GitHub username 字段,未修改 Gist。CLA metadata 与隐私配置
legalName这一项文本个人信息;不要求 current email,也不重复要求 GitHub username@lin594身份触发并使同一 head 的license/cla变为SUCCESScrossBorderConsentrequired booleanCLA_SETUP.md示例一致https://github.com/e-dialect/.github/blob/main/CLA_PRIVACY.md,且已由公开 linked-item API 验证custom-fields-schema.json验证 metadata 的字段名称、类型和 required 状态legalName、crossBorderConsent和项目 Privacy Policy 独立勾选的重新签署;新 Canary head 已由服务端重新验证为SUCCESSPENDINGCo-authored-by:;未来含实质共同作者的贡献继续按下方逐 PR 检查crossBorderConsent的 required boolean 含义为:GitHub、CLA Assistant 或 SAP 仍可能依其自身告知处理账户邮箱;上述最小化仅表示 e-dialect 不额外要求 current email custom field。
.githubCLA CanaryTest A · 未签署状态(已完成)
test/cla-assistant-canary179d903a5697d2a8f8337b4ce7f8a634b811c9632026-09-15T08:39:41Zlicense/claPENDINGUNSTABLE.github的 PR webhook;未签署贡献未通过 CLA status。Test A 期间未执行任何签署动作,PR 内容或模板本身没有被当作签署。MANUAL-UI-2 · 完成一次真实 ICLA 测试签署(已完成)
2026-09-15 16:58,用户提供截图:GitHub 登录成功,但签署页只显示空白
Version与空白正文,字段和接受按钮均未加载。这不是用户漏操作。诊断证据:
b41fb7e4f5a53d57092b133757bdc23c92a417a0;ICLA.md为 11,527 bytes;metadataJSON 完整。metadata可正常渲染,去除 CLA Assistant 代码所处理的<p>与换行后仍是有效 JSON。/api/cla/getLinkedItem直连返回正确关联:e-dialect/.github→ 生产 Gist。/api/cla/get直连返回updatedAt: 2026-09-15T05:29:37Z、非空 CLA HTML(11,743 chars)和非空 metadata HTML(555 chars)。cla-assistant/cla-assistant#1185、#1168、#933,症状均包含空白 Version/正文或极慢 API。恢复步骤:
cla-assistant.io暂时绕过系统代理/规则走直连,然后重新打开或硬刷新:https://cla-assistant.io/e-dialect/.github?pullRequest=92026-09-15、ICLA 正文和字段。crossBorderConsent;如页面显示 CLA Assistant 内置的 project privacy policy consent,也需单独勾选。I agree接受 ICLA v1.0;不要填写额外 email,不要修改其他设置。MANUAL-UI-2 done。若直连后仍为空白,回复:MANUAL-UI-2 still blank。Codex 不得代表 GitHub 用户点击接受法律协议。
首次签署后的机器验证(2026-09-15):
MANUAL-UI-2 done。179d903a5697d2a8f8337b4ce7f8a634b811c963上,license/cla于2026-09-15T09:50:16Z变为SUCCESS,描述为Contributor License Agreement is signed.。All committers have signed the CLA.;GitHub merge state 由UNSTABLE变为CLEAN。@lin594。首次签署后的隐私配置复核曾发现:
/api/cla/getLinkedItem返回的.github关联记录含正确 Gist,但不含privacyPolicy。privacyPolicy;数据模型、更新接口和签署页面均使用同名字段。CLA_PRIVACY.md链接;首次结果未作为最终 Test B。该缺口已通过下述
MANUAL-UI-PRIVACY-1修正;首次测试签名随后由签署人撤销并重新签署。MANUAL-UI-PRIVACY-1 · 项目隐私政策链接(已完成)
MANUAL-UI-PRIVACY-1 done(2026-09-15)。/api/cla/getLinkedItem已返回privacyPolicy: https://github.com/e-dialect/.github/blob/main/CLA_PRIVACY.md。main上的CLA_PRIVACY.md(blobce12ce808bd876c756fb3306c34b80bb13b422fc,8,428 bytes)。Test B · 生效后重新签署(已完成)
MANUAL-UI-2-RESIGNED done。synchronizewebhook。76ded50aedadc156cc391a5c74077d04bf9fab66。license/cla状态:SUCCESS;时间2026-09-15T11:09:51Z;描述Contributor License Agreement is signed.。legalName为 required string、crossBorderConsent为 required boolean;项目 Privacy Policy URL 由 CLA Assistant 独立显示和强制接受。未配置项目 current-email 字段,GitHub username 来自 authenticated identity。b41fb7e4f5a53d57092b133757bdc23c92a417a0一个 revision;ICLA.mdSHA-256 仍为445bd124d129f75a377629fecbcd58c14aa25c78acefca7c877d3a9e46547f85。CLA_CANARY.md未合并进main。.githubactivation record 与 required check(已完成).github工作流,并写入 activation ledger;未修改ICLA.md、CCLA.md、Gist 或 metadata。2026-09-15T11:22:17Zsquash merge;merge commitad377c2f13b85b1063e78ebff192bf557e6cac97。23440617:active,只匹配refs/heads/main,只要求license/cla,strict_required_status_checks_policy: false,无 bypass。license/cla: SUCCESS,未被错误卡住。.githubCanary 完成清单license/cla: PENDINGlicense/cla: SUCCESSlicense/cla已通过独立 active ruleset 加入 main 的 required status checks每个仓库的启用清单
对每个仓库分别完成:
license/claCLA_SETUP.md的 Covered Repository activation ledgerActivation ledger 的每行必须记录 Repository、CLA version、明确的 Enabled at 日期时间、正式 ICLA repository commit、真实 Gist revision 和实际 CLA check name,不记录贡献者个人信息。
Cohort 1
.githubxiangsheng-boxwanyu-proofreaderedialect.tophinghwa-chathinghwa-dict-backendhinghwa-dict-webhinghwa-dict-uni-app以上仓库必须各自完成边界 PR 后逐一启用,不批量立即开启。
Cohort 2
hinghwa_semantic_retrievalipa_tts_minimalVoice_Whisperquick-start以上仓库必须先完成并合并更严格的路径级许可证审查,再逐一启用。
明确不启用
code-contributing-practice;hinghwa-ime;hinghwa-RAG;hinghwa-dict-basic-service;hinghwa-dict-mp-weixin。始终使用 selected repositories,不选择
All repositories。企业贡献者:仅首次实际出现时执行
CCLA 是低频例外流程,不是立即工作。首次出现企业或机构贡献者时:
allowListPattern,不使用宽泛 wildcard白名单本身不产生知识产权授权,授权来源始终是双方签署的 CCLA。不得使用 Import Signature 伪造、模拟或代替未签署人员的 ICLA 记录;不得建设公共员工登记系统,也不得在 GitHub 公开员工真实姓名、邮箱或完整签署记录。