Skip to content

policy: classify doctor fix recommendations#99686

Merged
giodl73-repo merged 6 commits into
openclaw:mainfrom
giodl73-repo:policy-doctor-fix-rules
Jul 5, 2026
Merged

policy: classify doctor fix recommendations#99686
giodl73-repo merged 6 commits into
openclaw:mainfrom
giodl73-repo:policy-doctor-fix-rules

Conversation

@giodl73-repo

@giodl73-repo giodl73-repo commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add policy doctor fix metadata covering every current policy finding
  • classify findings as automatic, reviewRequired, manual, validateOnly, or unsupported
  • expose structured recommendation data only from the policy-owned JSON surface as policy.fixRecommendation
  • keep the shared HealthFinding / generic doctor --lint --json contract unchanged
  • keep policy attestation payloads stable by leaving recommendation metadata out of attested findings / attestation hashes
  • add metadata/tests that fail when a policy check id lacks a fix classification

Validation

  • node scripts/run-vitest.mjs extensions/policy/src/doctor/metadata.test.ts extensions/policy/src/doctor/register.test.ts extensions/policy/src/doctor/strictness.test.ts src/flows/doctor-repair-flow.test.ts extensions/policy/src/cli.test.ts src/commands/doctor-lint.test.ts test/scripts/plugin-sdk-surface-report.test.ts --reporter=dot passed: 4 shards / 367 tests.
  • node scripts/run-tsgo.mjs -p tsconfig.extensions.json --incremental --tsBuildInfoFile .artifacts/tsgo-cache/extensions.tsbuildinfo passed.
  • OPENCLAW_OXLINT_SKIP_PREPARE=1 node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.extensions.json extensions passed.
  • git diff --check passed.
  • node --import tsx scripts/check-policy-config-coverage.ts --check --json passed with no unclassified, unmatched, or stale monitored paths.

Note: the normal local run-oxlint.mjs wrapper is blocked on this Windows checkout before linting by a new-base Rolldown boundary root shim error, TypeError: Cannot convert undefined or null to object; the actual extension oxlint pass is clean when using the repo-supported prepare skip.

Stack

Restacked directly onto current openclaw/openclaw@main after #99121 merged. Current PR head: 2c05bf83e875f5d7a7683fb9e405f6ba4bdb271e.

Downstream repair PRs consume this classification metadata in separate slices; this PR only introduces the metadata and policy-owned JSON exposure.

Real behavior proof

Behavior or issue addressed:
Policy findings expose structured recommendation metadata in public policy JSON output, while generic doctor lint and policy attestation hashing remain recommendation-free.

Real environment tested:
Windows checkout C:\src\openclaw-fork on current #99686 head 2c05bf83e875f5d7a7683fb9e405f6ba4bdb271e, with an isolated temp workspace under %TEMP%\openclaw-policy-proof-*. The temp config enabled the source policy plugin path, enabled the Telegram channel, and authored a policy.jsonc deny rule for provider telegram. No live LLM or network provider calls were made.

Exact steps or command run after this patch:

$env:OPENCLAW_CONFIG_PATH = "$proofDir\openclaw.jsonc"
$env:PROOF_DIR = $proofDir
node --import tsx --eval '<script imports policyCheckCommand and policyFindingsHash, runs policyCheckCommand({ cwd: process.env.PROOF_DIR, json: true }), strips public finding.policy before recomputing policyFindingsHash, and prints the public finding plus hash comparison>'

Evidence after fix:
policyCheckCommand({ json: true }) exited 1 as expected for the seeded policy violation and emitted this public finding shape:

{
  "checkId": "policy/channels-denied-provider",
  "severity": "error",
  "ocPath": "oc://openclaw.config/channels/telegram",
  "target": "oc://openclaw.config/channels/telegram",
  "requirement": "oc://policy.jsonc/channels/denyRules/#0",
  "policy": {
    "fixRecommendation": {
      "fixClass": "automatic",
      "policyPath": ["channels", "denyRules"],
      "configTargets": ["channels"],
      "summary": "Disable product-managed channels matching the denied provider."
    }
  }
}

The same run emitted this attestation object, with no recommendation payload in the attestation itself:

{
  "checkedAt": "2026-07-05T00:53:54.236Z",
  "policy": {
    "path": "policy.jsonc",
    "hash": "sha256:f7bea32f53401bb152a32836107514220ab6282b5f5c7149787f4c5ee3c685bb"
  },
  "workspace": {
    "scope": "policy",
    "hash": "sha256:a03faac8463be7dbad38177af758315a5d39438a2e338118fa1a847adb93ac36"
  },
  "findingsHash": "sha256:66792d3024b94eeea5769cb13fc07cebad84247704006fa05928741676011936",
  "attestationHash": "sha256:8ba8818628c7e36a6b76e5fa5692fe1ba88923b3530c7ad64c540a42dcea0cf7"
}

