chainlesschain 0.166.15 → 0.166.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/completions/_cc +1 -1
- package/completions/cc.bash +1 -1
- package/completions/cc.fish +1 -1
- package/completions/cc.ps1 +1 -1
- package/package.json +2 -2
- package/src/assets/web-panel/assets/{AIOps-To-6rimH.js → AIOps-CVW2n2rh.js} +1 -1
- package/src/assets/web-panel/assets/{ActionButton-CpdCnTv3.js → ActionButton-DtuM163O.js} +1 -1
- package/src/assets/web-panel/assets/{Analytics-DK7VNES_.js → Analytics-BXvl_qHu.js} +3 -3
- package/src/assets/web-panel/assets/{AppLayout-NZ5FvhCx.js → AppLayout-VDBTFKOp.js} +5 -5
- package/src/assets/web-panel/assets/{Artifacts-NXceQPmN.js → Artifacts-BNz2xCiG.js} +1 -1
- package/src/assets/web-panel/assets/{Audit-B2d64DH2.js → Audit-DTu9Hn9P.js} +1 -1
- package/src/assets/web-panel/assets/{BackgroundAgents-ByYgvEVY.js → BackgroundAgents-D2OCPzLe.js} +1 -1
- package/src/assets/web-panel/assets/{Backup-BXvQLDvN.js → Backup-C9M-vG7G.js} +1 -1
- package/src/assets/web-panel/assets/{BaseInput-C4GZk-As.js → BaseInput-BUkCNiUQ.js} +1 -1
- package/src/assets/web-panel/assets/{Chat-CvPuohL8.js → Chat-OJ2ajF7l.js} +5 -5
- package/src/assets/web-panel/assets/{ChatBubbleRenderer-DTftcclX.js → ChatBubbleRenderer-BdZt76Ab.js} +1 -1
- package/src/assets/web-panel/assets/{Checkbox-C8dQGIqD.js → Checkbox-C1gXKDsc.js} +1 -1
- package/src/assets/web-panel/assets/{Codegen-DRM6S1W4.js → Codegen-BXbznLg7.js} +1 -1
- package/src/assets/web-panel/assets/{Col-BDM8l-r5.js → Col-CbCq5N0i.js} +1 -1
- package/src/assets/web-panel/assets/{Community-Bvmfi1fX.js → Community-V8Ks6Yun.js} +1 -1
- package/src/assets/web-panel/assets/{Compact-DGQTCima.js → Compact-DkeHQTpQ.js} +1 -1
- package/src/assets/web-panel/assets/{Compliance-D_0C-2P6.js → Compliance-JeLKwn4Q.js} +1 -1
- package/src/assets/web-panel/assets/{Cowork-3C_q99ok.js → Cowork-azfetcBz.js} +3 -3
- package/src/assets/web-panel/assets/{Cron-CIiMQ1Hl.js → Cron-Q691i_Gp.js} +2 -2
- package/src/assets/web-panel/assets/{Crosschain-peebGnES.js → Crosschain-BLjDRbr_.js} +1 -1
- package/src/assets/web-panel/assets/{DID-OkX4KB9T.js → DID-D8ptXplK.js} +2 -2
- package/src/assets/web-panel/assets/{Dashboard-D9lm0Wxa.js → Dashboard-Ctj2VVZL.js} +2 -2
- package/src/assets/web-panel/assets/{Dropdown-CitActXx.js → Dropdown-D8VgkMJ8.js} +1 -1
- package/src/assets/web-panel/assets/EmailListRenderer-CQPe5S6q.js +1 -0
- package/src/assets/web-panel/assets/{FamilyGuardDashboard-CBWAi8XL.js → FamilyGuardDashboard-ySA-7SiN.js} +1 -1
- package/src/assets/web-panel/assets/{Federation-afj8jDcp.js → Federation-1PMD-fBf.js} +1 -1
- package/src/assets/web-panel/assets/{FormItemContext-Dabt59KY.js → FormItemContext-C_jr6U4Q.js} +1 -1
- package/src/assets/web-panel/assets/{GenericCardRenderer-BQpXA9kj.js → GenericCardRenderer-Bu3bKf2B.js} +1 -1
- package/src/assets/web-panel/assets/{Git-D2p2Moo1.js → Git-Dv4Fa_T5.js} +2 -2
- package/src/assets/web-panel/assets/{Governance-DkFfPykv.js → Governance-DOEy1n1k.js} +1 -1
- package/src/assets/web-panel/assets/{Inference-C1DKpeN2.js → Inference-DkvqzWcJ.js} +1 -1
- package/src/assets/web-panel/assets/{KnowledgeGraph-CjfVg4oQ.js → KnowledgeGraph-DdUJK949.js} +1 -1
- package/src/assets/web-panel/assets/{Logs-D-zMvdSf.js → Logs-CRelcdUZ.js} +2 -2
- package/src/assets/web-panel/assets/{MarkdownRenderer-jzEpGkbc.js → MarkdownRenderer-0AHbbTA4.js} +1 -1
- package/src/assets/web-panel/assets/{Marketplace-DfAjJLyS.js → Marketplace-BuuBKsev.js} +1 -1
- package/src/assets/web-panel/assets/{McpTools-BGDHQES1.js → McpTools-DlgpEmA1.js} +3 -3
- package/src/assets/web-panel/assets/{Memory-BYqrGAPS.js → Memory-DTfdqUGy.js} +2 -2
- package/src/assets/web-panel/assets/{MobileBridge-CQ6FEtty.js → MobileBridge-CXLE5ZFO.js} +1 -1
- package/src/assets/web-panel/assets/{MobileProjects-BpMvh5JW.js → MobileProjects-Dz25OB0n.js} +1 -1
- package/src/assets/web-panel/assets/{Mtc-CWH25SrU.js → Mtc-kEL0fhgD.js} +2 -2
- package/src/assets/web-panel/assets/{MtcAudit-D6DiLmei.js → MtcAudit-BE4UvFJU.js} +2 -2
- package/src/assets/web-panel/assets/{Multisig-BSxRN4jD.js → Multisig-CSApSn8c.js} +3 -3
- package/src/assets/web-panel/assets/{NLProgramming-C0FDPKT4.js → NLProgramming-D11FpKWx.js} +1 -1
- package/src/assets/web-panel/assets/{Notes-VKR78bH-.js → Notes-CDL-D2CS.js} +3 -3
- package/src/assets/web-panel/assets/{NotificationSettings-DLSklSZB.js → NotificationSettings-C0Q6lO-c.js} +1 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-ZRE0OKbj.js +1 -0
- package/src/assets/web-panel/assets/{Organization-BB3pB27e.js → Organization-Dc-maVAq.js} +4 -4
- package/src/assets/web-panel/assets/{Overflow-Cr7bzwcs.js → Overflow-B5mUpSvi.js} +1 -1
- package/src/assets/web-panel/assets/{P2P-D1fkMMzI.js → P2P-TjXV53wq.js} +2 -2
- package/src/assets/web-panel/assets/PdhVaultBrowser-DvV2btIr.js +7 -0
- package/src/assets/web-panel/assets/{Permissions-c3Ijv0v4.js → Permissions-DKRzQ2O6.js} +4 -4
- package/src/assets/web-panel/assets/{PersonalDataHub-BJwbh3P2.js → PersonalDataHub-Dx2eqft8.js} +4 -4
- package/src/assets/web-panel/assets/{Pipeline-C4fhXafB.js → Pipeline-CnYZMB5p.js} +1 -1
- package/src/assets/web-panel/assets/{Privacy-DzSx3CD-.js → Privacy-BonKpPnp.js} +1 -1
- package/src/assets/web-panel/assets/{ProjectInit-D9fL5fED.js → ProjectInit-DWO0Du3J.js} +2 -2
- package/src/assets/web-panel/assets/{ProjectSettings-CB5FVrOR.js → ProjectSettings-C9jqyYRv.js} +2 -2
- package/src/assets/web-panel/assets/{Projects-DWhwdgfY.js → Projects-CYpKwXbz.js} +1 -1
- package/src/assets/web-panel/assets/{Providers-B9ZH4faS.js → Providers-CW-fkwJq.js} +1 -1
- package/src/assets/web-panel/assets/{QrScannerModal-BLKDHT8_.js → QrScannerModal-Cw0J3Zud.js} +1 -1
- package/src/assets/web-panel/assets/{QuickAsk-D1oYUcSY.js → QuickAsk-BH4A4IpR.js} +1 -1
- package/src/assets/web-panel/assets/{Recommend-CC2nmrOD.js → Recommend-CDwMwJus.js} +1 -1
- package/src/assets/web-panel/assets/{RemoteSession-qW9QF4-r.js → RemoteSession-DKIPwzTf.js} +2 -2
- package/src/assets/web-panel/assets/{Reputation-BDWqfzcr.js → Reputation-CklDj7qS.js} +1 -1
- package/src/assets/web-panel/assets/{Row-BBV2iCjT.js → Row-DJWZKsH0.js} +1 -1
- package/src/assets/web-panel/assets/{RssFeed-CcwrNwZB.js → RssFeed-BfSLCewo.js} +3 -3
- package/src/assets/web-panel/assets/{Search-Dr6fZ0D_.js → Search-B0IST--x.js} +1 -1
- package/src/assets/web-panel/assets/{Security-BPzaoCU6.js → Security-h1sYNWtt.js} +4 -4
- package/src/assets/web-panel/assets/{Services-BoKUU1I_.js → Services-Gh0-oxI_.js} +2 -2
- package/src/assets/web-panel/assets/{Skeleton-C8lT8GUg.js → Skeleton-CNDV_jOs.js} +1 -1
- package/src/assets/web-panel/assets/{Skills-DPpWeicz.js → Skills-ByCLTh1n.js} +1 -1
- package/src/assets/web-panel/assets/{Sla-UiijzpMU.js → Sla-BfyrJTJz.js} +1 -1
- package/src/assets/web-panel/assets/{SpeechSettings-DoofrLwS.js → SpeechSettings-BQzo9kNX.js} +1 -1
- package/src/assets/web-panel/assets/{SyncSettings-DXnyfTDw.js → SyncSettings-B6fS6z_1.js} +2 -2
- package/src/assets/web-panel/assets/{Tasks-g_WHjKeg.js → Tasks-C-uKCP-l.js} +1 -1
- package/src/assets/web-panel/assets/{Templates-DRuCh9g2.js → Templates-D6oDy7wL.js} +1 -1
- package/src/assets/web-panel/assets/{Tenant-QHIq1pH1.js → Tenant-D3LT2wNQ.js} +1 -1
- package/src/assets/web-panel/assets/{Terminal-G0fuI216.js → Terminal-BteLcv_O.js} +2 -2
- package/src/assets/web-panel/assets/{TimelineRenderer-4MT7SpGk.js → TimelineRenderer-DHHuxfqH.js} +1 -1
- package/src/assets/web-panel/assets/{Tokens-B5xT5umA.js → Tokens-BRQeykXw.js} +1 -1
- package/src/assets/web-panel/assets/{Trigger-D7HPbNgc.js → Trigger-p2XaFWEu.js} +1 -1
- package/src/assets/web-panel/assets/{Trust-CxH69dU5.js → Trust-BxadBMft.js} +1 -1
- package/src/assets/web-panel/assets/{UkeySign-CPPosveH.js → UkeySign-DRBP7LDk.js} +1 -1
- package/src/assets/web-panel/assets/{VideoEditing-Du5lGwAt.js → VideoEditing-CZ3NZkh7.js} +1 -1
- package/src/assets/web-panel/assets/{Wallet-BBIGNESK.js → Wallet-C3NTBN7G.js} +4 -4
- package/src/assets/web-panel/assets/{WebAuthn-Cc3HSGmv.js → WebAuthn-C7LVgMlb.js} +5 -5
- package/src/assets/web-panel/assets/{WorkflowEditor-DBoVPNCh.js → WorkflowEditor-0_Iveog7.js} +1 -1
- package/src/assets/web-panel/assets/{chat-DHcjgiem.js → chat-DzzluYo3.js} +1 -1
- package/src/assets/web-panel/assets/{colors-DrRrvJIV.js → colors-DSMYXpaj.js} +1 -1
- package/src/assets/web-panel/assets/{compact-item-BuY_sAoN.js → compact-item-W76u1VSV.js} +1 -1
- package/src/assets/web-panel/assets/{createContext-CepH1Fha.js → createContext-otsESjb5.js} +1 -1
- package/src/assets/web-panel/assets/devWarning-BztaXF84.js +1 -0
- package/src/assets/web-panel/assets/{hasIn-Dh80Ot6o.js → hasIn-3sNLrvug.js} +1 -1
- package/src/assets/web-panel/assets/index-4jP_hG_4.js +1 -0
- package/src/assets/web-panel/assets/{index-LBkSOwky.js → index-B1I1AYJs.js} +1 -1
- package/src/assets/web-panel/assets/{index-B0rvJjId.js → index-B5LOYdYm.js} +1 -1
- package/src/assets/web-panel/assets/{index-D6tOVlq-.js → index-B9X_jqXe.js} +1 -1
- package/src/assets/web-panel/assets/{index-D7lstbTh.js → index-BA8mZxd-.js} +1 -1
- package/src/assets/web-panel/assets/{index-BPDEOOlA.js → index-BDlDO2px.js} +1 -1
- package/src/assets/web-panel/assets/{index-DuSUCH7h.js → index-BJsQio5O.js} +1 -1
- package/src/assets/web-panel/assets/{index-CEfVkKIY.js → index-BRsD1PT2.js} +1 -1
- package/src/assets/web-panel/assets/{index-CYydOga6.js → index-BXLx9HfA.js} +1 -1
- package/src/assets/web-panel/assets/{index-DkZP_QaB.js → index-BcGJtmHM.js} +1 -1
- package/src/assets/web-panel/assets/{index-BnVIvc15.js → index-BdtmEKat.js} +1 -1
- package/src/assets/web-panel/assets/{index-DuRYBWrj.js → index-BpcQYzP7.js} +1 -1
- package/src/assets/web-panel/assets/{index-By0qqC3S.js → index-C2aht9-M.js} +1 -1
- package/src/assets/web-panel/assets/{index-C10033eO.js → index-CE7tSow-.js} +1 -1
- package/src/assets/web-panel/assets/{index-9crgJ3Id.js → index-CENWwjef.js} +1 -1
- package/src/assets/web-panel/assets/{index-CNQK9DIr.js → index-CKoFyHYQ.js} +1 -1
- package/src/assets/web-panel/assets/{index-DUNyTmkS.js → index-Cg86EzNp.js} +1 -1
- package/src/assets/web-panel/assets/{index-CnRK8_Dd.js → index-ClOFeZ-t.js} +1 -1
- package/src/assets/web-panel/assets/{index-BW9Pycxh.js → index-CtFOt5x1.js} +1 -1
- package/src/assets/web-panel/assets/{index-D5_K3GKu.js → index-D7A5U2IH.js} +1 -1
- package/src/assets/web-panel/assets/{index-DRy3_beb.js → index-DH4cl52p.js} +1 -1
- package/src/assets/web-panel/assets/{index-DWANFMlq.js → index-DLDh1OW3.js} +1 -1
- package/src/assets/web-panel/assets/{index-C5vhNRqS.js → index-DMmdIpLA.js} +1 -1
- package/src/assets/web-panel/assets/{index-Ca5d64IH.js → index-DS9WYDMf.js} +1 -1
- package/src/assets/web-panel/assets/{index-zGH9zH3w.js → index-DTA8Iavv.js} +3 -3
- package/src/assets/web-panel/assets/{index-BoRy2yup.js → index-DZKAzEge.js} +1 -1
- package/src/assets/web-panel/assets/{index-Cx21_p3m.js → index-DdU7IkKX.js} +1 -1
- package/src/assets/web-panel/assets/{index-B9Gh-SOn.js → index-Ddd4mird.js} +1 -1
- package/src/assets/web-panel/assets/{index-CiUx-tkV.js → index-DmpaC2yk.js} +1 -1
- package/src/assets/web-panel/assets/{index-DYN49m7k.js → index-GlIOE4ja.js} +1 -1
- package/src/assets/web-panel/assets/{index-CUnd5hyp.js → index-MhQQ3h8q.js} +1 -1
- package/src/assets/web-panel/assets/{index-CW_23-gU.js → index-NaO9AE-F.js} +1 -1
- package/src/assets/web-panel/assets/{index-0TYLnd11.js → index-UUHCwfNq.js} +1 -1
- package/src/assets/web-panel/assets/{index-NS9dW1F1.js → index-pVm_iUre.js} +1 -1
- package/src/assets/web-panel/assets/{index-hYaigdGm.js → index-q7ftLqNt.js} +1 -1
- package/src/assets/web-panel/assets/{index-A5lVwYVq.js → index-uSCkbpZH.js} +1 -1
- package/src/assets/web-panel/assets/{index-BtqigRzf.js → index-vBKPcmAP.js} +1 -1
- package/src/assets/web-panel/assets/{index-BiZQooWK.js → index-vUmYkqmu.js} +1 -1
- package/src/assets/web-panel/assets/index-zxwuAXL5.js +1 -0
- package/src/assets/web-panel/assets/{initDefaultProps-nI_X3wKl.js → initDefaultProps-DF6llUXV.js} +1 -1
- package/src/assets/web-panel/assets/{motion-LUHbQu_R.js → motion-vtDV8_5K.js} +1 -1
- package/src/assets/web-panel/assets/{move-DHI_KvJt.js → move-B6c0bdy2.js} +1 -1
- package/src/assets/web-panel/assets/{mtc-parser-AYdL_7Mo.js → mtc-parser-DlLYWuBK.js} +1 -1
- package/src/assets/web-panel/assets/{omit-CtV3HRKa.js → omit-BH0zOxLN.js} +1 -1
- package/src/assets/web-panel/assets/{pickAttrs-CcJLTOu4.js → pickAttrs-D9di8_In.js} +1 -1
- package/src/assets/web-panel/assets/{placementArrow-DHbiLUps.js → placementArrow-BDSngufM.js} +1 -1
- package/src/assets/web-panel/assets/{responsiveObserve-BC2DGkWP.js → responsiveObserve-C_EawMvP.js} +1 -1
- package/src/assets/web-panel/assets/{slide-B4ga4pPY.js → slide-B_4wShxA.js} +1 -1
- package/src/assets/web-panel/assets/{statusUtils-hzphgKfH.js → statusUtils-CbQu6qJ-.js} +1 -1
- package/src/assets/web-panel/assets/{styleChecker-IfN9Bxoi.js → styleChecker-CvXJWYXb.js} +1 -1
- package/src/assets/web-panel/assets/{useFlexGapSupport-pcGKJ4pT.js → useFlexGapSupport-jjY1XknO.js} +1 -1
- package/src/assets/web-panel/assets/{useFs-COXhQpTG.js → useFs-CMXBdsK_.js} +1 -1
- package/src/assets/web-panel/assets/{usePersonalDataHub-xp9F9szv.js → usePersonalDataHub-YbAhhPXx.js} +1 -1
- package/src/assets/web-panel/assets/{vnode-BdSQy1Ve.js → vnode-BFCTKc0H.js} +1 -1
- package/src/assets/web-panel/assets/{zoom-CHCt5P55.js → zoom-CY9aBl5O.js} +1 -1
- package/src/assets/web-panel/index.html +1 -1
- package/src/command-help-index.json +2 -2
- package/src/command-manifest.json +2 -2
- package/src/commands/evolution.js +30 -17
- package/src/commands/learning.js +95 -9
- package/src/commands/team.js +5 -0
- package/src/data/changelog.json +28 -2
- package/src/lib/agent-team/task-lease.js +12 -1
- package/src/lib/capability-manifest.js +212 -1
- package/src/lib/evolution/bounded-skill-improvement-pilot.js +498 -0
- package/src/lib/evolution/evolution-artifact-ports.js +3277 -0
- package/src/lib/evolution/evolution-eval-gate.js +6442 -0
- package/src/lib/evolution/evolution-evidence-projector.js +3786 -0
- package/src/lib/evolution/evolution-ledger-ports.js +2689 -0
- package/src/lib/evolution/evolution-ledger.js +4280 -0
- package/src/lib/evolution/evolution-run-runtime-adapter.js +5 -0
- package/src/lib/evolution/skill-candidate-registry.js +2258 -0
- package/src/lib/evolution/skill-evaluated-promotion-durability.js +899 -0
- package/src/lib/evolution/skill-evaluated-promotion.js +481 -0
- package/src/lib/evolution/skill-execution-manifest.js +942 -0
- package/src/lib/evolution/skill-mutation-authority.js +1677 -0
- package/src/lib/evolution/skill-promotion-controller.js +618 -0
- package/src/lib/evolution/skill-release-registry.js +3277 -0
- package/src/lib/evolution/skill-target-matrix-eval.js +3233 -0
- package/src/lib/evolution/skill-writer-inventory-manifest.js +998 -0
- package/src/lib/evolution/skill-writer-inventory-validator.js +816 -0
- package/src/lib/evolution/wiki-informed-skill-proposer.js +343 -0
- package/src/lib/formal-quality-eval-runtime.js +100 -0
- package/src/lib/graph-kernel/cutover-contract.js +7 -0
- package/src/lib/graph-kernel/cutover-ledger.js +8 -7
- package/src/lib/graph-kernel/evidence-digest.js +47 -0
- package/src/lib/graph-kernel/evolution-run-runtime-adapter.js +5 -0
- package/src/lib/graph-kernel/graph-runtime-surfaces.json +8 -1
- package/src/lib/graph-kernel/production-cutover-evidence.js +342 -15
- package/src/lib/graph-kernel/production-source-evidence.js +1599 -0
- package/src/lib/graph-kernel/retirement-evidence.js +15 -5
- package/src/lib/graph-kernel/runtime-surface-manifest.js +67 -2
- package/src/lib/headless-manifest.js +3 -1
- package/src/lib/hooks-v2-runtime.js +20 -0
- package/src/lib/learning/skill-improver.js +311 -43
- package/src/lib/learning/skill-synthesizer.js +236 -16
- package/src/lib/secure-fs.js +20 -0
- package/src/runtime/agent-core.js +68 -0
- package/src/assets/web-panel/assets/EmailListRenderer-DSmFkNKV.js +0 -1
- package/src/assets/web-panel/assets/OrderTableRenderer-Dpj7D6tC.js +0 -1
- package/src/assets/web-panel/assets/PdhVaultBrowser-BiDEbLNA.js +0 -7
- package/src/assets/web-panel/assets/devWarning-DIb8j04q.js +0 -1
- package/src/assets/web-panel/assets/index-BJc3t4PC.js +0 -1
- package/src/assets/web-panel/assets/index-CkksSUnI.js +0 -1
package/src/data/changelog.json
CHANGED
|
@@ -1,6 +1,32 @@
|
|
|
1
1
|
{
|
|
2
2
|
"source": "CHANGELOG.md",
|
|
3
3
|
"releases": [
|
|
4
|
+
{
|
|
5
|
+
"productVersion": null,
|
|
6
|
+
"cliVersion": "0.166.17",
|
|
7
|
+
"cliVersions": ["0.3.9", "0.166.16", "0.166.17"],
|
|
8
|
+
"date": "2026-09-02",
|
|
9
|
+
"title": "",
|
|
10
|
+
"sections": [
|
|
11
|
+
{
|
|
12
|
+
"heading": "Added - cc CLI 0.166.17 and Session Core 0.3.9: governed Skill evolution",
|
|
13
|
+
"body": "> `chainlesschain` **0.166.16 -> 0.166.17** and\n> `@chainlesschain/session-core` **0.3.8 -> 0.3.9** (release candidate,\n> 2026-09-02).\n\n- **Evaluated promotion**: Skill candidates must carry target-matrix evidence,\n current-revision bindings, durable promotion receipts, and revocation-aware\n attestations before an active revision can change.\n- **Crash-safe lifecycle**: tenant-scoped candidate and release registries,\n lease/CAS promotion, last-known-good tracking, and rollback keep concurrent\n or interrupted mutations fail closed.\n- **Bounded improvement pilot**: the CLI can propose constrained Skill\n improvements and wiki-informed candidates without directly rewriting or\n activating installed Skills.\n- **Cross-runtime evidence**: CLI, Desktop, and Graph adapters share the new\n Session Core `EvolutionRun` and Skill-invocation receipt contracts, keeping\n evidence identity consistent across runtimes.\n- **Deterministic async hooks**: tool execution now skips `async:true`\n `PostToolUse` hooks when no supervisor/dispatcher is available, preventing a\n hidden background command and a Windows timing race.\n- **Release boundary**: publication requires this exact candidate commit to\n pass every configured Linux, Windows, and macOS job in `CLI CI` and\n `CLI Strict Sandbox`; a local test result or an older green run is not\n release authorization."
|
|
14
|
+
}
|
|
15
|
+
]
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"productVersion": null,
|
|
19
|
+
"cliVersion": "0.166.16",
|
|
20
|
+
"cliVersions": ["0.166.15", "0.166.16"],
|
|
21
|
+
"date": "2026-09-01",
|
|
22
|
+
"title": "",
|
|
23
|
+
"sections": [
|
|
24
|
+
{
|
|
25
|
+
"heading": "Fixed - cc CLI 0.166.16: harden evidence and release gates",
|
|
26
|
+
"body": "> `chainlesschain` **0.166.15 -> 0.166.16** (release candidate,\n> 2026-09-01).\n\n- **Authenticated evidence consumption**: protected qualification and Graph\n production consumers bind artifacts to the selected repository, workflow\n run, and exact commit, reject stale or unsigned producer runs, and keep\n GitHub API response bodies bounded.\n- **Cross-platform CI stability**: CLI and evidence matrices use the same\n pinned Node.js `22.22.2` runtime, the workflow lint gate uses a pinned\n `actionlint`, and the Windows P1 helper allows a wider outer cold-start\n budget without weakening the verifier's exact inner timeout contract.\n- **Exact RC runtime contract**: the release-candidate audit now requires the\n same Node.js `v22.22.2` runtime used by the workflows, and a unit assertion\n pins that value so future workflow/verifier drift fails closed.\n- **Large-team scheduling throughput**: priority inheritance stays cached\n across lease-only state transitions and is invalidated when priority or\n cancellation semantics change, so the 10,000-task / 64-worker qualification\n completes within the cross-platform budget without weakening donation or\n dependency ordering.\n- **Audited JetBrains steady-state qualification**: the real-host gate retains\n 40–75 readiness lifecycle samples and a stable quiescence proof before the\n governed 100-sample distribution. The `needs_input` P95 threshold remains\n strictly below 2 seconds, and both readiness and measured cycles remain bound\n to the exact fixture ledger.\n- **Canonical registry roots across host path aliases**: candidate and release\n registries canonicalize an existing ancestor alias while binding the created\n non-link leaf by filesystem identity. Leaf links and parent escapes remain\n rejected, and marketplace upgrade tests still prohibit candidate artifact\n fetches on every fail-closed validation path.\n- **Release and evidence boundary**: this candidate is not yet published;\n publication still requires the exact release commit to pass the configured\n Linux, Windows, and macOS release workflows. External P1 production rollout,\n protected-run, and trust-root evidence remains open and is not claimed by\n this source release."
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
},
|
|
4
30
|
{
|
|
5
31
|
"productVersion": null,
|
|
6
32
|
"cliVersion": "0.166.15",
|
|
@@ -10,7 +36,7 @@
|
|
|
10
36
|
"sections": [
|
|
11
37
|
{
|
|
12
38
|
"heading": "Fixed - cc CLI 0.166.15: align the formal quality file-tool ceiling",
|
|
13
|
-
"body": "> `chainlesschain` **0.166.14 -> 0.166.15
|
|
39
|
+
"body": "> `chainlesschain` **0.166.14 -> 0.166.15**, published 2026-08-31 from exact\n> commit `22db04f55974d2e5823772c4bae5e87171fa51db` under immutable tag\n> `v-npm-0-166-15`.\n\n- **Formal quality startup restored**: the exact hermetic file-tool ceiling now\n admits the same read, list, search, write, and edit tools exposed by the\n protected single-Agent and Graph candidate harness, so all platforms can\n advance past preflight into the real-model evaluation.\n- **One canonical tool contract**: the headless runtime and formal quality\n producer consume one frozen tool list, while the agent-loop regression proves\n the complete list remains inside the fail-closed exact mutation boundary.\n- **No shell or network widening**: `run_shell`, `run_code`, Git, MCP, plugin,\n IDE, and sub-agent tools remain unavailable; writes are still limited to the\n task's exact allowed files.\n- **Release and quality boundary**: the exact release commit passed CLI CI and\n CLI Strict Sandbox on Linux, Windows, and macOS, then completed npm OIDC\n publication and independent registry/provenance readback. The post-release\n quality decision below does not change those artifact bytes or their evidence\n identity.\n- **Post-release Windows evidence**: `main@458b342f5f` freezes the Windows\n candidate latency-ratio ceiling at `1.65`; Linux, macOS, and the aggregate\n remain at `1.5`. Exact run `33411796790`, pinned to `db53dc2da4`, passed\n Linux, macOS, and all three platforms' functional/security metrics, but its\n Windows ratio was `1.6379980224` against the then-current `1.6` ceiling, so\n the run, workflow aggregate, and OIDC attestation did not succeed. The\n offline weighted three-platform aggregate was `0.6008293973 < 1.5`.\n- **P2-3 accepted-risk closure**: after final threshold commit `917d18b055`,\n the release owner explicitly accepted the residual risk of no rerun and no\n final-SHA aggregate/OIDC evidence and closed P2-3. This does not rewrite the\n failed run as successful, is not part of the `0.166.15` artifact, and is not\n a general precedent for release gates."
|
|
14
40
|
}
|
|
15
41
|
]
|
|
16
42
|
},
|
|
@@ -23,7 +49,7 @@
|
|
|
23
49
|
"sections": [
|
|
24
50
|
{
|
|
25
51
|
"heading": "Fixed - cc CLI 0.166.14: restore Docker-optional startup on Windows",
|
|
26
|
-
"body": "> `chainlesschain` **0.166.13 -> 0.166.14**, published 2026-08-30 from exact\n> commit `ee88125256b5de8281be0a8e57157811bb80c105` under immutable tag\n> `v-npm-0-166-14`.\n\n- **Docker remains opt-in**: a normal agent session no longer probes or\n requires Docker unless the CLI flag, settings, or managed policy explicitly\n selects container isolation.\n- **Windows executable lookup**: bare commands resolve through `PATHEXT`\n before launch, so Docker Desktop's POSIX `docker` script cannot shadow\n `docker.exe` and trigger `CreateProcessAsUser` error 193.\n- **Explicit isolation stays fail-closed**: `workspace-write`, `strict`, and\n managed sandbox requirements still reject unavailable engines instead of\n silently degrading.\n- **Release validation**: the exact release commit passed every configured\n Linux, Windows, and macOS job in `CLI CI` and `CLI Strict Sandbox`, then\n completed npm Trusted Publishing and public-registry readback. This
|
|
52
|
+
"body": "> `chainlesschain` **0.166.13 -> 0.166.14**, published 2026-08-30 from exact\n> commit `ee88125256b5de8281be0a8e57157811bb80c105` under immutable tag\n> `v-npm-0-166-14`.\n\n- **Docker remains opt-in**: a normal agent session no longer probes or\n requires Docker unless the CLI flag, settings, or managed policy explicitly\n selects container isolation.\n- **Windows executable lookup**: bare commands resolve through `PATHEXT`\n before launch, so Docker Desktop's POSIX `docker` script cannot shadow\n `docker.exe` and trigger `CreateProcessAsUser` error 193.\n- **Explicit isolation stays fail-closed**: `workspace-write`, `strict`, and\n managed sandbox requirements still reject unavailable engines instead of\n silently degrading.\n- **Release validation**: the exact release commit passed every configured\n Linux, Windows, and macOS job in `CLI CI` and `CLI Strict Sandbox`, then\n completed npm Trusted Publishing and public-registry readback. This was the\n public CLI baseline and is now superseded by `0.166.15`; later source-only\n Graph/Team quality evidence retains its own exact-commit boundary."
|
|
27
53
|
}
|
|
28
54
|
]
|
|
29
55
|
},
|
|
@@ -1988,7 +1988,18 @@ export class TaskLeaseRegistry {
|
|
|
1988
1988
|
patch,
|
|
1989
1989
|
actor: patch.assignee,
|
|
1990
1990
|
});
|
|
1991
|
-
|
|
1991
|
+
// Lease lifecycle changes do not alter the dependency-priority graph.
|
|
1992
|
+
// In particular, a successfully completed task can only have completed
|
|
1993
|
+
// ancestors because acquire() gates on every dependency. Cancelling is
|
|
1994
|
+
// different: recovery may fail a blocked descendant closed, which must
|
|
1995
|
+
// withdraw its donated priority from unfinished ancestors.
|
|
1996
|
+
if (
|
|
1997
|
+
(patch.priority !== undefined && patch.priority !== task.priority) ||
|
|
1998
|
+
(patch.status === TASK_STATUS.CANCELLED &&
|
|
1999
|
+
task.status !== TASK_STATUS.CANCELLED)
|
|
2000
|
+
) {
|
|
2001
|
+
this._priorityInheritanceCache = null;
|
|
2002
|
+
}
|
|
1992
2003
|
return true;
|
|
1993
2004
|
} catch {
|
|
1994
2005
|
// ConcurrencyError (rev changed under us) — caller re-reads and retries.
|
|
@@ -81,6 +81,54 @@ export const CAPABILITY_MANIFEST = Object.freeze({
|
|
|
81
81
|
"remote_control",
|
|
82
82
|
]),
|
|
83
83
|
|
|
84
|
+
// Static evolution declarations. Runtime evidence is deliberately kept out
|
|
85
|
+
// of this manifest so timestamps and deployment state cannot churn the
|
|
86
|
+
// canonical capability digest. `buildEvolutionStatus()` combines these
|
|
87
|
+
// declarations with explicit runtime receipts.
|
|
88
|
+
evolutionCapabilities: Object.freeze([
|
|
89
|
+
Object.freeze({
|
|
90
|
+
id: "learning-synthesis",
|
|
91
|
+
implemented: true,
|
|
92
|
+
dependencies: Object.freeze([
|
|
93
|
+
"llm",
|
|
94
|
+
"candidate-registry",
|
|
95
|
+
"independent-evaluator",
|
|
96
|
+
]),
|
|
97
|
+
gates: Object.freeze([
|
|
98
|
+
"candidate-only-output",
|
|
99
|
+
"artifact-persisted",
|
|
100
|
+
"eval-before-promotion",
|
|
101
|
+
]),
|
|
102
|
+
mutationScope: "candidate-only",
|
|
103
|
+
}),
|
|
104
|
+
Object.freeze({
|
|
105
|
+
id: "skill-improvement",
|
|
106
|
+
implemented: true,
|
|
107
|
+
dependencies: Object.freeze([
|
|
108
|
+
"candidate-registry",
|
|
109
|
+
"independent-evaluator",
|
|
110
|
+
]),
|
|
111
|
+
gates: Object.freeze([
|
|
112
|
+
"candidate-only-output",
|
|
113
|
+
"active-write-denied",
|
|
114
|
+
"eval-before-promotion",
|
|
115
|
+
]),
|
|
116
|
+
mutationScope: "candidate-only",
|
|
117
|
+
}),
|
|
118
|
+
Object.freeze({
|
|
119
|
+
id: "skill-candidate-registry",
|
|
120
|
+
implemented: true,
|
|
121
|
+
dependencies: Object.freeze(["private-storage", "hard-link-cas"]),
|
|
122
|
+
gates: Object.freeze([
|
|
123
|
+
"content-addressed-artifact",
|
|
124
|
+
"digest-bound-lineage",
|
|
125
|
+
"immutable-publication",
|
|
126
|
+
"path-and-symlink-defense",
|
|
127
|
+
]),
|
|
128
|
+
mutationScope: "candidate-only",
|
|
129
|
+
}),
|
|
130
|
+
]),
|
|
131
|
+
|
|
84
132
|
mcpFeatures: Object.freeze([
|
|
85
133
|
"config_file",
|
|
86
134
|
"registry",
|
|
@@ -107,6 +155,121 @@ const manifestOr = (m) =>
|
|
|
107
155
|
m && typeof m === "object" ? m : CAPABILITY_MANIFEST;
|
|
108
156
|
const wireFeaturesOf = (m) =>
|
|
109
157
|
Array.isArray(manifestOr(m).wireFeatures) ? manifestOr(m).wireFeatures : [];
|
|
158
|
+
const evolutionCapabilitiesOf = (m) =>
|
|
159
|
+
Array.isArray(manifestOr(m).evolutionCapabilities)
|
|
160
|
+
? manifestOr(m).evolutionCapabilities
|
|
161
|
+
: [];
|
|
162
|
+
const EVOLUTION_EVIDENCE_DIGEST_PATTERN = /^sha256:[a-f0-9]{64}$/u;
|
|
163
|
+
|
|
164
|
+
function compareCanonicalStrings(left, right) {
|
|
165
|
+
return left < right ? -1 : left > right ? 1 : 0;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function digestJson(value) {
|
|
169
|
+
return `sha256:${createHash("sha256")
|
|
170
|
+
.update(JSON.stringify(value))
|
|
171
|
+
.digest("hex")}`;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Static evolution capability definitions. Arrays are copied so consumers
|
|
176
|
+
* cannot mutate the canonical manifest through the projection.
|
|
177
|
+
*/
|
|
178
|
+
export function toEvolutionCapabilityDefinitions(m = CAPABILITY_MANIFEST) {
|
|
179
|
+
return evolutionCapabilitiesOf(m).map((capability) => ({
|
|
180
|
+
id: String(capability.id || ""),
|
|
181
|
+
implemented: capability.implemented === true,
|
|
182
|
+
dependencies: [...(capability.dependencies || [])],
|
|
183
|
+
gates: [...(capability.gates || [])],
|
|
184
|
+
mutationScope: String(capability.mutationScope || "none"),
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Combine immutable declarations with explicit runtime evidence. Missing or
|
|
190
|
+
* inconsistent evidence always degrades availability; it can never turn a
|
|
191
|
+
* declaration on implicitly. `lastEvidence` is an opaque bounded receipt id or
|
|
192
|
+
* digest, not a timestamp stored in the static manifest.
|
|
193
|
+
*
|
|
194
|
+
* @param {{manifest?:object,evidence?:Record<string,object>}} options
|
|
195
|
+
*/
|
|
196
|
+
export function buildEvolutionStatus({
|
|
197
|
+
manifest = CAPABILITY_MANIFEST,
|
|
198
|
+
evidence = {},
|
|
199
|
+
} = {}) {
|
|
200
|
+
const definitions = toEvolutionCapabilityDefinitions(manifest);
|
|
201
|
+
const safeEvidence =
|
|
202
|
+
evidence && typeof evidence === "object" && !Array.isArray(evidence)
|
|
203
|
+
? evidence
|
|
204
|
+
: {};
|
|
205
|
+
const capabilities = definitions.map((definition) => {
|
|
206
|
+
const observed =
|
|
207
|
+
Object.hasOwn(safeEvidence, definition.id) &&
|
|
208
|
+
safeEvidence[definition.id] &&
|
|
209
|
+
typeof safeEvidence[definition.id] === "object" &&
|
|
210
|
+
!Array.isArray(safeEvidence[definition.id])
|
|
211
|
+
? safeEvidence[definition.id]
|
|
212
|
+
: {};
|
|
213
|
+
const implemented = definition.implemented === true;
|
|
214
|
+
const lastEvidence =
|
|
215
|
+
Object.hasOwn(observed, "lastEvidence") &&
|
|
216
|
+
typeof observed.lastEvidence === "string" &&
|
|
217
|
+
EVOLUTION_EVIDENCE_DIGEST_PATTERN.test(observed.lastEvidence.trim())
|
|
218
|
+
? observed.lastEvidence.trim()
|
|
219
|
+
: null;
|
|
220
|
+
const wired =
|
|
221
|
+
implemented &&
|
|
222
|
+
Object.hasOwn(observed, "wired") &&
|
|
223
|
+
observed.wired === true;
|
|
224
|
+
const verified =
|
|
225
|
+
implemented &&
|
|
226
|
+
Object.hasOwn(observed, "verified") &&
|
|
227
|
+
observed.verified === true &&
|
|
228
|
+
lastEvidence !== null;
|
|
229
|
+
const defaultEnabled =
|
|
230
|
+
implemented &&
|
|
231
|
+
wired &&
|
|
232
|
+
verified &&
|
|
233
|
+
Object.hasOwn(observed, "defaultEnabled") &&
|
|
234
|
+
observed.defaultEnabled === true;
|
|
235
|
+
const evidenceState = {
|
|
236
|
+
wired,
|
|
237
|
+
verified,
|
|
238
|
+
defaultEnabled,
|
|
239
|
+
lastEvidence,
|
|
240
|
+
};
|
|
241
|
+
const state = !implemented
|
|
242
|
+
? "unavailable"
|
|
243
|
+
: !wired
|
|
244
|
+
? "not-wired"
|
|
245
|
+
: !verified
|
|
246
|
+
? "unverified"
|
|
247
|
+
: defaultEnabled
|
|
248
|
+
? "available"
|
|
249
|
+
: "available-disabled";
|
|
250
|
+
return {
|
|
251
|
+
...definition,
|
|
252
|
+
...evidenceState,
|
|
253
|
+
state,
|
|
254
|
+
evidenceDigest: digestJson({ id: definition.id, ...evidenceState }),
|
|
255
|
+
};
|
|
256
|
+
});
|
|
257
|
+
const evidenceProjection = capabilities
|
|
258
|
+
.map((capability) => ({
|
|
259
|
+
id: capability.id,
|
|
260
|
+
wired: capability.wired,
|
|
261
|
+
verified: capability.verified,
|
|
262
|
+
defaultEnabled: capability.defaultEnabled,
|
|
263
|
+
lastEvidence: capability.lastEvidence,
|
|
264
|
+
}))
|
|
265
|
+
.sort((left, right) => compareCanonicalStrings(left.id, right.id));
|
|
266
|
+
return {
|
|
267
|
+
schemaVersion: 1,
|
|
268
|
+
manifestDigest: capabilityDigest(manifest),
|
|
269
|
+
evidenceDigest: digestJson(evidenceProjection),
|
|
270
|
+
capabilities,
|
|
271
|
+
};
|
|
272
|
+
}
|
|
110
273
|
|
|
111
274
|
/**
|
|
112
275
|
* The negotiable wire feature keys, in canonical declared order — the value
|
|
@@ -233,6 +396,13 @@ export function capabilityDigest(m = CAPABILITY_MANIFEST) {
|
|
|
233
396
|
])
|
|
234
397
|
.sort((a, b) => (a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0)),
|
|
235
398
|
runtime: [...(mm.runtimeFeatures || [])].sort(),
|
|
399
|
+
evolution: toEvolutionCapabilityDefinitions(mm)
|
|
400
|
+
.map((capability) => ({
|
|
401
|
+
...capability,
|
|
402
|
+
dependencies: [...capability.dependencies].sort(),
|
|
403
|
+
gates: [...capability.gates].sort(),
|
|
404
|
+
}))
|
|
405
|
+
.sort((a, b) => compareCanonicalStrings(a.id, b.id)),
|
|
236
406
|
mcp: [...(mm.mcpFeatures || [])].sort(),
|
|
237
407
|
sandbox: [...(mm.sandboxEngines || [])].sort(),
|
|
238
408
|
permissionModes: [...(mm.permissionModes || [])].sort(),
|
|
@@ -303,7 +473,10 @@ export function renderProtocolDoc(m = CAPABILITY_MANIFEST) {
|
|
|
303
473
|
* @returns {{protocolChange:{from:number,to:number}|null,
|
|
304
474
|
* addedWireFeatures:string[], removedWireFeatures:string[],
|
|
305
475
|
* changedWireFeatures:Array<{feature:string, from:object, to:object}>,
|
|
306
|
-
* addedRuntimeFeatures:string[], removedRuntimeFeatures:string[]
|
|
476
|
+
* addedRuntimeFeatures:string[], removedRuntimeFeatures:string[],
|
|
477
|
+
* addedEvolutionCapabilities:string[],
|
|
478
|
+
* removedEvolutionCapabilities:string[],
|
|
479
|
+
* changedEvolutionCapabilities:Array<{capability:string, from:object, to:object}>}}
|
|
307
480
|
*/
|
|
308
481
|
export function diffCapabilities(prev, next = CAPABILITY_MANIFEST) {
|
|
309
482
|
const wireMap = (m) => {
|
|
@@ -318,6 +491,18 @@ export function diffCapabilities(prev, next = CAPABILITY_MANIFEST) {
|
|
|
318
491
|
return out;
|
|
319
492
|
};
|
|
320
493
|
const runtimeSet = (m) => new Set(manifestOr(m).runtimeFeatures || []);
|
|
494
|
+
const evolutionMap = (m) =>
|
|
495
|
+
new Map(
|
|
496
|
+
toEvolutionCapabilityDefinitions(m).map((capability) => [
|
|
497
|
+
capability.id,
|
|
498
|
+
{
|
|
499
|
+
implemented: capability.implemented,
|
|
500
|
+
dependencies: [...capability.dependencies].sort(),
|
|
501
|
+
gates: [...capability.gates].sort(),
|
|
502
|
+
mutationScope: capability.mutationScope,
|
|
503
|
+
},
|
|
504
|
+
]),
|
|
505
|
+
);
|
|
321
506
|
|
|
322
507
|
const p = wireMap(prev);
|
|
323
508
|
const n = wireMap(next);
|
|
@@ -342,6 +527,29 @@ export function diffCapabilities(prev, next = CAPABILITY_MANIFEST) {
|
|
|
342
527
|
const addedRuntimeFeatures = [...nr].filter((k) => !pr.has(k)).sort();
|
|
343
528
|
const removedRuntimeFeatures = [...pr].filter((k) => !nr.has(k)).sort();
|
|
344
529
|
|
|
530
|
+
const pe = evolutionMap(prev);
|
|
531
|
+
const ne = evolutionMap(next);
|
|
532
|
+
const addedEvolutionCapabilities = [...ne.keys()]
|
|
533
|
+
.filter((key) => !pe.has(key))
|
|
534
|
+
.sort();
|
|
535
|
+
const removedEvolutionCapabilities = [...pe.keys()]
|
|
536
|
+
.filter((key) => !ne.has(key))
|
|
537
|
+
.sort();
|
|
538
|
+
const changedEvolutionCapabilities = [];
|
|
539
|
+
for (const [key, nextDefinition] of ne) {
|
|
540
|
+
const previousDefinition = pe.get(key);
|
|
541
|
+
if (
|
|
542
|
+
previousDefinition &&
|
|
543
|
+
JSON.stringify(previousDefinition) !== JSON.stringify(nextDefinition)
|
|
544
|
+
) {
|
|
545
|
+
changedEvolutionCapabilities.push({
|
|
546
|
+
capability: key,
|
|
547
|
+
from: previousDefinition,
|
|
548
|
+
to: nextDefinition,
|
|
549
|
+
});
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
345
553
|
const pVer = Number(manifestOr(prev).protocolVersion) || 1;
|
|
346
554
|
const nVer = Number(manifestOr(next).protocolVersion) || 1;
|
|
347
555
|
const protocolChange = pVer === nVer ? null : { from: pVer, to: nVer };
|
|
@@ -353,5 +561,8 @@ export function diffCapabilities(prev, next = CAPABILITY_MANIFEST) {
|
|
|
353
561
|
changedWireFeatures,
|
|
354
562
|
addedRuntimeFeatures,
|
|
355
563
|
removedRuntimeFeatures,
|
|
564
|
+
addedEvolutionCapabilities,
|
|
565
|
+
removedEvolutionCapabilities,
|
|
566
|
+
changedEvolutionCapabilities,
|
|
356
567
|
};
|
|
357
568
|
}
|