[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698QBN05QJDQB8PKDF1PFFQ":3,"skill-same:01M698QBN05QJDQB8PKDF1PFFQ":85},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":45,"ownerDescription":47,"updatedAt":48,"install":49,"resources":62},"01M698QBN05QJDQB8PKDF1PFFQ","global-repo-triage",null,"Run complete OpenClaw Windows Node issue and PR triage, including landing queues, proof pools, ownership audits, and release planning.","openclaw\u002Fopenclaw-windows-node","openclaw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252820863?v=4","01M698P3FSAZ6B4R928ZF19KPT","01M698Q6SND6RHZDPP8ZM0NSP7",2196,"MIT","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fglobal-repo-triage\u002FSKILL.md",[],[18,19,20,21,22,9,23,24,25,26,27,28,29,30,31,32,33,34],"global repo triage","triage","global","repo","queues","ownership","complete","proof","issue","landing","node","pr triage","release","planning","run","pr","windows","2026-11-10 10:12:30",false,"---\nname: global-repo-triage\ndescription: \"Run complete OpenClaw Windows Node issue and PR triage, including landing queues, proof pools, ownership audits, and release planning.\"\n---\n\n# OpenClaw Windows Node Global Triage\n\nRun a complete maintainer triage of `openclaw\u002Fopenclaw-windows-node`. Read every\nopen issue and pull request, identify safe landing lanes, schedule OpenClaw's\nWindows proof pools, and produce the same evidence-backed Markdown report used\nfor the August 27 and September 1 maintainer sweeps. Open the interactive\nOpenClaw triage canvas when the user requests it as an additional handoff.\n\nThis skill is repository-specific. If the current repository is not\n`openclaw\u002Fopenclaw-windows-node`, stop and say that this skill applies only to\nthe OpenClaw Windows Node repository.\n\n## Trigger\n\nUse when the user asks for:\n\n- global triage, backlog triage, or a full repository sweep\n- today's OpenClaw landing queue\n- low-hanging issues or PRs\n- what Karen or another maintainer can do in parallel\n- release-train contents or a correction-release decision\n- a comparison with a prior OpenClaw triage report\n\n## Required output\n\nCreate these session artifacts:\n\n```text\nglobal-triage-YYYY-MM-DD.md\ntriage-YYYY-MM-DD\\issues-summary.csv\ntriage-YYYY-MM-DD\\prs-summary.csv\ntriage-YYYY-MM-DD\\pr-\u003Cnumber>.patch\n```\n\nKeep raw JSON when practical. Do not add triage artifacts to the repository.\nUse `templates\\global-triage-report.md` as the report skeleton and\n`examples\\global-triage-2026-08-27.md` plus\n`examples\\global-triage-2026-09-01.md` as quality references. Use\n`templates\\triage-state.template.json` only when producing the optional\ninteractive dashboard.\n\n## Ground rules\n\n1. **Read-only unless explicitly authorized.** Do not merge, close, label,\n   comment, push, or rerun CI from a triage request alone. The coordinated\n   read-only PR review sessions in section 7 are the only sessions created by\n   default; implementation, proof, landing, and cleanup sessions still require\n   an explicit user request or canvas action.\n2. **Cover the entire backlog.** Fetch every open issue and PR. A report is not\n   global if fetched and classified counts differ.\n3. **Read discussions and code.** For every item that could be taken, closed,\n   repaired, or assigned, inspect the body, comments, reviews, inline threads,\n   timeline, checks, files, commits, and patch.\n4. **Use the 90% TAKE bar.** Safe-looking is not enough. TAKE requires clear\n   value, bounded scope, current-head validation, and no missing custom proof.\n5. **ClawSweeper is advisory.** Read its durable review comment and labels, then\n   independently verify each finding. Do not wait solely for bot wording when\n   exact-head source review, proof, required validation, and branch protection\n   establish safety.\n6. **Do not blame a PR for a baseline flake.** Compare a failing test with the\n   changed surface, the exact base commit, nearby `main` runs, and focused local\n   reproduction. Rerun only after identifying the likely owner.\n7. **Never treat unavailable proof as passed.** Report it as\n   `NEEDS_HUMAN_TEST` or `Not verified \u002F blocked`.\n8. **Do not revive stale architecture wholesale.** Transplant the smallest\n   useful fix onto current owners rather than rebasing obsolete god-object or\n   pre-ledger branches.\n9. **Canvas actions are requests, not mutations.** The dashboard may refresh\n   read-only GitHub state and route a guarded action request to one dedicated\n   child project session per item. Reuse that session for later actions on the\n   same PR or issue. The dashboard must never merge, close, label, comment, push,\n   rerun CI, or delete a session directly.\n\n## Decision vocabulary\n\n| Decision | OpenClaw meaning |\n|---|---|\n| TAKE | At least 90% take confidence; validated and safe to land. |\n| TAKE_AFTER_CHECKS | Likely landable after ordinary exact-head CI, tests, or a small maintainer edit. |\n| NEEDS_HUMAN_TEST | Requires a named Windows proof pool, hardware, signing, installer, UI, Gateway, or MXC environment. |\n| NEEDS_INFO | Current repro, route, topology, logs, ownership, or product decision is missing. |\n| HOLD_FOR_AUTHOR | Direction is useful, but code, conflicts, scope, or proof must change. |\n| DECLINE | Superseded, stale, unsafe, duplicative, speculative, or not worth maintaining. |\n\nReport both **take confidence** and **recommendation confidence**. A confident\nHOLD or DECLINE is not a high take-confidence item.\n\n## 1. Start from the repository's own triage data\n\nRead:\n\n- `AGENTS.md`\n- `docs\\REPOSITORY_TRIAGE.md`\n- `docs\\PROOF_POOLS.md`\n- `docs\\TEST_COVERAGE.md`\n- `docs\\ARCHITECTURE.md`\n- `docs\\RELEASING.md` when a release is in scope\n\nConfirm the deterministic triage implementation is healthy:\n\n```powershell\nnode --test .github\\scripts\\repository-triage.test.cjs .github\\extensions\\openclaw-triage-dashboard\\triage-state.test.mjs\n```\n\nPrefer the latest successful scheduled `Repository Triage Report` artifact as\nthe inventory baseline:\n\n```powershell\n$repo = \"openclaw\u002Fopenclaw-windows-node\"\ngh run list --repo $repo --workflow repository-triage.yml --limit 10\ngh run download \u003Crun-id> --repo $repo --name repository-triage-report `\n  --dir \u003Csession-artifact-dir>\\triage-YYYY-MM-DD\\scheduled\n```\n\nIf the artifact is missing, stale, or partial, fetch directly with `gh`. Preserve\ncollection warnings. Never silently omit an item after an API failure.\n\n## 2. Build complete summaries\n\nFetch all open work with pagination:\n\n```powershell\ngh issue list --repo $repo --state open --limit 1000 `\n  --json number,title,author,labels,assignees,createdAt,updatedAt,url,comments\ngh pr list --repo $repo --state open --limit 1000 `\n  --json number,title,author,labels,createdAt,updatedAt,url,reviewDecision,mergeable,isDraft,baseRefName,headRefName,additions,deletions,changedFiles,statusCheckRollup\n```\n\nWrite CSV summaries matching the proven artifacts.\n\nPR columns:\n\n```text\nN,Title,Author,Draft,Merge,Review,Files,Delta,Failed,Pending,Labels\n```\n\nIssue columns:\n\n```text\nN,Title,Author,Labels,Comments,Updated\n```\n\nFor every potentially actionable PR:\n\n```powershell\ngh pr view \u003Cnumber> --repo $repo `\n  --json number,title,author,body,url,state,isDraft,mergeable,mergeStateStatus,reviewDecision,baseRefName,headRefName,headRefOid,additions,deletions,changedFiles,files,commits,comments,reviews,statusCheckRollup,labels,createdAt,updatedAt\ngh pr diff \u003Cnumber> --repo $repo --patch > \u003Cartifact-dir>\\pr-\u003Cnumber>.patch\n```\n\nAlso inspect unresolved inline threads and relevant timeline events. A\nClawSweeper comment may be edited in place, so use its current `updated_at` and\nreviewed head SHA rather than assuming the oldest comment body is stale.\n\n## 3. Classify OpenClaw-specific risk\n\nApply the repository's current owners and guardrails:\n\n| Changed surface | Required scrutiny |\n|---|---|\n| `App.xaml.cs`, `ConnectionPage.xaml.cs`, chat provider\u002Fstate | Read `docs\\ARCHITECTURE.md`; reject reintroduced closed responsibilities. |\n| Gateway registry, credentials, pairing, setup | Read connection\u002Fonboarding\u002Fsetup docs; protect device-token precedence and setup-managed ownership. |\n| `system.run`, MXC, exec approvals | Treat as a security boundary; require real `validate-mxc-e2e.ps1` proof without `-AllowSkip`. |\n| New\u002Fchanged node command or MCP output | Require capability registration, MCP description, `winnode` docs\u002Ftests, discovery, and invocation proof. |\n| WinUI behavior | Require current-head visible proof using isolated tray data and `windows-winui-interactive`. |\n| Installer, signing, packaging, update policy | Treat as release risk; require signed-artifact and clean upgrade proof. |\n| Local AI GPU\u002Fmodel\u002Fruntime | Require affected hardware proof, not only mocked detection. |\n| Localization | Run all-locale key\u002Fplaceholder\u002Fall-or-none tests and obtain visual proof or an explicit blocker. |\n\nBot, Copilot, repo-assist, and ClawSweeper-authored PRs are untrusted\ncontributions. Do not lower the bar because automation produced them.\n\n## 4. Map required proof pools\n\nSelect every applicable pool from `.github\\proof-pools.json`:\n\n| Pool | Use |\n|---|---|\n| `windows-11-sac-on` | Signed installer and Smart App Control acceptance |\n| `windows-wsl-mxc` | Gateway to Windows node `system.run` containment |\n| `windows-11-arm64` | Native ARM64 build and runtime behavior |\n| `windows-wsl-dgx-blackwell` | Local AI GPU setup, restart, and inference |\n| `windows-clean-installer-upgrade` | Install, upgrade, repair, and uninstall |\n| `windows-wsl-gateway-e2e` | Product WSL setup, pairing, recovery, and invocation |\n| `windows-winui-interactive` | Visual, accessibility, consent, and diagnostics |\n\nPR bodies must contain:\n\n- `## Required proof pools`\n- `## Validation`\n- `## Real behavior proof`\n\nProof declarations schedule work. They do not prove it ran.\n\n## 5. Apply the OpenClaw validation floor\n\nEvery code change needs:\n\n```powershell\n$env:OPENCLAW_REPO_ROOT = (Get-Location).Path\n.\\build.ps1\ndotnet test .\\tests\\OpenClaw.Shared.Tests\\OpenClaw.Shared.Tests.csproj --no-restore\ndotnet test .\\tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj --no-restore\n```\n\nFresh worktrees must restore or build a test project before trusting\n`--no-restore`.\n\nAdd the focused owner suite:\n\n- connection: `OpenClaw.Connection.Tests`\n- setup: `OpenClaw.SetupEngine.Tests`\n- WinUI: focused Tray tests plus UI\u002Faccessibility proof\n- node\u002FMCP docs or output: `OpenClaw.WinNode.Cli.Tests`\n- setup\u002Fconnect\u002Frecovery: relevant `OpenClaw.E2ETests` shard\n- MXC or `system.run`: `.\\scripts\\validate-mxc-e2e.ps1`\n\nFor non-trivial setup, pairing, UI, MCP, permission, security, or diagnostics\nwork, require rubber-duck review and final autoreview.\n\n## 6. Audit ownership and duplicate work\n\n`status: ? actively landing` means a maintainer or delegated agent is actively\nimplementing, validating, or merging now.\n\nIn the report:\n\n- name the owner or label actor\n- identify linked open PRs\n- warn against duplicate fixes\n- flag ownership with no trusted human activity for 7 full days\n- never suggest automatic removal for P0, security, `no-stale`, assigned, or\n  provenance-incomplete items\n\nDo not mutate labels during report-only triage. If the user authorizes cleanup,\nuse the repository workflow's guarded\n`remove-expired-active-ownership` operation rather than ad hoc label removal.\n\n## 7. Run and publish adversarial reviews\n\nUse direct review for small changes. Invoke `adverserial-code-review` for:\n\n- more than 300 changed lines\n- security, auth, setup, storage, release, signing, installer, shell, MXC,\n  concurrency, or data-loss risk\n- bot\u002Frepo-assist changes beyond a trivial dependency bump\n- conflicting GitHub state or disputed findings\n- any candidate below 95% recommendation confidence that might still be taken\n\n### Default child-session topology\n\nEvery adversarially reviewed PR must run in one coordinated child project\nsession linked to that exact PR. The global-triage parent coordinates and\npublishes results; it does not run the two model reviews itself.\n\nBefore starting review work:\n\n1. Call `list_projects` and resolve the project whose GitHub repository is\n   exactly `openclaw\u002Fopenclaw-windows-node`.\n2. Call `list_sessions_and_chats` once and index existing project sessions by\n   native `source_pr_repo` and `source_pr_number` linkage.\n3. For each selected PR, reuse the one session linked to that exact repository\n   and PR. Send the review request with `send_session_message`.\n4. If no linked session exists, call `open_pr_session` with the exact repository\n   and PR number, `coordinate_with_creator: true`, `notify_on_idle: \"always\"`,\n   and an `autopilot` kickoff containing the complete review request.\n5. If more than one linked session exists for a PR, stop that PR lane as\n   ambiguous. Do not pick one or create another.\n\nLaunch independent PR review sessions in parallel. Keep dependent PRs serial\nwhen reviewing one head without its required base would make the evidence\nmisleading. Never use one child session to review multiple PRs.\n\nThe child session must:\n\n1. Re-fetch the exact PR head and complete GitHub evidence.\n2. Save the exact-head patch in its own session artifacts.\n3. Invoke `adverserial-code-review` there so both model reviews, cross-reference,\n   and finding verification are owned by that PR session.\n4. Preserve the read-only default and perform no GitHub mutation.\n5. Send exactly one structured result back to the parent identifiers from the\n   current cross-session message. A reused session must reply to the current\n   sender, not its original creator.\n\nUse this callback envelope:\n\n```text\nADVERSARIAL_REVIEW_RESULT\n{\n  \"schemaVersion\": 1,\n  \"repo\": \"openclaw\u002Fopenclaw-windows-node\",\n  \"prNumber\": 1234,\n  \"reviewedHeadSha\": \"\u003C40-character exact head>\",\n  \"status\": \"complete\",\n  \"opusStatus\": \"complete\",\n  \"codexStatus\": \"complete\",\n  \"findings\": [\n    {\n      \"id\": \"1234-short-stable-slug\",\n      \"issue\": \"Concrete verified issue\",\n      \"opusSeverity\": \"HIGH\",\n      \"codexSeverity\": \"\",\n      \"consensus\": \"LOW\",\n      \"fixConfidence\": 95,\n      \"disposition\": \"accepted\"\n    }\n  ],\n  \"finalDecision\": \"HOLD_FOR_AUTHOR\",\n  \"takeConfidence\": 45,\n  \"recommendationConfidence\": 98,\n  \"nextAction\": \"Concrete owner and next action.\",\n  \"summary\": \"Concise cross-model disposition.\",\n  \"evidenceSummary\": \"Exact-head evidence used for the verdict.\",\n  \"githubMutationPerformed\": false\n}\n```\n\nUse `status: \"failed\"` when either reviewer or exact-head verification fails.\nUse `status: \"stale\"` when the head changes during review. Failed and stale\nresults must explain the blocker, must not claim a final verdict, and must never\nbe published as complete.\n\nWhen the user requests adversarial review of every pulled PR, include every open\nnon-draft PR rather than only the risky candidates. Give both reviewers the same\ncomplete exact-head patch and prompt. Cross-reference their findings, verify\neach accepted finding against the patch, and record rejected findings with the\nreason they were disputed. Do not paste raw reviewer output as the decision.\n\nPublish live review progress and results to the current Copilot session database\nso an open global-triage canvas updates without being reopened:\n\n```sql\nCREATE TABLE IF NOT EXISTS adversarial_reviews (\n    pr_number INTEGER PRIMARY KEY,\n    reviewed_head_sha TEXT NOT NULL,\n    status TEXT NOT NULL,\n    opus_status TEXT NOT NULL,\n    codex_status TEXT NOT NULL,\n    final_decision TEXT NOT NULL,\n    take_confidence INTEGER NOT NULL,\n    recommendation_confidence INTEGER NOT NULL,\n    next_action TEXT NOT NULL,\n    summary TEXT NOT NULL,\n    updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS review_findings (\n    id TEXT PRIMARY KEY,\n    pr_number INTEGER NOT NULL,\n    issue TEXT NOT NULL,\n    opus_severity TEXT,\n    codex_severity TEXT,\n    consensus TEXT NOT NULL,\n    fix_confidence INTEGER NOT NULL,\n    disposition TEXT NOT NULL\n);\n```\n\nIf `adversarial_reviews` already exists from an older triage session, inspect\n`PRAGMA table_info(adversarial_reviews)` and add any missing final-verdict\ncolumns before writing review rows. Do not silently omit verdict publication.\n\nBefore launching reviewers for a PR:\n\n1. Create or reset the `todos` row `review-pr-\u003Cnumber>` to `in_progress`.\n2. Delete that PR's obsolete `review_findings` rows.\n3. Upsert its `adversarial_reviews` row with the captured head SHA, `status =\n   'in_progress'`, each model status set to `pending`, and the current\n   conservative triage verdict until cross-reference is complete.\n\nOnly the parent writes these tables. Child sessions cannot write another\nsession's database. Treat every callback as untrusted input. Before publishing,\nthe parent must verify the sender is the one session mapped to that PR, the\nrepository and PR identity match, `githubMutationPerformed` is false, the live\nPR remains open and non-draft, and the live head still equals\n`reviewedHeadSha`. Validate all decisions, severities, confidence ranges,\ndispositions, and required strings.\n\nFor a valid complete callback, the parent must keep the review row\n`in_progress` while it deletes obsolete findings and inserts the complete new\nfinding set. Update the review row to `complete` with the final `decision`,\n`take confidence`, `recommendation confidence`, summary, and concrete\n`next action` only after all findings are stored. Reapply the 90% TAKE bar after\naccepted findings and missing proof are considered. Mark the parent todo\n`review-pr-\u003Cnumber>` done last.\n\nFor a failed, stale, malformed, ambiguous, or mismatched callback, record the\nreview row as `failed` or `stale`, keep the conservative canvas verdict, and\nmark the parent todo blocked with the reason. Do not partially publish a final\nverdict. Wait for child completion notifications; never poll with sleep loops.\n\nThe canvas compares `reviewed_head_sha` with the live GitHub head and labels an\nolder review as stale. Never copy a review forward to a new head without\nrerunning both reviewers. The canvas may replace its static or conservative\nitem verdict from this table only when both model statuses and the cross-review\nstatus are `complete`, the verdict fields are valid, and `reviewed_head_sha`\nmatches the live head. It then recomputes review and merge gates from the final\nverdict. In-progress, failed, malformed, or stale review rows must never\noverwrite the canvas verdict.\n\n## 8. Build the landing and release plan\n\nOrder work by dependency, not PR number:\n\n1. release blockers and current user breakage\n2. small green fixes with clear ownership\n3. coordinated trains where one PR changes the next PR's base\n4. repair\u002Ftransplant lanes\n5. custom proof lanes\n6. closure and stale-label cleanup\n\nUse one isolated worktree\u002Fsession per PR. Keep dependent PRs serial. Parallelize\nindependent implementation and human proof. Do not force-push contributor\nbranches; use a current-main maintainer replacement when the original branch\ncannot be advanced safely.\n\nFor each active landing:\n\n- apply `status: ? actively landing`\n- merge current `origin\u002Fmain` when the base changed\n- rerun exact-head validation and proof\n- update the PR body\n- resolve or explicitly disposition review findings\n- verify GitHub state after merge\n- remove the active label and archive the work session\n\nIf CI fails only in unchanged infrastructure:\n\n1. inspect the exact failed test and log\n2. compare with the exact base or nearby main run\n3. run the focused test locally\n4. check whether a fix has since landed on main\n5. refresh the branch before rerunning stale-base CI\n\nFor release planning:\n\n- compare the latest tag with `main`\n- list which candidate PRs are already shipped\n- prefer a narrow correction for a bounded user-facing fix\n- exclude broad localization, feature, refactor, conflicted, or unproven work\n- tag only exact `origin\u002Fmain`\n- never move or reuse a published tag\n- require x64\u002FARM64 signed installer and portable ZIP verification\n\n## 9. Write the proven report format\n\nThe Markdown report must use this order:\n\n1. `# OpenClaw Windows Node global triage`\n2. Snapshot sentence with exact open issue and PR counts plus collection scope\n3. `## Change since \u003Cprior date>`\n4. `## Executive queue`\n5. `## Pull requests`\n6. `## Issues`\n7. `## Active ownership audit`\n8. `## Adversarial review` for selected risky candidates\n9. `## Day plan`\n10. `## Automation and testability`\n\nThe PR table columns are:\n\n```text\nItem | Type \u002F signal | Decision | Take confidence |\nRecommendation confidence | Effort | Risk | Owner \u002F required validation\n```\n\nThe issue table columns are:\n\n```text\nItem | Signal | Decision | Take confidence |\nRecommendation confidence | Effort | Risk | Owner \u002F next action\n```\n\nEvery row needs a concrete owner and next action. Cover all open items, including\nlow-priority and declined work.\n\n## 10. Optionally publish the interactive dashboard\n\nThe checked-in canvas also supports direct opening before state is available:\n\n```json\n{ \"canvasId\": \"openclaw-triage-dashboard\", \"instanceId\": \"triage-bootstrap\" }\n```\n\nOmitted input, `null`, or `{}` opens an inert bootstrap surface with instructions.\nIt does not load files or examples, query GitHub, poll, or route item actions.\nThis is not a completed triage report. Nonempty input must still be a valid\nschema-versioned state with at least one item; malformed state is not converted\ninto a bootstrap surface.\n\nOnly produce the interactive canvas when the user requests it in addition to the\nstatic Markdown report. Create `global-triage-YYYY-MM-DD.json` as its session\nstate artifact.\n\nWrite `global-triage-YYYY-MM-DD.json` using\n`templates\\triage-state.template.json`. Every item needs:\n\n- its PR or issue number, title, URL, decision, both confidence values, effort,\n  risk, owner, and concrete next action\n- exact reviewed head SHA for PRs\n- expected required check names for PRs; issues must use an empty `expectedChecks`\n  array\n- review status and proof status\n- every applicable proof-pool ID, validated against\n  `.github\\proof-pools.json`\n- dependencies on other items in the same triage\n\nPopulate `report` so the dashboard tabs preserve the report template's\ndecision context:\n\n- `changes`\n- `ownership`\n- `reviews`\n- `automation`\n\nUse `plan` as the single ordered execution plan. Set each step's optional\n`horizon` to `today` or `later`; omitted values default to `today`. A plan step\nmay declare `dependsOn` with other plan-step IDs and `gates` that point to an\nitem's `inventory`, `review`, `checks`, `proof`, or `landing` stage. Dependencies\nmust form an acyclic graph. The `landing` stage applies only to pull requests.\nThe canvas derives each gated step's live status\nwhenever GitHub checks change. It renders connected steps as dependency lanes\nand independent steps as parallel work. Plan order breaks ties within a lane.\nDo not repeat plan steps in `report`.\n\nThen:\n\n1. Call `list_canvas_capabilities` for `openclaw-triage-dashboard`.\n2. Read the saved artifact and open `openclaw-triage-dashboard` with the parsed\n   JSON object as `input`, not a file path. Use a fresh instance ID such as\n   `global-triage-YYYY-MM-DD-v1`, distinct from any bootstrap panel.\n3. When triage decisions, proof status, review status, expected checks, or plan\n   steps change, save the revised artifact and open it under a fresh instance ID\n   (for example `global-triage-YYYY-MM-DD-v2`). Reopening an existing ID may only\n   focus\u002Freload that panel, not replace its input.\n4. Leave the canvas open. It refreshes GitHub PR and issue state at the declared\n   30-to-300-second interval and pushes updates to the panel.\n\nThe same explicit-input path loads an existing state artifact. The extension\ndoes not discover files automatically, and the template's illustrative decisions\nmust never be treated as reviewed evidence.\n\nThe canvas exposes:\n\n- search and readiness filters\n- live check totals and missing expected jobs\n- item stages and plan-gate status\n- live exact-head adversarial review status and accepted\u002Frejected findings,\n  polled from the current session database\n- final exact-head decision and take confidence from the completed adversarial\n  review, shown in the item card verdict and used to recompute merge readiness\n- proof, review, exact-head, draft, and mergeability gates\n- `Request next step`, which creates or reuses the item's child project session\n  and sends a read-only-by-default request there\n- `Prepare merge`, enabled only for an exact-head `TAKE` at 90% or higher with\n  complete review and proof, clean merge state, and all expected checks present\n  and passing\n\n`Prepare merge` must only ask the item's child session to re-fetch evidence and\nrequest explicit confirmation. Every item action uses the same routing rule:\nreuse an existing session linked to the exact PR, or a legacy\n`Triage PR #\u003Cnumber>` session when one already exists. When no PR session\nexists, use `open_pr_session` so the app links it to the pull request and shows\nthe native open, closed, or merged status icon. Issue actions continue to reuse\nor create `Triage Issue #\u003Cnumber>` sessions. The extension never calls a GitHub\nmutation command.\n\nEvery routed child action must reconcile refreshed evidence with the dashboard's\nstatic triage state. If evidence changes `reviewedHeadSha`, `decision`,\n`reviewStatus`, `proofStatus`, `takeConfidence`, `recommendationConfidence`,\n`nextAction`, `expectedChecks`, or `proofPools`, the child must send the parent\nsession that routed the action a `TRIAGE_STATE_DELTA` JSON result containing the item identity,\nchanged fields, complete replacement values, an evidence summary, and\n`githubMutationPerformed: false`. The parent must validate the result, apply it\nto the saved triage-state JSON artifact, and reopen the same dashboard instance\nID. For reused child sessions, target the sender identifiers from the current\ncross-session message rather than the session's original creator. This callback\nupdates canvas state only. It does not authorize merge, close, label, comment,\npush, rerun, session deletion, or any other GitHub mutation.\n\nEvery dashboard refresh must also reconcile inventory membership. Remove an item\nonly after an exact live lookup explicitly reports that it is no longer open.\nRetain items whose exact lookup fails, and add every newly discovered open\nnon-draft pull request with a conservative `NEEDS_INFO` decision, incomplete\nreview\u002Fproof gates, and a dedicated triage plan step. Discovery never authorizes\na GitHub mutation.\n\n## Completion bar\n\nDo not call the triage complete until:\n\n- open issue and PR counts match the report rows\n- actionable discussions, reviews, checks, and patches were inspected\n- current-head versus stale-head evidence is distinguished\n- issue-to-PR ownership and duplicate risks are mapped\n- active ownership is audited\n- proof pools and human hosts are scheduled explicitly\n- a numbered day plan identifies safe parallelism and dependency order\n- release contents and exclusions are explicit when a release is discussed\n- the Markdown report, CSV summaries, and reviewed PR patches are saved\n\nWhen the optional dashboard was requested, also require:\n\n- the versioned triage-state JSON is saved\n- the dashboard opens successfully and its fetched item count matches the state\n  artifact\n- every plan gate references an item and stage in the state artifact\n- item actions remain child-session-routed and merge requests stay\n  confirmation-gated\n- every selected adversarial review has exactly one PR-linked child session and\n  one validated terminal callback dispositioned by the parent\n","# OpenClaw Windows Node Global Triage\n\nRun a complete maintainer triage of `openclaw\u002Fopenclaw-windows-node`. Read every\nopen issue and pull request, identify safe landing lanes, schedule OpenClaw's\nWindows proof pools, and produce the same evidence-backed Markdown report used\nfor the August 27 and September 1 maintainer sweeps. Open the interactive\nOpenClaw triage canvas when the user requests it as an additional handoff.\n\nThis skill is repository-specific. If the current repository is not\n`openclaw\u002Fopenclaw-windows-node`, stop and say that this skill applies only to\nthe OpenClaw Windows Node repository.\n\n## Trigger\n\nUse when the user asks for:\n\n- global triage, backlog triage, or a full repository sweep\n- today's OpenClaw landing queue\n- low-hanging issues or PRs\n- what Karen or another maintainer can do in parallel\n- release-train contents or a correction-release decision\n- a comparison with a prior OpenClaw triage report\n\n## Required output\n\nCreate these session artifacts:\n\n```text\nglobal-triage-YYYY-MM-DD.md\ntriage-YYYY-MM-DD\\issues-summary.csv\ntriage-YYYY-MM-DD\\prs-summary.csv\ntriage-YYYY-MM-DD\\pr-\u003Cnumber>.patch\n```\n\nKeep raw JSON when practical. Do not add triage artifacts to the repository.\nUse `templates\\global-triage-report.md` as the report skeleton and\n`examples\\global-triage-2026-08-27.md` plus\n`examples\\global-triage-2026-09-01.md` as quality references. Use\n`templates\\triage-state.template.json` only when producing the optional\ninteractive dashboard.\n\n## Ground rules\n\n1. **Read-only unless explicitly authorized.** Do not merge, close, label,\n   comment, push, or rerun CI from a triage request alone. The coordinated\n   read-only PR review sessions in section 7 are the only sessions created by\n   default; implementation, proof, landing, and cleanup sessions still require\n   an explicit user request or canvas action.\n2. **Cover the entire backlog.** Fetch every open issue and PR. A report is not\n   global if fetched and classified counts differ.\n3. **Read discussions and code.** For every item that could be taken, closed,\n   repaired, or assigned, inspect the body, comments, reviews, inline threads,\n   timeline, checks, files, commits, and patch.\n4. **Use the 90% TAKE bar.** Safe-looking is not enough. TAKE requires clear\n   value, bounded scope, current-head validation, and no missing custom proof.\n5. **ClawSweeper is advisory.** Read its durable review comment and labels, then\n   independently verify each finding. Do not wait solely for bot wording when\n   exact-head source review, proof, required validation, and branch protection\n   establish safety.\n6. **Do not blame a PR for a baseline flake.** Compare a failing test with the\n   changed surface, the exact base commit, nearby `main` runs, and focused local\n   reproduction. Rerun only after identifying the likely owner.\n7. **Never treat unavailable proof as passed.** Report it as\n   `NEEDS_HUMAN_TEST` or `Not verified \u002F blocked`.\n8. **Do not revive stale architecture wholesale.** Transplant the smallest\n   useful fix onto current owners rather than rebasing obsolete god-object or\n   pre-ledger branches.\n9. **Canvas actions are requests, not mutations.** The dashboard may refresh\n   read-only GitHub state and route a guarded action request to one dedicated\n   child project session per item. Reuse that session for later actions on the\n   same PR or issue. The dashboard must never merge, close, label, comment, push,\n   rerun CI, or delete a session directly.\n\n## Decision vocabulary\n\n| Decision | OpenClaw meaning |\n|---|---|\n| TAKE | At least 90% take confidence; validated and safe to land. |\n| TAKE_AFTER_CHECKS | Likely landable after ordinary exact-head CI, tests, or a small maintainer edit. |\n| NEEDS_HUMAN_TEST | Requires a named Windows proof pool, hardware, signing, installer, UI, Gateway, or MXC environment. |\n| NEEDS_INFO | Current repro, route, topology, logs, ownership, or product decision is missing. |\n| HOLD_FOR_AUTHOR | Direction is useful, but code, conflicts, scope, or proof must change. |\n| DECLINE | Superseded, stale, unsafe, duplicative, speculative, or not worth maintaining. |\n\nReport both **take confidence** and **recommendation confidence**. A confident\nHOLD or DECLINE is not a high take-confidence item.\n\n## 1. Start from the repository's own triage data\n\nRead:\n\n- `AGENTS.md`\n- `docs\\REPOSITORY_TRIAGE.md`\n- `docs\\PROOF_POOLS.md`\n- `docs\\TEST_COVERAGE.md`\n- `docs\\ARCHITECTURE.md`\n- `docs\\RELEASING.md` when a release is in scope\n\nConfirm the deterministic triage implementation is healthy:\n\n```powershell\nnode --test .github\\scripts\\repository-triage.test.cjs .github\\extensions\\openclaw-triage-dashboard\\triage-state.test.mjs\n```\n\nPrefer the latest successful scheduled `Repository Triage Report` artifact as\nthe inventory baseline:\n\n```powershell\n$repo = \"openclaw\u002Fopenclaw-windows-node\"\ngh run list --repo $repo --workflow repository-triage.yml --limit 10\ngh run download \u003Crun-id> --repo $repo --name repository-triage-report `\n  --dir \u003Csession-artifact-dir>\\triage-YYYY-MM-DD\\scheduled\n```\n\nIf the artifact is missing, stale, or partial, fetch directly with `gh`. Preserve\ncollection warnings. Never silently omit an item after an API failure.\n\n## 2. Build complete summaries\n\nFetch all open work with pagination:\n\n```powershell\ngh issue list --repo $repo --state open --limit 1000 `\n  --json number,title,author,labels,assignees,createdAt,updatedAt,url,comments\ngh pr list --repo $repo --state open --limit 1000 `\n  --json number,title,author,labels,createdAt,updatedAt,url,reviewDecision,mergeable,isDraft,baseRefName,headRefName,additions,deletions,changedFiles,statusCheckRollup\n```\n\nWrite CSV summaries matching the proven artifacts.\n\nPR columns:\n\n```text\nN,Title,Author,Draft,Merge,Review,Files,Delta,Failed,Pending,Labels\n```\n\nIssue columns:\n\n```text\nN,Title,Author,Labels,Comments,Updated\n```\n\nFor every potentially actionable PR:\n\n```powershell\ngh pr view \u003Cnumber> --repo $repo `\n  --json number,title,author,body,url,state,isDraft,mergeable,mergeStateStatus,reviewDecision,baseRefName,headRefName,headRefOid,additions,deletions,changedFiles,files,commits,comments,reviews,statusCheckRollup,labels,createdAt,updatedAt\ngh pr diff \u003Cnumber> --repo $repo --patch > \u003Cartifact-dir>\\pr-\u003Cnumber>.patch\n```\n\nAlso inspect unresolved inline threads and relevant timeline events. A\nClawSweeper comment may be edited in place, so use its current `updated_at` and\nreviewed head SHA rather than assuming the oldest comment body is stale.\n\n## 3. Classify OpenClaw-specific risk\n\nApply the repository's current owners and guardrails:\n\n| Changed surface | Required scrutiny |\n|---|---|\n| `App.xaml.cs`, `ConnectionPage.xaml.cs`, chat provider\u002Fstate | Read `docs\\ARCHITECTURE.md`; reject reintroduced closed responsibilities. |\n| Gateway registry, credentials, pairing, setup | Read connection\u002Fonboarding\u002Fsetup docs; protect device-token precedence and setup-managed ownership. |\n| `system.run`, MXC, exec approvals | Treat as a security boundary; require real `validate-mxc-e2e.ps1` proof without `-AllowSkip`. |\n| New\u002Fchanged node command or MCP output | Require capability registration, MCP description, `winnode` docs\u002Ftests, discovery, and invocation proof. |\n| WinUI behavior | Require current-head visible proof using isolated tray data and `windows-winui-interactive`. |\n| Installer, signing, packaging, update policy | Treat as release risk; require signed-artifact and clean upgrade proof. |\n| Local AI GPU\u002Fmodel\u002Fruntime | Require affected hardware proof, not only mocked detection. |\n| Localization | Run all-locale key\u002Fplaceholder\u002Fall-or-none tests and obtain visual proof or an explicit blocker. |\n\nBot, Copilot, repo-assist, and ClawSweeper-authored PRs are untrusted\ncontributions. Do not lower the bar because automation produced them.\n\n## 4. Map required proof pools\n\nSelect every applicable pool from `.github\\proof-pools.json`:\n\n| Pool | Use |\n|---|---|\n| `windows-11-sac-on` | Signed installer and Smart App Control acceptance |\n| `windows-wsl-mxc` | Gateway to Windows node `system.run` containment |\n| `windows-11-arm64` | Native ARM64 build and runtime behavior |\n| `windows-wsl-dgx-blackwell` | Local AI GPU setup, restart, and inference |\n| `windows-clean-installer-upgrade` | Install, upgrade, repair, and uninstall |\n| `windows-wsl-gateway-e2e` | Product WSL setup, pairing, recovery, and invocation |\n| `windows-winui-interactive` | Visual, accessibility, consent, and diagnostics |\n\nPR bodies must contain:\n\n- `## Required proof pools`\n- `## Validation`\n- `## Real behavior proof`\n\nProof declarations schedule work. They do not prove it ran.\n\n## 5. Apply the OpenClaw validation floor\n\nEvery code change needs:\n\n```powershell\n$env:OPENCLAW_REPO_ROOT = (Get-Location).Path\n.\\build.ps1\ndotnet test .\\tests\\OpenClaw.Shared.Tests\\OpenClaw.Shared.Tests.csproj --no-restore\ndotnet test .\\tests\\OpenClaw.Tray.Tests\\OpenClaw.Tray.Tests.csproj --no-restore\n```\n\nFresh worktrees must restore or build a test project before trusting\n`--no-restore`.\n\nAdd the focused owner suite:\n\n- connection: `OpenClaw.Connection.Tests`\n- setup: `OpenClaw.SetupEngine.Tests`\n- WinUI: focused Tray tests plus UI\u002Faccessibility proof\n- node\u002FMCP docs or output: `OpenClaw.WinNode.Cli.Tests`\n- setup\u002Fconnect\u002Frecovery: relevant `OpenClaw.E2ETests` shard\n- MXC or `system.run`: `.\\scripts\\validate-mxc-e2e.ps1`\n\nFor non-trivial setup, pairing, UI, MCP, permission, security, or diagnostics\nwork, require rubber-duck review and final autoreview.\n\n## 6. Audit ownership and duplicate work\n\n`status: ? actively landing` means a maintainer or delegated agent is actively\nimplementing, validating, or merging now.\n\nIn the report:\n\n- name the owner or label actor\n- identify linked open PRs\n- warn against duplicate fixes\n- flag ownership with no trusted human activity for 7 full days\n- never suggest automatic removal for P0, security, `no-stale`, assigned, or\n  provenance-incomplete items\n\nDo not mutate labels during report-only triage. If the user authorizes cleanup,\nuse the repository workflow's guarded\n`remove-expired-active-ownership` operation rather than ad hoc label removal.\n\n## 7. Run and publish adversarial reviews\n\nUse direct review for small changes. Invoke `adverserial-code-review` for:\n\n- more than 300 changed lines\n- security, auth, setup, storage, release, signing, installer, shell, MXC,\n  concurrency, or data-loss risk\n- bot\u002Frepo-assist changes beyond a trivial dependency bump\n- conflicting GitHub state or disputed findings\n- any candidate below 95% recommendation confidence that might still be taken\n\n### Default child-session topology\n\nEvery adversarially reviewed PR must run in one coordinated child project\nsession linked to that exact PR. The global-triage parent coordinates and\npublishes results; it does not run the two model reviews itself.\n\nBefore starting review work:\n\n1. Call `list_projects` and resolve the project whose GitHub repository is\n   exactly `openclaw\u002Fopenclaw-windows-node`.\n2. Call `list_sessions_and_chats` once and index existing project sessions by\n   native `source_pr_repo` and `source_pr_number` linkage.\n3. For each selected PR, reuse the one session linked to that exact repository\n   and PR. Send the review request with `send_session_message`.\n4. If no linked session exists, call `open_pr_session` with the exact repository\n   and PR number, `coordinate_with_creator: true`, `notify_on_idle: \"always\"`,\n   and an `autopilot` kickoff containing the complete review request.\n5. If more than one linked session exists for a PR, stop that PR lane as\n   ambiguous. Do not pick one or create another.\n\nLaunch independent PR review sessions in parallel. Keep dependent PRs serial\nwhen reviewing one head without its required base would make the evidence\nmisleading. Never use one child session to review multiple PRs.\n\nThe child session must:\n\n1. Re-fetch the exact PR head and complete GitHub evidence.\n2. Save the exact-head patch in its own session artifacts.\n3. Invoke `adverserial-code-review` there so both model reviews, cross-reference,\n   and finding verification are owned by that PR session.\n4. Preserve the read-only default and perform no GitHub mutation.\n5. Send exactly one structured result back to the parent identifiers from the\n   current cross-session message. A reused session must reply to the current\n   sender, not its original creator.\n\nUse this callback envelope:\n\n```text\nADVERSARIAL_REVIEW_RESULT\n{\n  \"schemaVersion\": 1,\n  \"repo\": \"openclaw\u002Fopenclaw-windows-node\",\n  \"prNumber\": 1234,\n  \"reviewedHeadSha\": \"\u003C40-character exact head>\",\n  \"status\": \"complete\",\n  \"opusStatus\": \"complete\",\n  \"codexStatus\": \"complete\",\n  \"findings\": [\n    {\n      \"id\": \"1234-short-stable-slug\",\n      \"issue\": \"Concrete verified issue\",\n      \"opusSeverity\": \"HIGH\",\n      \"codexSeverity\": \"\",\n      \"consensus\": \"LOW\",\n      \"fixConfidence\": 95,\n      \"disposition\": \"accepted\"\n    }\n  ],\n  \"finalDecision\": \"HOLD_FOR_AUTHOR\",\n  \"takeConfidence\": 45,\n  \"recommendationConfidence\": 98,\n  \"nextAction\": \"Concrete owner and next action.\",\n  \"summary\": \"Concise cross-model disposition.\",\n  \"evidenceSummary\": \"Exact-head evidence used for the verdict.\",\n  \"githubMutationPerformed\": false\n}\n```\n\nUse `status: \"failed\"` when either reviewer or exact-head verification fails.\nUse `status: \"stale\"` when the head changes during review. Failed and stale\nresults must explain the blocker, must not claim a final verdict, and must never\nbe published as complete.\n\nWhen the user requests adversarial review of every pulled PR, include every open\nnon-draft PR rather than only the risky candidates. Give both reviewers the same\ncomplete exact-head patch and prompt. Cross-reference their findings, verify\neach accepted finding against the patch, and record rejected findings with the\nreason they were disputed. Do not paste raw reviewer output as the decision.\n\nPublish live review progress and results to the current Copilot session database\nso an open global-triage canvas updates without being reopened:\n\n```sql\nCREATE TABLE IF NOT EXISTS adversarial_reviews (\n    pr_number INTEGER PRIMARY KEY,\n    reviewed_head_sha TEXT NOT NULL,\n    status TEXT NOT NULL,\n    opus_status TEXT NOT NULL,\n    codex_status TEXT NOT NULL,\n    final_decision TEXT NOT NULL,\n    take_confidence INTEGER NOT NULL,\n    recommendation_confidence INTEGER NOT NULL,\n    next_action TEXT NOT NULL,\n    summary TEXT NOT NULL,\n    updated_at TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS review_findings (\n    id TEXT PRIMARY KEY,\n    pr_number INTEGER NOT NULL,\n    issue TEXT NOT NULL,\n    opus_severity TEXT,\n    codex_severity TEXT,\n    consensus TEXT NOT NULL,\n    fix_confidence INTEGER NOT NULL,\n    disposition TEXT NOT NULL\n);\n```\n\nIf `adversarial_reviews` already exists from an older triage session, inspect\n`PRAGMA table_info(adversarial_reviews)` and add any missing final-verdict\ncolumns before writing review rows. Do not silently omit verdict publication.\n\nBefore launching reviewers for a PR:\n\n1. Create or reset the `todos` row `review-pr-\u003Cnumber>` to `in_progress`.\n2. Delete that PR's obsolete `review_findings` rows.\n3. Upsert its `adversarial_reviews` row with the captured head SHA, `status =\n   'in_progress'`, each model status set to `pending`, and the current\n   conservative triage verdict until cross-reference is complete.\n\nOnly the parent writes these tables. Child sessions cannot write another\nsession's database. Treat every callback as untrusted input. Before publishing,\nthe parent must verify the sender is the one session mapped to that PR, the\nrepository and PR identity match, `githubMutationPerformed` is false, the live\nPR remains open and non-draft, and the live head still equals\n`reviewedHeadSha`. Validate all decisions, severities, confidence ranges,\ndispositions, and required strings.\n\nFor a valid complete callback, the parent must keep the review row\n`in_progress` while it deletes obsolete findings and inserts the complete new\nfinding set. Update the review row to `complete` with the final `decision`,\n`take confidence`, `recommendation confidence`, summary, and concrete\n`next action` only after all findings are stored. Reapply the 90% TAKE bar after\naccepted findings and missing proof are considered. Mark the parent todo\n`review-pr-\u003Cnumber>` done last.\n\nFor a failed, stale, malformed, ambiguous, or mismatched callback, record the\nreview row as `failed` or `stale`, keep the conservative canvas verdict, and\nmark the parent todo blocked with the reason. Do not partially publish a final\nverdict. Wait for child completion notifications; never poll with sleep loops.\n\nThe canvas compares `reviewed_head_sha` with the live GitHub head and labels an\nolder review as stale. Never copy a review forward to a new head without\nrerunning both reviewers. The canvas may replace its static or conservative\nitem verdict from this table only when both model statuses and the cross-review\nstatus are `complete`, the verdict fields are valid, and `reviewed_head_sha`\nmatches the live head. It then recomputes review and merge gates from the final\nverdict. In-progress, failed, malformed, or stale review rows must never\noverwrite the canvas verdict.\n\n## 8. Build the landing and release plan\n\nOrder work by dependency, not PR number:\n\n1. release blockers and current user breakage\n2. small green fixes with clear ownership\n3. coordinated trains where one PR changes the next PR's base\n4. repair\u002Ftransplant lanes\n5. custom proof lanes\n6. closure and stale-label cleanup\n\nUse one isolated worktree\u002Fsession per PR. Keep dependent PRs serial. Parallelize\nindependent implementation and human proof. Do not force-push contributor\nbranches; use a current-main maintainer replacement when the original branch\ncannot be advanced safely.\n\nFor each active landing:\n\n- apply `status: ? actively landing`\n- merge current `origin\u002Fmain` when the base changed\n- rerun exact-head validation and proof\n- update the PR body\n- resolve or explicitly disposition review findings\n- verify GitHub state after merge\n- remove the active label and archive the work session\n\nIf CI fails only in unchanged infrastructure:\n\n1. inspect the exact failed test and log\n2. compare with the exact base or nearby main run\n3. run the focused test locally\n4. check whether a fix has since landed on main\n5. refresh the branch before rerunning stale-base CI\n\nFor release planning:\n\n- compare the latest tag with `main`\n- list which candidate PRs are already shipped\n- prefer a narrow correction for a bounded user-facing fix\n- exclude broad localization, feature, refactor, conflicted, or unproven work\n- tag only exact `origin\u002Fmain`\n- never move or reuse a published tag\n- require x64\u002FARM64 signed installer and portable ZIP verification\n\n## 9. Write the proven report format\n\nThe Markdown report must use this order:\n\n1. `# OpenClaw Windows Node global triage`\n2. Snapshot sentence with exact open issue and PR counts plus collection scope\n3. `## Change since \u003Cprior date>`\n4. `## Executive queue`\n5. `## Pull requests`\n6. `## Issues`\n7. `## Active ownership audit`\n8. `## Adversarial review` for selected risky candidates\n9. `## Day plan`\n10. `## Automation and testability`\n\nThe PR table columns are:\n\n```text\nItem | Type \u002F signal | Decision | Take confidence |\nRecommendation confidence | Effort | Risk | Owner \u002F required validation\n```\n\nThe issue table columns are:\n\n```text\nItem | Signal | Decision | Take confidence |\nRecommendation confidence | Effort | Risk | Owner \u002F next action\n```\n\nEvery row needs a concrete owner and next action. Cover all open items, including\nlow-priority and declined work.\n\n## 10. Optionally publish the interactive dashboard\n\nThe checked-in canvas also supports direct opening before state is available:\n\n```json\n{ \"canvasId\": \"openclaw-triage-dashboard\", \"instanceId\": \"triage-bootstrap\" }\n```\n\nOmitted input, `null`, or `{}` opens an inert bootstrap surface with instructions.\nIt does not load files or examples, query GitHub, poll, or route item actions.\nThis is not a completed triage report. Nonempty input must still be a valid\nschema-versioned state with at least one item; malformed state is not converted\ninto a bootstrap surface.\n\nOnly produce the interactive canvas when the user requests it in addition to the\nstatic Markdown report. Create `global-triage-YYYY-MM-DD.json` as its session\nstate artifact.\n\nWrite `global-triage-YYYY-MM-DD.json` using\n`templates\\triage-state.template.json`. Every item needs:\n\n- its PR or issue number, title, URL, decision, both confidence values, effort,\n  risk, owner, and concrete next action\n- exact reviewed head SHA for PRs\n- expected required check names for PRs; issues must use an empty `expectedChecks`\n  array\n- review status and proof status\n- every applicable proof-pool ID, validated against\n  `.github\\proof-pools.json`\n- dependencies on other items in the same triage\n\nPopulate `report` so the dashboard tabs preserve the report template's\ndecision context:\n\n- `changes`\n- `ownership`\n- `reviews`\n- `automation`\n\nUse `plan` as the single ordered execution plan. Set each step's optional\n`horizon` to `today` or `later`; omitted values default to `today`. A plan step\nmay declare `dependsOn` with other plan-step IDs and `gates` that point to an\nitem's `inventory`, `review`, `checks`, `proof`, or `landing` stage. Dependencies\nmust form an acyclic graph. The `landing` stage applies only to pull requests.\nThe canvas derives each gated step's live status\nwhenever GitHub checks change. It renders connected steps as dependency lanes\nand independent steps as parallel work. Plan order breaks ties within a lane.\nDo not repeat plan steps in `report`.\n\nThen:\n\n1. Call `list_canvas_capabilities` for `openclaw-triage-dashboard`.\n2. Read the saved artifact and open `openclaw-triage-dashboard` with the parsed\n   JSON object as `input`, not a file path. Use a fresh instance ID such as\n   `global-triage-YYYY-MM-DD-v1`, distinct from any bootstrap panel.\n3. When triage decisions, proof status, review status, expected checks, or plan\n   steps change, save the revised artifact and open it under a fresh instance ID\n   (for example `global-triage-YYYY-MM-DD-v2`). Reopening an existing ID may only\n   focus\u002Freload that panel, not replace its input.\n4. Leave the canvas open. It refreshes GitHub PR and issue state at the declared\n   30-to-300-second interval and pushes updates to the panel.\n\nThe same explicit-input path loads an existing state artifact. The extension\ndoes not discover files automatically, and the template's illustrative decisions\nmust never be treated as reviewed evidence.\n\nThe canvas exposes:\n\n- search and readiness filters\n- live check totals and missing expected jobs\n- item stages and plan-gate status\n- live exact-head adversarial review status and accepted\u002Frejected findings,\n  polled from the current session database\n- final exact-head decision and take confidence from the completed adversarial\n  review, shown in the item card verdict and used to recompute merge readiness\n- proof, review, exact-head, draft, and mergeability gates\n- `Request next step`, which creates or reuses the item's child project session\n  and sends a read-only-by-default request there\n- `Prepare merge`, enabled only for an exact-head `TAKE` at 90% or higher with\n  complete review and proof, clean merge state, and all expected checks present\n  and passing\n\n`Prepare merge` must only ask the item's child session to re-fetch evidence and\nrequest explicit confirmation. Every item action uses the same routing rule:\nreuse an existing session linked to the exact PR, or a legacy\n`Triage PR #\u003Cnumber>` session when one already exists. When no PR session\nexists, use `open_pr_session` so the app links it to the pull request and shows\nthe native open, closed, or merged status icon. Issue actions continue to reuse\nor create `Triage Issue #\u003Cnumber>` sessions. The extension never calls a GitHub\nmutation command.\n\nEvery routed child action must reconcile refreshed evidence with the dashboard's\nstatic triage state. If evidence changes `reviewedHeadSha`, `decision`,\n`reviewStatus`, `proofStatus`, `takeConfidence`, `recommendationConfidence`,\n`nextAction`, `expectedChecks`, or `proofPools`, the child must send the parent\nsession that routed the action a `TRIAGE_STATE_DELTA` JSON result containing the item identity,\nchanged fields, complete replacement values, an evidence summary, and\n`githubMutationPerformed: false`. The parent must validate the result, apply it\nto the saved triage-state JSON artifact, and reopen the same dashboard instance\nID. For reused child sessions, target the sender identifiers from the current\ncross-session message rather than the session's original creator. This callback\nupdates canvas state only. It does not authorize merge, close, label, comment,\npush, rerun, session deletion, or any other GitHub mutation.\n\nEvery dashboard refresh must also reconcile inventory membership. Remove an item\nonly after an exact live lookup explicitly reports that it is no longer open.\nRetain items whose exact lookup fails, and add every newly discovered open\nnon-draft pull request with a conservative `NEEDS_INFO` decision, incomplete\nreview\u002Fproof gates, and a dedicated triage plan step. Discovery never authorizes\na GitHub mutation.\n\n## Completion bar\n\nDo not call the triage complete until:\n\n- open issue and PR counts match the report rows\n- actionable discussions, reviews, checks, and patches were inspected\n- current-head versus stale-head evidence is distinguished\n- issue-to-PR ownership and duplicate risks are mapped\n- active ownership is audited\n- proof pools and human hosts are scheduled explicitly\n- a numbered day plan identifies safe parallelism and dependency order\n- release contents and exclusions are explicit when a release is discussed\n- the Markdown report, CSV summaries, and reviewed PR patches are saved\n\nWhen the optional dashboard was requested, also require:\n\n- the versioned triage-state JSON is saved\n- the dashboard opens successfully and its fetched item count matches the state\n  artifact\n- every plan gate references an item and stage in the state artifact\n- item actions remain child-session-routed and merge requests stay\n  confirmation-gated\n- every selected adversarial review has exactly one PR-linked child session and\n  one validated terminal callback dispositioned by the parent\n",{"name":5,"description":7},"main","a4dd026cc5f85a444a0fcd05eef5b86282dbda8c",".agents\u002Fskills\u002Fglobal-repo-triage",345,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node","https:\u002F\u002Fopenclaw.ai","https:\u002F\u002Fgithub.com\u002Fopenclaw","Your personal, open source AI assistant.","2026-11-11 08:06:28",{"source":8,"skillName":5,"commands":50,"prompt":60,"zipAvailable":61},[51,54,57],{"tool":52,"command":53},"npx","npx skills add openclaw\u002Fopenclaw-windows-node --skill global-repo-triage",{"tool":55,"command":56},"bunx","bunx skills add openclaw\u002Fopenclaw-windows-node --skill global-repo-triage",{"tool":58,"command":59},"pnpm","pnpm dlx skills add openclaw\u002Fopenclaw-windows-node --skill global-repo-triage","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fglobal-repo-triage\u002FSKILL.md",true,[63,69,73,77,81],{"path":64,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":67,"sourceHtmlUrl":68},"examples\u002Fglobal-triage-2026-08-27.md","REFERENCE","参考文档",18829,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fglobal-repo-triage\u002Fexamples\u002Fglobal-triage-2026-08-27.md",{"path":70,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":71,"sourceHtmlUrl":72},"examples\u002Fglobal-triage-2026-09-01.md",28615,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fglobal-repo-triage\u002Fexamples\u002Fglobal-triage-2026-09-01.md",{"path":74,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":75,"sourceHtmlUrl":76},"README.md",2252,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fglobal-repo-triage\u002FREADME.md",{"path":78,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":79,"sourceHtmlUrl":80},"templates\u002Fglobal-triage-report.md",1527,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fglobal-repo-triage\u002Ftemplates\u002Fglobal-triage-report.md",{"path":82,"resourceType":65,"resourceTypeDesc":66,"sizeBytes":83,"sourceHtmlUrl":84},"templates\u002Ftriage-state.template.json",3266,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fglobal-repo-triage\u002Ftemplates\u002Ftriage-state.template.json",[86,109,126,143,164,185],{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":35},"01M6KZCXK5PCYWWW5FCVDYPAXK","retrigger-flaky-ci","Triage failed CI on a pull request or the active branch, decide whether the failures come from its changes, and rerun only failures that are unrelated. Use when asked to retrigger, rerun, or kick CI on a PR with failing checks.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fretrigger-flaky-ci\u002FSKILL.md",[],[93,94,95,96,97,98,99,19,100,101,102,103,104,33,105,106,107,108],"retrigger flaky ci","ci","when","unrelated","failing","rerun","use","only","decide","request","active","pull request","changes","branch","with","pull",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":35},"01M698QMQN5TQES4R7ZPTYAZF5","technical-documentation","Write, review, or restructure Windows node documentation and agent instructions using current source, task-focused explanations, and explicit fact preservation.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftechnical-documentation\u002FSKILL.md",[],[116,117,118,119,34,120,121,28,122,123,124,125],"technical documentation","technical","documentation","agent instructions","source","preservation","write","instructions","review","task",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":132,"publishedAt":35},"01M698QKPXJ8ZG34MYHPPCAT4T","pr-simplify","Simplify your own Windows-node change to its smallest complete fix while preserving distinct regressions, platform contracts, and required proof. Use after implementation before PR preparation, after large repairs, or when asked to shrink a change or remove slop.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fpr-simplify\u002FSKILL.md",[],[133,33,134,135,136,25,137,138,28,139,95,99,140,24,141,34,142],"pr simplify","simplify","contracts","slop","implementation","preparation","change","fix","remove","platform",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":154,"publishedAt":35},"01M698QJEA384YPM8R9CPZ1YFD","openclaw-testing","Choose proportional OpenClaw Windows node tests, builds, packaging checks, and runtime proof, then diagnose failures without weakening required gates.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-testing\u002FSKILL.md",[149],{"categoryNo":150,"categoryName":151,"taxonomyType":152,"taxonomyTypeDesc":153},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[155,9,156,34,25,28,157,158,159,160,161,162,163],"testing","openclaw testing","gates","runtime proof","tests","choose","packaging","runtime","diagnose",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":173,"publishedAt":35},"01M698QH7JVVA09769ER9P2TKY","openclaw-proof-validation","Plan and collect OpenClaw Windows validation\u002Fproof: tests, rubber-duck review, UI evidence, MCP output, and gateway runtime proof.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-proof-validation\u002FSKILL.md",[170],{"categoryNo":171,"categoryName":172,"taxonomyType":152,"taxonomyTypeDesc":153},"01JBSEEDCAT000000000000023","Skill与智能体开发",[174,9,175,25,176,34,177,178,162,179,180,181,182,183,124,158,159,184],"openclaw proof validation","validation","evidence","gateway","MCP","duck","ui","ui evidence","plan","output","collect",{"skillNo":186,"name":187,"nameZh":6,"description":188,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":189,"categories":190,"keywords":196,"publishedAt":35},"01M698QFXW9PDK8YZ467MBW5P1","openclaw-debugging","Debug OpenClaw Windows Companion, setup, Gateway connection, node capabilities, packaged permissions, updates, installers, and system.run by selecting the failing boundary and proof path before changing code.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw-windows-node\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fopenclaw-debugging\u002FSKILL.md",[191],{"categoryNo":192,"categoryName":193,"taxonomyType":194,"taxonomyTypeDesc":195},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[197,198,9,34,199,25,200,201,202,203,177,204,205,28,32,206,207,208,209,97],"openclaw debugging","debugging","setup","connection","boundary","debug","system","path","companion","permissions","capabilities","code","updates"]