Hash check from the same current-head run:

{
  "attestationFindingsHash": "sha256:66792d3024b94eeea5769cb13fc07cebad84247704006fa05928741676011936",
  "strippedFindingsHash": "sha256:66792d3024b94eeea5769cb13fc07cebad84247704006fa05928741676011936",
  "publicFindingsHash": "sha256:6a0a798fd82057422c891d75b4ea359ce1e728862e3cba83b81c82da72d74229",
  "matchesStripped": true,
  "differsFromPublic": true
}

Observed result after fix:
The public policy JSON finding includes policy.fixRecommendation, but the attestation findingsHash matches the recommendation-stripped finding and differs from the public finding hash. This proves recommendation copy/classification changes do not perturb policy attestation hashes.

What was not tested:
No packaged release binary, live provider run, or live LLM call was run. The proof used the source policy command implementation from the current PR head.

@openclaw-barnacle openclaw-barnacle Bot added docs Improvements or additions to documentation scripts Repository scripts extensions: policy size: L maintainer Maintainer-authored PR labels Jul 3, 2026
@clawsweeper

clawsweeper Bot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Codex review: needs maintainer review before merge. Reviewed July 4, 2026, 10:33 PM ET / 02:33 UTC.

Summary
The PR adds policy doctor fix-class metadata, emits it as policy.fixRecommendation from policy check JSON, and adds coverage tests that keep generic doctor lint output and attestation hashes recommendation-free.

PR surface: Source +480, Tests +143. Total +623 across 5 files.

Reproducibility: not applicable. this is a policy JSON metadata feature PR, not a bug report. The changed behavior is supported by source inspection, targeted tests, and contributor live-output proof for policy JSON and attestation hashing.

Review metrics: 2 noteworthy metrics.

  • Policy fix classifications: 64 classified, 0 unclassified. Every current policy check id now has explicit repair-class metadata, so the table itself is the main maintainer decision.
  • Public JSON surface: 1 nested policy field added, 0 generic doctor fields changed. The PR adds policy.fixRecommendation only to policy check JSON while avoiding a shared doctor lint or Plugin SDK contract change.

Stored data model
Persistent data-model change detected: migration/backfill/repair: extensions/policy/src/cli.ts, migration/backfill/repair: extensions/policy/src/doctor/fix-metadata.ts, unknown-data-model-change: extensions/policy/src/doctor/fix-metadata.ts, unknown-data-model-change: extensions/policy/src/doctor/metadata.test.ts, vector/embedding metadata: extensions/policy/src/cli.ts, vector/embedding metadata: extensions/policy/src/doctor/fix-metadata.ts, and 1 more. Confirm migration or upgrade compatibility proof before merge.

Root-cause cluster
Relationship: canonical
Canonical: #99686
Summary: This PR is the policy fix-metadata foundation for a downstream stack of policy repair slices; the related PRs are adjacent follow-up work rather than duplicates.

Members:

Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything.

Merge readiness
Overall: 🐚 platinum hermit
Proof: 🦞 diamond lobster
Patch quality: 🐚 platinum hermit
Result: ready for maintainer review.

Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch.

Rank-up moves:

  • [P2] Have a maintainer confirm the policy fix-class taxonomy before merge.

Risk before merge

  • [P1] The fix-class taxonomy is policy/security guidance that downstream repair PRs are expected to consume, so maintainers should confirm the automatic, reviewRequired, manual, validateOnly, and unsupported assignments before merge.

Maintainer options:

  1. Confirm Taxonomy Before Merge (recommended)
    A maintainer can accept the current fix-class assignments and land this foundation with downstream repair PRs depending on the table.
  2. Revise Classification Metadata
    If any automatic or review-required class is too broad, change the metadata and expected coverage tests before merge.
  3. Pause The Stack
    If maintainers want a different recommendation contract, pause this foundation and keep the downstream repair stack blocked until the direction is settled.

Next step before merge

  • [P2] The next action is maintainer review of the protected policy/security classification choices; there is no narrow automated repair to queue.

Security
Cleared: No concrete security or supply-chain defect was found; the remaining security concern is maintainer approval of policy guidance, not a patch vulnerability.

Review details

Best possible solution:

Land the policy-owned metadata surface after maintainer signoff on the classification taxonomy, while keeping generic HealthFinding, generic doctor lint JSON, and attestation hashes recommendation-free.

Do we have a high-confidence way to reproduce the issue?

Not applicable: this is a policy JSON metadata feature PR, not a bug report. The changed behavior is supported by source inspection, targeted tests, and contributor live-output proof for policy JSON and attestation hashing.

Is this the best way to solve the issue?

Yes as an implementation shape: keeping recommendations policy-owned and out of generic doctor lint and attestation hashes is the narrow maintainable boundary. The remaining question is maintainer acceptance of the classification taxonomy.

AGENTS.md: found and applied where relevant.

Codex review notes: model internal, reasoning high; reviewed against eb2f9bece730.

Label changes

Label justifications:

  • P2: This is a bounded policy-plugin feature with security-posture impact but no urgent user-facing regression or runtime outage.
  • merge-risk: 🚨 security-boundary: Incorrect policy fix classes could steer downstream repair workflows toward unsafe or unsupported security-policy changes.
  • rating: 🐚 platinum hermit: Overall readiness is 🐚 platinum hermit; proof is 🦞 diamond lobster and patch quality is 🐚 platinum hermit.
  • status: 👀 ready for maintainer look: ClawSweeper has no concrete contributor-facing blocker left for this PR. Sufficient (live_output): The PR body includes after-fix source-harness live output for policy JSON and attestation hash behavior, and the latest head only changes test compatibility.
  • proof: sufficient: Contributor real behavior proof is sufficient. The PR body includes after-fix source-harness live output for policy JSON and attestation hash behavior, and the latest head only changes test compatibility.
Evidence reviewed

PR surface:

Source +480, Tests +143. Total +623 across 5 files.

View PR surface stats
Area Files Added Removed Net
Source 2 482 2 +480
Tests 3 145 2 +143
Docs 0 0 0 0
Config 0 0 0 0
Generated 0 0 0 0
Other 0 0 0 0
Total 5 627 4 +623

What I checked:

  • Repository policy applied: The root and extensions AGENTS.md files were read fully; their OpenClaw PR review, plugin-boundary, public-surface, and policy/security guidance applies to this PR. (AGENTS.md:31, eb2f9bece730)
  • Current main behavior: Current main maps both public policy findings and attestation findings through the same serializer, so there is no separate recommendation-free attestation serializer on main. (extensions/policy/src/cli.ts:222, eb2f9bece730)
  • PR implementation: At the PR head, public findings use toJsonFinding, attestation input uses toAttestedJsonFinding, and policy metadata is added only under the nested policy.fixRecommendation object. (extensions/policy/src/cli.ts:223, ef4face24273)
  • Metadata coverage: The new metadata table classifies every policy check id and exports a lookup map; the test asserts the map keys exactly match POLICY_CHECK_IDS and snapshots the current fix-class assignments. (extensions/policy/src/doctor/metadata.test.ts:167, ef4face24273)
  • Attestation hash contract: Policy attestation hashes are computed from the findings input, and the added test strips the public policy object before recomputing the hash, proving recommendation copy does not perturb attestation hashes. (extensions/policy/src/policy-state.ts:266, eb2f9bece730)
  • Generic surface unchanged: The live final PR file list contains only five policy-plugin files, so the earlier intermediate shared HealthFinding and generic doctor --lint --json contract changes are not in the net diff. (ef4face24273)

Likely related people:

  • giodl73-repo: Prior merged policy-doctor work, including the gateway node command coverage PR and policy doctor module split, makes this account the strongest routing candidate for the policy metadata surface beyond merely authoring this PR. (role: recent area contributor; confidence: high; commits: 832cb3c48880, 7e5901752d94; files: extensions/policy/src/cli.ts, extensions/policy/src/doctor/metadata.ts, extensions/policy/src/doctor/register.ts)
  • NianJiuZst: Current-main blame on the central policy files points to a recent broad merged PR touching this area, though the commit title is unrelated to policy semantics, so this is a weaker routing signal. (role: recent adjacent contributor; confidence: low; commits: efe4a59ceb75; files: extensions/policy/src/cli.ts, extensions/policy/src/doctor/metadata.ts, extensions/policy/src/doctor/register.ts)
  • omarshahine: A maintainer-side review comment on this PR identified the JSON-surface and owner-boundary issues that shaped the current implementation. (role: reviewer; confidence: medium; files: extensions/policy/src/cli.ts, extensions/policy/src/doctor/fix-metadata.ts, extensions/policy/src/doctor/register.test.ts)
What the crustacean ranks mean
  • 🦀 challenger crab: rare, exceptional readiness with strong proof, clean implementation, and convincing validation.
  • 🦞 diamond lobster: very strong readiness with only minor maintainer review expected.
  • 🐚 platinum hermit: good normal PR, likely mergeable with ordinary maintainer review.
  • 🦐 gold shrimp: useful signal, but proof or patch confidence is still limited.
  • 🦪 silver shellfish: thin signal; proof, validation, or implementation needs work.
  • 🧂 unranked krab: not merge-ready because proof is missing/unusable or there are serious correctness or safety concerns.
  • 🌊 off-meta tidepool: rating does not apply to this item.

Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics.

How this review workflow works
  • ClawSweeper keeps one durable marker-backed review comment per issue or PR.
  • Re-runs edit this comment so the latest verdict, findings, and automation markers stay together instead of adding duplicate bot comments.
  • A fresh review can be triggered by eligible @clawsweeper re-review comments, exact-item GitHub events, scheduled/background review runs, or manual workflow dispatch.
  • PR/issue authors and users with repository write access can comment @clawsweeper re-review or @clawsweeper re-run on an open PR or issue to request a fresh review only.
  • Maintainers can also comment @clawsweeper review to request a fresh review only.
  • Fresh-review commands do not start repair, autofix, rebase, CI repair, or automerge.
  • Maintainer-only repair and merge flows require explicit commands such as @clawsweeper autofix, @clawsweeper automerge, @clawsweeper fix ci, or @clawsweeper address review.
  • Maintainers can comment @clawsweeper explain to ask for more context, or @clawsweeper stop to stop active automation.
Review history (14 earlier review cycles; latest 8 shown)
  • reviewed 2026-07-05T00:00:49.305Z sha 2c05bf8 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-05T00:09:30.100Z sha 2c05bf8 :: needs real behavior proof before merge. :: none
  • reviewed 2026-07-05T00:58:59.576Z sha 2c05bf8 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-05T01:07:21.181Z sha 2c05bf8 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-05T01:17:39.432Z sha 566c16d :: needs maintainer review before merge. :: none
  • reviewed 2026-07-05T01:46:33.570Z sha 2a20d12 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-05T02:12:44.114Z sha 1946575 :: needs maintainer review before merge. :: none
  • reviewed 2026-07-05T02:27:28.645Z sha ef4face :: needs maintainer review before merge. :: none

@clawsweeper clawsweeper Bot added rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. P2 Normal backlog priority with limited blast radius. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. labels Jul 3, 2026
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

I restacked the policy series onto current upstream/main with non-force merge commits, resolved the test/scripts/plugin-sdk-surface-report.test.ts conflict, and added the exact Real behavior proof section to this PR body.

Fresh proof from the top of the stack (283c1bb4ca):

  • node scripts/run-vitest.mjs extensions/policy/src/doctor/metadata.test.ts extensions/policy/src/doctor/register.test.ts extensions/policy/src/doctor/strictness.test.ts src/flows/doctor-repair-flow.test.ts --reporter=dot passed: 10 core repair-flow tests + 297 policy doctor tests.
  • node scripts/run-vitest.mjs test/scripts/plugin-sdk-surface-report.test.ts --reporter=dot passed: 7 tests.
  • pnpm tsgo:extensions passed.
  • pnpm lint:extensions passed.
  • git diff --check passed.

@clawsweeper

clawsweeper Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@omarshahine

Copy link
Copy Markdown
Contributor

Codex review of the Fix Metadata PR.

Findings:

  1. fixRecommendation is added to the shared finding type and populated by the policy checker, but the public JSON emitters still drop it. The field is introduced through src/flows/health-checks.ts:35 and populated from policy checks in extensions/policy/src/doctor/register.ts, but policy check --json still serializes only the old fields in extensions/policy/src/cli.ts:419, and doctor lint --json still does the same in src/commands/doctor-lint.ts:154. The JSON tests at extensions/policy/src/cli.test.ts:244 and src/commands/doctor-lint.test.ts:208 also preserve the old shape. As written, the new metadata exists in memory but not in the user/API output that fix recommendation consumers would read.

  2. This widens the public SDK finding contract with policy-specific semantics. policyPath and configTargets are added to the generic HealthFinding shape in src/flows/health-checks.ts:35 and re-exported through src/plugin-sdk/health.ts:16, but the producer and meaning are policy-plugin owned. Unless this is intended as a generic cross-check recommendation API, the narrower owner boundary would keep this richer metadata in the policy plugin surface, such as extensions/policy/src/cli.ts or extensions/policy/src/doctor/types.ts, instead of making every plugin health finding carry policy-specific fields.

Best-fix verdict: not the best fix yet. The useful metadata needs to reach the public JSON surfaces, and the SDK shape should stay generic unless the PR intentionally defines a shared recommendation contract.

Evidence checked: src/flows/health-checks.ts, src/plugin-sdk/health.ts, extensions/policy/src/doctor/register.ts, extensions/policy/src/doctor/types.ts, extensions/policy/src/cli.ts, src/commands/doctor-lint.ts, and the adjacent JSON/metadata tests.

@openclaw-barnacle openclaw-barnacle Bot added the commands Command implementations label Jul 4, 2026
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

Addressed Omar's JSON-surface finding in 076a5cb222: policy check --json and doctor lint --json now include fixRecommendation when a finding carries it, with tests for both the policy CLI and generic doctor lint JSON output. The shared SDK field is being treated as a generic recommendation contract; policy-specific producers can populate policyPath/configTargets, while other checks can emit just fixClass + summary.

@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Reviewer-requested fixes are pushed on this updated head. Fresh local proof before push: focused policy/core/CLI/tooling Vitest passed, pnpm tsgo:extensions passed, pnpm lint:extensions passed, git diff --check passed, and node --import tsx scripts/check-policy-config-coverage.ts --check --json passed.

@clawsweeper

clawsweeper Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. and removed rating: 🧂 unranked krab Not merge-ready due to missing proof or serious correctness/safety concerns. labels Jul 4, 2026
@giodl73-repo
giodl73-repo force-pushed the policy-doctor-fix-rules branch from 076a5cb to 2466c7a Compare July 4, 2026 22:24
@openclaw-barnacle openclaw-barnacle Bot removed docs Improvements or additions to documentation scripts Repository scripts labels Jul 4, 2026
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

@clawsweeper re-review

Restacked this PR directly onto current main after #99121 merged and pushed head 2466c7a3f21afc82848df02ef25886ac0177319b.

I also refreshed the PR body with real JSON behavior proof:

  • doctor --lint --json --only policy/channels-denied-provider via node scripts/run-node.mjs --dev ... now shows fixRecommendation on the policy finding.
  • The supplemental policy check JSON output shows the same recommendation while the attestation object remains recommendation-free.

Fresh local validation on the restacked head passed:

  • focused policy/doctor/JSON Vitest: 4 files, 329 tests
  • pnpm tsgo:extensions
  • targeted oxfmt --check
  • targeted oxlint
  • git diff --check origin/main...HEAD && git diff --check

@clawsweeper

clawsweeper Bot commented Jul 4, 2026

Copy link
Copy Markdown
Contributor

🦞🧹
ClawSweeper re-review requested.

I asked ClawSweeper to review this item again.
Action: item re-review queued (workflow sweep.yml, event repository_dispatch).
Result: the existing ClawSweeper review comment will be edited in place when the review finishes.

@clawsweeper clawsweeper Bot added rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed rating: 🦪 silver shellfish Thin PR readiness signal; proof, validation, or implementation needs work. status: 📣 needs proof The PR needs real behavior proof before ClawSweeper can clear the contributor ask. labels Jul 5, 2026
@openclaw-barnacle openclaw-barnacle Bot removed the commands Command implementations label Jul 5, 2026
@giodl73-repo
giodl73-repo marked this pull request as ready for review July 5, 2026 01:17
@clawsweeper clawsweeper Bot added proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. and removed proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. merge-risk: 🚨 compatibility 🚨 May break existing users, config, migrations, defaults, or upgrade paths. merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR. labels Jul 5, 2026
@giodl73-repo
giodl73-repo force-pushed the policy-doctor-fix-rules branch from 2a20d12 to 1946575 Compare July 5, 2026 02:07
@giodl73-repo
giodl73-repo force-pushed the policy-doctor-fix-rules branch from 1946575 to ef4face Compare July 5, 2026 02:23
@clawsweeper clawsweeper Bot added the merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. label Jul 5, 2026
@giodl73-repo
giodl73-repo merged commit 55683d2 into openclaw:main Jul 5, 2026
97 checks passed
@giodl73-repo

Copy link
Copy Markdown
Contributor Author

Merged via rebase.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

extensions: policy maintainer Maintainer-authored PR merge-risk: 🚨 security-boundary 🚨 May affect sandboxing, authorization, credentials, or sensitive data. P2 Normal backlog priority with limited blast radius. proof: sufficient ClawSweeper judged the real behavior proof convincing. rating: 🐚 platinum hermit Good normal PR readiness with ordinary maintainer review expected. size: L status: 👀 ready for maintainer look ClawSweeper has no concrete contributor-facing blocker left for this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants